Arduino UNO Q - Tastenfeld 1x4

Möchten Sie ein einfaches 4-Tasten-Tastenfeld zu Ihrem Arduino UNO Q-Projekt hinzufügen? In diesem Tutorial erfahren Sie, wie Sie Tastaturdrücke mit Entprellung erkennen und sogar Telegram-Benachrichtigungen senden, wenn eine Taste gedrückt wird.

In diesem Tutorial erfahren Sie:

Arduino UNO Q Tastenfeld 1x4

Erforderliche Hardware

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

Ein 1x4-Tastenfeld hat vier Tasten, die in einer Reihe angeordnet sind. Es wird verwendet, um Codes einzugeben, Menüs zu navigieren oder Aktionen in verschiedenen Projekten auszulösen.

Pinbelegung

Das 1x4-Tastenfeld hat 5 Pins. Die Pin-Reihenfolge entspricht nicht der Tastaturreihenfolge auf dem Etikett:

  • Pin 1 → Taste 2
  • Pin 2 → Taste 1
  • Pin 3 → Taste 4
  • Pin 4 → Taste 3
  • Pin 5 → Common (GND)
Tastenfeld 1x4 Pinbelegung

Verdrahtungsplan

Arduino UNO Q Tastenfeld 1x4 Verdrahtungsplan

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

Tastenfeld Pin Arduino UNO Q MCU
Pin 1 (Taste 2) D2
Pin 2 (Taste 1) D3
Pin 3 (Taste 4) D4
Pin 4 (Taste 3) D5
Pin 5 (Common) GND

Arduino UNO Q Code

Der Arduino UNO Q hat zwei Prozessoren, die zusammenarbeiten:

  • Der STM32 MCU liest die Tastenfeld-Pins direkt mit Entprellung über die ezButton-Bibliothek
  • Die 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 untätig. Ein späterer Abschnitt zeigt, wie beide Prozessoren über Bridge zusammenarbeiten.

Jede Taste im 1x4-Tastenfeld funktioniert wie ein Knopf, der zwischen einem Pin und GND verbunden ist. Die ezButton-Bibliothek handhabt automatisch das Entprellen für alle vier Tasten.

/* * 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-1x4 */ #include <ezButton.h> #define KEY_NUM 4 #define PIN_KEY_1 3 // Arduino UNO Q MCU pin connected to key 1 #define PIN_KEY_2 2 // Arduino UNO Q MCU pin connected to key 2 #define PIN_KEY_3 5 // Arduino UNO Q MCU pin connected to key 3 #define PIN_KEY_4 4 // Arduino UNO Q MCU pin connected to key 4 ezButton keypad_1x4[KEY_NUM] = { ezButton(PIN_KEY_1), ezButton(PIN_KEY_2), ezButton(PIN_KEY_3), ezButton(PIN_KEY_4) }; void setup() { Serial.begin(115200); delay(1500); for (byte i = 0; i < KEY_NUM; i++) { keypad_1x4[i].setDebounceTime(100); } Serial.println("Arduino UNO Q Keypad 1x4 ready"); } void loop() { int key = getKeyPressed(); if (key) { Serial.print("Key pressed: "); Serial.println(key); } } int getKeyPressed() { for (byte i = 0; i < KEY_NUM; i++) keypad_1x4[i].loop(); // MUST call loop() first for (byte i = 0; i < KEY_NUM; i++) { if (keypad_1x4[i].isPressed()) return (i + 1); } return 0; }

Schnelle Schritte

Zum ersten 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 1x4-Tastenfeld mit dem Arduino UNO Q MCU wie im obigen Verdrahtungsplan dargestellt.
  • Öffnen Sie Arduino App Lab: Starten Sie Arduino App Lab und warten Sie, bis das Arduino UNO Q erkannt wird – dies kann beim ersten Start mehrere Minuten dauern.
  • 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, z. B.: Keypad1x4
  • Klicken Sie auf Erstellen, um zu bestätigen.
Arduino App Lab App-Ordner und Dateien auf Arduino UNO Q
  • Suchen Sie die Datei sketch/sketch.ino – hier werden Sie die MCU-Skizze einfügen.
  • Skizze einfügen: Kopieren Sie den MCU-Code oben und fügen Sie ihn in diese Skizzendatei 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 ezButton created by ArduinoGetStarted.com 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
    ezButton ArduinoGetStarted.com

    Button library supports debounce, pressed/released events and the press counting. It is easy to use with multiple buttons. The library can be used for push-button, momentary switches, toggle switch, magnetic contact switch (door sensor)... It is designed for not only beginners but also experienced users.

    1.0.6
    Install
    More Info
    • Upload: Klicken Sie auf die Schaltfläche Ausführen in Arduino App Lab, um zum STM32 zu kompilieren und hochzuladen.
    Klicken Sie auf die Schaltfläche Ausführen in Arduino App Lab auf Arduino UNO Q
    • Öffnen Sie den seriellen Monitor und drücken Sie jede Taste auf dem Tastenfeld. Sie sehen die Tastennummer 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 1x4 ready [2026-04-29 09:00:05] Key pressed: 1 [2026-04-29 09:00:08] Key pressed: 2 [2026-04-29 09:00:11] Key pressed: 3 [2026-04-29 09:00:14] Key pressed: 4

    Bridge: Linux + MCU

    In diesem Abschnitt wird gezeigt, wie Sie beide Prozessoren des Arduino UNO Q programmieren, damit die Linux-Seite Tastenfeld-Drücke remote lesen kann:

    • Das 1x4-Tastenfeld ist mit dem MCU (STM32) verbunden – der MCU fragt jede Taste mit Entprellung in loop() ab
    • Die MPU kann Tastenfeld-Pins nicht direkt lesen – sie muss die zuletzt gedrückte Taste vom MCU über Bridge.call() anfordern
    • Die MPU hat Wi-Fi – sie führt ein vollständiges Debian Linux aus und kann auf Tastaturdrücke reagieren und Benachrichtigungen über das Internet senden
    • Arduino_RouterBridge ermöglicht RPC-Kommunikation zwischen den beiden Prozessoren
    • ⚠️ /dev/ttyHS1 (Linux) und Serial1 (MCU) sind RESERVIERT für den Router – öffnen Sie sie niemals in Benutzercode

    Kurz gesagt: MCU fragt das Tastenfeld ab → MPU liest die letzte Taste über Bridge → MPU kann auf Tastaturdrücke von überall im Internet reagieren.

    Hinweis: In der Bridge-Skizze wird die ezButton-Abfrageschleife in der Arduino-Funktion loop() platziert, um den Knopfzustand auf dem neuesten Stand zu halten – 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-1x4 */ #include <ezButton.h>#include "Arduino_RouterBridge.h" #define KEY_NUM 4 #define PIN_KEY_1 3 #define PIN_KEY_2 2 #define PIN_KEY_3 5 #define PIN_KEY_4 4 ezButton keypad_1x4[KEY_NUM] = { ezButton(PIN_KEY_1), ezButton(PIN_KEY_2), ezButton(PIN_KEY_3), ezButton(PIN_KEY_4) }; int last_key = 0; String get_key(String arg) { int key = last_key; last_key = 0; // clear after reading 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(); for (byte i = 0; i < KEY_NUM; i++) { keypad_1x4[i].setDebounceTime(100); } Bridge.provide("get_key", get_key); Bridge.provide("get_status", get_status); Monitor.println("Arduino UNO Q Keypad 1x4 Bridge ready"); } void loop() { for (byte i = 0; i < KEY_NUM; i++) keypad_1x4[i].loop(); for (byte i = 0; i < KEY_NUM; i++) { if (keypad_1x4[i].isPressed()) { last_key = i + 1; Monitor.println("Key pressed: " + String(last_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-1x4 */ from arduino.app_utils import * import time def loop(): result = Bridge.call("get_key") key = int(result) if key != 0: print(f"Key pressed: {key}") else: print("No key pressed") time.sleep(0.2) App.run(user_loop=loop)

    Schnelle Schritte

    • Verbinden: Verdrahten Sie das 1x4-Tastenfeld mit Arduino UNO Q wie im Verdrahtungsplan dargestellt.
    • Öffnen Sie Arduino App Lab: Starten Sie Arduino App Lab und warten Sie auf die Erkennung des Boards.
    • Erstellen Sie eine neue App: Klicken Sie auf Neue App erstellen, benennen Sie sie Keypad1x4Bridge, und klicken Sie dann 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 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 die 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 1x4 Bridge ready [2026-04-29 09:00:05] Key pressed: 1 [2026-04-29 09:00:09] Key pressed: 3
    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:09] Key pressed: 3

    Telegram

    Erhalten Sie Telegram-Benachrichtigungen, wenn eine Taste auf dem 1x4-Tastenfeld gedrückt wird – nützlich für Remote-Türklingeln, Zugriffscodes oder Ereignisauslöser.

    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-1x4 */ 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 send Telegram alert on key press result = Bridge.call("get_key") key = int(result) if key != 0: msg = f"Key pressed: {key}" print(msg) send_message(CHAT_ID, msg) # Also 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 1x4 Bot\n" "/key - Read the last key pressed\n" "/status - Get keypad status") elif text == "/key": result = Bridge.call("get_key") key = int(result) if key != 0: send_message(chat_id, f"Key pressed: {key}") 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 Schaltfläche Ausführen. Drücken Sie Tasten auf dem Tastenfeld – 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:08] Key pressed: 2 [2026-04-29 09:15:20] Received: /key [2026-04-29 09:15:35] Key pressed: 4
    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 2 on keypad)
    10:17 AM ✓✓
    Key pressed: 2
    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 1x4-Tastenfeld und Arduino UNO Q erstellen:

    • Remote-Zugriffscode-Eingabe: Der Benutzer drückt eine 4-Tasten-Kombination auf dem Tastenfeld; die MPU empfängt die Sequenz über Bridge und validiert sie, sendet dann eine Telegram-Benachrichtigung bei Erfolg oder Fehler
    • Menünavigationssystem: Verwenden Sie die Tasten 1–4, um ein Menü auf dem Serial Monitor oder der LCD-Anzeige zu navigieren – die MPU verfolgt die Auswahl und reagiert
    • Event-Buzzer-System: Jede Taste im Tastenfeld löst eine andere Aktion aus (z. B. ein Relais einschalten, einen Summer ertönen lassen oder eine Telegram-Benachrichtigung senden)
    • Einfacher Spielecontroller: Verwenden Sie das 1x4-Tastenfeld als direktionale Eingabe (links/rechts/oben/unten) in einem einfachen textbasierten Spiel auf der Linux-MPU
    • Telegram-Türklingel: Drücken Sie Taste 1 im Tastenfeld, um eine Telegram-"Türklingel" zu aktivieren – die MPU sendet automatisch eine Benachrichtigung an das Mobiltelefon des Hausbesitzers

    Fordern Sie sich selbst heraus

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

    • Einfach: Ändern Sie die MCU-Skizze so ab, dass eine LED, die mit D6 verbunden ist, jedes Mal aufleuchtet, wenn eine Taste gedrückt wird.
    • Mittel: Implementieren Sie ein 4-stelliges PIN-Code-System im MCU – das Drücken der Tasten 1-2-3-4 in Reihenfolge entsperrt ein Relais, während jede falsche Sequenz die Eingabe zurückgesetzt wird.
    • Erweitert: Erstellen Sie ein Telegram-basiertes Remote-Tastenfeld: Verwenden Sie /key, um die zuletzt gedrückte Taste abzurufen, und erstellen Sie dann eine Zustandsmaschine in Python, die Tastensequenzen als Befehle interpretiert (z. B. 1-1-2 = "Lichter an", 2-1-1 = "Lichter aus").

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