respiration.ino
El PWM de la GIGA llega a 16 bits: la rampa de respiración queda perfectamente continua, sin la «escalera» de 8 bits. La frecuencia se fija por pin, fuera del espectro audible.
Hardware necesario
Un Arduino GIGA R1 WiFi (STM32H747, módulo radio 1DX: Wi-Fi b/g/n + BLE, antena u.FL incluida), alimentado por USB-C. 1 LED + resistencia de 330 Ω en D3.
Cableado
Ánodo del LED en D3 por 330 Ω a GND. Elegid un pin PWM (marcado ~): D3 lo es.
Funcionamiento
analogWriteResolution sube la resolución del canal; el bucle incrementa una consigna float para suavizar la rampa pese al paso material. 19,5 kHz evita el silbido de los drivers. En el Arduino IDE, plataforma « Arduino Zephyr-based Boards », placa « Arduino Giga R1 »; monte la antena u.FL antes de usar la radio y suba.
Para ir más lejos
Dos canales para mezclar dos LED (mezcla aditiva de tinte), o un regulador de potencia sobre MOSFET.
respiration.ino
// Respiration sur D3 — analogWrite 16 bits sur la GIGA.
const int LED = D3;
float niveau = 0;
float sens = 1.0f;
void setup() {
analogWriteResolution(16); // 0..65535
analogWriteFrequency(LED, 19531); // ~19.5 kHz : hors audible
Serial.begin(115200);
}
void loop() {
niveau += sens;
if (niveau >= 65535.0f || niveau <= 0.0f) sens = -sens;
analogWrite(LED, (uint16_t)niveau);
delayMicroseconds(200);
}