respiration.ino

ESP32-C6 · 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-C6 (RISC-V 160 MHz, Wi-Fi 6 + BLE 5 + 802.15.4) type DevKitC-1, alimentée par USB. 1 LED + résistance 330 Ω (ou LED RGB commune + anode sur la broche).

Branchement

LED sur 7 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 (paquet esp32 récent), choisissez « ESP32C6 Dev Module » puis Téléverser ; pour Zigbee/Thread utilisez ESP-IDF (idf.py set-target esp32c6).

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 = 7;
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