Arduino UNO Q - Clavier 1x4

Vous souhaitez ajouter un simple clavier à 4 boutons à votre projet Arduino UNO Q ? Dans ce tutoriel, vous apprendrez à détecter les pressions de touches avec anti-rebond — et même à envoyer des alertes Telegram lorsqu'une touche est pressée.

Dans ce tutoriel, vous apprendrez :

Arduino UNO Q Clavier 1x4

Matériel Requis

1×Arduino UNO Q
1×USB Cable for Arduino Uno Q
1×Clavier 1x4
1×Fils de connexion
1×Recommandé: Shield à bornier à vis pour Arduino Uno
1×Recommandé: Sensors/Servo Expansion Shield for Arduino Uno
1×Recommandé: Shield plaque d'essai pour Arduino Uno
1×Recommandé: Boîtier pour Arduino Uno
1×Recommandé: Kit plaque de base prototypage et plaque d'essai pour Arduino Uno

Ou vous pouvez acheter les kits suivants:

1×Kit de Capteurs DIYables (18 capteurs/écrans)
Divulgation : Certains des liens fournis dans cette section sont des liens affiliés Amazon. Nous pouvons recevoir une commission pour tout achat effectué via ces liens, sans coût supplémentaire pour vous. Nous vous remercions de votre soutien.

À propos du Clavier 1x4

Un clavier 1x4 possède quatre boutons disposés en une seule rangée. Il est utilisé pour saisir des codes, naviguer dans des menus ou déclencher des actions dans différents projets.

Brochage

Le clavier 1x4 possède 5 broches. L'ordre des broches ne correspond pas à l'ordre des touches sur l'étiquette :

  • Broche 1 → Touche 2
  • Broche 2 → Touche 1
  • Broche 3 → Touche 4
  • Broche 4 → Touche 3
  • Broche 5 → Commun (GND)
Brochage du Clavier 1x4

Schéma de Câblage

Schéma de Câblage Arduino UNO Q Clavier 1x4

Cette image a été créée avec Fritzing. Cliquez pour agrandir l'image.

Broche du Clavier MCU Arduino UNO Q
Broche 1 (Touche 2) D2
Broche 2 (Touche 1) D3
Broche 3 (Touche 4) D4
Broche 4 (Touche 3) D5
Broche 5 (Commun) GND

Code Arduino UNO Q

L'Arduino UNO Q dispose de deux processeurs travaillant ensemble :

  • Le MCU STM32 lit les broches du clavier directement avec anti-rebond via la bibliothèque ezButton
  • Le MPU Qualcomm exécute Debian Linux et gère le Wi-Fi, Python et la connectivité cloud
  • Dans cette section, seul le MCU est programmé — le côté Linux reste inactif. Une section ultérieure montre comment les deux processeurs travaillent ensemble via Bridge.

Chaque touche du clavier 1x4 fonctionne comme un bouton connecté entre une broche et GND. La bibliothèque ezButton gère automatiquement l'anti-rebond pour les quatre touches.

/* * Ce code Arduino UNO Q a été développé par newbiely.fr * Ce code Arduino UNO Q est mis à disposition du public sans aucune restriction. * Pour des instructions complètes et des schémas de câblage, veuillez visiter: * https://newbiely.fr/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; }

Étapes Rapides

Première fois avec Arduino UNO Q ? Suivez le tutoriel Démarrer avec Arduino UNO Q pour préparer votre environnement de développement avant de continuer.

  • Connecter : Câblez le clavier 1x4 au MCU Arduino UNO Q comme indiqué dans le schéma de câblage ci-dessus.
  • Ouvrir Arduino App Lab : Lancez Arduino App Lab et attendez qu'il détecte votre Arduino UNO Q — cela peut prendre plusieurs minutes au premier lancement.
  • Créer une nouvelle application : Cliquez sur le bouton Create New App.
Créer une nouvelle application dans Arduino App Lab sur Arduino UNO Q
  • Donnez un nom à l'application, par exemple : Keypad1x4
  • Cliquez sur Create pour confirmer.
Dossiers et fichiers de l'application Arduino App Lab sur Arduino UNO Q
  • Trouvez le fichier sketch/sketch.ino — c'est là que vous collerez le sketch MCU.
  • Coller le sketch : Copiez le code MCU ci-dessus et collez-le dans ce fichier sketch. Gardez les autres fichiers par défaut.
    • 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
    • Téléverser : Cliquez sur le bouton Run dans Arduino App Lab pour compiler et téléverser vers le STM32.
    Cliquer sur le bouton Run dans Arduino App Lab sur Arduino UNO Q
    • Ouvrir le Moniteur Série et appuyez sur chaque touche du clavier. Vous verrez le numéro de la touche s'afficher.
    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

    Cette section montre comment programmer les deux processeurs de l'Arduino UNO Q afin que le côté Linux puisse lire les pressions du clavier à distance :

    • Le clavier 1x4 est connecté au MCU (STM32) — le MCU interroge chaque touche avec anti-rebond dans loop()
    • Le MPU ne peut pas lire les broches du clavier directement — il doit demander la dernière touche pressée au MCU via Bridge.call()
    • Le MPU dispose du Wi-Fi — exécutant Debian Linux complet, il peut réagir aux pressions de touches et envoyer des alertes sur Internet
    • Arduino_RouterBridge permet la communication RPC entre les deux processeurs
    • ⚠️ /dev/ttyHS1 (Linux) et Serial1 (MCU) sont RÉSERVÉS par le routeur — ne les ouvrez jamais dans le code utilisateur

    En résumé : Le MCU interroge le clavier → le MPU lit la dernière touche via Bridge → le MPU peut réagir aux pressions de touches depuis n'importe où sur Internet.

    Remarque : Dans le sketch Bridge, la boucle de scrutation ezButton est placée dans la fonction Arduino loop() pour maintenir l'état du bouton à jour — cela est nécessaire et n'interfère pas avec la communication Bridge.

    Code MCU (Bridge)

    /* * Ce code Arduino UNO Q a été développé par newbiely.fr * Ce code Arduino UNO Q est mis à disposition du public sans aucune restriction. * Pour des instructions complètes et des schémas de câblage, veuillez visiter: * https://newbiely.fr/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)); } } }

    Code Python (Bridge)

    /* * Ce code Arduino UNO Q a été développé par newbiely.fr * Ce code Arduino UNO Q est mis à disposition du public sans aucune restriction. * Pour des instructions complètes et des schémas de câblage, veuillez visiter: * https://newbiely.fr/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)

    Étapes Rapides

    • Connecter : Câblez le clavier 1x4 à l'Arduino UNO Q comme indiqué dans le schéma de câblage.
    • Ouvrir Arduino App Lab : Lancez Arduino App Lab et attendez que la carte soit détectée.
    • Créer une nouvelle application : Cliquez sur Create New App, nommez-la Keypad1x4Bridge, puis cliquez sur Create.
    • Coller le sketch MCU : Copiez le code MCU Bridge ci-dessus et collez-le dans sketch/sketch.ino.
    • Coller le code Python : Copiez le code Python Bridge ci-dessus et collez-le dans le fichier Python de l'application.
    • Téléverser : Cliquez sur le bouton Run dans Arduino App Lab.
    Cliquer sur le bouton Run dans Arduino App Lab sur Arduino UNO Q
    • Appuyez sur les touches du clavier et observez la console Python.

    Sortie de la Console App Lab

    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

    Recevez des notifications Telegram lorsqu'une touche est pressée sur le clavier 1x4 — utile pour les sonnettes à distance, les codes d'accès ou les déclencheurs d'événements.

    Sketch MCU : Conservez le même sketch MCU de la section Bridge précédente.

    Code Python (Telegram)

    /* * Ce code Arduino UNO Q a été développé par newbiely.fr * Ce code Arduino UNO Q est mis à disposition du public sans aucune restriction. * Pour des instructions complètes et des schémas de câblage, veuillez visiter: * https://newbiely.fr/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)

    Étapes Rapides

    • Remplacez YOUR_TELEGRAM_BOT_TOKEN par votre vrai token de bot obtenu depuis BotFather.
    • Remplacez YOUR_CHAT_ID par votre identifiant de chat Telegram.
    • Collez ce code Python dans le fichier Python de votre application (conservez le même sketch MCU).
    • Cliquez sur le bouton Run. Appuyez sur les touches du clavier — votre chat Telegram recevra des alertes automatiquement.

    Sortie de la Console App Lab

    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

    Intégration d'OpenClaw

    Vous pouvez adapter OpenClaw à ce tutoriel en vous référant aux instructions du tutoriel Arduino UNO Q - OpenClaw.

    Idées de Projets

    Vous pouvez réaliser de nombreux projets créatifs en utilisant le clavier 1x4 avec Arduino UNO Q :

    • Saisie de code d'accès à distance : L'utilisateur appuie sur une combinaison de 4 touches sur le clavier ; le MPU reçoit la séquence via Bridge et la valide, puis envoie une alerte Telegram en cas de succès ou d'échec
    • Système de navigation dans les menus : Utilisez les touches 1 à 4 pour naviguer dans un menu sur le Moniteur Série ou un écran LCD — le MPU suit la sélection et agit en conséquence
    • Système de buzzer d'événement : Chaque touche du clavier déclenche une action différente (par exemple, activer un relais, sonner un buzzer ou envoyer une notification Telegram)
    • Manette de jeu simple : Utilisez le clavier 1x4 comme entrée directionnelle (gauche/droite/haut/bas) dans un jeu textuel simple s'exécutant sur le MPU Linux
    • Sonnette Telegram : Appuyez sur la touche 1 du clavier pour sonner une "sonnette" Telegram — le MPU envoie une notification au téléphone du propriétaire automatiquement

    Défiez-vous

    Prêt à aller plus loin avec le clavier 1x4 sur Arduino UNO Q ? Essayez ces défis :

    • Facile : Modifiez le sketch MCU pour allumer une LED connectée à D6 chaque fois qu'une touche est pressée.
    • Moyen : Implémentez un système de code PIN à 4 chiffres sur le MCU — appuyer sur les touches 1-2-3-4 dans l'ordre déverrouille un relais, tandis que toute mauvaise séquence réinitialise la saisie.
    • Avancé : Construisez un clavier à distance via Telegram : utilisez /key pour interroger la dernière touche pressée, puis créez une machine à états en Python qui interprète les séquences de touches comme des commandes (par exemple, 1-1-2 = "lumières allumées", 2-1-1 = "lumières éteintes").

    ※ NOS MESSAGES

    • N'hésitez pas à partager le lien de ce tutoriel. Cependant, veuillez ne pas utiliser notre contenu sur d'autres sites web. Nous avons investi beaucoup d'efforts et de temps pour créer ce contenu, veuillez respecter notre travail !