Lámpara Matriz LED con Pistola de Pegamento Caliente – Construye tu Propia Pantalla Colorida
Componentes y suministros
| Tira LED direccionable WS2812 (Digilent) | × | 128 LEDs |
| Arduino Nano R3 | × | 1 |
| Convertidor DC-DC paso abajo 3A (regulador de voltaje) | × | 1 |
| Resistencia 10k ohm | × | 1 |
| Resistencia 330 ohm | × | 1 |
| Condensador 470 µF 10V (perfil bajo) | × | 1 |
| Potenciómetro deslizante 10K lin 45mm (ej. Bourns PTA3043) | × | 1 |
| Pulsador pequeño | × | 1 |
| Interruptor basculante pequeño | × | 1 |
| Conector DC (versión panel) | × | 1 |
| Barra de pegamento 7mm x 100mm | × | 64 |
Herramientas y máquinas necesarias
- Impresora 3D (genérica)
Aplicaciones y servicios en línea
- Arduino IDE
Sobre el proyecto
Esta lámpara se basó en una lámpara similar llamada "Fiber Optic LED Matrix" de jbumstead. Usando OpenSCAD, el objetivo era reemplazar los LED RGB digitales difusos de 12mm del diseño de jbumstead con tiras WS2812B RGB económicas y hacer el contenedor para los LEDs y la electrónica lo más delgado posible, permitiendo el uso de barras de pegamento de 7mm más baratas.
Impresión de la carcasa
La única pieza que requiere soportes es "Hot Glue Matrix - Bottom.stl". Usé altura de capa de 0.2mm y 15% de relleno. Aumentar el tamaño del agujero con una broca de 19/64" después de la impresión facilita la inserción de las barras de pegamento.
Montaje de la sección de la lámpara
- Corta las tiras WS2812B en 16 tiras de 8 LEDs cada una.
- No puedes cablear las tiras directamente en las formas superior o inferior ya que se colocan boca abajo. Pega 8 tiras en una superficie plana con el centro de cada tira a 15mm de la adyacente. Organiza las tiras de modo que cada tira alterna mire en dirección opuesta.
- Asegúrate de que DIN esté en la esquina superior izquierda. Cablea las tiras como se muestra. Usé hilo para wire-wrap pero puedes usar cualquier cable de cobre delgado aislado. Una vez cableado, añade tres cables multi-hilo largos a GND, DIN y +5V. Estos pasarán por un agujero y se unirán con GND, DOUT y +5V de la sección inferior. Pasa los tres cables por el agujero en la forma "Hot Glue Matrix - Holder Top" y coloca cuidadosamente las tiras boca abajo en sus canales respectivos. Las tiras deben quedar planas. Usa cinta de pintor azul para asegurarlas en su lugar.
- Cablea la placa inferior de manera similar. DOUT está en la esquina superior derecha. Añade los tres cables multi-hilo a VCC, DIN y GND antes de colocar las tiras boca abajo en la forma. Estos cables irán al PCB.
- No conectes los cables de la sección superior hasta que todas las barras de pegamento estén en su lugar.
Añadiendo las barras de pegamento
Requiere paciencia. Primero clasifica las barras de pegamento. Las de 7mm de eBay miden ~100mm pero varían un poco. Venían en paquetes de 30, así que tenía 90 barras para encontrar 64 de longitud similar. También aumenté el tamaño del agujero con broca de 19/64" para facilitar el encaje.
Usé una pajita transparente para pasar los tres cables que conectan las tiras superior e inferior. Coloca las barras fila por fila empezando por un extremo. Una vez todas en su lugar, mide la distancia entre la parte superior e inferior en cada esquina. Deben ser EXACTAMENTE iguales. Si no, ajusta la profundidad de las barras. Cuando estés satisfecho, retira las barras de cada esquina y vuelve a colocarlas con una gota de superpegamento (evita pegar los LEDs). Esto hace la estructura robusta.
Conectar las tiras superior e inferior
Levanta cuidadosamente la tira inferior cerca del agujero, recorta los tres cables y suelda en su lugar: +5V a +5V, DIN (superior) a DOUT (inferior), GND a GND.
Fabricación del PCB
Incluí los archivos Eagle si deseas mandar a fabricar la placa comercialmente o hacerla tú mismo como hice yo (método del tóner). También puedes usar una protoboard ya que el esquema es muy simple. Los 4 agujeros de montaje deben taladrarse con broca de 2.5mm y roscarse con macho M3. Usa tornillos M3 de 6mm para fijar la placa.
IMPORTANTE: Ajusta la salida del regulador DC a 5V ANTES de fijarlo a la placa.
Cableado final
Cablea el potenciómetro deslizante, pulsador, interruptor de encendido y conector DC como se muestra en el esquema. Conecta los cables de las tiras LED al PCB.
Software
El software incluido ejecuta una serie de animaciones de prueba. El botón cicla entre las animaciones disponibles. El potenciómetro ajusta la velocidad de las animaciones.
Código
GlueMatrixTest.ino (C/C++)
#include <Adafruit_NeoPixel.h>
#ifdef __AVR__
#include <avr/power.h>
#endif
#include "Button.h"
#define PIN_LED 2
#define PIN_SWITCH 3
#define PIN_POT A0
#define LEDS 128
Adafruit_NeoPixel strip = Adafruit_NeoPixel(LEDS, PIN_LED, NEO_GRB + NEO_KHZ800);
Button mode = Button(PIN_SWITCH);
bool modePressed = false;
// Mapeo físico de LEDs para arrays inferior y superior
const uint8_t botLED[] PROGMEM = {
64,49,48,33,32,17,16,1, 63,50,47,34,31,18,15,2,
62,51,46,35,30,19,14,3, 61,52,45,36,29,20,13,4,
60,53,44,37,28,21,12,5, 59,54,43,38,27,22,11,6,
58,55,42,39,26,23,10,7, 57,56,41,40,25,24,9,8
};
const uint8_t topLED[] PROGMEM = {
65,80,81,96,97,112,113,128, 66,79,82,95,98,111,114,127,
67,78,83,94,99,110,115,126, 68,77,84,93,100,109,116,125,
69,76,85,92,101,108,117,124, 70,75,86,91,102,107,118,123,
71,74,87,90,103,106,119,122, 72,73,88,89,104,105,120,121
};
int red = 128, green = 128, blue = 128;
int pattern = 1;
void setup() {
Serial.begin(115200);
pinMode(PIN_LED, OUTPUT);
pinMode(PIN_SWITCH, INPUT);
pinMode(PIN_POT, INPUT);
strip.begin();
strip.show();
Button::PinChangeSetup(PIN_SWITCH);
}
void loop() {
if (modePressed) {
pattern = (pattern % 8) + 1;
strip.clear();
}
modePressed = false;
switch (pattern) {
case 1: colorWipe(strip.Color(255, 0, 0)); break; // Rojo
case 2: colorWipe(strip.Color(0, 255, 0)); break; // Verde
case 3: colorWipe(strip.Color(0, 0, 255)); break; // Azul
case 4: theaterChase(strip.Color(127, 127, 127)); break; // Blanco
case 5: rainbow(); break;
case 6: rainbowDifference(); break;
case 7: rainbowCycle(); break;
case 8: rainbowCycleDifference(); break;
case 9: theaterChaseRainbow(); break;
}
if (!modePressed) modePressed = mode.Pressed();
}
ISR (PCINT2_vect) {
modePressed = modePressed | (mode.State() == LOW);
}
// Funciones de animación: colorWipe, rainbow, rainbowDifference, rainbowCycle,
// rainbowCycleDifference, theaterChase, theaterChaseRainbow, Wheel
// (código completo en el original)
Button.h y Button.cpp
Biblioteca personalizada para manejo de botones con debounce, repetición e interrupciones por cambio de pin.
Piezas personalizadas y cajas
Archivos STL para impresión 3D: stl_files_vSNeOCJWDn.zip
Esquemáticos
Esquema y PCB en formato Eagle: eagle_files_D8oAM5ngf5.zip
Proceso de manufactura
- Lámparas Halógenas: Tecnología, Historia y Futuro – Perspectiva Experta
- Historia, producción y futuro del pegamento: de adhesivos antiguos a innovaciones modernas
- Salchichas Tipo Hot Dog: Historia, Producción, Nutrición y Tendencias Futuras
- Lámpara de Lava: Historia, Diseño y Secretos de Fabricación
- Globos Aerostáticos: De los Montgolfier al Vuelo Moderno
- Superglue: química, fabricación y control de calidad
- Pantalla LED Matricial Interactiva en Puerta con Sensor PIR - Saludo Navideño Arduino
- Pantalla de 8 LED activada por sonido con Arduino
- Construye un Robot Cuadrúpedo Inteligente con Arduino: Guía Paso a Paso
- Controlar matriz LED 8x8 con Arduino Nano – Sin drivers ni librerías
- Materiales Revolucionarios Impulsan Comunicaciones de Datos LED de Próxima Generación