Configurar NeoPixels con Vixen Lights y Arduino: Guía Paso a Paso
Componentes y materiales
| Arduino Nano R3 | × | 1 |
| Arduino UNO | × | 1 |
| Tira de píxeles 60 píxeles/metro (WS2812B) | × | 1 |
| Resistencia 470 Ω | × | 1 |
| Fuente de alimentación 5V, 40A | × | 1 |
| Protoboard (genérica) | × | 1 |
| Cables Dupont | × | 1 |
Herramientas necesarias
- Soldador (genérico)
- Estaño para soldar
Aplicaciones y servicios en línea
- Vixen Lights (versión 3.4u2 64-bit) – Descargar aquí
- Arduino IDE
Sobre este proyecto
Este tutorial está disponible en inglés y español. Desplázate hacia abajo para la versión en español.
¿Qué es Vixen Lights?
Vixen Lights es un software de automatización de iluminación para proyectos "hazlo tú mismo" (DIY). La versión 3.x fue rediseñada completamente para soportar luces de "píxeles" direccionables.
¿Qué es un píxel?
Un píxel es un grupo de 3 diodos emisores de luz (LED) que corresponden a los tres colores primarios: rojo, verde y azul (RGB). La intensidad de cada LED puede variarse para crear una amplia gama de colores. Los píxeles WS2812B utilizados en este ejemplo incluyen un circuito integrado (IC) que recibe datos por un puerto, muestra la información dirigida a ese píxel y pasa los datos al siguiente. Las tiras de píxeles RGB direccionables suelen tener 3 cables: alimentación, tierra y datos. En cambio, las tiras RGB "tontas" (no direccionables) tienen 4 cables: uno para alimentación y uno para cada color (R, G, B).
Consideraciones de alimentación
Los píxeles RGB consumen mucha energía. Aunque el Arduino puede alimentar unos pocos píxeles mediante su regulador de voltaje integrado, rápidamente se quedará sin capacidad. Por ello, es imprescindible usar una fuente de alimentación externa. El voltaje depende de las luces adquiridas; en este caso son de 5V. Cada píxel a blanco pleno consume aproximadamente 60 mA. Para 150 píxeles, se necesitan unos 9A.
Las finas pistas de cobre de las tiras LED causan resistencia y caída de voltaje. Si el voltaje en el píxel cae demasiado, pueden aparecer parpadeos, atenuación o fallo total. Para evitarlo, se debe "inyectar" alimentación en puntos intermedios de la tira: cortar la pista, puentear la línea de datos y añadir nuevos cables de alimentación y tierra que vuelvan a la fuente. El grosor del cable debe ser suficiente para minimizar la caída de voltaje según la distancia y la corriente.
Siempre es mejor sobredimensionar la fuente de alimentación. Se recomiendan fuentes de 40A o 60A, o varias fuentes conectando todas sus tierras en común.
Arduino como controlador
Muchas placas Arduino principales pueden actuar como intermediarias entre el PC que ejecuta Vixen Lights y las tiras de píxeles. Las limitaciones de hardware (velocidad del procesador, RAM, almacenamiento) suelen ser secundarias; el mayor cuello de botella es la velocidad del puerto serie. La mayoría de los Arduino no superan los 115.200 baudios. Transmitir los datos de color para 150 píxeles (450 canales) a esa velocidad tarda unos 45 ms, permitiendo una tasa de refresco de ~20 Hz (cada 50 ms).
El código de este tutorial se basa en el trabajo de David Hunt (blog.huntgang.com).
Configuración del puerto serie en Vixen
Para usar el Arduino como controlador, debe configurarse dentro de Vixen 3.x:
Paso 1: Añadir controlador serie genérico
En el menú superior derecho, selecciona "Add Generic Serial Controller".
Paso 2: Definir número de salidas
El número de salidas debe ser 3 × número de píxeles. Para 30 píxeles, configura 90 salidas.
Paso 3: Configurar puerto COM y baudios
Haz clic en el icono de engranaje (esquina inferior derecha). Selecciona el puerto COM correspondiente a tu Arduino (ej. COM13) y establece la velocidad a 115200 baudios. El resto de parámetros déjalos por defecto.
Paso 4: Establecer cabecera con número de píxeles
En el campo "Header Text" introduce el número de píxeles en formato de tres dígitos (ej. >>030<< para 30 píxeles). El máximo soportado es 300. Al aplicar, verás parpadear los LEDs del Arduino indicando recepción de datos.
Configurar elemento para los píxeles
Paso 5: Crear elemento "Pixel Strip"
En el desplegable superior izquierdo selecciona "Single Item", pulsa el botón verde "+" y nómbralo "Pixel Strip".
Paso 6: Añadir píxeles individuales
Clic derecho sobre "Pixel Strip" → "Add Multiple". Selecciona "Numbered Items", define el nombre base (ej. "Pixel Strip") y el número de píxeles (30). Verifica la lista y pulsa OK.
Paso 7: Configurar manejo de color
Selecciona "Pixel Strip" y en la esquina inferior izquierda ("Configure:") elige "Color Handling". Marca: "They can be any color: they are full RGB and mix to make any color."
Paso 8: Vincular elemento al controlador (Patch)
Resalta "Pixel Strip" a la izquierda y "Generic Serial Controller" a la derecha. El número de "Unconnected Patch Points" debe coincidir. Pulsa "Patch Elements to Controllers".
Paso 9: Verificar vista gráfica
La vista gráfica debería mostrar los píxeles mapeados correctamente.
Crear mi primera secuencia
Paso 10: Nueva secuencia
Abre Vixen y haz clic en "New Sequence…".
Paso 11: Importar audio
Menú Tools → Audio → Import Audio. Se recomienda formato MP3.
Paso 12: Ajustar línea de tiempo
Usa las lupas (+ / -) en la barra superior para hacer zoom en la línea de tiempo.
Paso 13: Detectar beats (pulsos)
Tools → Audio → Beat/Bar Detector. Aparecerán líneas blancas alineadas a los golpes de la música.
Paso 14: Añadir efectos
En el menú izquierdo "Effects", hay dos submenús: "Basic Lighting" y "Pixel Lighting". Ambos funcionan con píxeles. Arrastra el efecto "Chase" sobre la línea de tu "Pixel Strip" y redimensiona con el ratón.
Paso 15: Personalizar efecto
Selecciona el efecto en la línea de tiempo; a la derecha aparecerán opciones: dirección, color, pulso, profundidad, etc. Activa "Effect Preview" para previsualizar.
Paso 16: Reproducir y disfrutar
Pulsa Play (esquina superior izquierda). ¡Diviértete! En YouTube hay muchos ejemplos.
Nota: Al conectar el Arduino y abrir Vixen, verás parpadear el LED RX del Arduino: indica que está esperando datos por el puerto serie.
Código
Librería FastLED
Instala la librería FastLED en Documentos/Arduino/libraries desde fastled.io.
Código para Arduino
Copia y pega en el IDE de Arduino:
/* Vixen Lights 3.x - Arduino Generic Serial for Addressable Pixels
* Conecta la línea de datos (WS2811/WS2812) al pin 6 del Arduino.
* Requiere librería FastLED (https://fastled.io).
* Configura en Vixen: Generic Serial Controller, 3×píxeles canales, 115200 8N1.
* Tutorial completo en blog.huntgang.com
* Creado 8 nov 2014 por Richard Sloan (www.themindfactory.com) y David Hunt (blog.huntgang.com)
* Versión 1.4
*/
#include <FastLED.h>
#define NUM_LEDS 300
#define DATA_PIN 6
CRGB leds[NUM_LEDS];
void setup() {
Serial.begin(115200);
}
void loop() {
int cnt;
unsigned int num_leds, d1, d2, d3;
for(;;) {
cnt = 0;
// Esperar cabecera '>>'
while(!Serial.available()); if(Serial.read() != '>') continue;
while(!Serial.available()); if(Serial.read() != '>') continue;
// Leer 3 dígitos
while(!Serial.available()); d1 = Serial.read();
while(!Serial.available()); d2 = Serial.read();
while(!Serial.available()); d3 = Serial.read();
// Esperar '<<'
while(!Serial.available()); if(Serial.read() != '<') continue;
while(!Serial.available()); if(Serial.read() != '<') continue;
num_leds = (d1-'0')*100 + (d2-'0')*10 + (d3-'0');
if(num_leds > NUM_LEDS) continue;
FastLED.addLeds<WS2812B, DATA_PIN, GRB>(leds, num_leds);
do {
while(!Serial.available()); leds[cnt].r = Serial.read();
while(!Serial.available()); leds[cnt].g = Serial.read();
while(!Serial.available()); leds[cnt++].b = Serial.read();
} while(--num_leds);
FastLED.show();
}
}
Esquemáticos
Usa una resistencia de 470 Ω en la línea de datos.
Proceso de manufactura
- Control de Brillo LED con PWM mediante Pulsador en Arduino Mega
- Construye un Dispositivo de Levitación Ultrasónica con Arduino – Guía Paso a Paso
- Mando universal Android con Arduino, 1Sheeld y control IR
- Construye un Voltímetro Inteligente con Arduino y Smartphone – Proyecto DIY Fácil
- Registrador de Temperatura y Humedad con Arduino, DHT11 y Ethernet Shield
- Construye un tarro inteligente IoT con ESP8266, Arduino y sensor ultrasónico: Monitorización en tiempo real
- Medición precisa de frecuencia y ciclo de trabajo con Arduino UNO
- Mide la masa de la Tierra con Arduino: Guía paso a paso DIY
- Medición de Distancia en Tiempo Real con Sonar Arduino y Visualización en Processing
- Contador Inteligente de Plazas de Aparcamiento: Seguimiento en Tiempo Real con Arduino, Processing y PHP
- Construye una Brújula Digital en Tiempo Real con Arduino y Processing