Construye un impresionante cubo LED 5x5x5 con Arduino Mega
Componentes y suministros
| Componente | Cantidad | Notas |
|---|---|---|
| Arduino Mega 2560 | 1 | |
| LED azul | 125 | |
| Transistor NPN NTE85 | 5 | Para llevar los cátodos de cada capa a tierra |
| Alambre de cobre estañado calibre 22 | 1 | Une las capas y lleva los cátodos a la placa principal |
| Resistencia 180 Ω, 1/4 W | 25 | Para los ánodos de los LED |
| Placa de prototipado 9 cm × 15 cm | 1 | |
| Resistencia 330 Ω, 1/4 W | 5 | Para la prueba de paneles |
| Fuente 9 V para Mega (opcional) | 1 | El cable USB alimenta el cubo; esto es para uso fijo |
Herramientas necesarias
- Soldador (genérico)
- Pistola de silicona caliente (genérica)
- Blue Tack (masilla adhesiva reutilizable) – para sujetar los LED durante el soldado
Aplicaciones y servicios en línea
- Arduino IDE
Sobre el proyecto
Introducción
La mayoría de los aficionados adoran los cubos LED, pero los grandes (8×8×8) requieren mucho trabajo tanto en la construcción como en la programación. Los pequeños (3×3×3 o 4×4×4) son fáciles de montar porque no necesitan registros de desplazamiento ni drivers de lado alto, pero no ofrecen la misma experiencia visual que un cubo grande.
Mi objetivo desde el inicio fue crear un cubo fácil de construir y desarrollar suficiente software atractivo para disfrutar la sensación de un cubo grande sin la tediosa complejidad. Este cubo 5×5×5 se alimenta directamente desde un Arduino Mega sin registros de desplazamiento ni hardware auxiliar, salvo 5 transistores que llevan a tierra los cátodos de los 25 LED de cada capa. ¿Por qué evitar los registros de desplazamiento? Porque su cableado manual es terriblemente complicado; se necesita diseñar y fabricar un PCB para usarlos cómodamente.
He adaptado muchas animaciones que escribí para cubos grandes para que funcionen en este 5×5×5.
NOTA: No soy el primero en proponer un cubo 5×5×5 alimentado por un Mega. MEGA DAS publicó un proyecto similar en 2017. El hardware es casi idéntico; no lo vi hasta que empecé a documentar este proyecto, por lo que mis asignaciones de pines y valores de resistencia difieren. Lo publico principalmente porque tengo amplia experiencia escribiendo software para cubos y espero que mi código anime a más gente a construir uno.
El vídeo muestra una función de onda senoidal donde la amplitud está en el eje Z y el tiempo se representa como distancia horizontal desde el centro. Es un clásico impresionante en cubos grandes y también luce bien en este 5×5×5.
Hardware
El Mega dispone de muchos pines digitales. Usamos 5 para activar los transistores que conectan los cátodos de cada capa a tierra, y 25 más para llevar alto los ánodos de los 25 LED dentro de una capa. Con este enfoque, el Mega incluso podría manejar un cubo 6×6×6. El otro límite es la corriente: 40 mA por pin y 200 mA totales. Los LED azules tienen una caída directa de ~3 V; los transistores de cátodo común añaden ~0,7 V. Con 5 V y resistencias de 180 Ω, cada LED consume 7,2 mA. 25 LED por capa consumen 180 mA si todos están encendidos. Como solo activamos una capa a la vez, cumplimos los límites del Mega, siempre que usemos transistores NPN para llevar los cátodos a tierra. La corriente de base de un transistor añade ~5 mA, manteniendo el total en ~185 mA.
La disposición de pines puede parecer confusa porque mi software usa acceso directo a puertos en lugar de digitalWrite para configurar los ánodos. Esto ahorra mucho tiempo y mantiene los LED encendidos más tiempo. La asignación está organizada para facilitar las referencias a los puertos digitales.
Construcción del cubo
Hay muchas opiniones sobre cómo construir un cubo; la tarea es tediosa sea cual sea el método. Se requiere cuidado y paciencia para un buen resultado. Muestro mi enfoque, pero hay otras guías en línea.
La construcción comienza formando los terminales y soldando los LED en columnas de 5. Luego se unen 5 columnas para formar un panel y finalmente se sueldan 5 paneles para formar el cubo. Los errores pequeños en ángulos y espaciado se acumulan y son visibles. El formado de terminales es crítico: tómate tu tiempo.
Yo formo 25 LED y luego construyo un panel. Necesitas un jig tanto para columnas como para paneles. Uso Blue Tack: los LED se presionan en la masilla y quedan fijos mientras sueldas. Las hendiduras permiten repetir el proceso con el mismo espaciado. Medí 0,6 pulgadas (15,24 mm) entre LED en las tres direcciones, lo que permite insertar el cubo terminado en una placa con agujeros estándar de 0,1 pulgadas.
Nota sobre el soldado de LED: La pesadilla de todo constructor es terminar el cubo y descubrir una soldadura fría en el interior, inaccesible. Verifica cada unión al construir cada columna.
Al terminar cada panel, pruébalo. Incluyo un sketch de prueba: conecta los 5 ánodos verticales a resistencias de 330 Ω y a pines 40–44; conecta los 5 cátodos a pines 22–26. Un panel bueno encenderá todos sus LED. (Aún no usamos transistores, así que la prueba lleva los cátodos a LOW; con transistores será al revés).
Con 5 paneles probados, preparamos la placa principal insertando y conectando todas las resistencias y transistores.
Monta el Arduino en la placa (soportes o un separador plástico). Suelda cada panel a la placa principal verificando que cada columna de ánodo caiga en el agujero correcto; un error de un agujero se notará. Mantén todos los paneles orientados igual (cátodos saliendo por el mismo lado).
Conecta los paneles entre sí en cada capa para unir los 5 cátodos de esa capa. Usa alambre de cobre estañado rectificado.
Lleva los cátodos de cada capa a la placa principal (colector del transistor correspondiente), de nuevo con alambre de cobre estañado rectificado.
Conecta todas las resistencias al Mega y prueba el cubo completo con el sketch de prueba incluido: encenderá cada LED en orden. Como ya probaste los paneles, cualquier fallo ahora probablemente esté en las conexiones de cátodo recientes (una capa o parte de ella). Lo más probable es una soldadura fría.
Software
El estado de cada LED se define en un array global byte cube[5][5][5]: 1 = encendido, 0 = apagado. Todas las animaciones se crean poniendo 1s y 0s en ese array.
El corazón del software es la interrupción temporizada que refresca el cubo. Se inicia en setup() y reside al final del programa. Se llama cada 10 ms y tarda ~6 ms en refrescar, dejando 4 ms para el bucle principal.
Durante el refresco, cada capa se enciende 1,2 ms. Refresco a 100 Hz. Cada LED encendido está activo 120 ms/segundo (ciclo de trabajo 12 %). Los 100 Hz son suficientes para que el ojo lo vea continuo, y el 12 % de ciclo de trabajo da un brillo sorprendentemente cercano al continuo.
Para minimizar el ciclo de refresco y maximizar el tiempo de encendido, evitamos digitalWrite y usamos acceso directo a puertos. En la rutina de interrupción verás 25 líneas separadas de acceso directo a puerto; parece feo, pero es mucho más rápido que un bucle con digitalWrite.
El loop() llama a cada animación en secuencia y vuelve a empezar. Cada animación está en su propia subrutina; algunas llaman a otras. Hay rutinas utilitarias compartidas: clearCube() apaga todo, copyDown() desplaza el contenido de cada capa a la inferior y limpia la superior.
Hay tres sketches descargables: el principal con 15 animaciones (las del vídeo), y dos de prueba (panel y cubo) para usar durante la construcción.
Código
- 5x5x5 Cube Software (Arduino) – Contiene 3 sketches: Panel Test, Cube Test y The Show con las 15 animaciones. Solo descarga (sin vista previa).
Partes personalizadas y cajas (opcional)
Si tienes impresora 3D y quieres la caja que se ve en mis vídeos, aquí está el archivo.
Esquemáticos
Esquema básico con las conexiones exactas entre el cubo y el Mega.
Proceso de manufactura
- Fabricación de Tablas de Planchar: Diseño, Materiales y Proceso Productivo
- El cubo de Rubik: de la invención al rompecabezas moderno
- Placas de Circuito Impreso: Diseño, Fabricación y Tendencias Futuras
- Construcción y Diseño de Tablas de Surf: De Raíces Polinesias a la Innovación Moderna
- Diodos Emisores de Luz (LED): Desde sus Inicios a Vidas de 100 Años
- Placa RasPiRobot Board V2: Convierte tu Raspberry Pi en un Controlador de Robot Potente
- Reloj de Palabras DIY con Arduino: Construye una Pantalla Elegante en Tiempo Real
- Proyecto Arduino Melodía Coffin Dance: Construya y Reproduzca el Viral Tune
- Moderniza tu Hogar: Interruptor Táctil Inteligente con Monitor de Temperatura en Arduino
- Controla un LED por Bluetooth con Arduino – Guía DIY paso a paso
- Calculadora Básica con Arduino UNO - Proyecto Fácil para Principiantes