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 argomento si userà .NET per visualizzare testo in una visualizzazione di caratteri LCD usando un espansore GPIO I2C.
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 8 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à. Come riferimento, questa esercitazione è stata sviluppata con il SunFounder LCD2004.
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 app console .NET utilizzando il CLI di .NET o Visual Studio. Denominarlo LcdTutorial.
dotnet new console -o LcdTutorial cd LcdTutorialAggiungere il pacchetto Iot.Device.Bindings al progetto. Usare .NET CLI dalla directory del progetto o Visual Studio.
dotnet add package Iot.Device.Bindings --version 3.2.0-*Sostituire 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 la posizione del cursore sulla prima posizione sulla 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 compilare in Visual Studio, premere Ctrl+Shift+B.Distribuire l'app nel SBC come app autonoma. Per istruzioni, vedere Distribuire app .NET in 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
La sorgente per questa esercitazione è disponibile su GitHub.