Arduino UNO Q - Le Bouton Contrôle la LED

Ce tutoriel montre comment utiliser un bouton pour contrôler une LED avec Arduino UNO Q. Deux applications sont couvertes :

Application 1 — La LED suit l'état du bouton :

Application 2 — La LED bascule à chaque appui :

Arduino UNO Q - Le Bouton Contrôle la LED

Matériel Requis

1×Arduino UNO Q
1×USB Cable for Arduino Uno Q
1×Bouton avec capuchon pour plaque d'essai
1×Alternativement: Panel-mount Push Button
1×Module bouton poussoir
1×LED Kit
1×LED (red)
1×LED Module
1×220 ohm Resistor
1×Plaque d'essai
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.

Note d'achat: Pour simplifier le processus de câblage, nous recommandons d'utiliser le LED Module, qui est livré avec une résistance intégrée.

Schéma de Câblage

Schéma de câblage Arduino UNO Q Bouton LED

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

Application 1 — La LED Suit l'État du Bouton

Code MCU

L'Arduino UNO Q dispose de deux processeurs : le MCU STM32 (gère le contrôle matériel en temps réel) et le MPU Qualcomm (exécute Debian Linux). Dans cette section, seul le MCU STM32 est programmé — le côté Linux reste inactif. Une section ultérieure montrera comment les deux processeurs fonctionnent ensemble.

Quand le bouton est appuyé (LOW), la LED s'allume. Quand il est relâché (HIGH), la LED s'éteint :

/* * 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-button-led */ #define BUTTON_PIN 7 // pin connected to the button #define LED_PIN 3 // pin connected to the LED void setup() { pinMode(BUTTON_PIN, INPUT_PULLUP); // set pin to input pull-up mode pinMode(LED_PIN, OUTPUT); // set pin to output mode } void loop() { int buttonState = digitalRead(BUTTON_PIN); // read button state if (buttonState == LOW) { digitalWrite(LED_PIN, HIGH); // button pressed → LED on } else { digitalWrite(LED_PIN, LOW); // button released → LED off } }

Étapes Rapides

  • Première utilisation de l'Arduino UNO Q ? Suivez le tutoriel Démarrer avec Arduino UNO Q pour préparer votre environnement de développement avant de continuer.
  • Câbler les composants : Connectez le bouton à la broche 7 et la LED (avec résistance 220Ω) à la broche 3 selon le schéma de câblage.
  • Connecter : Branchez l'Arduino UNO Q sur votre ordinateur avec un câble USB-C.
  • Ouvrir Arduino App Lab : Lancez Arduino App Lab et attendez qu'il détecte votre Arduino UNO Q.
  • Créer une nouvelle application : Cliquez sur le bouton Créer une nouvelle application.
Créer une nouvelle application dans Arduino App Lab sur Arduino UNO Q
  • Donnez un nom à l'application, par exemple : DIYables_ButtonLED
  • Cliquez sur Créer pour confirmer.
  • Un ensemble de dossiers et de fichiers sera généré dans votre nouvelle application.
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 programme MCU.
  • Coller le programme : Copiez le code MCU ci-dessus et collez-le dans le fichier de programme. Laissez les autres fichiers par défaut.
  • Téléverser : Cliquez sur le bouton Exécuter dans Arduino App Lab pour compiler et téléverser sur le STM32.
  • Cliquer sur le bouton Exécuter dans Arduino App Lab sur Arduino UNO Q
    • Maintenez le bouton appuyé — la LED devrait s'allumer. Relâchez-le — la LED devrait s'éteindre.

    Application 2 — La LED Bascule à Chaque Appui

    Code MCU — Sans Anti-rebond

    Cette version détecte une transition HIGHLOW et bascule la LED. Sans anti-rebond, le rebond rapide des contacts peut provoquer plusieurs basculements par appui :

    /* * 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-button-led */ #define BUTTON_PIN 7 // pin connected to the button #define LED_PIN 3 // pin connected to the LED int led_state = LOW; int button_state; int prev_button_state; void setup() { pinMode(BUTTON_PIN, INPUT_PULLUP); // set pin to input pull-up mode pinMode(LED_PIN, OUTPUT); // set pin to output mode button_state = digitalRead(BUTTON_PIN); } void loop() { prev_button_state = button_state; button_state = digitalRead(BUTTON_PIN); // read new state if (prev_button_state == HIGH && button_state == LOW) { // button just pressed — toggle LED led_state = !led_state; digitalWrite(LED_PIN, led_state); } }

    Étapes Rapides

    • Utilisez le même câblage et la même application que l'Application 1.
    • Remplacez le programme par le code ci-dessus et cliquez sur Exécuter.
    • Appuyez et relâchez le bouton plusieurs fois — la LED devrait basculer à chaque fois.
    • Vous pouvez remarquer un comportement erratique (double basculement) — c'est causé par le rebond du bouton.

    Code MCU — Avec Anti-rebond (Utilisant ezButton)

    La bibliothèque ezButton gère l'anti-rebond automatiquement — chaque appui sur le bouton déclenche exactement un événement isPressed() :

    /* * 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-button-led */ #include <ezButton.h> #define BUTTON_PIN 7 // pin connected to the button #define LED_PIN 3 // pin connected to the LED ezButton button(BUTTON_PIN); // create ezButton object attached to pin 7 int led_state = LOW; void setup() { pinMode(LED_PIN, OUTPUT); button.setDebounceTime(50); // set debounce time to 50 milliseconds } void loop() { button.loop(); // MUST call the loop() function first if (button.isPressed()) { // toggle LED state led_state = !led_state; digitalWrite(LED_PIN, led_state); } }

    Étapes Rapides

    • Utilisez le même câblage et la même application que ci-dessus.
    • Remplacez le programme par la version avec anti-rebond et cliquez sur Exécuter.
    • 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
    • Search for Arduino_RouterBridge created by Arduino 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
    Arduino_RouterBridge Arduino

    This library provides a simple RPC bridge for Arduino UNO Q boards, allowing communication between the board and other devices using MsgPack serialization.

    0.4.1
    Install
    More Info
    • Appuyez et relâchez le bouton plusieurs fois — la LED bascule maintenant exactement une fois par appui.

    Programmation Bridge Linux + MCU

    L'Arduino UNO Q dispose de deux processeurs fonctionnant ensemble : le MPU (Qualcomm, exécute Debian Linux) et le MCU (STM32, exécute Zephyr OS avec votre programme Arduino). Ils communiquent via RPC grâce à la bibliothèque Arduino_RouterBridge — jamais via des ports série bruts.

    • Le bouton et la LED sont connectés au MCU (STM32) — le bouton est câblé à une broche d'entrée numérique et la LED à une broche de sortie numérique du STM32. Le MCU gère la logique de basculement et l'anti-rebond en utilisant ezButton.
    • Le MPU ne peut pas lire le bouton ou contrôler la LED directement — il doit demander l'état de la LED au MCU via Bridge.call().
    • Le MPU dispose du Wi-Fi — car le MPU exécute Debian Linux complet avec Wi-Fi, il peut rapporter l'état de la LED via Telegram à la demande.
    • Communication : Bridge.call() côté Linux invoque Bridge.provide() côté MCU
    • ⚠️ Réservé : /dev/ttyHS1 (Linux) et Serial1 (MCU) sont utilisés par le routeur Arduino — ne les ouvrez jamais directement

    En résumé : Le MPU demande l'état de la LED → le MCU lit l'état actuel → le MCU rapporte ALLUMÉE ou ÉTEINTE → le MPU enregistre ou transmet.

    Programme MCU — basculement bouton-LED avec Bridge et sortie du Moniteur :

    /* * 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-button-led */ #include "Arduino_RouterBridge.h" #include <ezButton.h> #define BUTTON_PIN 7 #define LED_PIN 3 ezButton button(BUTTON_PIN); int led_state = LOW; void get_led_state() { Monitor.println(led_state == HIGH ? "LED: ON" : "LED: OFF"); } void setup() { pinMode(LED_PIN, OUTPUT); button.setDebounceTime(50); Bridge.begin(); Monitor.begin(); Bridge.provide("get_led_state", get_led_state); Monitor.println("Button-LED Bridge ready"); } void loop() { button.loop(); if (button.isPressed()) { led_state = !led_state; digitalWrite(LED_PIN, led_state); Monitor.println(led_state == HIGH ? "Button pressed → LED ON" : "Button pressed → LED OFF"); } }

    Script Python (Arduino App Lab) — interrogation de l'état de la LED depuis Linux :

    /* * 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-button-led */ from arduino.app_utils import * import time def loop(): while True: state = Bridge.call("get_led_state") print(f"LED state: {state}") time.sleep(3) App.run(user_loop=loop)
    • Remarque : Assurez-vous que Bridge.begin() est appelé dans le programme MCU et que le programme est téléversé avant d'exécuter le script Python côté Linux.
    • ⚠️ Avertissement : N'ouvrez jamais directement /dev/ttyHS1 (sous Linux) ou Serial1 (sur MCU) dans votre code — ces ports sont réservés par le routeur Arduino et y accéder brisera le Bridge.

    Étapes Rapides

    • Téléversez le programme MCU : Ouvrez Arduino App Lab, créez une nouvelle application, collez le programme MCU Bridge ci-dessus dans sketch/sketch.ino, installez les bibliothèques ezButton et Arduino_RouterBridge, puis cliquez sur Exécuter.
    • Ajoutez le script Python : Collez le code Python ci-dessus dans l'onglet Python de la même application.
    • Exécutez l'application : Cliquez sur Exécuter — le côté Python interroge l'état de la LED toutes les 3 secondes.
    • Appuyez sur le bouton plusieurs fois pour basculer la LED.
    • Vérifiez la console : Ouvrez l'onglet Console → sous-onglet Moniteur MCU pour voir les événements de basculement enregistrés en temps réel.

    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
    Button-LED Bridge ready Button pressed → LED ON Button pressed → LED OFF Button pressed → LED ON

    Intégration Telegram

    Vérifiez l'état actuel de la LED à distance depuis n'importe où via Telegram.

    Si vous n'avez pas encore de bot Telegram, consultez Arduino UNO Q - Bot Telegram pour obtenir votre token de bot avant de continuer.

    Programme MCU : Conservez le même programme MCU de la section Bridge précédente — aucune modification nécessaire. Assurez-vous qu'il est déjà téléversé et en cours d'exécution sur le STM32 avant de continuer.

    Script Python (Arduino App Lab) — bot Telegram pour l'état de la LED :

    /* * 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-button-led */ from arduino.app_utils import * import requests import time BOT_TOKEN = "YOUR_BOT_TOKEN" API_URL = f"https://api.telegram.org/bot{BOT_TOKEN}" last_update_id = 0 def send_message(chat_id, text): requests.post(f"{API_URL}/sendMessage", json={"chat_id": chat_id, "text": text}) def get_updates(): global last_update_id resp = requests.get(f"{API_URL}/getUpdates", params={"offset": last_update_id + 1, "timeout": 5}) return resp.json().get("result", []) def loop(): global last_update_id updates = get_updates() for update in updates: last_update_id = update["update_id"] msg = update.get("message", {}) chat_id = msg.get("chat", {}).get("id") text = msg.get("text", "").strip() if text == "/state": state = Bridge.call("get_led_state") send_message(chat_id, f"LED is currently: {state}") else: send_message(chat_id, "Commands:\n/state — check current LED state (ON or OFF)") time.sleep(1) App.run(user_loop=loop)
    • Remarque : Remplacez YOUR_BOT_TOKEN par le token obtenu depuis @BotFather sur Telegram.
    • Envoyez /state pour vérifier si la LED est actuellement ALLUMÉE ou ÉTEINTE.

    Étapes Rapides

    • Téléversez le programme MCU : Utilisez le programme MCU Bridge de la section précédente (téléversez-le d'abord s'il ne l'est pas déjà).
    • Collez le script Telegram : Copiez le code Python ci-dessus dans l'onglet Python de votre application dans Arduino App Lab.
    • Définissez votre token : Remplacez YOUR_BOT_TOKEN dans le script par votre vrai token de bot.
    • Exécutez l'application : Cliquez sur Exécuter — le bot commence à écouter les messages Telegram.
    • Testez : Appuyez sur le bouton pour basculer la LED, puis envoyez /state — confirmez que l'état correspond.

    Sortie de la Console App Lab

    DIYables_Apps
    Stop
    sketch.ino
    1#include "Arduino_RouterBridge.h"
    Serial Monitor
    Python
    [2026-04-29 12:00:01] Telegram: /state [2026-04-29 12:00:01] LED is currently: ON [2026-04-29 12:03:20] Telegram: /state [2026-04-29 12:03:20] LED is currently: OFF
    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
    /state
    10:15 AM ✓✓
    LED is currently: ON
    10:16 AM
    /state
    10:17 AM ✓✓
    LED is currently: OFF
    10:18 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 d'Applications / Projets

    • Moniteur LED Telegram : Appuyez sur un bouton physique pour basculer une lampe et vérifiez son état à distance via Telegram
    • Bascule d'alarme physique : Utilisez un bouton pour armer/désarmer une alarme et confirmez l'état depuis n'importe où
    • Contrôleur de présentation : Basculez un afficheur ou une lumière de notification avec un bouton tout en vérifiant l'état à distance
    • Interrupteur de mode nuit : Appuyez sur un bouton pour activer le mode nuit sur les appareils ; surveillez via Telegram
    • Confirmation d'accès : Appuyez sur un bouton pour confirmer l'entrée ; vérifiez l'état de la LED/du portail via Telegram

    Mettez-Vous au Défi

    • Facile : Ajoutez une deuxième LED qui s'éteint quand la première s'allume (LEDs alternées)
    • Moyen : Étendez le programme Bridge pour compter le nombre total d'appuis sur le bouton et exposer le compteur en tant que get_press_count()
    • Avancé : Construisez un bot Telegram qui envoie automatiquement une notification chaque fois que l'état de la LED change — utilisez une boucle de surveillance en Python qui interroge l'état et le compare à la valeur précédente

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