Tutorial Arduino - Cinta LED RGB WS2812B
Tutorial Arduino - Cinta LED RGB WS2812B
Tutorial Arduino - Cinta LED RGB WS2812B
La cinta LED RGB se basa en el chip controlador WS2812B de Neopixel con el cual
podemos realizar proyectos de una manera simple y escalable ya que se tiene el control de
cada pixel y de cada color, ya sea rojo, verde y azul a travs de un solo cable. Adems,
tienen la ventaja de poder encadenarse unos tras otros (la salida de uno se puede conectar a
la entrada de la siguiente) para obtener cadenas ms largas adems de formas interesantes
gracias a su flexibilidad. Las cintas Led vienen con diferente densidad de LED,
generalmente bienen de 60 y 30 LEDs por Metro.
Para realizar las conexiones bsicas, vamos primero a identificar el pin de Entrada de
nuestra cinta led RGB, para ello tenemos que verificar el pin con la etiqueta DIN (entrada
de datos). Tambin podremos identificarla por la flecha que indica la direccin en la que se
realiza el envo de datos. Cabe indicar, que la entrada de datos se puede conectar hacia
cualquier pin de nuestro Arduino, para este caso usaremos el pin digital D6 de nuestro
Arduino UNO como ejemplo.
Vamos a alimentar nuestra cinta led RGB con una fuente de alimentacin externa de +5V
DC para lo cual podremos seguir el esquema que se muestra en la siguiente imagen o seguir
los siguientes pasos: conectar la entrada de + 5V de la tira led RGB al terminal + (positivo)
en la fuente de alimentacin (no conecte a la de Arduino), DIN al pin digital D6 del
Arduino, y de nuestra fuente a GND de nuestra cinta led RGB, adems de conectar
nuestro terminal negativo a un pin GND de nuestro Arduino.
Para un buen uso de nuestra cinta led RGB es necesario conocer sus caractersticas tcnicas
principales y tener en consideracin algunas pautas para evitar algn posible dao, entre
ellas citamos:
- Cada pixel o led individual de nuestra cinta RGB requiere 60 miliamperios como mximo
cuando trabaja en su brillo completo. Los colores mezclados y ajustes inferiores de brillo
utilizarn proporcionalmente menos energa. Esto es necesario conocer a la hora de elegir la
capacidad de nuestra fuente de alimentacin.
- Antes de conectar nuestra cinta led RGB a cualquier fuente de alimentacin, aadir un
gran condensador (1000 uF, 6.3V o superior) a travs de los terminales de alimentacin
positivo y negativo.
- Coloque una resistencia de 300 a 500 Ohm entre el pin de salida de datos del Arduino y la
entrada al primer led o pixel para prevenir que este se dae debido a posibles picos en la
lnea de datos.
Te recordamos que es ideal utilizar una fuente de alimentacin independiente o externa, sin
embargo se podra utilizar la salida del pin 5V del Arduino si tan solo usamos pocos leds y/
o si los colores y el brillo son relativamente bajos. Como se explic con anterioridad, cada
led necesita de 60 miliamperios aproximadamente en su brillo completo y nuestro Arduino
nos puede suministrar de forma continua cerca de 500 miliamperios mediante su pin de 5V.
Para simplificar el uso de nuestra cinta LED, vamos a utilizar la librera NeoPixel de
Adafruit, para lo cual vamos a descargarla e instalarla de la siguiente manera:
Luego de instalar la librera en nuestro Arduino IDE, vamos a detallar parte del cdigo que
cargaremos posteriormente en nuestro Arduino y que se encuentra en la parte inferior de
este tutorial para poder copiar y pegar en nuestro IDE.
La primera lnea asigna un nmero a la variable PIN" para su posterior consulta, aunque
no es obligatorio pero hace que sea ms fcil para cambiar el pin donde la entrada de datos
de nuestra cinta led RGB est conectada sin profundizar en el cdigo. De la misma manera
hacemos lo mismo con la variable NUMPIXELS la cual simboliza el nmero de pixeles o
leds por la que est conformada nuestra tira led. Recordar cambiar estas dos variables o
parmetros antes de cargar el cdigo segn sea nuestro caso.
Ntese que a continuacin creamos un objeto pixels que nos permitir controlar nuestra
tira led a travs de las funciones que nos permite la librera NeoPixel. Luego, en la
funcin setup() llamamos a la funcin begin () para preparar la salida de nuestro pin de
datos de nuestro Arduino a nuestra cinta led RGB.
void setup() {
// Inicializamos nuestra cinta led RGB
pixels.begin();
Los siguientes tres argumentos son el color del pxel, expresados como niveles de brillo de
color rojo, verde y azul, donde 0 es ms tenue (apagado) y 255 es el mximo brillo.
Una sintaxis alternativa que podemos usar para esta funcin tiene slo dos argumentos
como se puede ver a continuacin:
pixels.setPixelColor(n, color);
Aqu, el color es un tipo de 32 bits que combina los valores de rojo, verde y azul en un solo
nmero. Esto a veces puede ser ms fcil y sencillo de manejar para algunos programas.
Tambin puede convertir valores de rojo, verde y azul por separado en una sola variable de
tipo 32 bits para su uso posterior usando la funcin Color() como se puede ver en el
ejemplo siguiente:
Ahora, nuestra funcin setPixelColor () no tiene un efecto inmediato en los LEDs. Para
"empujar" los datos de color a la tira, hacemos el llamado a la funcin show():
pixels.show();
Esta funcin nos actualiza toda nuestra cinta led RGB a la vez. A continuacin, mostramos
el cdigo final y completo que cargaremos a nuestra cinta led RGB y poder disfrutar del
juego de luces:
#include <Adafruit_NeoPixel.h>
#include <avr/power.h>
void setup() {
// Inicializamos nuestra cinta led RGB
pixels.begin();
void loop() {
for(int i=0;i<NUMPIXELS;i++){
//Variamos los colores de cada led en nuestra cinta RGB cada medio
segundo
uint32_t amarillo = pixels.Color(150,150,0);
uint32_t morado = pixels.Color(150,0,150);
uint32_t celeste = pixels.Color(0,150,150);
uint32_t blanco = pixels.Color(150,150,150);
delayval=500;