ruban-neopixel.ino

Arduino UNO R3 · Archivo : ruban-neopixel.ino · Lenguaje : Arduino · Uso : Animation arc-en-ciel sur ruban d'adresseables NeoPixel

Una cabeza luminosa se desplaza por una tira de 16 LED NeoPixel (WS2812B) con una estela roja. Cada LED es direccionable individualmente mediante un protocolo de un solo hilo, controlado por la librería Adafruit_NeoPixel.

Hardware

Un Arduino Uno R3 (ATmega328P, 5 V, 16 MHz) alimentado por USB o jack de 7-12 V. 1 tira o anillo NeoPixel (WS2812B), alimentación de 5V dedicada recomendada + condensador de 470-1000 µF en la alimentación.

Cableado

Data (DIN) de la tira al pin 6 (resistencia de 330 Ω aconsejable), VCC a 5V (o 5V externo), GND común con la placa.

Funcionamiento

setPixelColor() acumula colores en un búfer, show() envía el trama completa. La posición de la cabeza avanza y da la vuelta con el módulo.

Ejecución

En el Arduino IDE, elige la placa « Arduino Uno » y el puerto serie correspondiente y pulsa Subir. Abre el monitor serie a 9600 baudios para seguir los mensajes.

Variantes

La librería FastLED para efectos más ricos (Chase, Rainbow), o controlar el color con una orden serie recibida por 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);
}

← Volver a la ficha