Arduino UNO Q - LCD 20x4
Diese Anleitung zeigt Ihnen, wie Sie ein LCD 20x4 I2C-Display mit Arduino UNO Q verwenden — von grundlegendem Text bis zu benutzerdefinierten Zeichen, Scrollen und Telegram-Fernsteuerung.
- Verbindung eines LCD 20x4 I2C mit Arduino UNO Q
- Anzeige von "Hello World" Text auf allen 4 Reihen
- Anzeige von Text, Ganzzahlen, Dezimalzahlen und Hexadezimalzahlen auf dem LCD
- Erstellung und Anzeige benutzerdefinierter Zeichen auf dem LCD
- Scrollen von Text über das LCD-Display
- Steuerung der LCD-Beleuchtung
- Verwendung von Cursor- und Blinkmodi
- Remote-Steuerung des LCD von Linux aus über Bridge-Programmierung
- Remote-Steuerung des LCD von Telegram aus über Bridge-Programmierung

Erforderliche Hardware
Oder Sie können die folgenden Kits kaufen:
| 1 | × | DIYables Sensor-Kit (18 Sensoren/Displays) |
Kaufhinweis: Eine weitere Möglichkeit ist, das LCD I2C-Display zu erstellen, indem Sie LCD 1602 Display und PCF8574 I2C Adapter Module kombinieren.
Über LCD I2C 20x4
Das LCD 20x4 I2C hat 20 Spalten und 4 Reihen — doppelt so viele Reihen wie das 16x2, was es für Dashboards, Menüs und mehrzeilige Statusanzeigen nützlich macht. Wie das 16x2 verwendet es ein I2C-Backpack für eine einfache 4-adrige Verbindung.
Das LCD-Pinout
Das LCD I2C hat vier Pins:
- GND — mit GND verbinden
- VCC — mit 5V verbinden
- SDA — I2C-Datensignal
- SCL — I2C-Taktsignal

LCD-Koordinate
Das LCD I2C 20x4 hat 20 Spalten und 4 Reihen, nummeriert ab 0.

Verdrahtungsdiagramm

Dieses Bild wurde mit Fritzing erstellt. Klicken Sie, um das Bild zu vergrößern.
| LCD I2C-Pin | Arduino UNO Q-Pin |
|---|---|
| GND | GND |
| VCC | 5V |
| SDA | SDA |
| SCL | SCL |
※ Notiz:
Die I2C-Adresse kann je nach Hersteller unterschiedlich sein. Wir verwenden 0x27 wie von DIYables angegeben. Wenn 0x27 nicht funktioniert, versuchen Sie 0x3F.
Programmierung für LCD I2C 20x4
Die DIYables_LCD_I2C Bibliothek funktioniert für 16x2 und 20x4 — ändern Sie einfach die Spalten- und Zeilenzahl.
- Erstellen Sie das LCD-Objekt für 20x4:
- Initialisierung in setup():
- Verschieben Sie den Cursor und drucken Sie (Reihen 0–3):
Weitere Funktionen wie benutzerdefinierte Zeichen und Fehlerbehebungstipps finden Sie im LCD I2C-Anleitung.
Arduino UNO Q Code — Hello World auf LCD 20x4
Der Arduino UNO Q hat zwei Prozessoren: die STM32 MCU (verwaltet Echtzeitsteuerung der Hardware) und die Qualcomm MPU (läuft Debian Linux). In diesem Abschnitt wird nur die STM32 MCU programmiert — die Linux-Seite bleibt untätig. Ein späterer Abschnitt zeigt, wie beide Prozessoren zusammenarbeiten.
Der Sketch unten zeigt Text auf allen vier Reihen des LCD an.
Schnellschritte
- Erste Verwendung mit Arduino UNO Q? Folgen Sie der Erste Schritte mit Arduino UNO Q Anleitung, um Ihre Entwicklungsumgebung vorzubereiten, bevor Sie fortfahren.
- LCD verdrahten: Verbinden Sie VCC→5V, GND→GND, SDA→SDA, SCL→SCL.
- Verbinden: Stecken Sie den Arduino UNO Q mit einem USB-C-Kabel in Ihren Computer.
- Öffnen Sie Arduino App Lab: Starten Sie Arduino App Lab und warten Sie, bis Ihr Arduino UNO Q erkannt wird.
- Erstellen Sie eine neue App: Klicken Sie auf die Schaltfläche Neue App erstellen.

- Geben Sie der App einen Namen, zum Beispiel: DIYables_LCD_20x4
- Klicken Sie auf Erstellen, um zu bestätigen.
- Es wird ein Satz von Ordnern und Dateien in Ihrer neuen App generiert.

- Suchen Sie die Datei sketch/sketch.ino — dies ist der Ort, an dem Sie den MCU-Sketch einfügen.
- Install the library: Click the Add sketch library button (the open book icon with a + sign) in the left sidebar.

- Search for Arduino_RouterBridge created by Arduino and click the Install button.
- Search for DIYables LCD I2C created by DIYables.io and click the Install button.
- Upload: Klicken Sie auf die Schaltfläche Ausführen in Arduino App Lab, um zu kompilieren und auf die STM32 hochzuladen.

Schauen Sie auf das LCD — alle vier Reihen zeigen Text an: "Hello, World!", "Arduino UNO Q", "LCD 20x4 I2C" und "DIYables.io"!
※ Notiz:
Wenn das LCD nichts anzeigt oder nur schwarze Quadrate, passen Sie das Kontrast-Potentiometer auf dem I2C-Backpack an. Weitere Hilfe finden Sie unter Fehlerbehebung LCD I2C.
Arduino UNO Q Code — Text und Zahlen auf LCD 20x4 anzeigen
Dieses Beispiel zeigt, wie Sie eine einfache Textzeichenfolge, eine Ganzzahl, eine Dezimalzahl und eine Hexadezimalzahl anzeigen — jeweils eine auf einer Reihe.
Schnellschritte
- Kopieren Sie den Code oben und fügen Sie ihn in sketch/sketch.ino ein.
- Klicken Sie auf die Schaltfläche Ausführen in Arduino App Lab.

Das LCD zeigt Text auf Reihe 0, eine Ganzzahl auf Reihe 1, eine Dezimalzahl auf Reihe 2 und eine Hexadezimalzahl auf Reihe 3.
Nützliche LCD-Funktionen - Referenz
Kurzreferenz für häufig verwendete DIYables_LCD_I2C Funktionen:
- lcd.init() — LCD initialisieren
- lcd.backlight() — Beleuchtung einschalten
- lcd.noBacklight() — Beleuchtung ausschalten
- lcd.setCursor(col, row) — Verschieben Sie den Cursor zu Spalte *col*, Reihe *row* (beide sind 0-basiert)
- lcd.print("text") — Drucken Sie eine Zeichenfolge an der aktuellen Cursorposition
- lcd.print(number) — Drucken Sie eine Ganzzahl
- lcd.print(number, HEX) — Drucken Sie eine Ganzzahl in Hexadezimal
- lcd.print(floatVal, decimals) — Drucken Sie einen Dezimalzahl mit der angegebenen Anzahl von Dezimalstellen
- lcd.clear() — Löschen Sie die Anzeige und verschieben Sie den Cursor zu (0, 0)
- lcd.home() — Verschieben Sie den Cursor zu (0, 0) ohne zu löschen
- lcd.createChar(id, array) — Registrieren Sie ein benutzerdefiniertes Zeichen (ID 0–7)
- lcd.write((byte)id) — Zeige ein registriertes benutzerdefiniertes Zeichen an
- lcd.scrollDisplayLeft() — Verschieben Sie alle Inhalte eine Spalte nach links
- lcd.scrollDisplayRight() — Verschieben Sie alle Inhalte eine Spalte nach rechts
- lcd.cursor() — Zeigen Sie den Unterstrich-Cursor
- lcd.noCursor() — Verstecken Sie den Cursor
- lcd.blink() — Zeigen Sie den blinkenden Block-Cursor
- lcd.noBlink() — Beenden Sie den blinkenden Block-Cursor
Arduino UNO Q Code — Benutzerdefinierte Zeichen auf LCD 20x4
Das LCD 20x4 kann bis zu 8 benutzerdefinierte Zeichen speichern (IDs 0–7). Jedes Zeichen wird als eine 8-Reihen × 5-Spalten-Bitmap definiert, die in einem Byte-Array gespeichert ist. Definieren Sie die Arrays, registrieren Sie sie mit lcd.createChar(), dann zeigen Sie sie mit lcd.write() an.
Schnellschritte
- Kopieren Sie den Code oben und fügen Sie ihn in sketch/sketch.ino ein.
- Klicken Sie auf die Schaltfläche Ausführen in Arduino App Lab.

Das LCD zeigt vier Reihen an, jeweils gekennzeichnet mit dem am Ende gezeigten benutzerdefinierten Zeichen: Herz, smiley, Musiknote und Pfeil.
※ Notiz:
Um Ihre eigenen Zeichen zu entwerfen, verwenden Sie den LCD Custom Character Generator — damit können Sie das Pixelmuster zeichnen und das Byte-Array für Ihren Code ausgeben.
Arduino UNO Q Code — Scrollen von Text auf LCD 20x4
scrollDisplayLeft() und scrollDisplayRight() verschieben den gesamten Displayinhalt um eine Spalte pro Aufruf — alle vier Reihen bewegen sich zusammen. Verwenden Sie eine Schleife mit einer kurzen Verzögerung, um einen sanften Scroll-Effekt zu erzeugen.
Schnellschritte
- Kopieren Sie den Code oben und fügen Sie ihn in sketch/sketch.ino ein.
- Klicken Sie auf die Schaltfläche Ausführen in Arduino App Lab.

Der LCD-Inhalt verschiebt sich 20 Schritte nach links, pausiert, dann verschiebt sich 20 Schritte nach rechts zurück zur ursprünglichen Position.
Arduino UNO Q Code — Beleuchtungskontrolle auf LCD 20x4
Verwenden Sie lcd.backlight(), um die Beleuchtungs-LED des I2C-Backpacks einzuschalten, und lcd.noBacklight(), um sie auszuschalten. Diese Demo durchläuft das Muster ein → aus → ein → Blinken.
Schnellschritte
- Kopieren Sie den Code oben und fügen Sie ihn in sketch/sketch.ino ein.
- Klicken Sie auf die Schaltfläche Ausführen in Arduino App Lab.

Beobachten Sie, wie die LCD-Beleuchtung eingeschaltet wird, dann ausgeschaltet wird, dann wieder eingeschaltet wird und schließlich fünfmal blinkt.
Arduino UNO Q Code — Cursor und Blinken auf LCD 20x4
Das LCD unterstützt zwei Cursor-Stile: einen Unterstrich-Cursor (lcd.cursor()) und einen blinkenden Block-Cursor (lcd.blink()). Sie können einzeln oder zusammen angezeigt werden.
Schnellschritte
- Kopieren Sie den Code oben und fügen Sie ihn in sketch/sketch.ino ein.
- Klicken Sie auf die Schaltfläche Ausführen in Arduino App Lab.

Das LCD durchläuft: Unterstrich-Cursor sichtbar → versteckt → blinkender Block-Cursor → gestoppt → Cursor und Blinken zusammen → beide aus.
Linux + MCU Bridge-Programmierung
Der Arduino UNO Q hat zwei Prozessoren, die zusammenarbeiten: die MPU (Qualcomm, läuft Debian Linux) und die MCU (STM32, läuft Zephyr OS mit Ihrem Arduino Sketch). Sie kommunizieren über RPC über die Arduino_RouterBridge Bibliothek — niemals über raw serielle Ports.
- Das LCD ist mit der MCU (STM32) verbunden — über I2C (SDA/SCL). Nur die MCU kann direkt darin schreiben.
- Die MPU kann das LCD nicht direkt steuern — sie ruft MCU-Funktionen wie Bridge.call("set_line1", "text") auf, um jede Reihe zu aktualisieren.
- Die MPU hat Wi-Fi — weil die MPU vollständiges Debian Linux mit Wi-Fi läuft, kann sie Telegram-Befehle empfangen und jede Nachricht auf dem LCD anzeigen.
- Kommunikation: Bridge.call() auf der Linux-Seite ruft Bridge.provide_safe() Funktionen auf der MCU-Seite auf (da LCD-Schreibvorgänge Hardware-API-Aufrufe sind).
- ⚠️ Reserviert: /dev/ttyHS1 (Linux) und Serial1 (MCU) werden vom Arduino Router verwendet — öffnen Sie sie niemals direkt.
Kurz gesagt: MPU sendet Text über Bridge → MCU schreibt zu LCD-Reihe → MCU druckt Ergebnis zu Monitor.
MCU Sketch — LCD 20x4 mit Bridge und Monitor-Ausgabe:
Python-Skript (Arduino App Lab) — Text auf LCD 20x4 von Linux anzeigen:
Schnellschritte
- Erstellen Sie eine neue App: Öffnen Sie Arduino App Lab, klicken Sie auf Neue App erstellen, nennen Sie sie DIYables_LCD_20x4_Bridge, und klicken Sie auf Erstellen.
- Einfügen des MCU Sketch: Kopieren Sie den Bridge MCU Code oben und fügen Sie ihn in sketch/sketch.ino ein.
- Einfügen des Python-Skripts: Kopieren Sie den Python Code oben und fügen Sie ihn in die Python-Datei in der App ein.
- Ausführen der App: Klicken Sie auf die Schaltfläche Ausführen — die Python-Seite aktualisiert alle vier LCD-Reihen, dann löscht und aktualisiert sie erneut.
App Lab Konsolenausgabe
Telegram-Integration
Steuern Sie Ihr LCD 20x4 remote — senden Sie Text auf eine beliebige Reihe von überall aus über Telegram.
Wenn Sie noch keinen Telegram-Bot haben, siehe How to Create a Telegram Bot um Ihr Bot-Token zu erhalten, bevor Sie fortfahren.
MCU Sketch: Behalten Sie den selben MCU Sketch aus dem vorherigen Bridge-Abschnitt — keine Änderungen erforderlich. Stellen Sie sicher, dass er bereits auf die STM32 hochgeladen und ausgeführt wird, bevor Sie fortfahren.
Python-Skript (Arduino App Lab) — Telegram-Bot für LCD 20x4:
- Hinweis: Ersetzen Sie YOUR_BOT_TOKEN durch das Token, das Sie von @BotFather auf Telegram erhalten haben.
- Senden Sie /row1 Hello — zeigt "Hello" auf Reihe 1 an.
- Senden Sie /row2 World — zeigt "World" auf Reihe 2 an.
- Senden Sie /clear — löscht das gesamte LCD.
- Senden Sie /status — gibt den aktuellen Inhalt aller 4 Reihen zurück.
Schnellschritte
- MCU Sketch hochladen: Verwenden Sie den Bridge MCU Sketch aus dem vorherigen Abschnitt.
- Einfügen des Telegram-Skripts: Kopieren Sie den Python Code oben in die Python-Registerkarte.
- Legen Sie Ihr Token fest: Ersetzen Sie YOUR_BOT_TOKEN durch Ihr tatsächliches Bot-Token.
- Ausführen der App: Klicken Sie auf Ausführen — der Bot wartet auf Telegram-Befehle.
- Testen Sie es: Senden Sie /row1 Arduino UNO Q — dieser Text sollte auf der ersten Reihe des LCD angezeigt werden.
App Lab Python-Konsolenausgabe
ArduinoBot
OpenClaw-Integration
Sie können die OpenClaw-Integration auf diese Anleitung anwenden, indem Sie der Anweisung auf Arduino Uno Q - OpenClaw Anleitung folgen
Anwendungs-/Projektideen
- 4-Reihen-Sensor-Dashboard: Zeigen Sie gleichzeitig Temperatur, Luftfeuchtigkeit, Druck und Akkuladung auf allen vier Reihen an
- Netzwerk-Statusfeld: Zeigen Sie IP-Adresse, verbundene Geräte, Betriebszeit und letztes Ereignis auf dedizierten Reihen
- Lab-Ausrüstungsanzeige: Verwenden Sie die 20x4, um Mehrkanal-Sensormessungen in einem kompakten Format anzuzeigen
- Countdown-Timer-Tafel: Zeigen Sie einen großformatige Timer auf allen 4 Reihen für einfaches Lesen auf der anderen Seite des Raumes
- Remote-Nachrichtentafel: Verwenden Sie Telegram, um 4-zeilige Ankündigungen auf ein LCD an einer Wand oder einem Schreibtisch zu drücken
Sich selbst herausfordern
- Einfach: Ändern Sie die /status Antwort so, dass die 4 Reihen als Row 1: text | Row 2: text | Row 3: text | Row 4: text in einer einzelnen Nachricht formatiert sind
- Mittel: Fügen Sie einen /display <text> Befehl hinzu, der langen Text automatisch auf bis zu 4 Reihen mit je 20 Zeichen umbreitet
- Fortgeschrittene: Implementieren Sie einen scrolling Ticker unter Verwendung von lcd.scrollDisplayLeft(), der eine lange Nachricht von Telegram über alle 4 Reihen anzeigt