respiration.ino
Le PWM de la GIGA monte à 16 bits : la rampe de respiration devient parfaitement continue, sans le « escalier » du 8 bits. La fréquence se règle par broche, hors du spectre audible.
Matériel requis
Une Arduino GIGA R1 WiFi (STM32H747, module radio 1DX : Wi-Fi b/g/n + BLE, antenne u.FL fournie), alimentée par USB-C. 1 LED + résistance 330 Ω sur D3.
Branchement
LED anode sur D3 via 330 Ω vers GND. Choisir une broche PWM (marquée ~) : D3 en fait partie.
Fonctionnement
analogWriteResolution porte la résolution du canal ; la boucle incrémente une consigne float pour lisser la rampe malgré le pas matériel. 19,5 kHz évite le sifflement des pilotes. Dans l'Arduino IDE, plateforme « Arduino Zephyr-based Boards », carte « Arduino Giga R1 » ; montez l'antenne u.FL avant d'utiliser le radio, puis Téléverser.
Pour aller plus loin
Deux canaux pour mélanger deux LED (mélange additif de teinte), ou un gradateur de puissance sur 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);
}