Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Gli schermi dei caratteri LCD sono utili per visualizzare informazioni senza la necessità di un monitor esterno. I display di caratteri LCD comuni possono essere collegati direttamente ai pin GPIO, ma tale approccio richiede l'uso di un massimo di 10 pin GPIO. Per gli scenari che richiedono la connessione a una combinazione di dispositivi, dedicare gran parte dell'intestazione GPIO a un display di caratteri è spesso poco pratico.
Molti produttori vendono display con caratteri LCD 20x4 con un espansore GPIO integrato. La visualizzazione dei caratteri si connette direttamente all'espansore GPIO, che quindi si connette a Raspberry Pi tramite il protocollo seriale Inter-Integrated Circuit (I2C).
In questo capitolo, si userà .NET per visualizzare testo su un display a caratteri LCD usando un espansore I2C GPIO.
Prerequisiti
- Computer basato su ARM (ARMv7 o versione successiva) a scheda singola (SBC)
- Display a caratteri LCD 20x4 con interfaccia I2C
- Cavetti di collegamento
- Piastra di prototipazione (facoltativo/consigliato)
- Scheda di interfaccia Raspberry Pi GPIO (facoltativa/consigliata)
- .NET SDK 10 o versione successiva
Annotazioni
Questa esercitazione viene scritta presupponendo che il dispositivo di destinazione sia Raspberry Pi. Tuttavia, questa esercitazione può essere usata per qualsiasi SBC basato su Linux che supporta .NET, ad esempio Orange Pi, ODROID e altro ancora.
Annotazioni
Ci sono molti produttori di display di caratteri LCD. La maggior parte dei progetti è identica e il produttore non deve fare alcuna differenza per la funzionalità. A titolo di riferimento, questa guida è stata sviluppata con l'LCD2004 SunFounder.
Preparare il SBC
Verificare che il SBC sia configurato per supportare i servizi seguenti:
- SSH
- I2C
Per molti dispositivi non è necessaria alcuna configurazione aggiuntiva. Per Raspberry Pi, usare il raspi-config comando . Per altre informazioni su raspi-config, vedere la documentazione di Raspberry Pi.
Preparare l'hardware
Usare i cavi del jumper per collegare i quattro pin sull'espansore GPIO I2C al Raspberry Pi come indicato di seguito:
- Da GND a terra
- Da VCC a 5 V
- Da SDA a SDA (GPIO 2)
- SCL a SCL (GPIO 3)
Fare riferimento alle figure seguenti in base alle esigenze:
| Interfaccia I2C (posteriore dello schermo) | Raspberry Pi GPIO |
|---|---|
|
|
Immagine per gentile concessione Raspberry Pi Foundation. |
Suggerimento
Per semplificare le connessioni all'intestazione GPIO, è consigliabile usare una scheda breakout GPIO insieme a una breadboard.
Creare l'app
Completare i passaggi seguenti nell'ambiente di sviluppo preferito:
Creare una nuova .NET Console App utilizzando il .NET CLI o Visual Studio. Denominarlo LcdTutorial.
dotnet new console -o LcdTutorial cd LcdTutorialAggiungere il pacchetto Iot.Device.Bindings al progetto. Utilizzare .NET CLI dalla directory del progetto o Visual Studio.
dotnet package add Iot.Device.Bindings --version 4.1.0Sostituire il contenuto di Program.cs con il codice seguente:
using System; using System.Device.Gpio; using System.Device.I2c; using System.Threading; using Iot.Device.CharacterLcd; using Iot.Device.Pcx857x; Console.WriteLine("Displaying current time. Press Ctrl+C to end."); using I2cDevice i2c = I2cDevice.Create(new I2cConnectionSettings(1, 0x27)); using var driver = new Pcf8574(i2c); using var lcd = new Lcd2004(registerSelectPin: 0, enablePin: 2, dataPins: new int[] { 4, 5, 6, 7 }, backlightPin: 3, backlightBrightness: 0.1f, readWritePin: 1, controller: new GpioController(PinNumberingScheme.Logical, driver)); int currentLine = 0; while (true) { lcd.Clear(); lcd.SetCursorPosition(0,currentLine); lcd.Write(DateTime.Now.ToShortTimeString()); currentLine = (currentLine == 3) ? 0 : currentLine + 1; Thread.Sleep(1000); }Nel codice precedente:
Una dichiarazione using crea un'istanza di
I2cDevicechiamandoI2cDevice.Createe passando un nuovo oggettoI2cConnectionSettingscon i parametribusIdedeviceAddress. QuestoI2cDevicerappresenta l'autobus I2C. Lausingdichiarazione garantisce che l'oggetto venga eliminato e che le risorse hardware vengano rilasciate correttamente.Avvertimento
L'indirizzo del dispositivo per l'espansore GPIO dipende dal chip usato dal produttore. I espansori GPIO dotati di un PCF8574 usano l'indirizzo
0x27, mentre quelli che usano chip PCF8574A usano0x3F. Consultare la documentazione dell'LCD.Un'altra
usingdichiarazione crea un'istanza diPcf8574e passa l'oggettoI2cDevicenel costruttore. Questa istanza rappresenta l'espansore GPIO.Un'altra
usingdichiarazione crea un'istanza diLcd2004per rappresentare la visualizzazione. Diversi parametri vengono passati al costruttore che descrive le impostazioni da usare per comunicare con l'espansore GPIO. L'espansore GPIO viene passato comecontrollerparametro.Un
whileciclo viene eseguito per un periodo illimitato. Ogni iterazione:- Cancella la visualizzazione.
- Imposta il cursore sulla posizione iniziale della riga corrente.
- Scrive l'ora corrente nella visualizzazione in corrispondenza della posizione corrente del cursore.
- Incrementa il contatore della linea corrente.
- Attende 1000 millisecondi.
Compilazione dell'app. Se si usa l'interfaccia della riga di comando di .NET, eseguire
dotnet build. Per eseguire la compilazione in Visual Studio, premere Ctrl+Shift+B.Distribuire l'app nel SBC come app autonoma. Per istruzioni, vedere Deploy .NET apps to Raspberry Pi. Assicurarsi di concedere all'eseguibile l'autorizzazione di esecuzione usando
chmod +x.Eseguire l'app in Raspberry Pi passando alla directory di distribuzione ed eseguendo il file eseguibile.
./LcdTutorialOsservare il display dei caratteri LCD mentre l'ora corrente viene mostrata su ciascuna riga.
Suggerimento
Se lo schermo è acceso ma non viene visualizzato alcun testo, provare a regolare la composizione del contrasto sul retro dello schermo.
Terminare il programma premendo CTRL+C.
Congratulazioni! Hai visualizzato testo su un LCD usando un espansore I2C e GPIO!
Ottenere il codice sorgente
L'origine per questa esercitazione è disponibile su GitHub.