Arduino UNO Q - Tastenfeld 4x4

Möchten Sie ein vollständiges 16-Tasten-Membrantastenfeld zu Ihrem Arduino UNO Q-Projekt hinzufügen? In diesem Tutorial erfahren Sie, wie Sie alle 16 Tasten auslesen und ein Passwort-Eingabesystem erstellen – mit Telegram-Benachrichtigungen.

In diesem Tutorial erfahren Sie:

Arduino UNO Q 4x4 Tastenfeld

Hardware erforderlich

1×Arduino UNO Q
1×USB-Kabel für Arduino Uno Q
1×Tastenfeld 4x4
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 4x4-Tastenfeld

Ein 4x4-Tastenfeld hat 16 Membrantasten, angeordnet in 4 Reihen und 4 Spalten – mit Ziffern 0–9, Buchstaben A–D und Symbolen * und #.

Pinbelegung

Ein 4x4-Tastenfeld hat 8 Pins, unterteilt in Reihen und Spalten:

  • 4 Pins für Reihen: R1, R2, R3, R4
  • 4 Pins für Spalten: C1, C2, C3, C4
4x4 Tastenfeld Pinbelegung

Verdrahtungsdiagramm

Arduino UNO Q Tastenfeld 4x4 Verdrahtungsdiagramm

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

Tastenfeld-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
C4 (Spalte 4) D2

Arduino UNO Q Code

Arduino UNO Q hat zwei Prozessoren, die zusammenarbeiten:

  • Die STM32 MCU liest die Tastenfeld-Matrix direkt mit der DIYables_Keypad-Bibliothek
  • Die Qualcomm MPU führt Debian Linux aus und verwaltet Wi-Fi, Python und Cloud-Konnektivität
  • In diesem Abschnitt wird nur die MCU programmiert – die Linux-Seite bleibt untätig. 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-4x4 */ #include <DIYables_Keypad.h> const int ROW_NUM = 4; const int COLUMN_NUM = 4; char keys[ROW_NUM][COLUMN_NUM] = { { '1', '2', '3', 'A' }, { '4', '5', '6', 'B' }, { '7', '8', '9', 'C' }, { '*', '0', '#', 'D' } }; byte pin_rows[ROW_NUM] = { 9, 8, 7, 6 }; // Arduino UNO Q MCU pins for rows byte pin_column[COLUMN_NUM] = { 5, 4, 3, 2 }; // 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 4x4 ready"); } void loop() { char key = keypad.getKey(); if (key) { Serial.print("Key pressed: "); Serial.println(key); } }

Schnelle Schritte

Erste Erfahrung mit Arduino UNO Q? Folgen Sie dem Tutorial Erste Schritte mit Arduino UNO Q, um Ihre Entwicklungsumgebung vorzubereiten.

  • Verbinden: Verdrahten Sie das 4x4-Tastenfeld wie im Verdrahtungsdiagramm oben gezeigt mit Arduino UNO Q MCU.
  • Ö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.
Neue App in Arduino App Lab auf Arduino UNO Q erstellen
  • Geben Sie der App einen Namen, beispielsweise: Keypad4x4
  • Klicken Sie auf Erstellen, um zu bestätigen.
Arduino App Lab App-Ordner und Dateien auf Arduino UNO Q
  • Fügen Sie die Skizze ein: Kopieren Sie den MCU-Code oben und fügen Sie ihn in sketch/sketch.ino ein. Behalten Sie andere Dateien als Standard.
  • 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
  • Upload: Klicken Sie auf die Run-Schaltfläche in Arduino App Lab.
Klicken Sie auf die Run-Schaltfläche in Arduino App Lab auf Arduino UNO Q
  • Öffnen Sie den Seriellen Monitor und drücken Sie Tasten auf dem Tastenfeld. Sie werden jede gedrückte Taste sehen.
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 4x4 ready [2026-04-29 09:00:05] Key pressed: 1 [2026-04-29 09:00:08] Key pressed: A [2026-04-29 09:00:11] Key pressed: #

Tastenfeld und Passwort

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

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

Alle anderen Tasten bauen die Passwort-Zeichenkette nacheinander auf.

Die Logik:

  • Beliebige Taste drücken → an den Eingabepuffer anhängen
  • * drücken → Eingabepuffer löschen
  • # drücken → Eingabe mit gespeichertem Passwort vergleichen, dann 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-4x4 */ #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 vor dem Upload auf Ihr gewünschtes Passwort. Sie können jede Kombination aus Ziffern 0–9, Buchstaben A–D und * oder # im Passwort verwenden.

Bridge: Linux + MCU

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

  • Das 4x4-Tastenfeld ist mit der MCU (STM32) verbunden – die MCU prüft es über keypad.getKey() in loop()
  • Die MPU kann Tastenfeld-Pins nicht direkt lesen – sie muss die zuletzt gedrückte Taste über Bridge.call() von der MCU anfordern
  • Die MPU hat Wi-Fi – es läuft vollständiges Debian Linux, daher kann sie auf Tastatureingaben 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 diese nie in Benutzercode

Kurz gesagt: MCU prüft das Tastenfeld → MPU liest die zuletzt gedrückte Taste über Bridge → MPU kann auf Tastatureingaben von überall über das Internet reagieren.

Hinweis: Im Bridge-Sketch wird keypad.getKey() in der Arduino-loop() aufgerufen, um Tastatureingaben 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-4x4 */ #include <DIYables_Keypad.h>#include "Arduino_RouterBridge.h" const int ROW_NUM = 4; const int COLUMN_NUM = 4; char keys[ROW_NUM][COLUMN_NUM] = { { '1', '2', '3', 'A' }, { '4', '5', '6', 'B' }, { '7', '8', '9', 'C' }, { '*', '0', '#', 'D' } }; byte pin_rows[ROW_NUM] = { 9, 8, 7, 6 }; byte pin_column[COLUMN_NUM] = { 5, 4, 3, 2 }; 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; 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 4x4 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-4x4 */ 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 4x4-Tastenfeld wie im Verdrahtungsdiagramm gezeigt mit Arduino UNO Q.
  • Öffnen Sie Arduino App Lab: Starten Sie Arduino App Lab und warten Sie auf die Board-Erkennung.
  • Erstellen Sie eine neue App: Klicken Sie auf Neue App erstellen, geben Sie der App den Namen Keypad4x4Bridge und klicken Sie auf Erstellen.
  • Fügen Sie die MCU-Skizze ein: Kopieren Sie den MCU-Bridge-Code oben und fügen Sie ihn in sketch/sketch.ino ein.
  • Fügen Sie den Python-Code ein: Kopieren Sie den Python-Bridge-Code oben und fügen Sie ihn in die Python-Datei der App ein.
  • Upload: Klicken Sie auf die Run-Schaltfläche in Arduino App Lab.
Klicken Sie auf die Run-Schaltfläche in Arduino App Lab auf Arduino UNO Q
  • Drücken Sie Tasten auf dem Tastenfeld 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 4x4 Bridge ready [2026-04-29 09:00:05] Key pressed: A [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: A [2026-04-29 09:00:07] No key pressed [2026-04-29 09:00:08] Key pressed: #

Telegram

Erhalten Sie Telegram-Benachrichtigungen, wenn auf dem 4x4-Tastenfeld eine Taste gedrückt wird – nützlich für Fernzugriffssysteme, Ereignisauslöser oder PIN-Code-Warnungen.

MCU-Skizze: Behalten Sie die gleiche MCU-Skizze 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-4x4 */ 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 4x4 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 die gleiche MCU-Skizze).
  • Klicken Sie auf die Run-Schaltfläche. Drücken Sie Tasten auf dem Tastenfeld – Ihr Telegram-Chat erhält automatisch Warnungen.

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: B [2026-04-29 09:15:20] Received: /key [2026-04-29 09:15:35] Key pressed: D
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 B on keypad)
10:17 AM ✓✓
Key pressed: B
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 4x4-Tastenfeld und Arduino UNO Q erstellen:

  • Ferngesteuertes PIN-Code-Schloss: Der Benutzer gibt eine PIN auf dem Tastenfeld ein; die MCU überprüft diese und steuert ein Relais oder Elektroschloss, während die MPU bei Erfolg oder Misserfolg eine Telegram-Warnung sendet
  • Funktionstasten-Controller: Verwenden Sie die Tasten A–D als Funktionstasten-Schnellzugriffe – jede löst eine andere IoT-Aktion aus (z.B. A = Lichter an, B = Lichter aus, C = Lüfter an, D = Alarm)
  • Taschenrechner-Schnittstelle: Erstellen Sie einen einfachen Taschenrechner, bei dem der Benutzer zwei Zahlen und einen Operator über das Tastenfeld eingibt und das Ergebnis im Seriellen Monitor oder auf einem LCD angezeigt wird
  • Telegram-gesteuerte Tastenfeld-Protokollierung: Alle Tastatureingaben werden automatisch an eine Telegram-Gruppe weitergeleitet, um den Fernzugriff auf einen physischen Ort zu überwachen
  • Multi-Benutzer-Zugriffssystem: Weisen Sie verschiedenen Benutzern unterschiedliche PINs zu – die MPU protokolliert jeden erfolgreichen Login mit einem Benutzernamen und Zeitstempel über Telegram

Herausforderungen

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

  • Leicht: Ändern Sie die MCU-Skizze so, dass eine LED eingeschaltet wird, wenn Taste A gedrückt wird, und ausgeschaltet wird, wenn Taste B gedrückt wird.
  • Mittel: Implementieren Sie ein vollständiges Passwort-System in Python: Sammeln Sie Tastatureingaben, die über Bridge empfangen werden, überprüfen Sie die Eingabe, wenn # ankommt, und senden Sie eine Telegram-Nachricht mit „Zugriff gewährt" oder „Zugriff verweigert".
  • Fortgeschritten: Erstellen Sie ein Multi-Benutzer-Tastenfeld-Zugriffssystem – speichern Sie zwei verschiedene PINs in Python; wenn eine der beiden PINs korrekt auf dem Tastenfeld eingegeben wird, aktiviert die MCU ein Relais und die MPU protokolliert das Ereignis mit einem Zeitstempel und sendet eine Telegram-Benachrichtigung, die angibt, welche PIN verwendet wurde.

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