Ereignisse
17. März, 21 Uhr - 21. März, 10 Uhr
Nehmen Sie an der Meetup-Serie teil, um skalierbare KI-Lösungen basierend auf realen Anwendungsfällen mit Mitentwicklern und Experten zu erstellen.
Jetzt registrierenDieser Browser wird nicht mehr unterstützt.
Führen Sie ein Upgrade auf Microsoft Edge durch, um die neuesten Features, Sicherheitsupdates und den technischen Support zu nutzen.
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 stellt eine direkte Verbindung mit dem GPIO-Expander her, der dann über das serielle Protokoll der Inter-Integrated Leitung (I2C) eine Verbindung mit dem Raspberry Pi herstellt.
Bei diesem Thema werden Sie .NET zum Anzeigen von Text auf einer LCD-Zeichenanzeige mithilfe eines I2C-GPIO-Expander verwenden.
Hinweis
Dieses Tutorial wurde unter der Annahme geschrieben, dass das Zielgerät ein Raspberry Pi ist. Dieses Tutorial kann jedoch für jeden Linux-basierten 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 LCD2004entwickelt.
Stellen Sie sicher, dass Ihr SBC für die Unterstützung der folgenden Dienste konfiguriert ist:
Bei vielen Geräten ist keine weitere Konfiguration erforderlich. Verwenden Sie bei einem Raspberry Pi den raspi-config
-Befehl. Weitere Informationen zu raspi-config
finden Sie in der Dokumentation für Raspberry Pi.
Verbinden Sie die vier Pins auf dem I2C-GPIO-Expander mit dem Raspberry PI mithilfe von Jumper-Drähten wie folgt:
Weitere Informationen finden Sie in den folgenden Abbildungen:
I2C-Schnittstelle (Rückseite der Anzeige) | 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.
Führen Sie in Ihrer bevorzugten Entwicklungsumgebung die folgenden Schritte aus:
Erstellen Sie eine neue .NET-Konsolen-App, indem Sie entweder die .NET-CLI oder Visual Studio verwenden. Nennen Sie sie LcdTutorial.
dotnet new console -o LcdTutorial
cd LcdTutorial
Fügen Sie das Paket Iot.Device.Bindings in das Projekt ein. Verwenden Sie entweder .NET CLI aus dem Projektverzeichnis oder Visual Studio.
dotnet add package Iot.Device.Bindings --version 2.2.0-*
Ersetzen 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);
}
Für den Code oben gilt:
Eine using-Deklaration erstellt eine Instanz von I2cDevice
, indem I2cDevice.Create
aufgerufen und ein neues I2cConnectionSettings
mit busId
- den deviceAddress
-Parametern und übergeben wird. Diese Instanz von I2cDevice
stellt den I2C-Bus dar. Mit der using
-Deklaration wird sichergestellt, dass das Objekt verworfen wird und die Hardwareressourcen richtig freigegeben werden.
Warnung
Die Geräteadresse für den GPIO-Expander hängt von dem vom Hersteller verwendeten Chip ab. Bei GPIO-Expander, der mit einem PCF8574 ausgestattet ist, wird die 0x27
-Adresse verwendet, bei der Verwendung von PCF8574A-Chips die Adresse 0x3F
. Weitere Informationen finden Sie in der Dokumentation des LCD.
Mit einer weiteren using
-Deklaration wird eine Instanz von Pcf8574
erstellt und das Element I2cDevice
an den Konstruktor übergeben. Diese Instanz stellt den GPIO-Expander dar.
Eine andere using
-Deklaration erstellt eine Instanz von Lcd2004
zur Darstellung der Anzeige. Es werden mehrere Parameter an den Konstruktor übergeben, die die Einstellungen beschreiben, die für die Kommunikation mit dem GPIO-Expander verwendet werden sollen. Der GPIO-Expander wird als controller
-Parameter übergeben.
Eine while
-Schleife wird ohne zeitliche Begrenzung ausgeführt. Bei jeder Iteration passiert Folgendes:
Erstellen Sie die App. Führen Sie dotnet build
aus, wenn Sie die .NET-CLI verwenden. Drücken Sie STRG+UMSCHALT+B, um die App in Visual Studio zu kompilieren.
Stellen Sie die App auf dem SBC als eigenständige App bereit. Anweisungen hierzu finden Sie unter Bereitstellen von .NET-Apps auf einem Raspberry Pi-Gerät. Erteilen Sie dabei mithilfe von chmod +x
die execute-Berechtigung für ausführbare Dateien.
Führen Sie die App auf dem Raspberry Pi aus, indem Sie zum Bereitstellungsverzeichnis wechseln und die ausführbare Datei ausführen.
./LcdTutorial
Sehen 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 einen Text auf einem LCD mit einem I2C und einem GPIO-Expander angezeigt!
Der Quellcode für dieses Tutorial ist auf GitHub verfügbar.
Feedback zu .NET
.NET ist ein Open Source-Projekt. Wählen Sie einen Link aus, um Feedback zu geben:
Ereignisse
17. März, 21 Uhr - 21. März, 10 Uhr
Nehmen Sie an der Meetup-Serie teil, um skalierbare KI-Lösungen basierend auf realen Anwendungsfällen mit Mitentwicklern und Experten zu erstellen.
Jetzt registrierenTraining
Lernpfad
Erstellen und Ausführen einfacher C#-Konsolenanwendungen (Erste Schritte mit C#, Teil 2) - Training
Verwenden Sie Visual Studio Code, um C#-Konsolenanwendungen zu entwickeln, die Arrays, foreach-Schleifen und if-Anweisungen implementieren.
Dokumentation
Lesen von Umgebungsbedingungen aus einem Sensor - .NET
Hier erfahren Sie, wie Sie mit den .NET-IoT-Bibliotheken Temperatur, Luftdruck und Luftfeuchtigkeit lesen können.
Erfahren Sie, wie Sie eine LED mit den .NET-IoT-Bibliotheken blinken lassen.
Verwenden von GPIO für binäre Eingaben - .NET
Erfahren Sie, wie Sie GPIO für binäre Eingaben mit den .NET IoT-Bibliotheken verwenden.