respiration.ino

Arduino GIGA R1 · Archivo : respiration.ino · Lenguaje : Arduino · Uso : Respiration LED avec le PWM 16 bits

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);
}

← Volver a la ficha