Arduino UNO Q - Tastaturfeld 3x4

Möchten Sie ein 12-Tasten-Membrantastaturfeld zu Ihrem Arduino UNO Q-Projekt hinzufügen? In diesem Tutorial lernen Sie, wie Sie Tastaturdrücke lesen und ein Passwortüberprüfungssystem erstellen — und erhalten sogar Telegram-Benachrichtigungen, wenn Tasten gedrückt werden.

In diesem Tutorial lernen Sie:

Arduino UNO Q 3x4 Tastaturfeld

Hardware erforderlich

1×Arduino UNO Q
1×USB Cable for Arduino Uno Q
1×Tastenfeld 3x4
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.

Über das 3x4-Tastaturfeld

Ein 3x4-Tastaturfeld hat 12 Membrantasten, die in 4 Reihen und 3 Spalten angeordnet sind — ein standardmäßiges Telefonlayout mit den Tasten 1–9, *, 0 und #.

Pinbelegung

Ein 3x4-Tastaturfeld hat 7 Pins, aufgeteilt in Reihen und Spalten:

  • 4 Pins für Reihen: R1, R2, R3, R4
  • 3 Pins für Spalten: C1, C2, C3
3x4-Tastaturfeld-Pinbelegung

Verdrahtungsdiagramm

Arduino UNO Q Tastaturfeld 3x4 Verdrahtungsdiagramm

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

Tastaturfeld Pin 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

Arduino UNO Q Code

Der Arduino UNO Q hat zwei Prozessoren, die zusammenarbeiten:

  • Der STM32 MCU liest die Tastaturfeldmatrix direkt mit der DIYables_Keypad-Bibliothek
  • 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.
/* * 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-3x4 */ #include <DIYables_Keypad.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 }; // Arduino UNO Q MCU pins for rows byte pin_column[COLUMN_NUM] = { 5, 4, 3 }; // Arduino UNO Q MCU pins for columns DIYables_Keypad keypad = DIYables_Keypad(makeKeymap(keys), pin_rows, pin_column, ROW_NUM, COLUMN_NUM); void setup() { Serial.begin(115200); delay(1500); Serial.println("Arduino UNO Q Keypad 3x4 ready"); } void loop() { char key = keypad.getKey(); if (key) { Serial.print("Key pressed: "); Serial.println(key); } }

Schnelle Schritte

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

  • Verbinden: Verdrahten Sie das 3x4-Tastaturfeld mit dem Arduino UNO Q MCU, wie im Verdrahtungsdiagramm oben 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 App erstellen.
Neue App in Arduino App Lab auf Arduino UNO Q erstellen
  • Geben Sie der App einen Namen, z. B.: Keypad3x4
  • Klicken Sie auf Erstellen, um zu bestätigen.
Arduino App Lab App-Ordner und Dateien auf Arduino UNO Q
  • Sketch einfügen: Kopieren Sie den MCU-Code oben und fügen Sie ihn in sketch/sketch.ino ein. Behalten Sie andere Dateien standardmäßig 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
  • Hochladen: Klicken Sie auf die Schaltfläche Ausführen in Arduino App Lab.
Klicken Sie auf die Schaltfläche Ausführen in Arduino App Lab auf Arduino UNO Q
  • Öffnen Sie den Serial Monitor und drücken Sie Tasten auf dem Tastaturfeld. Sie sehen jeden Tasten gedruckt.
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 3x4 ready [2026-04-29 09:00:05] Key pressed: 1 [2026-04-29 09:00:08] Key pressed: 5 [2026-04-29 09:00:11] Key pressed: #

Tastaturfeld und Passwort

Ein häufiger Einsatz eines 3x4-Tastaturfelds ist die Eingabe eines Passworts. Zwei spezielle Tasten werden verwendet:

  • * — löscht die aktuelle Eingabe und startet von vorne
  • # — bestätigt den Eintrag und überprüft das Passwort

Alle anderen Tasten bauen den Passwort-String nacheinander auf.

Die Logik:

  • Beliebige Zifferntaste drücken → an den Eingabepuffer anhängen
  • * drücken → Eingabepuffer löschen
  • # drücken → Eingabe mit dem gespeicherten Passwort vergleichen, dann den Puffer löschen
/* * 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-3x4 */ #include <DIYables_Keypad.h> // DIYables_Keypad library const int ROW_NUM = 4; //four rows const int COLUMN_NUM = 3; //three columns 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}; //connect to the row pinouts of the keypad byte pin_column[COLUMN_NUM] = {5, 4, 3}; //connect to the column pinouts of the keypad DIYables_Keypad keypad = DIYables_Keypad( makeKeymap(keys), pin_rows, pin_column, ROW_NUM, COLUMN_NUM ); const String password = "1234"; // change your password here String input_password; void setup(){ Serial.begin(9600); Serial.println("Keypad 3x4 password"); input_password.reserve(32); // maximum input characters is 33, change if needed } void loop(){ char key = keypad.getKey(); if (key){ Serial.println(key); if(key == '*') { input_password = ""; // clear input password } else if(key == '#') { if(password == input_password) { Serial.println("password is correct"); // DO YOUR WORK HERE } else { Serial.println("password is incorrect, try again"); } input_password = ""; // clear input password } else { input_password += key; // append new character to input password string } } }

※ Notiz:

Ändern Sie die password-Variable auf Ihr gewünschtes Passwort, bevor Sie hochladen.

Bridge: Linux + MCU

Dieser Abschnitt zeigt, wie Sie beide Prozessoren des Arduino UNO Q programmieren, damit die Linux-Seite Tastaturdrücke ferngesteuert lesen kann:

  • Das 3x4-Tastaturfeld ist mit dem MCU (STM32) verbunden — der MCU fragt es über keypad.getKey() in loop() ab
  • Der MPU kann Tastaturfeld-Pins nicht direkt lesen — er muss die zuletzt gedrückte Taste über Bridge.call() vom MCU anfordern
  • Der MPU hat Wi-Fi — mit vollständigem Debian Linux kann er auf Tasten reagieren und Warnungen über das Internet senden
  • Arduino_RouterBridge ermöglicht RPC-Kommunikation zwischen den beiden Prozessoren
  • ⚠️ /dev/ttyHS1 (Linux) und Serial1 (MCU) sind RESERVIERT vom Router — öffnen Sie sie niemals in Benutzercode

Kurz gesagt: MCU fragt das Tastaturfeld ab → MPU liest die zuletzt gedrückte Taste über Bridge → MPU kann über das Internet auf Tasten reagieren.

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

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-3x4 */ #include <DIYables_Keypad.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); char last_key = 0; String get_key(String arg) { char key = last_key; last_key = 0; // clear after reading if (key == 0) return "none"; return String(key); } String get_status(String arg) { if (last_key == 0) return "No key pressed"; return "Last key: " + String(last_key); } void setup() { Bridge.begin(); Monitor.begin(); Bridge.provide("get_key", get_key); Bridge.provide("get_status", get_status); Monitor.println("Arduino UNO Q Keypad 3x4 Bridge ready"); } void loop() { char key = keypad.getKey(); if (key) { last_key = key; Monitor.println("Key pressed: " + String(key)); } }

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-3x4 */ from arduino.app_utils import * import time def loop(): result = Bridge.call("get_key") if result != "none": print(f"Key pressed: {result}") else: print("No key pressed") time.sleep(0.2) App.run(user_loop=loop)

Schnelle Schritte

  • Verbinden: Verdrahten Sie das 3x4-Tastaturfeld mit dem Arduino UNO Q, wie im Verdrahtungsdiagramm gezeigt.
  • Arduino App Lab öffnen: Starten Sie Arduino App Lab und warten Sie auf die Erkennung des Boards.
  • Neue App erstellen: Klicken Sie auf App erstellen, benennen Sie sie Keypad3x4Bridge, und klicken Sie auf Erstellen.
  • MCU-Sketch einfügen: Kopieren Sie den MCU Bridge-Code oben und fügen Sie ihn in sketch/sketch.ino ein.
  • Python-Code einfügen: Kopieren Sie den Python Bridge-Code oben und fügen Sie ihn in die Python-Datei der App ein.
  • Hochladen: Klicken Sie auf die Schaltfläche Ausführen in Arduino App Lab.
Klicken Sie auf die Schaltfläche Ausführen in Arduino App Lab auf Arduino UNO Q
  • Drücken Sie Tasten auf dem Tastaturfeld und beobachten Sie die Python-Konsole.

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 3x4 Bridge ready [2026-04-29 09:00:05] Key pressed: 1 [2026-04-29 09:00:08] Key pressed: #
DIYables_Apps
Stop
sketch.ino
1#include "Arduino_RouterBridge.h"
Serial Monitor
Python
[2026-04-29 09:00:03] No key pressed [2026-04-29 09:00:05] Key pressed: 1 [2026-04-29 09:00:07] No key pressed [2026-04-29 09:00:08] Key pressed: #

Telegram

Erhalten Sie Telegram-Benachrichtigungen, wenn eine Taste auf dem 3x4-Tastaturfeld gedrückt wird — nützlich für Remote-Zugriffssysteme, Ereignisauslöser oder PIN-Code-Warnungen.

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

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-3x4 */ 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 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 # Poll keypad and notify on key press result = Bridge.call("get_key") if result != "none": msg = f"Key pressed: {result}" 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 3x4 Bot\n" "/key - Read the last key pressed\n" "/status - Get keypad status") elif text == "/key": result = Bridge.call("get_key") if result != "none": send_message(chat_id, f"Key pressed: {result}") else: send_message(chat_id, "No key pressed") 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.2) 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 Schaltfläche Ausführen. Drücken Sie Tasten auf dem Tastaturfeld — Ihr Telegram-Chat erhält automatisch Benachrichtigungen.

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:05] Key pressed: 5 [2026-04-29 09:15:20] Received: /key [2026-04-29 09:15:35] Key pressed: #
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
/key
10:15 AM ✓✓
No key pressed
10:16 AM
(presses key 5 on keypad)
10:17 AM ✓✓
Key pressed: 5
10:18 AM
/status
10:19 AM ✓✓
No key pressed
10:20 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 mit dem 3x4-Tastaturfeld und Arduino UNO Q erstellen:

  • Remote-PIN-Code-Schloss: Benutzer geben einen PIN auf dem Tastaturfeld ein; der MCU validiert ihn und steuert ein Relais oder Magnetschloss, während der MPU eine Telegram-Benachrichtigung bei Erfolg oder Fehler sendet
  • Smart Number Entry: Verwenden Sie das Tastaturfeld, um mehrstellige Nummern einzugeben (z. B. einen Temperatur-Sollwert oder eine Timer-Dauer) und senden Sie sie über Bridge an den Linux MPU zur Verarbeitung
  • Telegram-ausgelöster Tastaturfeld-Validator: Python empfängt einen Telegram-Befehl /check, ruft get_key über Bridge auf und antwortet mit der Taste, die zuletzt auf dem physischen Tastaturfeld gedrückt wurde
  • Menügesteuert Kontrollsystem: Verwenden Sie die Tasten 1–9, um Aktionen auszuwählen, und # zur Bestätigung — Python interpretiert die Auswahl und löst IoT-Aktionen aus, wie das Umschalten von Relais oder das Senden von HTTP-Anfragen
  • Remote-Zugriffscode-Logger: Alle Tastaturdrücke werden automatisch an Telegram weitergeleitet; ein Sicherheitsskript auf dem MPU erkennt wiederholte falsche Versuche und sendet eine Warnung

Fordern Sie sich selbst heraus

Bereit, noch weiter mit dem 3x4-Tastaturfeld auf Arduino UNO Q zu gehen? Versuchen Sie diese Herausforderungen:

  • Einfach: Ändern Sie den MCU-Sketch, um eine LED, die mit D2 verbunden ist, jedes Mal zu aktivieren, wenn # gedrückt wird.
  • Mittel: Implementieren Sie ein vollständiges Passwort-System in Python: Akkumulieren Sie empfangene Tastaturdrücke über Bridge in einen String, überprüfen Sie diesen gegen ein gespeichertes Passwort, wenn # ankommt, und senden Sie eine Telegram-Nachricht, die Erfolg oder Misserfolg anzeigt.
  • Fortgeschrittene: Erstellen Sie ein Telegram-integriertes Zugriffskontrollsystem — ein 4-stelliger PIN wird physisch auf dem Tastaturfeld eingegeben; wenn er korrekt ist, aktiviert der MCU ein Relais (Türschloss); der MPU protokolliert jeden Versuch und sendet eine Telegram-Benachrichtigung mit dem Ergebnis und einem Zeitstempel.

※ 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!