ws2812.ino

ESP8266 (module ESP-12E) · Fichier : ws2812.ino · Langage : Arduino · Usage : Animer un ruban d'adresseables WS2812B

Le ruban d'adresseables est LE projet NodeMCU : une seule broche, 800 kHz de trainées de bits, et l'effet waouh. Le sketch anime une comète ; la discipline, c'est l'alimentation 5 V séparée et le plan de masse.

Matériel requis

Un module ESP-12E (ESP8266EX, Wi-Fi 2,4 GHz) monté sur une carte NodeMCU / Wemos D1 mini, alimentée par micro-USB. 16 WS2812B (ruban ou anneau) + alimentation 5 V ≥ 1 A + résistance 330-470 Ω sur la data.

Branchement

Data du ruban via 470 Ω vers D2, VDD sur l'alim externe, GND ruban relié à la masse de la carte. Condensateur 1000 µF sur l'alimentation du ruban conseillé.

Fonctionnement

NeoPixel assemble la trame NRZ 800 kHz (chaque bit = une durée d'impulsion) et l'envoie d'un bloc sur show(). setBrightness réduit le courant max sans changer les couleurs relatives. Dans l'Arduino IDE, installez le paquet « esp8266 », choisissez « NodeMCU 1.0 (ESP-12E Module) » puis Téléverser (GPIO0 à LOW si le flash échoue). L'ADC A0 lit 0-1 V (diviseur NodeMCU : 0-3,3 V).

Pour aller plus loin

Météo en couleur (couleur = température), ou balayage synchronisé avec le servo du sketch précédent.

ws2812.ino

// 16 WS2812B sur D2 (GPIO4) — bibliotheque Adafruit NeoPixel.
// Ruban alimente en 5 V EXTERNE, data via resistance 330-470 ohms.
#include <Adafruit_NeoPixel.h>
#define NB 16
#define PIN 4

Adafruit_NeoPixel ruban(NB, PIN, NEO_GRB + NEO_KHZ800);
int tete = 0;

void setup() {
  ruban.begin();
  ruban.setBrightness(80);            // menage l'alimentation
  ruban.clear();
  ruban.show();
  Serial.begin(115200);
}

void loop() {
  ruban.clear();
  ruban.setPixelColor(tete, 255, 80, 0);
  ruban.setPixelColor((tete + NB - 1) % NB, 60, 20, 0);   // trainee
  ruban.setPixelColor((tete + 1) % NB, 60, 20, 0);
  ruban.show();                                          // trame complete
  tete = (tete + 1) % NB;
  delay(60);
}

← Retour à la fiche