Arduino UNO Q - Faire Clignoter Plusieurs LEDs

Faire clignoter plusieurs LEDs indépendamment à des vitesses différentes est une tâche Arduino courante et visuellement satisfaisante. Dans ce tutoriel, vous apprendrez à programmer l'Arduino UNO Q pour faire clignoter deux, trois LEDs ou plus simultanément — chacune à son propre rythme — sans utiliser delay().

Dans ce tutoriel, vous apprendrez :

Arduino UNO Q - Faire Clignoter Plusieurs LEDs

Matériel Requis

1×Arduino UNO Q
1×USB Cable for Arduino Uno Q
3×LED
3×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.

À Propos de la LED

Apprenez-en plus sur la LED (brochage, fonctionnement, programmation) dans le Arduino UNO Q - LED - Clignoter.

Schéma de Câblage

Schéma de câblage Arduino UNO Q Plusieurs LEDs

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

Code MCU — Faire Clignoter Plusieurs LEDs

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.

Pour faire clignoter plusieurs LEDs simultanément sans delay(), nous utilisons la bibliothèque ezLED. Elle gère tout le timing non bloquant en interne, vous appelez simplement .blink() et .loop() — aucune gestion de millis() nécessaire.

  • LED 1 (broche 7) : 800ms ALLUMÉE, 200ms ÉTEINTE — démarre immédiatement
  • LED 2 (broche 8) : 500ms ALLUMÉE, 500ms ÉTEINTE — démarre immédiatement
  • LED 3 (broche 9) : 500ms ALLUMÉE, 500ms ÉTEINTE — démarre après un délai de 500ms
/* * 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-blink-multiple-led */ #include <ezLED.h> // ezLED library by ArduinoGetStarted.com #define PIN_LED_1 7 // The Arduino UNO Q pin connected to LED 1 #define PIN_LED_2 8 // The Arduino UNO Q pin connected to LED 2 #define PIN_LED_3 9 // The Arduino UNO Q pin connected to LED 3 ezLED led1(PIN_LED_1); // create ezLED object attached to PIN_LED_1 ezLED led2(PIN_LED_2); // create ezLED object attached to PIN_LED_2 ezLED led3(PIN_LED_3); // create ezLED object attached to PIN_LED_3 void setup() { led1.blink(800, 200); // 800ms ON, 200ms OFF, blink immediately led2.blink(500, 500); // 500ms ON, 500ms OFF, blink immediately led3.blink(500, 500, 500); // 500ms ON, 500ms OFF, blink after 500ms } void loop() { led1.loop(); // MUST call the led1.loop() function in loop() led2.loop(); // MUST call the led2.loop() function in loop() led3.loop(); // MUST call the led3.loop() function in loop() // DO SOMETHING HERE }

É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 LEDs : Connectez trois LEDs (chacune avec une résistance 220Ω) aux broches 7, 8 et 9 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 — cela peut prendre plusieurs minutes au premier lancement.
  • 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_MultipleLED
  • 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 ce fichier. Laissez 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 ezLED 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
    ezLED ArduinoGetStarted.com

    LED library supports turn on/off, toggle, fade in/out, blink, blink in period, blink in a number of time. It is easy to use to control multiple LEDs... It is designed for not only beginners but also experienced users

    1.0.1
    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
    • 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
    • Vérifier les LEDs : Les trois LEDs devraient clignoter à des vitesses différentes simultanément.
    • Conseil : Changez les valeurs blink(on_ms, off_ms) pour personnaliser le timing de chaque LED — ou ajoutez une quatrième LED en ajoutant ezLED led4(PIN_LED_4) et en appelant led4.blink(...) et led4.loop().

    Bonus : Code Plus Propre avec un Tableau de LEDs

    Pour un code plus propre et plus évolutif, utilisez un tableau d'objets ezLED. Ajouter ou supprimer des LEDs ne nécessite que de modifier NUM_LED et les définitions de broches :

    /* * 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-blink-multiple-led */ #include <ezLED.h> // ezLED library by ArduinoGetStarted.com #define NUM_LED 3 // three LEDs #define PIN_LED_1 7 // The Arduino UNO Q pin connected to LED 1 #define PIN_LED_2 8 // The Arduino UNO Q pin connected to LED 2 #define PIN_LED_3 9 // The Arduino UNO Q pin connected to LED 3 ezLED ledArray[NUM_LED] = { ezLED(PIN_LED_1), // create ezLED object attached to PIN_LED_1 ezLED(PIN_LED_2), // create ezLED object attached to PIN_LED_2 ezLED(PIN_LED_3) // create ezLED object attached to PIN_LED_3 }; void setup() { ledArray[0].blink(800, 200); // 800ms ON, 200ms OFF, blink immediately ledArray[1].blink(500, 500); // 500ms ON, 500ms OFF, blink immediately ledArray[2].blink(500, 500, 500); // 500ms ON, 500ms OFF, blink after 500ms } void loop() { for (int i = 0; i < NUM_LED; i++) ledArray[i].loop(); // MUST call the led.loop() function in loop() // DO SOMETHING HERE }
    • Évolutivité : Pour ajouter une quatrième LED, changez NUM_LED à 4, ajoutez PIN_LED_4 et ajoutez-la à ledArray.
    • Détails de la bibliothèque : En savoir plus sur la bibliothèque ezLED sur arduinogetstarted.com.

    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.

    • Les LEDs sont connectées au MCU (STM32) — câblées à des broches numériques du STM32. Le MCU les fait clignoter en utilisant la bibliothèque ezLED avec un timing non bloquant.
    • Le MPU ne peut pas contrôler les LEDs directement — il doit envoyer des commandes au MCU via Bridge.call(). Le MCU exécute les fonctions Bridge.provide_safe() enregistrées.
    • Le MPU dispose du Wi-Fi — car le MPU exécute Debian Linux complet avec Wi-Fi, il peut recevoir des commandes Telegram et contrôler les motifs LED à distance.
    • Communication : Bridge.call() côté Linux invoque Bridge.provide_safe() 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 envoie les commandes de motif de clignotement → le MCU les reçoit → le MCU met à jour les motifs de clignotement LED en temps réel.

    Programme MCU — plusieurs LEDs avec contrôle de clignotement à distance :

    /* * 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-blink-multiple-led */ #include "Arduino_RouterBridge.h" #include <ezLED.h> #define NUM_LED 3 #define PIN_LED_1 7 #define PIN_LED_2 8 #define PIN_LED_3 9 ezLED ledArray[NUM_LED] = { ezLED(PIN_LED_1), ezLED(PIN_LED_2), ezLED(PIN_LED_3) }; void setup() { Bridge.begin(); Monitor.begin(); // Start default blink patterns ledArray[0].blink(800, 200); ledArray[1].blink(500, 500); ledArray[2].blink(500, 500, 500); Bridge.provide_safe("set_blink", set_blink); Bridge.provide_safe("stop_all", stop_all); Monitor.println("Multiple LED Bridge ready"); } void loop() { for (int i = 0; i < NUM_LED; i++) ledArray[i].loop(); } // led_num: 0, 1, or 2; on_ms and off_ms in milliseconds void set_blink(int led_num, int on_ms, int off_ms) { if (led_num >= 0 && led_num < NUM_LED) ledArray[led_num].blink(on_ms, off_ms); } void stop_all() { for (int i = 0; i < NUM_LED; i++) ledArray[i].cancel(); }

    Script Python (Arduino App Lab) — contrôle des motifs 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-blink-multiple-led */ from arduino.app_utils import * import time def loop(): print("Pattern 1: All LEDs fast") Bridge.call("set_blink", 0, 200, 200) Bridge.call("set_blink", 1, 200, 200) Bridge.call("set_blink", 2, 200, 200) time.sleep(3) print("Pattern 2: All LEDs slow") Bridge.call("set_blink", 0, 1000, 1000) Bridge.call("set_blink", 1, 1000, 1000) Bridge.call("set_blink", 2, 1000, 1000) time.sleep(3) print("Pattern 3: Different speeds") Bridge.call("set_blink", 0, 800, 200) Bridge.call("set_blink", 1, 500, 500) Bridge.call("set_blink", 2, 200, 800) time.sleep(3) print("Stopping all LEDs") Bridge.call("stop_all") time.sleep(2) 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 ezLED 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 fait défiler automatiquement différents motifs de clignotement.
    • Vérifiez la console : Ouvrez l'onglet Console → sous-onglet Console Python pour voir quel motif est actif.
    • Conseil : Appelez Bridge.call("stop_all") depuis Python pour arrêter toutes les LEDs en même temps.

    Sortie de la Console App Lab

    DIYables_Apps
    Stop
    sketch.ino
    1#include "Arduino_RouterBridge.h"
    Serial Monitor
    Python
    Pattern 1: All LEDs fast Pattern 2: All LEDs slow Pattern 3: Different speeds Stopping all LEDs

    Intégration Telegram

    Vous pouvez contrôler le motif de clignotement de chaque LED à distance via Telegram — définissez des vitesses de clignotement individuelles ou arrêtez toutes les LEDs depuis n'importe où.

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

    Cette section couvre :

    • Exécuter un script Python côté Linux de l'Arduino UNO Q pour écouter les messages Telegram
    • Transférer les commandes de motif de clignotement vers des LEDs individuelles côté MCU via Bridge.call()
    • Envoyer une réponse de confirmation à Telegram

    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 le contrôle de plusieurs LEDs :

    /* * 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-blink-multiple-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.startswith("/blink "): parts = text.split() try: led_num = int(parts[1]) - 1 # user sends 1-3, code uses 0-2 on_ms = int(parts[2]) off_ms = int(parts[3]) Bridge.call("set_blink", led_num, on_ms, off_ms) send_message(chat_id, f"LED {led_num + 1} blinking: {on_ms}ms ON, {off_ms}ms OFF") except (ValueError, IndexError): send_message(chat_id, "Usage: /blink <led 1-3> <on_ms> <off_ms>") elif text == "/stop": Bridge.call("stop_all") send_message(chat_id, "All LEDs stopped") else: send_message(chat_id, "Commands:\n/blink <led> <on_ms> <off_ms> — set blink pattern\n/stop — stop all LEDs\n\nExample: /blink 1 800 200") time.sleep(1) App.run(user_loop=loop)
    • Remarque : Remplacez YOUR_BOT_TOKEN par le token obtenu depuis @BotFather sur Telegram.
    • Envoyez /blink 1 800 200 pour faire clignoter la LED 1 avec 800ms ALLUMÉE et 200ms ÉTEINTE.
    • Envoyez /stop pour arrêter toutes les LEDs en même temps.

    É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 immédiatement.
    • Testez : Envoyez /blink 2 300 300 pour faire clignoter rapidement la LED 2, ou /stop pour tout éteindre.
    • Conseil : Envoyez /blink 1 100 100 pour un effet stroboscopique très rapide sur la LED 1.

    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: /blink 1 800 200 [2026-04-29 12:00:01] LED 1 blinking: 800ms ON, 200ms OFF [2026-04-29 12:02:10] Telegram: /blink 3 200 200 [2026-04-29 12:02:10] LED 3 blinking: 200ms ON, 200ms OFF [2026-04-29 12:05:30] Telegram: /stop [2026-04-29 12:05:30] All LEDs stopped
    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
    /blink 1 800 200
    10:15 AM ✓✓
    LED 1 blinking: 800ms ON, 200ms OFF
    10:16 AM
    /blink 3 200 200
    10:17 AM ✓✓
    LED 3 blinking: 200ms ON, 200ms OFF
    10:18 AM
    /stop
    10:19 AM ✓✓
    All LEDs stopped
    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 d'Applications / Projets

    Voici quelques idées de projets que vous pouvez construire avec plusieurs LEDs et Arduino UNO Q :

    • Spectacle de lumières contrôlé par Telegram : Définissez différents motifs de clignotement pour chaque LED via Telegram et créez un affichage lumineux personnalisé
    • Simulateur de feux de circulation : Utilisez des LEDs rouge, jaune et verte avec des motifs de clignotement temporisés contrôlés depuis Python
    • Panneau d'état système : Chaque LED représente un état de service différent — clignote rapidement pour avertissement, stable pour OK, éteinte pour arrêté
    • Émetteur de code Morse : Faites clignoter chaque LED avec un message encodé différent simultanément
    • Séquenceur LED : Faites défiler les LEDs depuis le côté Python en une séquence en les allumant et éteignant successivement

    Mettez-Vous au Défi

    Essayez ces défis avec plusieurs LEDs et Arduino UNO Q :

    • Facile : Ajoutez une quatrième LED au programme et configurez-la pour clignoter 250ms ALLUMÉE, 750ms ÉTEINTE
    • Moyen : Étendez le programme Bridge pour exposer une fonction get_state(int led_num) qui retourne si une LED est actuellement ALLUMÉE ou ÉTEINTE
    • Avancé : Construisez un bot Telegram qui accepte un motif nommé (ex. /pattern chase) et applique une séquence de clignotement prédéfinie sur les trois LEDs

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