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 carte Arduino Giga R1 (STM32H747 double cœur M7 480 MHz + M4, 76 E/S, 2 DAC, FDCAN) alimentée par USB-C ou 5-24 V. 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, installez la plateforme « Arduino Zephyr-based Boards » (ou Mbed), choisissez « Arduino Giga R1 », puis Téléverser. Logique 3,3 V.
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);
}