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 :
Comment faire fondre une LED en utilisant delay() (simple, pour les débutants)
Comment faire fondre une LED sans bloquer en utilisant millis() (recommandé)
Comment contrôler la luminosité de la LED depuis le côté Linux (Python) via Bridge
Comment régler à distance la luminosité de la LED ou déclencher le fondu via Telegram
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
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)
※ 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
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 LEDint brightness = 0; // how bright the LED isint fade_step = 5; // how many points to fade the LED by// the setup routine runs once when you press reset:voidsetup() {// declare pin 9 to be an output:pinMode(LED_PIN, OUTPUT);}// the loop routine runs over and over again forever:voidloop() {// 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 effectdelay(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.
Donnez un nom à l'application, par exemple : DIYables_FadeLED
Cliquez sur Créer pour confirmer.
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.
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_RouterBridgeArduino
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.
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 secondsunsignedlong fade_start_ms;// the setup routine runs once when you press resetvoidsetup() {pinMode(LED_PIN, OUTPUT); // declare pin 9 to be an output fade_start_ms = millis();}// fade-in in loop, and restart after finishingvoidloop() {unsignedlong 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 9int current_brightness = 0;bool fading = false;int fade_period_ms = 3000;unsignedlong fade_start_ms = 0;int fade_direction = 1; // 1 = fade-in, -1 = fade-outvoid 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");}voidsetup() {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");}voidloop() {if (!fading) return;unsignedlong progress = millis() - fade_start_ms;if (progress >= (unsignedlong)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 timedef 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 requestsimport timeBOT_TOKEN = "YOUR_BOT_TOKEN"API_URL = f"https://api.telegram.org/bot{BOT_TOKEN}"last_update_id = 0def 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
Telegram12:45
Welcome to Telegram!
ArduinoBot10:19
Chatting with Arduino...
BotFatherYesterday
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.
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 !