Cómo controlar una tira LED WS2812B con Arduino
Conectas la tira, cargas el ejemplo y los LED parpadean en colores aleatorios, o se encienden solo los tres primeros, o no pasa nada. Casi siempre el fallo no está en el código, sino en la alimentación o en la línea de datos.

Conectas la tira, cargas el ejemplo y los LED parpadean en colores aleatorios, o se encienden solo los tres primeros, o no pasa nada. Casi siempre el fallo no está en el código, sino en la alimentación o en la línea de datos.
En esta guía montamos una tira LED WS2812B con Arduino paso a paso: qué fuente necesitas, cómo cablearla para no quemar el primer LED, qué librería usar y cómo escribir tus primeros efectos. Lo probamos en el taller con una tira de 60 LED por metro y un Arduino Uno, pero sirve igual para un Nano.
Qué es una tira WS2812B y por qué es tan popular
Cada LED de una WS2812B lleva dentro un pequeño chip controlador. Eso significa que puedes elegir el color y el brillo de cada LED por separado usando un solo pin del Arduino. Los datos entran por un extremo, el primer LED se queda con su parte y pasa el resto al siguiente.
Las tiras se venden en densidades de 30, 60 y 144 LED por metro, y funcionan a 5 V. Un metro de 60 LED cuesta entre 6 y 12 euros, lo que las hace perfectas para lámparas, relojes, decoración del escritorio o efectos para un proyecto como nuestro reloj con Arduino y DS3231.
Material para montar la tira LED WS2812B con Arduino
- Arduino Uno, Nano o compatible
- Tira WS2812B de 5 V, en este ejemplo 1 metro con 60 LED
- Fuente de alimentación de 5 V y al menos 3 A
- Resistencia de 330 a 470 ohmios para la línea de datos
- Condensador electrolítico de 1000 µF y 6,3 V o más
- Cables, protoboard o regleta de bornes
Cuánta corriente necesita de verdad
Este es el punto que más proyectos estropea. Cada LED tiene tres diodos, rojo, verde y azul, y cada uno consume hasta 20 mA a pleno brillo. Un LED en blanco total puede pedir unos 60 mA.
| Número de LED | Consumo máximo en blanco | Fuente recomendada |
|---|---|---|
| 8 | 0,5 A | USB del Arduino, con brillo bajo |
| 30 | 1,8 A | 5 V 2 A |
| 60 | 3,6 A | 5 V 4 A |
| 144 | 8,6 A | 5 V 10 A con inyección de corriente |
El puerto USB de un ordenador da unos 500 mA y el regulador del Arduino no está pensado para más. Nunca alimentes una tira de 60 LED desde el pin de 5 V del Arduino.
Conexión paso a paso
- Identifica la entrada. La tira tiene flechas impresas. Conecta siempre en el extremo donde empiezan las flechas, marcado DIN.
- Alimentación. Conecta el positivo de la fuente al pad de 5 V de la tira y el negativo al pad GND.
- Condensador. Coloca el condensador de 1000 µF entre 5 V y GND, justo en la entrada de la tira, respetando la polaridad. Absorbe el pico de corriente al encender la fuente.
- Tierra común. Une el GND de la fuente con un pin GND del Arduino. Sin esta tierra compartida, la señal de datos no tiene referencia y verás colores aleatorios.
- Línea de datos. Conecta el pin 6 del Arduino a DIN pasando por la resistencia de 330 a 470 ohmios. Colócala cerca de la tira, no cerca del Arduino.
Si vas a usar la tira en un sitio fijo, suelda los cables en lugar de usar los clips de presión. Los clips baratos fallan con la vibración y provocan parpadeos difíciles de diagnosticar.
El código: librería y primeros efectos
Las dos librerías más usadas son Adafruit NeoPixel y FastLED. Para empezar, recomendamos Adafruit NeoPixel porque su sintaxis es muy directa. Instálala desde el gestor de librerías del IDE de Arduino buscando "NeoPixel".
Configuración básica
En el programa defines tres cosas: el pin de datos, que es el 6, el número de LED, que es 60, y el tipo de tira, que para la WS2812B es NEO_GRB más NEO_KHZ800. En la función setup llamas a begin, ajustas el brillo con setBrightness y llamas a show para apagar todos los LED al arrancar.
Encender un color
Para pintar un LED usas setPixelColor con el número del LED, empezando en 0, y los valores de rojo, verde y azul entre 0 y 255. Nada cambia en la tira hasta que llamas a show. Un error muy común es llamar a show dentro de un bucle por cada LED, lo que hace que una animación de 60 LED vaya muy lenta. Pinta todos primero y llama a show una sola vez.
Un efecto arcoíris
El ejemplo "strandtest" que viene con la librería incluye un efecto arcoíris con la función ColorHSV. Cambiar el tono poco a poco en cada vuelta del bucle, por ejemplo sumando 256 cada 10 milisegundos, crea un degradado suave que recorre toda la tira.
No subas el brillo al máximo
Muchos tutoriales dejan setBrightness en 255 para que la tira luzca más en el vídeo. En el taller hacemos lo contrario y empezamos en 50 o 60, que es aproximadamente un 20 por ciento.
Hay tres razones. Primero, a corta distancia el ojo apenas distingue entre un 40 y un 100 por ciento de brillo, pero la fuente sí lo nota. Segundo, a pleno brillo la tira se calienta y el adhesivo de la parte trasera se despega con el tiempo, sobre todo si no está pegada a un perfil de aluminio. Tercero, una tira de 60 LED al 20 por ciento consume menos de 1 A, lo que permite usar una fuente más pequeña y barata. Si después de un rato te parece poco, súbelo de 20 en 20.
Problemas frecuentes y cómo resolverlos
- Colores aleatorios o parpadeo: casi siempre falta la tierra común o la resistencia en la línea de datos.
- Solo funciona el primer LED o ninguno: revisa que estés conectado a DIN y no a DOUT, y que el número de LED en el código sea correcto.
- Los colores cambian hacia el final: el blanco se vuelve amarillento por caída de tensión. Inyecta 5 V también en el otro extremo de la tira.
- Rojo y verde intercambiados: cambia NEO_GRB por NEO_RGB en la configuración.
Si quieres combinar la tira con un sensor, encaja muy bien con el sensor PIR con Arduino para encender una luz de pasillo al detectar movimiento, o con la estación meteorológica con ESP32 para mostrar la temperatura con colores.
Preguntas frecuentes
¿Se puede alimentar una tira WS2812B desde el Arduino?
Solo si son muy pocos LED, unos 8 como máximo, y con el brillo bajo. Para más, usa una fuente externa de 5 V y une su GND con el del Arduino. Así evitas dañar el regulador de la placa.
¿Qué diferencia hay entre WS2812B y WS2811?
La WS2812B lleva el chip dentro de cada LED y funciona a 5 V. La WS2811 usa un chip externo que suele controlar grupos de tres LED y muchas versiones trabajan a 12 V. Para control individual de cada LED, la WS2812B es la opción más sencilla.
¿Por qué mi tira LED WS2812B parpadea?
Lo más habitual es una tierra no compartida entre fuente y Arduino, la falta de resistencia en la línea de datos o una fuente demasiado débil. Comprueba primero la tierra común. Si la tira es larga, añade alimentación también en el extremo final.
More in Proyectos
Proyectos
Termómetro con Arduino y sensor DS18B20 paso a paso
Quieres saber la temperatura real del agua de un acuario, de una nevera vieja o de la habitación donde duerme el servidor, y el...
Proyectos
Cómo usar un sensor PIR con Arduino para detectar movimiento
Conectaste el módulo de movimiento, cargaste el código de ejemplo y el LED se queda encendido todo el tiempo, o se dispara solo...
Proyectos
Detector de gas con Arduino y sensor MQ-2 paso a paso
Un olor raro en la cocina a las once de la noche y la duda de siempre: ¿es la bombona o son imaginaciones?