🛠 Fondu de LED avec le PWM LEDC
Objectifs
Piloter la luminosité d'une LED grâce au périphérique LEDC de l'ESP32 : le PWM y est généré par 8 canaux indépendants (fréquence et résolution configurables), contrairement à un simple digitalWrite. Vous apprendrez à configurer un canal, l'attacher à une broche et réaliser un fondu (fade) montant et descendant.
Matériel
- 1 carte ESP32 DevKit v1
- 1 LED + 1 résistance de 330 Ω
- Câbles jumper (GPIO25 → résistance → LED → GND)
Code complet
const uint8_t LED_PIN = 25; // eviter GPIO2, broche de strapping
const uint8_t CANAL = 0; // 0 a 7 sur ESP32
void setup {
ledcSetup(CANAL, 5000, 8); // 5 kHz, resolution 8 bits (0..255)
ledcAttachPin(LED_PIN, CANAL);
}
void loop {
for (int v = 0; v <= 255; v++) { ledcWrite(CANAL, v); delay(8); }
for (int v = 255; v >= 0; v--) { ledcWrite(CANAL, v); delay(8); }
}
Vérification attendue
La LED s'allume et s'éteint progressivement (fondu doux d'environ 2 secondes par cycle), sans palier visible. Avec un oscilloscope sur GPIO25, on observe un créneau à 5 kHz dont le rapport cyclique suit la rampe.
Erreurs fréquentes
- analogWrite n'existe pas dans le core Arduino-ESP32 2.x : il faut passer par ledcSetup/ledcAttachPin/ledcWrite.
- LED câblée sur GPIO2 : c'est une broche de strapping (avec GPIO0 et GPIO12) ; une charge branchée dessus peut perturber le démarrage. Préférer GPIO25, 26, 27…
- Oubli de la résistance : la LED claque ou la broche débite trop.
- Chaque canal LEDC est une ressource matérielle limitée à 8 sur ESP32 : prévoir ses canaux PWM à l'avance.
Autres tutoriels pour cette carte
Exemples de code pour cette carte
clignotante.inoArduinobouton-led.inoArduinorespiration.inoArduinodht22.inoArduinooled-i2c.inoArduinoserveur-web.inoArduino