Arduino UNO Q - Tastatur und LCD

Möchten Sie auf einer Tastatur eingeben und die Zeichen auf einem LCD-Display mit Ihrem Arduino UNO Q angezeigt sehen? In diesem Tutorial erfahren Sie genau das — plus wie Sie die Anzeige remote über Telegram überwachen und löschen können.

In diesem Tutorial erfahren Sie:

Arduino UNO Q Tastatur LCD

Erforderliche Hardware

1×Arduino UNO Q
1×USB Cable for Arduino Uno Q
1×LCD I2C 16x2
1×(Alternativ) LCD I2C 20x4
1×Tastenfeld 3x4
1×Breadboard
1×Verbindungskabel
1×(Empfohlen) Schraubklemmenblock-Shield für Arduino Uno
1×(Empfohlen) Sensors/Servo Expansion Shield for Arduino Uno
1×(Empfohlen) Breadboard-Shield für Arduino Uno
1×(Empfohlen) Gehäuse für Arduino Uno
1×(Empfohlen) Prototyping-Grundplatte & Breadboard-Kit für Arduino Uno

Oder Sie können die folgenden Kits kaufen:

1×DIYables Sensor-Kit (18 Sensoren/Displays)
Offenlegung: Einige der in diesem Abschnitt bereitgestellten Links sind Amazon-Affiliate-Links. Wir können eine Provision für Käufe erhalten, die über diese Links getätigt werden, ohne zusätzliche Kosten für Sie. Wir schätzen Ihre Unterstützung.

Kaufhinweis: Eine weitere Möglichkeit ist, das LCD I2C-Display zu erstellen, indem Sie LCD 1602 Display und PCF8574 I2C Adapter Module kombinieren.

Über die Tastatur und das LCD

Wenn Sie neu bei der 3x4-Tastatur oder dem I2C LCD-Display sind, lesen Sie zunächst diese Tutorials:

Schaltschema

Arduino UNO Q Tastatur LCD Schaltschema

Dieses Bild wurde mit Fritzing erstellt. Klicken Sie, um das Bild zu vergrößern.

3x4-Tastaturverbindungen:

Tastaturpin Arduino UNO Q MCU
R1 (Reihe 1) D9
R2 (Reihe 2) D8
R3 (Reihe 3) D7
R4 (Reihe 4) D6
C1 (Spalte 1) D5
C2 (Spalte 2) D4
C3 (Spalte 3) D3

LCD I2C-Verbindungen:

LCD I2C Pin Arduino UNO Q MCU
VCC 5V
GND GND
SDA A4
SCL A5

Arduino UNO Q Code

Der Arduino UNO Q hat zwei Prozessoren, die zusammenarbeiten:

  • Der STM32 MCU liest die Tastatur und steuert das LCD direkt — die gesamte Anzeigelogik und Eingabeverarbeitung läuft auf dem MCU
  • Der Qualcomm MPU führt Debian Linux aus und verwaltet Wi-Fi, Python und Cloud-Konnektivität
  • In diesem Abschnitt wird nur der MCU programmiert — die Linux-Seite bleibt inaktiv. Ein späterer Abschnitt zeigt, wie beide Prozessoren über Bridge zusammenarbeiten.

Das Drücken einer Taste zeigt diese auf dem LCD an. Das Drücken von * löscht den Bildschirm.

/* * Dieser Arduino UNO Q Code wurde von newbiely.de entwickelt * Dieser Arduino UNO Q Code wird der Öffentlichkeit ohne jegliche Einschränkung zur Verfügung gestellt. * Für vollständige Anleitungen und Schaltpläne besuchen Sie bitte: * https://newbiely.de/tutorials/arduino-uno-q/arduino-uno-q-keypad-lcd */ #include <DIYables_Keypad.h> #include <DIYables_LCD_I2C.h> const int ROW_NUM = 4; const int COLUMN_NUM = 3; char keys[ROW_NUM][COLUMN_NUM] = { { '1', '2', '3' }, { '4', '5', '6' }, { '7', '8', '9' }, { '*', '0', '#' } }; byte pin_rows[ROW_NUM] = { 9, 8, 7, 6 }; byte pin_column[COLUMN_NUM] = { 5, 4, 3 }; DIYables_Keypad keypad = DIYables_Keypad(makeKeymap(keys), pin_rows, pin_column, ROW_NUM, COLUMN_NUM); DIYables_LCD_I2C lcd(0x27, 16, 2); int cursorColumn = 0; void setup() { Serial.begin(115200); delay(1500); lcd.init(); lcd.backlight(); lcd.print("Keypad LCD Ready"); Serial.println("Arduino UNO Q Keypad + LCD ready"); } void loop() { char key = keypad.getKey(); if (key) { Serial.print("Key pressed: "); Serial.println(key); if (key == '*') { // Clear LCD lcd.clear(); cursorColumn = 0; } else { lcd.setCursor(cursorColumn, 0); lcd.print(key); cursorColumn++; if (cursorColumn == 16) { lcd.clear(); cursorColumn = 0; } } } }

Schnelle Schritte

Erstes Mal mit Arduino UNO Q? Folgen Sie dem Tutorial Erste Schritte mit Arduino UNO Q, um Ihre Entwicklungsumgebung vor dem Fortfahren vorzubereiten.

  • Verbinden: Verdrahten Sie die 3x4-Tastatur und das LCD I2C mit dem Arduino UNO Q MCU wie im obigen Schaltschema gezeigt.
  • Arduino App Lab öffnen: Starten Sie Arduino App Lab und warten Sie, bis es Ihren Arduino UNO Q erkennt.
  • Neue App erstellen: Klicken Sie auf die Schaltfläche Create New App (Neue App erstellen).
Create New App in Arduino App Lab on Arduino UNO Q
  • Geben Sie der App einen Namen, z.B.: KeypadLcd
  • Klicken Sie auf Create (Erstellen), um zu bestätigen.
Arduino App Lab App folders and files on Arduino UNO Q
  • Sketch einfügen: Kopieren Sie den obigen MCU-Code und fügen Sie ihn in sketch/sketch.ino ein. Behalten Sie die anderen Dateien als Standardwerte bei.
  • Install the library: Click the Add sketch library button (the open book icon with a + sign) in the left sidebar.
Add sketch library in Arduino App Lab on Arduino UNO Q
  • Search for DIYables_Keypad created by DIYables.io and click the Install button.
My Apps / DIYables Apps
Run
Bricks
No bricks added...
Sketch Libraries
No sketch libra...
Files
python
sketch
.gitignore
README.md
app.yaml
sketch.ino
Add sketch library
DIYables_Keypad DIYables.io

The library is designed for Arduino, ESP32, ESP8266... to use with keypad such as 3x4, 4x4 keypad. It also works with Arduino Uno R4 WiFi/Minima

1.0.1
Install
More Info
  • Search for DIYables LCD I2C created by DIYables.io and click the Install button.
My Apps / DIYables Apps
Run
Bricks
No bricks added...
Sketch Libraries
No sketch libra...
Files
python
sketch
.gitignore
README.md
app.yaml
sketch.ino
Add sketch library
DIYables LCD I2C DIYables.io

This library is designed for HD44780-based I2C LCD displays. It provides LiquidCrystal-compatible API plus helper functions (text alignment, progress bars, predefined custom characters). Supports multiple I2C buses (Wire, Wire1, Wire2) for advanced boards like Arduino Giga, Due, and ESP32. Compatible with all Arduino-based platforms including Arduino Uno, Mega, Nano, ESP32, ESP8266, STM32, and Raspberry Pi Pico.

1.0.0
Install
More Info
  • Upload: Klicken Sie auf die Run-Schaltfläche in Arduino App Lab.
Click Run button in Arduino App Lab on Arduino UNO Q
  • Drücken Sie Tasten auf der Tastatur — jedes Zeichen erscheint auf dem LCD. Drücken Sie * zum Löschen.

※ Notiz:

Wenn das LCD nichts anzeigt, überprüfen Sie Fehlerbehebung für LCD I2C für Hilfe.

Bridge: Linux + MCU

Dieser Abschnitt zeigt, wie Sie beide Prozessoren des Arduino UNO Q programmieren, sodass die Linux-Seite Tastatureingaben überwachen und das LCD remote löschen kann:

  • Die 3x4-Tastatur und das LCD sind mit dem MCU (STM32) verbunden — der MCU verwaltet die gesamte Tastaturerkennung und Anzeigedarstellung
  • Der MPU kann nicht direkt auf die Tastatur oder das LCD zugreifen — es muss Bridge-Funktionen aufrufen, um Eingaben zu lesen und die Anzeige zu steuern
  • Der MPU hat Wi-Fi — auf vollständigem Debian Linux läuft es, um auf bestätigte Einträge zu reagieren und Benachrichtigungen über das Internet zu senden
  • Arduino_RouterBridge ermöglicht RPC-Kommunikation zwischen den zwei Prozessoren
  • ⚠️ /dev/ttyHS1 (Linux) und Serial1 (MCU) sind RESERVIERT vom Router — öffnen Sie sie niemals in Benutzercode

Kurz gesagt: MCU liest Tastatureingaben und zeigt sie auf LCD an → MPU überwacht Eingaben und bestätigte Einträge über Bridge → MPU kann reagieren und über das Internet überall hin benachrichtigen.

Hinweis: Im Bridge-Sketch wird keypad.getKey() innerhalb der Arduino loop() aufgerufen, um kontinuierlich Tastendrücke zu erkennen — das ist erforderlich und beeinträchtigt nicht die Bridge-Kommunikation.

MCU Code (Bridge)

/* * Dieser Arduino UNO Q Code wurde von newbiely.de entwickelt * Dieser Arduino UNO Q Code wird der Öffentlichkeit ohne jegliche Einschränkung zur Verfügung gestellt. * Für vollständige Anleitungen und Schaltpläne besuchen Sie bitte: * https://newbiely.de/tutorials/arduino-uno-q/arduino-uno-q-keypad-lcd */ #include <DIYables_Keypad.h> #include <DIYables_LCD_I2C.h>#include "Arduino_RouterBridge.h" const int ROW_NUM = 4; const int COLUMN_NUM = 3; char keys[ROW_NUM][COLUMN_NUM] = { { '1', '2', '3' }, { '4', '5', '6' }, { '7', '8', '9' }, { '*', '0', '#' } }; byte pin_rows[ROW_NUM] = { 9, 8, 7, 6 }; byte pin_column[COLUMN_NUM] = { 5, 4, 3 }; DIYables_Keypad keypad = DIYables_Keypad(makeKeymap(keys), pin_rows, pin_column, ROW_NUM, COLUMN_NUM); DIYables_LCD_I2C lcd(0x27, 16, 2); String typed_buffer = ""; int cursorColumn = 0; bool entry_confirmed = false; String get_typed(String arg) { return typed_buffer; } String clear_lcd(String arg) { lcd.clear(); typed_buffer = ""; cursorColumn = 0; entry_confirmed = false; Monitor.println("LCD cleared"); return "OK"; } String get_status(String arg) { if (typed_buffer.length() == 0) return "LCD: empty"; if (entry_confirmed) return "Confirmed: " + typed_buffer; return "Typing: " + typed_buffer; } void setup() { Bridge.begin(); Monitor.begin(); lcd.init(); lcd.backlight(); lcd.print("Ready"); Bridge.provide("get_typed", get_typed); Bridge.provide_safe("clear_lcd", clear_lcd); Bridge.provide("get_status", get_status); Monitor.println("Arduino UNO Q Keypad + LCD Bridge ready"); } void loop() { char key = keypad.getKey(); if (key) { Monitor.println("Key pressed: " + String(key)); if (key == '*') { lcd.clear(); typed_buffer = ""; cursorColumn = 0; entry_confirmed = false; } else if (key == '#') { entry_confirmed = true; Monitor.println("Entry confirmed: " + typed_buffer); } else { lcd.setCursor(cursorColumn, 0); lcd.print(key); typed_buffer += key; cursorColumn++; if (cursorColumn == 16) { lcd.clear(); cursorColumn = 0; } } } }

Python Code (Bridge)

/* * Dieser Arduino UNO Q Code wurde von newbiely.de entwickelt * Dieser Arduino UNO Q Code wird der Öffentlichkeit ohne jegliche Einschränkung zur Verfügung gestellt. * Für vollständige Anleitungen und Schaltpläne besuchen Sie bitte: * https://newbiely.de/tutorials/arduino-uno-q/arduino-uno-q-keypad-lcd */ from arduino.app_utils import * import time def loop(): result = Bridge.call("get_status") print(result) if result.startswith("Confirmed:"): print(f"Entry confirmed — clearing in 3 seconds...") time.sleep(3) result = Bridge.call("clear_lcd") print(result) time.sleep(0.5) App.run(user_loop=loop)

Schnelle Schritte

  • Verbinden: Verdrahten Sie die 3x4-Tastatur und das LCD I2C mit dem Arduino UNO Q wie im Schaltschema gezeigt.
  • Arduino App Lab öffnen: Starten Sie Arduino App Lab und warten Sie, bis das Board erkannt wird.
  • Neue App erstellen: Klicken Sie auf Create New App (Neue App erstellen), nennen Sie sie KeypadLcdBridge, und klicken Sie dann auf Create (Erstellen).
  • MCU-Sketch einfügen: Kopieren Sie den obigen MCU Bridge-Code und fügen Sie ihn in sketch/sketch.ino ein.
  • Python-Code einfügen: Kopieren Sie den obigen Python Bridge-Code und fügen Sie ihn in die Python-Datei der App ein.
  • Upload: Klicken Sie auf die Run-Schaltfläche in Arduino App Lab.
Click Run button in Arduino App Lab on Arduino UNO Q
  • Geben Sie auf der Tastatur ein und drücken Sie # zum Bestätigen — beobachten Sie die Python-Konsole reagiert.

App Lab Konsolenausgabe

DIYables_Apps
Stop
sketch.ino
1#include "Arduino_RouterBridge.h"
Serial Monitor
Python
Message (Enter to send a message to "Newbiely" on usb(2820070321))
New Line
9600 baud
[2026-04-29 09:00:01] Arduino UNO Q Keypad + LCD Bridge ready [2026-04-29 09:00:05] Key pressed: 1 [2026-04-29 09:00:06] Key pressed: 2 [2026-04-29 09:00:07] Key pressed: 3 [2026-04-29 09:00:08] Key pressed: # [2026-04-29 09:00:08] Entry confirmed: 123
DIYables_Apps
Stop
sketch.ino
1#include "Arduino_RouterBridge.h"
Serial Monitor
Python
[2026-04-29 09:00:03] LCD: empty [2026-04-29 09:00:05] Typing: 1 [2026-04-29 09:00:06] Typing: 12 [2026-04-29 09:00:07] Typing: 123 [2026-04-29 09:00:08] Confirmed: 123 [2026-04-29 09:00:08] Entry confirmed — clearing in 3 seconds... [2026-04-29 09:00:11] OK

Telegram

Erhalten Sie Telegram-Benachrichtigungen, wenn ein Tastatureintrag bestätigt wird (# gedrückt) und das LCD remote von Ihrem Telefon aus.

MCU-Sketch: Behalten Sie denselben MCU-Sketch aus dem vorherigen Bridge-Abschnitt.

Python Code (Telegram)

/* * Dieser Arduino UNO Q Code wurde von newbiely.de entwickelt * Dieser Arduino UNO Q Code wird der Öffentlichkeit ohne jegliche Einschränkung zur Verfügung gestellt. * Für vollständige Anleitungen und Schaltpläne besuchen Sie bitte: * https://newbiely.de/tutorials/arduino-uno-q/arduino-uno-q-keypad-lcd */ from arduino.app_utils import * import requests import time TELEGRAM_BOT_TOKEN = "YOUR_TELEGRAM_BOT_TOKEN" CHAT_ID = "YOUR_CHAT_ID" last_update_id = 0 last_confirmed = "" def get_updates(): global last_update_id url = f"https://api.telegram.org/bot{TELEGRAM_BOT_TOKEN}/getUpdates" params = {"offset": last_update_id + 1, "timeout": 5} try: response = requests.get(url, params=params, timeout=10) data = response.json() if data["ok"]: return data["result"] except Exception as e: print(f"Error getting updates: {e}") return [] def send_message(chat_id, text): url = f"https://api.telegram.org/bot{TELEGRAM_BOT_TOKEN}/sendMessage" payload = {"chat_id": chat_id, "text": text} try: requests.post(url, data=payload, timeout=10) except Exception as e: print(f"Error sending message: {e}") def loop(): global last_update_id, last_confirmed # Auto-notify Telegram when # is pressed (entry confirmed) status = Bridge.call("get_status") if status.startswith("Confirmed:") and status != last_confirmed: last_confirmed = status msg = f"Keypad entry confirmed: {status[len('Confirmed: '):]}" print(msg) send_message(CHAT_ID, msg) # Handle incoming Telegram commands updates = get_updates() for update in updates: last_update_id = update["update_id"] if "message" not in update: continue message = update["message"] chat_id = message["chat"]["id"] text = message.get("text", "").strip() print(f"Received: {text}") if text == "/start": send_message(chat_id, "Arduino UNO Q Keypad + LCD Bot\n" "/typed - Get what's currently typed on the keypad\n" "/clear - Clear the LCD display\n" "/status - Get display status") elif text == "/typed": result = Bridge.call("get_typed") if result: send_message(chat_id, f"Typed: {result}") else: send_message(chat_id, "Nothing typed yet") elif text == "/clear": result = Bridge.call("clear_lcd") last_confirmed = "" send_message(chat_id, result) elif text == "/status": result = Bridge.call("get_status") send_message(chat_id, result) else: send_message(chat_id, "Unknown command. Send /start for help.") time.sleep(0.3) App.run(user_loop=loop)

Schnelle Schritte

  • Ersetzen Sie YOUR_TELEGRAM_BOT_TOKEN durch Ihren tatsächlichen Bot-Token von BotFather.
  • Ersetzen Sie YOUR_CHAT_ID durch Ihre Telegram-Chat-ID.
  • Fügen Sie diesen Python-Code in die Python-Datei Ihrer App ein (behalten Sie denselben MCU-Sketch).
  • Klicken Sie auf die Run-Schaltfläche. Geben Sie auf der Tastatur ein und drücken Sie # — Ihr Telegram-Chat erhält eine Benachrichtigung.

App Lab Konsolenausgabe

DIYables_Apps
Stop
sketch.ino
1#include "Arduino_RouterBridge.h"
Serial Monitor
Python
[2026-04-29 09:15:00] Waiting for Telegram messages... [2026-04-29 09:15:10] Keypad entry confirmed: 1234 [2026-04-29 09:15:25] Received: /typed [2026-04-29 09:15:40] Received: /clear
Telegram
Telegram 12:45
Welcome to Telegram!
ArduinoBot 10:19
Chatting with Arduino...
telegram-botfather
BotFather Yesterday
Your bot has been created.

ArduinoBot

bot
Today
/typed
10:15 AM ✓✓
Typed: 1234
10:16 AM
(presses # on keypad)
10:17 AM ✓✓
Keypad entry confirmed: 1234
10:18 AM
/clear
10:19 AM ✓✓
OK
10:20 AM
/status
10:21 AM ✓✓
LCD: empty
10:22 AM

OpenClaw

You can adapt the OpenClaw to this tutorial by refering the instruction on Arduino Uno Q - OpenClaw Tutorial

Projektideen

Sie können viele kreative Projekte erstellen, die die Tastatur und das LCD mit Arduino UNO Q kombinieren:

  • Remote PIN-Code-Anzeige: Benutzer gibt einen PIN auf der Tastatur ein und dieser wird auf dem LCD angezeigt — der MPU erhält eine Telegram-Benachrichtigung mit dem eingegebenen PIN, wenn # gedrückt wird
  • Smart Entry Logger: Alle bestätigten Tastatureinträge werden mit Zeitstempel auf dem Linux-MPU protokolliert und an Telegram zur Remote-Überwachung weitergeleitet
  • Display Message Board: Die Python-Seite sendet einen Textstring über Bridge und der MCU zeigt ihn auf dem LCD an, während die Tastatur verwendet werden kann, um durch Meldungen zu navigieren
  • Access Code Validator: Python validiert den bestätigten Tastatureintrag gegen eine Liste autorisierter Codes und sendet „Zugriff gewährt" oder „verweigert" über Telegram
  • Multi-Step Input UI: Verwenden Sie das LCD, um den Benutzer durch eine mehrstufige Eingabesequenz zu führen (z.B. zuerst einen Code eingeben, dann einen Wert eingeben) — Python verfolgt den Schrittstatuts

Forder dich selbst heraus

Bereit, mit der Tastatur und dem LCD auf Arduino UNO Q weiter zu gehen? Versuchen Sie diese Herausforderungen:

  • Einfach: Ändern Sie den MCU-Sketch, um auf der zweiten LCD-Zeile „RICHTIG" oder „FALSCH" anzuzeigen, wenn # gedrückt wird, je nachdem, ob die eingegebene Eingabe mit einem festgelegten Passwort übereinstimmt.
  • Mittel: Fügen Sie eine display_message(String) Bridge-Funktion hinzu, die das LCD löscht und eine benutzerdefinierte Nachricht anzeigt, die von Python gesendet wird — damit die Linux-MPU remote alles auf den Bildschirm schreiben kann.
  • Fortgeschrittene: Erstellen Sie einen vollständig Telegram-gesteuerten Zugangsbereich: Benutzer geben einen PIN auf der Tastatur ein, der MPU validiert ihn über Bridge, sendet ein Telegram-Ergebnis, und wenn korrekt, aktiviert ein Relais. Protokollieren Sie alle Versuche mit Zeitstempel auf der Linux-Seite.

※ UNSERE NACHRICHTEN

  • Sie können gerne den Link zu diesem Tutorial teilen. Bitte verwenden Sie jedoch unsere Inhalte nicht auf anderen Websites. Wir haben viel Mühe und Zeit in die Erstellung der Inhalte investiert, bitte respektieren Sie unsere Arbeit!