Arduino UNO Q - Taste
Die Drucktaste ist eine der grundlegendsten Komponenten in Arduino-Projekten. Dieses Tutorial vermittelt Ihnen alles, was Sie wissen müssen, um eine Taste korrekt mit Arduino UNO Q zu verwenden — vom Lesen des Zustands über die Erkennung von Druck- und Freigabeereignissen bis hin zur Remote-Überprüfung des Tastenzustands über Telegram.
※ Notiz:
Bevor wir beginnen, hier sind zwei häufige Anfängerfehler, auf die Sie achten sollten:
- Floating-Input-Problem:
- Symptom: Der Tastenpin liest unvorhersehbare Werte, auch wenn die Taste nicht gedrückt wird.
- Ursache: Kein Pull-up- oder Pull-down-Widerstand ist angeschlossen.
- Lösung: Verwenden Sie den INPUT_PULLUP-Modus im Arduino-Code — dies aktiviert den internen Pull-up-Widerstand und erfordert keine externe Komponente.
- Chattering-Phänomen:
- Symptom: Ein mechanischer Druck wird als mehrere Druckereignisse registriert.
- Ursache: Mechanisches Prellen verursacht schnelle HIGH/LOW-Übergänge.
- Lösung: Implementieren Sie Debounce. Siehe das Tutorial Arduino UNO Q - Button Debounce.
Chattering betrifft nur Anwendungen, die eine genaue Zählung von Drücken benötigen. Für einfache ON/OFF-Steuerung ist es normalerweise nicht relevant.

Erforderliche Hardware
Oder Sie können die folgenden Kits kaufen:
| 1 | × | DIYables Sensor-Kit (18 Sensoren/Displays) |
Über Tasten
Eine Drucktaste (auch als taktile Taste oder momentaner Schalter bekannt) ist geschlossen, während sie gedrückt wird, und öffnet sich, wenn sie freigegeben wird. Häufige Typen sind:
- PCB-montierte Tasten — können auf einem Steckbrett verwendet werden
- Panel-montierte Tasten — zum Einbau in Gehäusen

Pinbelegung
PCB-montierte Tasten haben normalerweise vier Pins — intern in Paaren verbunden. Es werden nur zwei Pins benötigt (nicht das intern verbundene Paar).


Panel-montierte Tasten haben zwei Pins:

Funktionsweise
- Wenn die Taste nicht gedrückt wird: Pin A und Pin B sind nicht verbunden
- Wenn die Taste gedrückt wird: Pin A und Pin B sind verbunden

Tastenverbindung und Logik
Verbinden Sie einen Tastenpin mit GND und den anderen mit einem Arduino UNO Q-Pin, der als INPUT_PULLUP konfiguriert ist:
- Taste nicht gedrückt → Pin liest HIGH
- Taste gedrückt → Pin liest LOW
※ Notiz:
Die Verwendung von INPUT_PULLUP aktiviert den internen Pull-up-Widerstand — kein externer Widerstand ist erforderlich. Dies ist der empfohlene Ansatz für Anfänger.
Schaltplan
- Verdrahtung für PCB-montierte Taste:

Dieses Bild wurde mit Fritzing erstellt. Klicken Sie, um das Bild zu vergrößern.
- Verdrahtung für panel-montierte Taste:

Dieses Bild wurde mit Fritzing erstellt. Klicken Sie, um das Bild zu vergrößern.
So programmieren Sie eine Taste
Stellen Sie den Tastenpin als Eingang mit internem Pull-up ein:
Den Tastenzustand lesen:
※ Notiz:
Zwei häufige Anwendungsfälle:
- Level-basiert: Wenn HIGH → Aktion A durchführen; wenn LOW → Aktion B durchführen (z. B. LED einschalten, während gedrückt)
- Edge-basiert: Wenn sich der Zustand von HIGH zu LOW ändert → Druckereignis; LOW zu HIGH → Freigabeereignis (z. B. LED bei jedem Druck umschalten)
MCU-Code — Tastenzustand lesen
Das Arduino UNO Q hat zwei Prozessoren: das STM32 MCU (handhabt Echtzeitkontrolle der Hardware) und das Qualcomm MPU (läuft Debian Linux). In diesem Abschnitt wird nur das STM32 MCU programmiert — die Linux-Seite bleibt untätig. Ein späterer Abschnitt zeigt, wie beide Prozessoren zusammenarbeiten.
Diese Skizze liest den Tastenzustand und macht das Ergebnis für die Verwendung verfügbar (z. B. zur Steuerung einer LED oder zum Melden über Bridge):
Schnelle Schritte
- Erste Schritte mit Arduino UNO Q? Folgen Sie dem Tutorial Erste Schritte mit Arduino UNO Q, um Ihre Entwicklungsumgebung vorzubereiten, bevor Sie fortfahren.
- Verdrahten Sie die Taste: Verbinden Sie einen Tastenpin mit GND und den anderen mit Pin 7 gemäß dem Schaltplan.
- Verbinden: Stecken Sie 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 es Ihr Arduino UNO Q erkannt hat.
- Erstellen Sie eine neue App: Klicken Sie auf die Schaltfläche Create New App.

- Geben Sie der App einen Namen, z. B.: DIYables_Button
- Klicken Sie auf Create, um zu bestätigen.
- Sie sehen einen Satz von Ordnern und Dateien in Ihrer neuen App generiert.

- Finden Sie die Datei sketch/sketch.ino — hier werden Sie die MCU-Skizze 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.
- Upload: Klicken Sie auf die Run-Schaltfläche in Arduino App Lab, um zu kompilieren und in das STM32 hochzuladen.

- Drücken Sie die Taste: Drücken Sie die Taste und halten Sie sie, dann geben Sie sie frei.
- Siehe den Zustand: Um die Tastenzustandsausgabe in Echtzeit anzuzeigen, siehe den Abschnitt Bridge unten — es fügt eine Funktion get_button_state() hinzu und zeigt den Zustand über die MCU Monitor-Konsole an.
- Pro-Tipp: Verwenden Sie button_state == LOW, um zu überprüfen, ob die Taste gedrückt ist (da INPUT_PULLUP die Logik umkehrt).
MCU-Code — Erkennung von Tasten-Druck- und Freigabeereignissen
Um einzelne Druck- und Freigabeereignisse zu erkennen, verfolgen Sie Zustandsübergänge zwischen HIGH und LOW:
- Funktionsweise: Erkennt einen HIGH→LOW-Übergang (Taste gedrückt) und einen LOW→HIGH-Übergang (Taste freigegeben).
- Pro-Tipp: Fügen Sie Aktionscode in die if-Blöcke ein — z. B. LED umschalten bei Druck oder Ereignis bei Freigabe protokollieren.
※ Notiz:
- Ein einmaliges Drücken kann aufgrund des mechanischen Prellens (Chattering) mehrere Ereignisse auslösen. Siehe das Tutorial Arduino UNO Q - Button Debounce für eine saubere Lösung.
- Für Mehrknopf-Projekte verwenden Sie die ezButton-Bibliothek — sie handhabt Pull-up, Debounce und Edge-Erkennung automatisch. Erfahren Sie mehr über ezButton.
Linux + MCU Bridge-Programmierung
Das Arduino UNO Q hat zwei Prozessoren, die zusammenarbeiten: das MPU (Qualcomm, läuft Debian Linux) und das MCU (STM32, läuft Zephyr OS mit Ihrer Arduino-Skizze). Sie kommunizieren über RPC über die Arduino_RouterBridge-Bibliothek — niemals über Raw Serial Ports.
- Die Taste ist mit dem MCU (STM32) verbunden — verdrahtet mit einem digitalen Eingangspin auf dem STM32. Das MCU liest den Tastenzustand mit digitalRead().
- Das MPU kann die Taste nicht direkt lesen — es muss den aktuellen Zustand vom MCU über Bridge.call() anfordern. Das MCU führt die registrierte Bridge.provide()-Funktion aus und antwortet.
- Das MPU hat Wi-Fi — da das MPU vollständiges Debian Linux mit Wi-Fi ausführt, kann es den Tastenzustand bei Bedarf überprüfen und ihn über Telegram weiterleiten.
- Kommunikation: Bridge.call() auf der Linux-Seite ruft Bridge.provide()-Funktionen auf der MCU-Seite auf
- ⚠️ Reserviert: /dev/ttyHS1 (Linux) und Serial1 (MCU) werden vom Arduino Router verwendet — öffnen Sie sie nie direkt
Kurz gesagt: MPU fordert Tastenzustand an → MCU liest Pin → MCU meldet Ergebnis → MPU protokolliert oder leitet es weiter.
MCU-Skizze — Taste mit Bridge und Monitor-Ausgabe:
Python-Skript (Arduino App Lab) — Tastenzustand von Linux abrufen:
- Hinweis: Stellen Sie sicher, dass Bridge.begin() in der MCU-Skizze aufgerufen wird und die Skizze hochgeladen wird, bevor Sie das Python-Skript auf der Linux-Seite ausführen.
- ⚠️ Warnung: Öffnen Sie /dev/ttyHS1 (auf Linux) oder Serial1 (auf MCU) niemals direkt in Ihrem Code — diese werden vom Arduino Router reserviert und der Zugriff darauf unterbricht die Bridge.
Schnelle Schritte
- Laden Sie die MCU-Skizze hoch: Öffnen Sie Arduino App Lab, erstellen Sie eine neue App, fügen Sie die Bridge MCU-Skizze oben in sketch/sketch.ino ein, behalten Sie die Standard-Bibliotheken und klicken Sie auf Run.
- Fügen Sie das Python-Skript hinzu: Fügen Sie den Python-Code oben in die Python-Registerkarte derselben App ein.
- Führen Sie die App aus: Klicken Sie auf Run — die Python-Seite fragt alle 0,5 Sekunden den Tastenzustand ab.
- Drücken Sie die Taste: Drücken Sie sie und halten Sie sie, dann geben Sie sie frei.
- Überprüfen Sie die Konsole: Öffnen Sie die Registerkarte Konsole → MCU Monitor-Unterregisterkarte, um Druck-/Freigabeereignisse in Echtzeit anzuzeigen.
- Pro-Tipp: Öffnen Sie auch die Registerkarte Python Console Subreg, um die abgerufenen Statuswerte anzuzeigen.
App Lab-Konsolenausgabe
Telegram-Integration
Sie können überprüfen, ob die Taste derzeit gedrückt ist — von überall auf der Welt — indem Sie eine Telegram-Nachricht an Ihr Arduino UNO Q senden.
Wenn Sie noch keinen Telegram-Bot haben, siehe Wie man einen Telegram-Bot erstellt, um Ihr Bot-Token zu erhalten, bevor Sie fortfahren.
Dieser Abschnitt behandelt:
- Ausführung eines Python-Skripts auf der Linux-Seite von Arduino UNO Q, um auf Telegram-Nachrichten zu warten
- Abrufen des Tastenzustands vom MCU über Bridge.call() bei Bedarf
- Rückgabe des Tastenzustands an Telegram als Antwort
MCU-Skizze: Behalten Sie die gleiche MCU-Skizze aus dem vorherigen Bridge-Abschnitt — keine Änderungen erforderlich. Stellen Sie sicher, dass sie bereits auf das STM32 hochgeladen und ausgeführt wird, bevor Sie fortfahren.
Python-Skript (Arduino App Lab) — Telegram-Bot für Tastenzustand:
- Hinweis: Ersetzen Sie YOUR_BOT_TOKEN durch das Token, das Sie von @BotFather auf Telegram erhalten haben.
- Senden Sie /state, um zu überprüfen, ob die Taste derzeit gedrückt ist.
Schnelle Schritte
- Laden Sie die MCU-Skizze hoch: Verwenden Sie die Bridge MCU-Skizze aus dem vorherigen Abschnitt (laden Sie sie zunächst hoch, falls noch nicht geschehen).
- Fügen Sie das Telegram-Skript ein: Kopieren Sie den Python-Code oben in die Python-Registerkarte Ihrer App in Arduino App Lab.
- Legen Sie Ihr Token fest: Ersetzen Sie YOUR_BOT_TOKEN im Skript durch Ihr tatsächliches Bot-Token.
- Führen Sie die App aus: Klicken Sie auf Run — der Bot beginnt sofort, auf Telegram-Nachrichten zu warten.
- Testen Sie es: Öffnen Sie Telegram, finden Sie Ihren Bot, drücken Sie die physische Taste auf Arduino UNO Q, und senden Sie dann /state, um zu sehen, ob sie als gedrückt gelesen wird.
- Pro-Tipp: Kombinieren Sie mit einer LED — schalten Sie sie ein, wenn erkannt wird, dass die Taste über Bridge gedrückt wird.
App Lab-Konsolenausgabe
ArduinoBot
OpenClaw-Integration
Sie können die OpenClaw an dieses Tutorial anpassen, indem Sie auf die Anleitung zum Tutorial Arduino Uno Q - OpenClaw verweisen.
Anwendungs-/Projektideen
Hier sind einige Projektideen mit einer Taste mit Arduino UNO Q:
- Ferngesteuerte Türklingel: Drücken Sie die Taste → Telegram sendet "Someone is at the door!" auf Ihr Telefon
- Notfallwarnung: Drücken und halten Sie 3 Sekunden lang → Telegram sendet eine Warnmeldung
- Ereigniszähler: Zählen Sie Tastendrücke auf dem MCU und senden Sie die Gesamtzahl bei Bedarf über Telegram
- Lichtschalter: Drücken Sie Taste → schalten Sie ein angeschlossenes Licht ein; drücken Sie erneut → schalten Sie es aus
- Zwei-Modus-System: Kurzer Druck wählt Modus A, langer Druck wählt Modus B — jeder löst eine andere Python-Aktion aus
Fordern Sie sich selbst heraus
Versuchen Sie diese Herausforderungen mit Tasten auf Arduino UNO Q:
- Leicht: Ändern Sie die Bridge-Skizze, um die eingebaute LED einzuschalten, wenn die Taste gedrückt wird, und sie auszuschalten, wenn sie freigegeben wird
- Mittel: Erweitern Sie die Bridge-Skizze, um eine Funktion get_press_count() anzuzeigen, die zurückgibt, wie oft die Taste seit der Stromversorgung gedrückt wurde
- Fortgeschritten: Erstellen Sie einen Telegram-Bot, der automatisch eine Nachricht sendet (ohne Abruf), wenn die Taste gedrückt wird — verwenden Sie eine Hintergrundschleife in Python, um Zustandsänderungen über Bridge zu überwachen