ruban-neopixel.ino
Los WS2812 exigen tiempos ajustados: el core del R4 los genera limpiamente con los temporizadores del RA4M1. Una cabeza blanca con estela de color sirve de primer banco de pruebas de direccionables en la placa.
Hardware
Un Arduino UNO R4 WiFi (Renesas RA4M1 @ 14 MHz + ESP32-S3 Wi-Fi/BLE compañero, matriz LED 12x8, LED RGB) alimentado por USB o 6-24 V. 1 tira de 16 LED NeoPixel + alimentación externa de 5 V.
Cableado
Data a D6 mediante resistencia de 330 Ω, VCC a 5 V externo, GND común con el R4.
Funcionamiento
setPixelColor rellena el búfer, show() envía la trama WS2812 de golpe. El módulo hace girar la cabeza por la tira a ~14 Hz.
Ejecución
Arduino IDE 2.x con el core « Arduino UNO R4 Boards », placa « Arduino UNO R4 WiFi », puerto serie y Subir. El coprocesador ESP32-S3 se actualiza aparte si el IDE lo pide.
Variantes
Sincronizar la tira con el DAC (salida de audio) o la matriz LED (R4 WiFi) para un espectáculo luminoso combinado.
ruban-neopixel.ino
// Ruban NeoPixel 16 LED sur D6 (Adafruit_NeoPixel sur core R4).
#include <Adafruit_NeoPixel.h>
Adafruit_NeoPixel ruban(16, 6, NEO_GRB + NEO_KHZ800);
unsigned long t0 = 0;
int tete = 0;
void setup() {
ruban.begin();
ruban.setBrightness(60);
Serial.begin(9600);
}
void loop() {
if (millis() - t0 < 70) return;
t0 = millis();
ruban.clear();
ruban.setPixelColor(tete, ruban.Color(255, 255, 255));
for (int i = 1; i <= 4; i++) {
int pos = (tete - i + 16) % 16;
ruban.setPixelColor(pos, ruban.Color(255 - i * 55, 40, 120));
}
ruban.show();
tete = (tete + 1) % 16;
}
// La trame WS2812 est generee par timers/DMA du RA4M1 :
// le rendu est impeccable meme a pleine vitesse.