respiration.ino

ESP32-S2 · Archivo : respiration.ino · Lenguaje : Arduino · Uso : Effet respiration sur LED avec le PWM LEDC

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-S2 (núcleo único Xtensa, Wi-Fi, USB-OTG nativo en GPIO19/20, 14 pads táctiles capacitivos) tipo DevKitC-1 o QT Py, alimentada por USB. 1 LED + resistencia de 330 Ω (o LED RGB común + ánodo en el pin).

Cableado

LED en 2 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), elija « ESP32S2 Dev Module »; el S2 se programa directamente por su USB nativo (doble reset en algunas placas para entrar al bootloader).

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

← Volver a la ficha