Arduino UNO Q - Mehrere Tasten
Das gleichzeitige Verwalten mehrerer Tasten auf Arduino UNO Q ist mit dem richtigen Ansatz einfach. In diesem Tutorial lernen Sie, wie Sie fünf Tasten gleichzeitig mit der ezButton-Bibliothek verwenden — mit vollständiger Entprellungsfunktion und Druck-/Freigabeerkennung — und erweitern dann das Projekt, um Druckzählungen remote über Telegram zu verfolgten.
In diesem Tutorial lernen Sie:
- Wie Sie mehrere Tasten mit Arduino UNO Q verdrahten
- Wie Sie mehrere Tasten gleichzeitig mit der ezButton-Bibliothek lesen und entprellen
- Wie Sie ein Array von Tasten für sauberen, skalierbaren Code verwenden
- Wie Sie Druckzählungen über Bridge verfolgen und diese remote über Telegram abfragen

Erforderliche Hardware
Oder Sie können die folgenden Kits kaufen:
| 1 | × | DIYables Sensor-Kit (18 Sensoren/Displays) |
Über Tasten
Erfahren Sie mehr über Tasten (Pinbelegung, Verdrahtung, Entprellung) in diesen Tutorials:
Schaltplan

Dieses Bild wurde mit Fritzing erstellt. Klicken Sie, um das Bild zu vergrößern.
MCU-Code — Mehrere Tasten mit Entprellung
Arduino UNO Q hat zwei Prozessoren: die STM32 MCU (für echtzeitnahe Hardwaresteuerung) und die Qualcomm MPU (läuft Debian Linux). In diesem Abschnitt wird nur der STM32 MCU programmiert — die Linux-Seite bleibt untätig. Ein späterer Abschnitt zeigt, wie beide Prozessoren zusammenarbeiten.
Die ezButton-Bibliothek verwaltet automatisch Entprellung und Druck-/Freigabeerkennung für jede Taste — keine manuelle Zeitzählungsverfolgung erforderlich:
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.
- Verdrahten Sie die Tasten: Verbinden Sie fünf Tasten mit den Pins 2–6 gemäß dem Schaltplan. Jede Taste hat einen Pin an GND und den anderen am Signalpin.
- Verbinden: Stecken Sie die Arduino UNO Q mit einem USB-C-Kabel in Ihren Computer ein.
- Öffnen Sie Arduino App Lab: Starten Sie Arduino App Lab und warten Sie, bis es Ihre Arduino UNO Q erkennt.
- Erstellen Sie eine neue App: Klicken Sie auf die Schaltfläche Neue App erstellen.

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

- Finden Sie die Datei sketch/sketch.ino — hier fügen Sie die MCU-Skizze ein.
- Install the library: Click the Add sketch library button (the open book icon with a + sign) in the left sidebar.

- Search for ezButton created by ArduinoGetStarted.com and click the Install button.
- Search for Arduino_RouterBridge created by Arduino and click the Install button.
- Upload: Klicken Sie auf die Ausführungsschaltfläche im Arduino App Lab, um zu kompilieren und auf den STM32 hochzuladen.

- Drücken Sie die Tasten nacheinander — drücken und lassen Sie jede Taste los und sehen Sie das Ergebnis im Bridge-Abschnitt unten.
- Pro-Tipp: Fügen Sie Aktionscode in jedem isPressed() / isReleased()-Block hinzu, um LEDs, Servos oder andere Komponenten zu steuern.
Sauberer Code mit einem Taste-Array
Die Verwendung eines Arrays von ezButton-Objekten macht den Code skalierbar — das Hinzufügen von weiteren Tasten erfordert nur das Ändern von BUTTON_NUM:
- So funktioniert es: Die Schleife verarbeitet alle Tasten generisch mit dem Array-Index. Die Druck-/Freigabeereignisse jeder Taste lösen unabhängige Aktionen aus.
- Pro-Tipp: Fügen Sie ein Zähl-Array (int press_count[BUTTON_NUM] = {0}) hinzu und erhöhen Sie press_count[i] bei jedem isPressed(), um zu verfolgen, wie oft jede Taste gedrückt wurde.
Linux + MCU Bridge-Programmierung
Arduino UNO Q hat zwei Prozessoren, die zusammenarbeiten: die MPU (Qualcomm, läuft Debian Linux) und die MCU (STM32, läuft Zephyr OS mit Ihrer Arduino-Skizze). Sie kommunizieren über RPC über die Arduino_RouterBridge-Bibliothek — niemals über rohe serielle Ports.
- Alle Tasten sind an der MCU (STM32) angeschlossen — verdrahtet mit digitalen Eingangspins auf dem STM32. Der MCU verwaltet Entprellung und Druckzählung mit ezButton.
- Die MPU kann Tasten nicht direkt lesen — sie muss Daten vom MCU über Bridge.call() anfordern. Der MCU antwortet mit Druckzählungen oder setzt diese zurück.
- Die MPU hat Wi-Fi — da die MPU vollständiges Debian Linux mit Wi-Fi ausführt, kann es Druckzählungen über Telegram weiterleiten und Befehle zum Zurücksetzen remote akzeptieren.
- 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 niemals direkt
Kurz gesagt: MCU zählt Tasten Drücke → MPU fordert Zählungen an → MPU leitet sie über Telegram weiter.
MCU-Skizze — mehrere Tasten mit Druckzählung und Bridge:
Python-Skript (Arduino App Lab) — Abfrage der Druckzählungen von Linux:
- Hinweis: Stellen Sie sicher, dass Bridge.begin() in der MCU-Skizze aufgerufen wird und die Skizze hochgeladen ist, bevor Sie das Python-Skript auf der Linux-Seite ausführen.
- ⚠️ Warnung: Öffnen Sie niemals direkt /dev/ttyHS1 (auf Linux) oder verwenden Sie Serial1 (auf MCU) in Ihrem Code — diese sind vom Arduino Router reserviert und der Zugriff auf sie beeinträchtigt 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, installieren Sie die Bibliotheken ezButton und Arduino_RouterBridge, und klicken Sie auf Ausführen.
- Fügen Sie das Python-Skript hinzu: Fügen Sie den Python-Code oben in die Python-Registerkarte der gleichen App ein.
- Führen Sie die App aus: Klicken Sie auf Ausführen — die Python-Seite fragt alle 5 Sekunden Druckzählungen ab.
- Drücken Sie die Tasten mehrmals.
- Überprüfen Sie die Konsole: Öffnen Sie die Registerkarte Konsole → Unterregisterkarte MCU Monitor, um Druck-/Freigabeereignisse anzuzeigen.
App Lab Konsolenausgabe
Telegram-Integration
Fragen Sie Tasten-Druckzählungen remote über Telegram ab oder setzen Sie diese zurück.
Wenn Sie noch keinen Telegram-Bot haben, siehe Wie erstelle ich einen Telegram-Bot, um Ihr Bot-Token zu erhalten, bevor Sie fortfahren.
MCU-Skizze: Behalten Sie die gleiche MCU-Skizze aus dem vorherigen Bridge-Abschnitt bei — keine Änderungen erforderlich. Stellen Sie sicher, dass sie bereits hochgeladen und auf dem STM32 ausgeführt wird, bevor Sie fortfahren.
Python-Skript (Arduino App Lab) — Telegram-Bot zur Verfolgung mehrerer Tasten:
- Hinweis: Ersetzen Sie YOUR_BOT_TOKEN durch das Token, das Sie von @BotFather auf Telegram erhalten haben.
- Senden Sie /counts, um alle fünf Tasten-Druckzählungen zu erhalten.
- Senden Sie /reset, um alle Zählungen auf Null zurückzusetzen.
Schnelle Schritte
- Laden Sie die MCU-Skizze hoch: Verwenden Sie die Bridge-MCU-Skizze aus dem vorherigen Abschnitt (laden Sie sie zuerst hoch, falls nicht bereits geschehen).
- Fügen Sie das Telegram-Skript ein: Kopieren Sie den Python-Code oben in die Python-Registerkarte Ihrer App im Arduino App Lab.
- Stellen Sie Ihr Token ein: Ersetzen Sie YOUR_BOT_TOKEN im Skript durch Ihr tatsächliches Bot-Token.
- Führen Sie die App aus: Klicken Sie auf Ausführen — der Bot beginnt, auf Telegram-Nachrichten zu lauschen.
- Testen Sie es: Drücken Sie jede Taste mehrmals, senden Sie dann /counts auf Telegram. Senden Sie dann /reset, um alle Zählungen zu löschen.
App Lab Python-Konsolenausgabe
ArduinoBot
OpenClaw-Integration
Sie können die OpenClaw an dieses Tutorial anpassen, indem Sie die Anleitung im Tutorial Arduino Uno Q - OpenClaw lesen
Anwendungs-/Projektideen
- Tastaturfeld: Jede Taste sendet eine andere Telegram-Nachricht — nützlich für schnelle Voreinstellungen oder Befehle
- Abstimmungszähler: Jede Taste erfasst eine Abstimmung für eine andere Option; Abfrageergebnisse über Telegram
- Moduswähler: Drücken Sie Taste 1 für Modus A, Taste 2 für Modus B — jede löst eine andere Aktion auf der MPU aus
- Mehrzonenwecker: Jede Taste ist mit einem anderen Zonenmelder verknüpft; Druckzählungen protokollieren, wie oft jede Zone ausgelöst wurde
- Remote-Testfeld: Tasten drücken, um verschiedene Hardwarefunktionen zu testen, mit Ergebnissen über Telegram