🛠 Bandeau NeoPixel piloté par le périphérique RMT
Objectifs
Piloter des LED adressables WS2812 (NeoPixel) avec le ESP32-C3. La bibliothèque Adafruit_NeoPixel utilise sur le C3 le périphérique RMT (Remote Control) pour générer les créneaux de timing au quart de microseconde, sans monopoliser le CPU. Vous éviterez les broches de strapping (GPIO2, 8, 9) en choisissant GPIO7 pour la ligne de données.
Matériel
- 1 carte ESP32-C3
- 1 bandeau 8 LED WS2812B (alimentation 5 V séparée conseillée)
- 1 résistance 330 Ω sur la ligne data + condensateur 1000 µF sur l'alim
- Bibliothèque Adafruit NeoPixel (Gestionnaire de bibliothèques)
Code complet
#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);
}
Vérification attendue
Une LED orange parcourt le bandeau en boucle. L'ESP32-C3 n'a qu'un cœur et fait tourner la pile Wi-Fi en parallèle : le RMT génère les trames WS2812 sans que l'animation ne tremble.
Erreurs fréquentes
- 5 V sur la broche data du bandeau vers le C3 : certains bandeaux acceptent le 5 V en entrée data, mais partir d'un GPIO 3,3 V reste la norme ; ne jamais inverser VCC et GND.
- Masses non communes entre alim 5 V et carte : des LED qui clignotent dans le désordre.
- Ordre des couleurs inversé (GRB vs RGB) : les couleurs affichées ne correspondent pas aux valeurs envoyées.
- Data posée sur GPIO8 : le pull-down interne du bandeau au repos tire la broche de strapping vers le bas et peut empêcher le boot.
Autres tutoriels pour cette carte
Exemples de code pour cette carte
clignotante.inoArduinobouton-led.inoArduinorespiration.inoArduinodht22.inoArduinooled-i2c.inoArduinoserveur-web.inoArduino