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
Una placa Arduino Giga R1 (STM32H747 doble núcleo M7 a 480 MHz + M4, 76 E/S, 2 DAC, FDCAN) alimentada por USB-C o 5-24 V. 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, instale la plataforma « Arduino Zephyr-based Boards » (o Mbed), elija « Arduino Giga R1 » y suba. Lógica de 3,3 V.
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);
}