respiration.ino

ESP32 (original, classe ESP32-WROOM-32) · Fichier : respiration.ino · Langage : Arduino · Usage : Effet respiration sur LED avec le PWM LEDC

Le PWM matériel (LEDC) génère la porteuse tout seul : analogWrite applique un rapport cyclique 0-255 et la LED respire sans consommer de temps CPU. La fréquence choisie évite le sifflement des pilotes PWM.

Matériel requis

Une carte ESP32 classique (module ESP32-WROOM-32, double cœur Xtensa 240 MHz, Wi-Fi + Bluetooth) type DevKitC / DOIT V1, alimentée par micro-USB. 1 LED + résistance 330 Ω (ou LED RGB commune + anode sur la broche).

Branchement

LED sur 2 via 330 Ω vers GND. Sur les broches aussi reliées au flash, préférez un autre GPIO.

Fonctionnement

analogWrite/analogWriteFrequency configurent un canal LEDC ; la boucle ne fait que monter et redescendre le rapport cyclique entre 0 et 255, le signal est généré par le périphérique. Dans l'Arduino IDE, installez le paquet « esp32 » (Gestionnaire de cartes), choisissez « Dev Module », le port, puis Téléverser (maintenez BOOT si la détection échoue). GPIO34-39 sont entrées seules ; évitez GPIO6-11 et GPIO12.

Pour aller plus loin

Trois canaux LEDC déphasés pour une LED RGB, ou sortie vers un petit MOSFET pour piloter une bandeau de puissance.

respiration.ino

// Respiration LED par le contrôleur LEDC (PWM matériel du SoC).
const int LED = 2;
const int FREQ = 5000;    // 5 kHz : inaudible, pas de sifflement
const int RESOLUTION = 8; // 256 niveaux

int niveau = 0;
int sens = 4;             // pas par étape

void setup() {
  analogWriteResolution(RESOLUTION);
  analogWriteFrequency(FREQ);
  analogWrite(LED, 0);
}

void loop() {
  niveau += sens;
  if (niveau >= 255 || niveau <= 0) sens = -sens;
  analogWrite(LED, niveau);
  delay(8);               // 255/4*8 ms ≈ 0,5 s par rampe
}

← Retour à la fiche