🛠 Bandeau NeoPixel piloté par le périphérique RMT
Objetivos
Controlar LED direccionables WS2812 (NeoPixel) con el ESP32-C3. La biblioteca Adafruit_NeoPixel utiliza en el C3 el periférico RMT (Remote Control) para generar los intervalos de temporización con precisión de un cuarto de microsegundo, sin monopolizar la CPU. Deberá evitar los pines de configuración (GPIO2, 8, 9) eligiendo el GPIO7 para la línea de datos.
Material
- 1 placa ESP32-C3
- 1 tira de 8 LED WS2812B (se recomienda una alimentación de 5 V separada)
- 1 resistencia de 330 Ω en la línea de datos + condensador de 1000 µF en la alimentación
- Biblioteca Adafruit NeoPixel (Gestor de bibliotecas)
Código completo
#include <Adafruit_NeoPixel.h>
#define PIN_NEO 7 // evite GPIO2/8/9 (strapping) et GPIO9 (BOOT)
#define N 8
Adafruit_NeoPixel strip(N, PIN_NEO, NEO_GRB + NEO_KHZ800);
uint32_t i = 0;
void setup {
strip.begin;
strip.setBrightness(40); // menage l'alimentation
strip.show;
}
void loop {
for (uint16_t b = 0; b < N; b++) strip.setPixelColor(b, 0, 0, 0);
strip.setPixelColor(i % N, strip.Color(255, 60, 0)); // balle orange
strip.show;
i++;
delay(120);
}
Verificación esperada
Un LED naranja recorre la tira en bucle. El ESP32-C3 tiene un solo núcleo y ejecuta la pila Wi-Fi en paralelo: el RMT genera los fotogramas WS2812 sin que la animación se entrecorte.
Errores frecuentes
- 5 V en el pin de datos de la tira hacia el C3: algunas tiras aceptan 5 V en la entrada de datos, pero partir de un GPIO de 3,3 V sigue siendo la norma; nunca invierta VCC y GND.
- Masas no comunes entre la fuente de 5 V y la placa: los LED parpadean de forma desordenada.
- Orden de colores invertido (GRB vs RGB): los colores mostrados no corresponden a los valores enviados.
- Datos conectados al GPIO8: la resistencia pull-down interna de la tira en reposo tira del pin de configuración hacia abajo y puede impedir el arranque.
Otros tutoriales para esta placa
Ejemplos de código para esta placa
clignotante.inoArduinobouton-led.inoArduinorespiration.inoArduinodht22.inoArduinooled-i2c.inoArduinoserveur-web.inoArduino