Arduino UNO Q - LED en Fondu

Contrôler la luminosité d'une LED — en faisant fondu entrant et sortant en douceur — est une technique fondamentale dans la programmation Arduino. Dans ce tutoriel, vous apprendrez à utiliser le PWM (Modulation de Largeur d'Impulsion) pour augmenter et diminuer progressivement la luminosité d'une LED sur l'Arduino UNO Q.

Dans ce tutoriel, vous apprendrez :

Arduino UNO Q - LED en Fondu

Matériel Requis

1×Arduino UNO Q
1×USB Cable for Arduino Uno Q
1×LED Kit
1×LED (red)
1×LED Module
1×220Ω 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.

À Propos de la LED

Brochage

La LED a deux broches :

  • Broche Cathode(−) : connectez à GND (0V)
  • Broche Anode(+) : utilisée pour contrôler la luminosité de la LED
Brochage de la LED

Fonctionnement

Après avoir connecté la cathode à GND :

  • Connectez l'anode à GND (0V) → LED ÉTEINTE
  • Connectez l'anode à VCC → LED complètement ALLUMÉE
  • Envoyez un signal PWM à l'anode → la luminosité varie entre 0 (éteint) et 255 (plein)
Fonctionnement du Fondu de LED

※ Note:

La plupart des LED nécessitent une résistance limitatrice de courant (ex. 220Ω) entre l'anode et la broche de signal. Sans elle, vous risquez de griller la LED.

Faire Fondre les LED avec Arduino UNO Q

Le MCU STM32 Arduino UNO Q prend en charge le PWM sur des broches spécifiques (comme la broche 9). Connectez l'anode de la LED via une résistance de 220Ω à une broche compatible PWM, et connectez la cathode à GND. Utilisez analogWrite(broche, valeur) pour régler la luminosité (0–255).

Schéma de Câblage

Schéma de Câblage Arduino UNO Q LED en Fondu

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

Comment Programmer

  • Configurez le mode de la broche en sortie :
pinMode(9, OUTPUT);
  • Réglez la luminosité de la LED en utilisant le PWM :
analogWrite(9, brightness); // luminosité: 0 (éteint) à 255 (plein)

Code MCU — LED en Fondu (avec délai)

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.

Cet exemple augmente et diminue progressivement la luminosité de la LED en utilisant delay() :

/* * 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-fade-led */ #define LED_PIN 9 // The Arduino UNO Q pin connected to the LED int brightness = 0; // how bright the LED is int fade_step = 5; // how many points to fade the LED by // the setup routine runs once when you press reset: void setup() { // declare pin 9 to be an output: pinMode(LED_PIN, OUTPUT); } // the loop routine runs over and over again forever: void loop() { // set the brightness of pin 9: analogWrite(LED_PIN, brightness); // change the brightness for next time through the loop: brightness = brightness + fade_step; // reverse the direction of the fading at the ends of the fade: if (brightness <= 0 || brightness >= 255) { fade_step = -fade_step; } // wait for 30 milliseconds to see the dimming effect delay(30); }

É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âblez la LED : Connectez une LED avec une résistance de 220Ω à la broche 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.
  • 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_FadeLED
  • Cliquez sur Créer 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 programme MCU.
  • Coller le programme : Copiez le code MCU ci-dessus et collez-le dans le fichier sketch.
    • 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 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.
    Cliquer sur le bouton Exécuter dans Arduino App Lab sur Arduino UNO Q
    • Observer : La LED devrait progressivement s'allumer puis s'éteindre en fondu.

    Code MCU — LED en Fondu (sans délai)

    Cette version utilise millis() pour le fondu non bloquant — recommandée pour les projets où le MCU doit gérer plusieurs tâches simultanément.

    /* * 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-fade-led */ #define LED_PIN 9 // The Arduino UNO Q pin connected to the LED #define FADE_PERIOD 3000 // fade time is 3 seconds unsigned long fade_start_ms; // the setup routine runs once when you press reset void setup() { pinMode(LED_PIN, OUTPUT); // declare pin 9 to be an output fade_start_ms = millis(); } // fade-in in loop, and restart after finishing void loop() { unsigned long progress = millis() - fade_start_ms; if (progress <= FADE_PERIOD) { long brightness = map(progress, 0, FADE_PERIOD, 0, 255); analogWrite(LED_PIN, brightness); } else { fade_start_ms = millis(); // restart fade again } }

    Programmation Bridge Linux + MCU

    /* * 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-fade-led */ #include "Arduino_RouterBridge.h" #define LED_PIN 9 int current_brightness = 0; bool fading = false; int fade_period_ms = 3000; unsigned long fade_start_ms = 0; int fade_direction = 1; // 1 = fade-in, -1 = fade-out void set_brightness(int value) { fading = false; current_brightness = constrain(value, 0, 255); analogWrite(LED_PIN, current_brightness); Monitor.println("Brightness set to: " + String(current_brightness)); } void start_fade(int period_ms) { fade_period_ms = period_ms > 0 ? period_ms : 3000; fade_start_ms = millis(); fading = true; fade_direction = 1; Monitor.println("Fading started with period: " + String(fade_period_ms) + "ms"); } void stop_fade() { fading = false; analogWrite(LED_PIN, 0); current_brightness = 0; Monitor.println("Fade stopped"); } void setup() { pinMode(LED_PIN, OUTPUT); Bridge.begin(); Monitor.begin(); Bridge.provide_safe("set_brightness", set_brightness); Bridge.provide_safe("start_fade", start_fade); Bridge.provide_safe("stop_fade", stop_fade); Monitor.println("Fade LED Bridge ready"); } void loop() { if (!fading) return; unsigned long progress = millis() - fade_start_ms; if (progress >= (unsigned long)fade_period_ms) { // reverse direction and restart fade_direction = -fade_direction; fade_start_ms = millis(); progress = 0; } long brightness; if (fade_direction == 1) { brightness = map(progress, 0, fade_period_ms, 0, 255); } else { brightness = map(progress, 0, fade_period_ms, 255, 0); } analogWrite(LED_PIN, brightness); }
    /* * 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-fade-led */ from arduino.app_utils import * import time def loop(): print("Starting auto fade (2 seconds per cycle)") Bridge.call("start_fade", 2000) time.sleep(8) print("Setting brightness to 128 (half)") Bridge.call("set_brightness", 128) time.sleep(2) print("Setting brightness to 255 (full)") Bridge.call("set_brightness", 255) time.sleep(2) print("Setting brightness to 0 (off)") Bridge.call("set_brightness", 0) time.sleep(2) print("Starting slow fade (5 seconds per cycle)") Bridge.call("start_fade", 5000) time.sleep(15) print("Stopping fade") Bridge.call("stop_fade") time.sleep(2) App.run(user_loop=loop)

    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
    Fade LED Bridge ready LED brightness: 0 LED brightness: 64 LED brightness: 128 LED brightness: 192 LED brightness: 255
    DIYables_Apps
    Stop
    sketch.ino
    1#include "Arduino_RouterBridge.h"
    Serial Monitor
    Python
    [2026-04-29 09:00:01] Setting brightness to 0... [2026-04-29 09:00:02] Setting brightness to 64...

    Intégration Telegram

    Réglez la luminosité de la LED ou déclenchez un fondu à distance via Telegram.

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

    /* * 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-fade-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("/brightness "): parts = text.split() try: value = int(parts[1]) if 0 <= value <= 255: Bridge.call("set_brightness", value) send_message(chat_id, f"Brightness set to {value}") else: send_message(chat_id, "Brightness must be between 0 and 255") except (ValueError, IndexError): send_message(chat_id, "Usage: /brightness <0-255>") elif text.startswith("/fade "): parts = text.split() try: period_ms = int(parts[1]) Bridge.call("start_fade", period_ms) send_message(chat_id, f"Fading started with {period_ms}ms period") except (ValueError, IndexError): send_message(chat_id, "Usage: /fade <period_ms>\nExample: /fade 3000") elif text == "/fade": Bridge.call("start_fade", 3000) send_message(chat_id, "Fading started with 3000ms period") elif text == "/stop": Bridge.call("stop_fade") send_message(chat_id, "Fade stopped, LED off") else: send_message(chat_id, "Commands:\n/brightness <0-255> — set brightness\n/fade <period_ms> — start fading\n/stop — stop fade\n\nExamples:\n/brightness 128\n/fade 3000") time.sleep(1) App.run(user_loop=loop)

    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: /brightness 128 [2026-04-29 12:00:01] Setting LED brightness to 128
    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
    /brightness 128
    10:15 AM ✓✓
    LED brightness set to 128.
    10:16 AM
    /fade
    10:17 AM ✓✓
    Fading LED...
    10:18 AM
    /off
    10:19 AM ✓✓
    LED turned off.
    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

    • Veilleuse Intelligente : Faites fondre la LED progressivement au coucher du soleil et éteignez-la à l'aube en utilisant l'heure système Linux
    • Indicateur de Notification : Faites pulser la LED quand un nouveau message Telegram arrive
    • Éclairage Ambiant : Contrôlez la luminosité depuis Telegram pour créer l'atmosphère parfaite
    • Simulateur de Respiration : Faites pulser la LED en rythme de respiration pour des effets de méditation ou de relaxation

    Mettez-Vous au Défi

    • Facile : Modifiez la vitesse du fondu en changeant le délai entre les étapes de luminosité.
    • Moyen : Ajoutez une commande Telegram /fondu qui déclenche un cycle complet fondu entrant → fondu sortant.
    • Avancé : Implémentez un fondu sinusoïdal — utilisez une fonction sin() pour créer une courbe de luminosité plus naturelle.

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