neoled-rgb.ino
La Nano ESP32 integra un LED RGB WS2812 en el pin 48: este arcoíris la hace respirar sin componente externo. Los neopíxeles exigen una trama de timing estricta a 800 kHz, generada aquí por el periférico RMT del ESP32.
Hardware
Un Arduino Nano ESP32 (ESP32-S3 de doble núcleo, Wi-Fi 2,4 GHz + Bluetooth Low Energy, formato físico compatible con el Nano, USB nativo, pines de 3,3 V únicamente). Nano ESP32 sola — el LED va integrado; para una cinta externa, pin GPIO libre + alimentación dedicada.
Cableado
Nada para el LED integrado. Cinta WS2812 externa: DATA→pin GPIO, común→GND, VCC alimentado aparte si >20 LED.
Funcionamiento
Adafruit_NeoPixel compone la trama GRB y show() la lanza vía el periférico RMT (timing de hardware). La rueda cromática avanza 1/768 en cada vuelta del bucle.
Ejecución
Instala el paquete Arduino ESP32 Boards (o sigue la guía oficial del Nano ESP32), selecciona Arduino Nano ESP32 y carga. Los pines son de 3,3 V: nunca envíes 5 V a una entrada. El monitor serie usa el USB nativo.
Variantes
Usa la clase neopixel del core esp32 (neopixelWrite) para un one-liner, o pilota una cinta como indicador de nivel sonoro.
neoled-rgb.ino
// La Nano ESP32 embarque une LED RGB adressable (WS2812, broche 48).
// Pilotee ici sans library lourde, via le driver RMT du coeur esp32.
#include <Adafruit_NeoPixel.h> // ou le driver neopixelClass du core
Adafruit_NeoPixel rgb(1, 48, NEO_GRB + NEO_KHZ800);
unsigned long dernier = 0;
int phase = 0;
void setup() {
Serial.begin(115200);
rgb.begin();
rgb.setBrightness(40); // attention : une WS2812 a fond tire ~50 mA
}
void loop() {
if (millis() - dernier < 30) return;
dernier = millis();
phase = (phase + 1) % 768;
// roue chromatique en trois tiers de 256 pas
uint8_t r = 0, v = 0, b = 0;
if (phase < 256) { r = 255 - phase; v = phase; }
else if (phase < 512) { v = 511 - phase; b = phase - 255; }
else { b = 767 - phase; r = phase - 511; }
rgb.setPixelColor(0, rgb.Color(r, v, b));
rgb.show(); // impulsion RMT : trame 800 kHz
}