ruban-neopixel.ino
Une tête lumineuse se déplace sur un ruban de 16 LED NeoPixel (WS2812B) avec une traînée rouge. Chaque LED est adressable individuellement via un protocole à fil unique, piloté par la bibliothèque Adafruit_NeoPixel.
Matériel requis
Une Arduino Pro Mini (ATmega328P, existe en 5 V/16 MHz et 3,3 V/8 MHz) reliée à un convertisseur USB-série (FTDI) ou un programmeur ICSP. 1 ruban ou anneau NeoPixel (WS2812B), alimentation 5V dédiée recommandée + condensateur 470-1000 µF sur l'alimentation.
Câblage
Data (DIN) du ruban vers la broche 6 (via résistance 330 Ω conseillée), VCC sur 5V (ou 5V externe), GND commun avec la carte.
Fonctionnement
setPixelColor() empile les couleurs dans une mémoire tampon, show() envoie la trame complète. La position de la tête avance et s'enroule avec le modulo.
Exécution
Choisissez « Arduino Pro Mini » dans l'IDE (5 V/16 MHz ou 3,3 V/8 MHz selon votre modèle), le processeur ATmega328P, le bon port, puis Téléverser. Le convertisseur doit être câblé DTR-DTR, RX-TX, TX-RX, VCC-VCC, GND-GND.
Variantes
Bibliothèque FastLED pour des effets plus riches (Chase, Rainbow), ou piloter la couleur par une commande série reçue sur Serial.
ruban-neopixel.ino
// Animation "marche" sur ruban NeoPixel (WS2812B).
#include <Adafruit_NeoPixel.h>
const int PIN = 6;
const int NB_LED = 16;
Adafruit_NeoPixel ruban(NB_LED, PIN, NEO_GRB + NEO_KHZ800);
int tete = 0;
void setup() {
ruban.begin();
ruban.setBrightness(60); // attention : 255 = jusque 3 A pour 60 LED !
Serial.begin(9600);
}
void loop() {
ruban.clear(); // eteint tout
// Une tete blanche + 4 cometes rouges qui se deplacent.
ruban.setPixelColor(tete, ruban.Color(255, 255, 255));
for (int i = 1; i <= 4; i++) {
int pos = (tete - i + NB_LED) % NB_LED;
ruban.setPixelColor(pos, ruban.Color(255 - i * 50, 0, 0));
}
ruban.show(); // une seule trame serial vers les LED
tete = (tete + 1) % NB_LED;
delay(80);
}