respiration.ino
El PWM hardware (LEDC) genera la portadora solo: analogWrite aplica un ciclo de trabajo 0-255 y el LED respira sin gastar CPU. La frecuencia elegida evita el silbido del driver PWM.
Hardware necesario
Una placa ESP32-C6 (RISC-V a 160 MHz, Wi-Fi 6 + BLE 5 + 802.15.4) tipo DevKitC-1, alimentada por USB. 1 LED + resistencia de 330 Ω (o LED RGB común + ánodo en el pin).
Cableado
LED en 7 por 330 Ω a GND. En pines también ligados a la flash, elija otro GPIO.
Funcionamiento
analogWrite/analogWriteFrequency configuran un canal LEDC; el bucle solo sube y baja el ciclo de trabajo 0-255 mientras el periférico genera la señal. En el Arduino IDE (paquete esp32 reciente), elija « ESP32C6 Dev Module » y suba; para Zigbee/Thread use ESP-IDF (idf.py set-target esp32c6).
Para ir más lejos
Tres canales LEDC desfasados para un LED RGB, o un MOSFET pequeño para pilotar una tira de potencia.
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
}