Manufactura industrial
Internet industrial de las cosas | Materiales industriales | Mantenimiento y reparación de equipos | Programación industrial |
home  MfgRobots >> Manufactura industrial >  >> Manufacturing Technology >> Proceso de manufactura

Construye y programa animaciones en matrices WS2812 RGB 8x8 y 16x16 con Arduino y Excel

Componentes y suministros

Arduino UNO×1
Matriz LED RGB WS2812 8x8×1
Cables jumper Macho/Hembra×3Negro-GND, Rojo-5V, Verde-Data
Pila 9V (genérica)×1
Conector 9V a Jack Barrel×1
Header Macho 5 posiciones – 1 fila – Largo (0.1")×1Solo se requieren 3 pines

Herramientas y máquinas necesarias

Sobre este proyecto

Cuando compré por primera vez una matriz LED RGB WS2812 8x8, esperaba direccionarla como un sistema de coordenadas XY tradicional. En cambio, los 64 LEDs están encadenados en serie en ocho filas de ocho. Descubrí que la utilidad Excel de Kevin Darrah, diseñada originalmente para una matriz 16×16, podía adaptarse para controlar un array 8×8. Modificando tanto la hoja de cálculo como el sketch Arduino adjunto, creé una herramienta versátil que permite programar animaciones LED sin librerías externas.

El libro de Excel actualizado, LED_Utility.xlsm, ahora soporta:

A continuación encontrarás instrucciones paso a paso para construir el hardware, configurar la utilidad Excel y subir el sketch Arduino. Cada proyecto se basa en el anterior, introduciendo conceptos como bucles, condicionales y funciones modulares.

Montar el hardware

Conecta la matriz 8×8 a un Arduino UNO usando un header de 5 pines:

  1. Conecta DIN al pin 8 del Arduino.
  2. Conecta +5V al pin 5V.
  3. Conecta GND al pin GND.
Construye y programa animaciones en matrices WS2812 RGB 8x8 y 16x16 con Arduino y Excel

En esta configuración, la coordenada (0,0) se refiere a la esquina superior izquierda de la matriz.

Visión general de la utilidad Excel

Abre LED_Utility.xlsm – contiene tres hojas:

El libro está en modo solo lectura por defecto para proteger tu trabajo. Usa Archivo → Guardar como tras generar código para preservar tu diseño.

Construye y programa animaciones en matrices WS2812 RGB 8x8 y 16x16 con Arduino y Excel

Características clave en la hoja Eight:

Cada botón genera un bloque de código C++ que copias en el sketch Arduino. El código está formateado para la función personalizada mapLEDXY(), que convierte coordenadas XY en el índice LED apropiado.

Sketch Arduino

El sketch principal (LED_Arduino.ino) contiene los siguientes elementos:

// Definición de pin
#define WS2812_pin 8
// Total de LEDs
#define numberOfLEDs 64
// Buffer RGB (3 bytes por LED)
byte RGB[192];
// Declaraciones adelantadas
void RGB_update(int LED, byte RED, byte GREEN, byte BLUE);
void mapLEDXY(int x, int y, byte RED, byte GREEN, byte BLUE);
void clearLEDs();

La rutina mapLEDXY() mapea un par de coordenadas al array lineal, considerando el patrón de cableado en zigzag común en matrices WS2812.

Tras copiar tu código generado en la función loop(), sube el sketch. La matriz responderá instantáneamente a las instrucciones.

Proyecto 1 – Cuadrado rojo estático

Crea un cuadrado rojo 3×3 en coordenadas (2,2) a (4,4). En Excel, pon las celdas correspondientes a 255 en rojo y 0 en verde/azul. Copia el código generado en la línea 40 del sketch:

mapLEDXY(2,2,255,0,0); mapLEDXY(2,3,255,0,0); mapLEDXY(2,4,255,0,0);
mapLEDXY(3,2,255,0,0); mapLEDXY(3,3,255,0,0); mapLEDXY(3,4,255,0,0);
mapLEDXY(4,2,255,0,0); mapLEDXY(4,3,255,0,0); mapLEDXY(4,4,255,0,0);

Sube y observa el cuadrado encenderse. Experimenta limpiando la cuadrícula, cambiando colores o añadiendo un borde.

Proyecto 2 – Cuadrados de doble color

Duplica el sketch como Colour_Sq.ino y modifica la hoja Excel para crear un segundo cuadrado mayor. Usa el botón Show para generar código y pégalo en el sketch. Añade un delay simple y clearLEDs() para alternar entre las dos formas.

Proyecto 3 – Cuadrado creciente

En el sketch Grow.ino, diseña un cuadrado interior pequeño y rodéalo con un borde a tu elección. Elimina los valores del cuadrado interior, genera el código exterior, y pega ambos bloques en el sketch. El resultado es un cuadrado animado que se expande y contrae.

Proyecto 4 – Animación espiral

Para patrones complejos, encapsula cada frame en una función separada y llámalas desde loop(). El ejemplo Spiral.ino usa cinco funciones auxiliares para construir una espiral de 5 capas. Este enfoque modular mantiene el loop principal conciso y facilita futuras ediciones.

Proyecto 5 – Bucle de brillo variable

Introduce un bucle for para animar el brillo:

for (int r=0; r<256; r++) { 
  mapLEDXY(3,3,r,0,0); mapLEDXY(3,4,r,0,0); 
  mapLEDXY(4,3,r,0,0); mapLEDXY(4,4,r,0,0); 
  RGB_update(-1,0,0,0); delay(50); 
} 
for (int r=255; r>=0; r--) { 
  mapLEDXY(3,3,r,0,0); mapLEDXY(3,4,r,0,0); 
  mapLEDXY(4,3,r,0,0); mapLEDXY(4,4,r,0,0); 
  RGB_update(-1,0,0,0); delay(50); 
}

El cuadrado se desvanece hacia arriba y abajo automáticamente.

Proyecto 6 – Borde desvaneciente

Combina bucles for con una variable compartida g para desvanecer un borde circundante:

for (int g=0; g<256; g++) { 
  b=g; 
  mapLEDXY(...); // celdas del borde 
  RGB_update(-1,0,0,0); delay(50); 
} 
for (int g=255; g>=0; g--) { 
  b=g; 
  mapLEDXY(...); // celdas del borde 
  RGB_update(-1,0,0,0); delay(50); 
}

Aquí el canal azul sigue al verde para crear un desvanecimiento suave.

Proyecto 7 – Transición de color

Usa una sentencia if para cambiar celdas del borde central de verde a amarillo al superar un umbral:

for (int r=0; r<256; r++) { 
  g=r; 
  if (g>64) { g=65; l=r; } 
  mapLEDXY(...); // celdas 
  RGB_update(-1,0,0,0); delay(50); 
}

Experimenta con distintos umbrales para efectos variados.

Proyecto 8 – Flecha en movimiento

Genera una flecha en movimiento parametrizando la coordenada X:

for (int x=0; x<8; x++) { 
  mapLEDXY((x+0)%8,3,0,255,255); 
  mapLEDXY((x+1)%8,1,255,128,128); 
  mapLEDXY((x+1)%8,3,0,255,255); 
  mapLEDXY((x+1)%8,5,255,128,128); 
  mapLEDXY((x+2)%8,2,255,128,128); 
  mapLEDXY((x+2)%8,3,0,255,255); 
  mapLEDXY((x+2)%8,4,255,128,128); 
  mapLEDXY((x+3)%8,3,255,128,128); 
  RGB_update(-1,0,0,0); delay(100); 
}

Usa la función Wrap Map en la hoja de cálculo para manejar desbordamiento de coordenadas.

Uso de matriz 16×16

Todos los conceptos anteriores se transfieren directamente a una matriz 16×16. Reemplaza LED_Arduino.ino con LED_Arduino16.ino y cambia a la hoja Sixteen en el libro. El único ajuste necesario es la definición numberOfLEDs y el cálculo RGBlocation en mapLEDXY().

Extensiones y consejos

Aunque esta guía se centra en arrays 8×8 y 16×16, la misma metodología aplica a otros tamaños (ej. 8×32). Para cada nuevo tamaño, actualiza la constante numberOfLEDs y modifica el cálculo de índice para coincidir con el patrón de cableado de la matriz. Mantén el libro en modo solo lectura para evitar pérdida accidental de código personalizado. Considera usar una placa más pequeña, como Arduino Nano, si el consumo es una preocupación.

Proceso de manufactura

  1. Panel de control para Flight Simulator 2020 con Arduino Nano: Pantallas LCD y CDI
  2. Panel de interruptores y LEDs para Microsoft Flight Simulator 2020 con Arduino
  3. Construye y programa animaciones en matrices WS2812 RGB 8x8 y 16x16 con Arduino y Excel
  4. Robot "Vete" – Kit Inicial Arduino Fácil para Niños
  5. Ahorra Pines en Arduino: Conecta Teclado 4x3 con Solo 3 Conexiones Analógicas
  6. Las 3 principales tendencias de fabricación digital que moldearán 2020
  7. Top 3 Estrategias para PYMEs para Expandirse Internacionalmente con Éxito
  8. Tres lecciones esenciales que los minoristas deben aprender ante un año de disrupciones
  9. Top 3 consejos esenciales para mantenimiento y seguridad de equipos industriales
  10. Guía esencial: 3 estrategias probadas para comprar equipos industriales pesados
  11. Asegurando el IoT global: Tres pasos esenciales