Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
LCD-Zeichen sind zum Anzeigen von Informationen nützlich, ohne dass ein externer Monitor erforderlich ist. Gängige LCD-Zeichen können direkt mit den GPIO-Pins verbunden werden, jedoch erfordert ein solcher Ansatz die Verwendung von bis zu 10 GPIO-Pins. Szenarios, die eine Verbindung mit einer Kombination von Geräten erfordern, sind häufig nicht praktikabel.
Viele Hersteller verkaufen 20 x 4 LCD-Zeichenanzeigen mit einem integrierten GPIO-Expander. Die Zeichenanzeige verbindet sich direkt mit dem GPIO Expander, der dann über das serielle Inter-Integrated Circuit (I2C)-Protokoll mit dem Raspberry Pi verbunden wird.
In diesem Thema verwenden Sie .NET, um Text auf einem LCD-Zeichendisplay mit einem I2C GPIO-Expander anzuzeigen.
Voraussetzungen
- ARM-basierter (ARMv7 oder höher) Single-Board-Computer (SBC)
- 20x4 LCD-Zeichenanzeige mit I2C-Schnittstelle
- Jumper-Kabel
- Breadboard (optional/empfohlen)
- Raspberry Pi GPIO Breakout Board (optional/empfohlen)
- .NET SDK 10 oder höher
Hinweis
Dieses Tutorial wurde unter der Annahme geschrieben, dass das Zielgerät ein Raspberry Pi ist. Dieses Lernprogramm kann jedoch für jeden linuxbasierten SBC verwendet werden, der .NET unterstützt, z. B. Orange Pi, ODROID und mehr.
Hinweis
Es gibt viele Hersteller von LCD-Zeichenanzeigen. Die meisten Designs sind identisch, und der Hersteller sollte keinen Unterschied zu den Funktionen machen. Als Referenz wurde dieses Lernprogramm mit dem SunFounder-LCD2004 entwickelt.
Vorbereiten des SBC
Stellen Sie sicher, dass Ihr SBC für die Unterstützung der folgenden Dienste konfiguriert ist:
- SSH
- I2C
Bei vielen Geräten ist keine weitere Konfiguration erforderlich. Verwenden Sie für Raspberry Pi den raspi-config Befehl. Weitere Informationen raspi-configfinden Sie in der Raspberry Pi-Dokumentation.
Vorbereiten der Hardware
Verwenden Sie Jumper-Kabel, um die vier Pins auf dem I2C GPIO Expander wie folgt mit dem Raspberry Pi zu verbinden:
- GND zu Erde
- VCC zu 5V
- SDA zu SDA (GPIO 2)
- SCL zu SCL (GPIO 3)
Weitere Informationen finden Sie in den folgenden Abbildungen:
| I2C-Schnittstelle (Rückseite des Displays) | Raspberry Pi GPIO |
|---|---|
|
|
Bild mit freundlicher Genehmigung der Raspberry Pi Foundation. |
Tipp
Ein GPIO-Breakout-Board in Verbindung mit einer Steckplatine wird empfohlen, um die Verbindungen zum GPIO-Header zu optimieren.
Erstellen der App
Führen Sie in Ihrer bevorzugten Entwicklungsumgebung die folgenden Schritte aus:
Erstellen Sie eine neue .NET Konsolen-App entweder mithilfe der .NET CLI oder Visual Studio. Nennen Sie es LcdTutorial.
dotnet new console -o LcdTutorial cd LcdTutorialFügen Sie das Iot.Device.Bindings-Paket dem Projekt hinzu. Verwenden Sie entweder .NET CLI aus dem Projektverzeichnis oder Visual Studio.
dotnet package add Iot.Device.Bindings --version 4.1.0Ersetzen Sie den Inhalt von Program.cs durch den folgenden Code:
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); }Im vorhergehenden Code:
Eine using-Deklaration erstellt eine Instanz von
I2cDevice, indem sieI2cDevice.Createaufruft und ein neuesI2cConnectionSettingsmit den ParameternbusIdunddeviceAddressübergibt. DiesI2cDevicestellt den I2C-Bus dar. DieusingDeklaration stellt sicher, dass das Objekt beendet wird und Hardwareressourcen ordentlich freigegeben werden.Warnung
Die Geräteadresse für den GPIO-Expander hängt von dem vom Hersteller verwendeten Chip ab. GPIO-Expander, die mit einem PCF8574 ausgestattet sind, verwenden die Adresse
0x27, während diejenigen, die PCF8574A-Chips verwenden,0x3Fverwenden. Weitere Informationen finden Sie in der Dokumentation des LCD.Eine weitere
usingDeklaration erstellt eine Instanz vonPcf8574und übergibtI2cDevicean den Konstruktor. Diese Instanz stellt den GPIO-Expander dar.Eine weitere
usingDeklaration erstellt eine Instanz vonLcd2004, die die Anzeige repräsentiert. Es werden mehrere Parameter an den Konstruktor übergeben, die die Einstellungen beschreiben, die für die Kommunikation mit dem GPIO-Expander verwendet werden sollen. Die GPIO-Erweiterung wird alscontrollerParameter übergeben.Eine
whileSchleife läuft endlos. Bei jeder Iteration passiert Folgendes:- Löscht die Anzeige.
- Legt die Cursorposition auf die erste Position in der aktuellen Zeile fest.
- Schreibt die aktuelle Uhrzeit an der aktuellen Cursorposition in die Anzeige.
- Iteriert den aktuellen Linienzähler.
- Wartet 1000 ms lang ab.
Erstellen Sie die App. Wenn Sie die .NET CLI verwenden, führen Sie
dotnet buildaus. Zum Erstellen in Visual Studio drücken Sie Ctrl+Shift+B.Stellen Sie die App auf dem SBC als eigenständige App bereit. Anweisungen finden Sie unter Deploy .NET apps to Raspberry Pi. Stellen Sie sicher, dass Sie der ausführbaren Datei mit
chmod +xdie Berechtigung zum Ausführen erteilen.Führen Sie die App auf dem Raspberry Pi aus, indem Sie zum Bereitstellungsverzeichnis wechseln und die ausführbare Datei ausführen.
./LcdTutorialSehen Sie sich die LCD-Zeichenanzeige an, wenn die aktuelle Uhrzeit in jeder Zeile angezeigt wird.
Tipp
Wenn die Anzeige beleuchtet ist, aber kein Text angezeigt wird, versuchen Sie, die Kontrastauswahloption auf der Rückseite der Anzeige anzupassen.
Beenden Sie das Programm, indem Sie STRG+C drücken.
Glückwunsch! Sie haben Text auf einem LCD-Display mit einer I2C und einem GPIO-Erweiterung angezeigt!
Herunterladen des Quellcodes
Die Quelle für dieses Lernprogramm ist auf GitHub verfügbar.