Crea Secuencias de Luz Impactantes con Arduino y Registro de Desplazamiento
Componentes y materiales
- 1× Arduino UNO
- 2× Protoboard (genérica)
- 55× Cables jumper (genéricos)
- 1× Registro de desplazamiento 74HC595
- 4× Pulsadores
- 1× Potenciómetro rotativo (genérico)
- 8× LED (genéricos)
- 9× Resistencia 220 Ω
- 4× Resistencia 10 kΩ
Herramientas necesarias
- Manos
Aplicaciones y servicios online
- Arduino IDE
Sobre el proyecto
Este proyecto combina un registro de desplazamiento 74HC595 y una pantalla LCD para crear un secuenciador de luces programable mediante botones, sin necesidad de modificar el código cada vez. Permite diseñar animaciones fotograma a fotograma, ajustar la velocidad de reproducción y el número de bucles.
Funcionamiento de los botones
Cuatro pulsadores (numerados 1 a 4 de izquierda a derecha) controlan la interfaz:
- Botón 1: Incrementa valores / enciende un LED (HIGH).
- Botón 2: Decrementa valores / apaga un LED (LOW).
- Botón 3: Retrocede el cursor al editar un fotograma.
- Botón 4: Funciona como botón «Atrás» para salir de menús.
Menús principales
- 1 – Reproducir: Ejecuta la animación guardada.
- 2 – Crear: Editor fotograma a fotograma (hasta
ARR_SIZEfotogramas). - 3 – Velocidad: Ajusta el retardo entre fotogramas (ms).
- 4 – Bucles: Define cuántas veces se repite la animación.
El número de fotogramas se configura cambiando la constante ARR_SIZE al inicio del código. La pantalla LCD de 16×2 muestra menús, número de fotograma, patrón de bits y valores de velocidad/bucles.
Código
El sketch completo utiliza la librería LiquidCrystal.h y controla el 74HC595 mediante shiftOut() personalizada. Incluye máquinas de estados para navegación de menús, edición de fotogramas (array booleano ArrOne[ARR_SIZE][8]), conversión a bytes para el registro, y funciones de reproducción con temporización no bloqueante.
#include <LiquidCrystal.h>
#define ARR_SIZE 16
#define LIGHTS 8
const int btn1=7, btn2=8, btn3=9, btn4=10;
const int latchPin=11, clockPin=13, dataPin=12;
const int rs=15, en=14, d4=3, d5=4, d6=5, d7=6;
LiquidCrystal lcd(rs,en,d4,d5,d6,d7);
// ... resto del código (ver original)
Esquemático
Consulte la imagen del esquemático para el cableado detallado. El registro 74HC595 se conecta a los pines 11 (latch), 13 (clock) y 12 (data). Los 8 LEDs con resistencias de 220 Ω salen de Q0–Q7. Los botones usan resistencias pull-down de 10 kΩ a GND. El potenciómetro no se usa en el código final. La LCD usa pines 15,14,3,4,5,6 (RS, E, D4–D7).
Proceso de manufactura
- Detector de idiomas TinyML con Edge Impulse en Arduino Nano 33 BLE Sense
- Construye un Juego Giroscópico en Tiempo Real con Arduino Nano y Sensor MPU-6050
- Proyecto Dados Digitales Arduino: Construye tu Propio Generador de Números Aleatorios con LCD
- Construye tu Propio Juego de Ruleta de 37 LEDs con Arduino Nano
- ATtiny85 Mini Arcade: Snake – Construye una Consola Portátil OLED
- Detector de Rango Portátil – Kit DIY Arduino Nano con HC-SR04, Batería 18650 y Carcasa Impresa en 3D
- Construir una lámpara de escritorio reactiva al audio con Arduino Nano
- Coche Robot Seguidor de Rostros Autónomo con Arduino Nano y OpenCV
- Proyecto de electroplacado de cobre: Construye un sistema inteligente con Arduino UNO
- Pong Neón en Matriz NeoPixel con Arduino Nano
- Sistema Pick-to-Light WiFi con Arduino MKR1000 - Proyecto 2