Dos juegos arcade interactivos para 2 jugadores montados sobre una tira de LEDs direccionables WS2812B (NeoPixel) y controlados por un Arduino Nano, con efectos de sonido con buzzer y selección mediante menú integrado.
El proyecto convierte una tira LED lineal en una consola retro con dos juegos multijugador competitivos:
1. Carreras LED (LED Racing): Cada jugador controla un "auto" representado por un grupo de 3 LEDs (Jugador 1 en Verde, Jugador 2 en Rojo). Al iniciar suena una cuenta regresiva (3, 2, 1, ¡GO!). Cada vez que presionas tu botón, tu auto avanza 1 posición hacia la meta. Cuando recorre toda la tira, completa una vuelta e inicia la siguiente; el marcador de vueltas se ilumina en los extremos de la pista. ¡El primero en completar 3 vueltas gana con una animación y melodía de victoria!
2. Pong / Tenis LED: La pelota (un LED blanco de alta velocidad con estela) va rebotando de un extremo al otro de la tira. Cada jugador tiene una zona de recepción en su extremo (5 LEDs de su color). Debes presionar tu botón exactamente cuando la pelota cruce tu zona: si aciertas, la pelota rebota hacia tu oponente y su velocidad se incrementa un 8%. Si presionas a destiempo o se te pasa, ¡punto para el rival! El primero en llegar a 5 puntos gana el partido.
Menú de selección: Al encender el Arduino, los primeros LEDs parpadean en verde y los últimos en rojo. Presiona el botón verde para Carreras o el botón rojo para Pong. En cualquier momento puedes mantener presionados ambos botones durante 2 segundos para regresar al menú principal.
| Cant. | Componente | Notas |
|---|---|---|
| 1 | Arduino Nano (o Uno) | ATmega328P con cable USB |
| 1 | Tira LED WS2812B (NeoPixel) | 50 a 150 LEDs (ajustable en código) |
| 2 | Botones pulsadores momentáneos | P1 (Verde en Pin D2) y P2 (Rojo en Pin D3) |
| 1 | Resistencia 470Ω (o 330Ω) | En serie en la línea de datos (DIN) para protección |
| 1 | Buzzer pasivo 5V | Pin D8 hacia GND para efectos de sonido |
| 1 | Fuente de alimentación 5V 2A+ | Para alimentar la tira LED de forma externa |
| 1 | Capacitor 1000µF 10V (opcional) | Entre +5V y GND de la tira para estabilizar voltaje |
| — | Cables de conexión / Protoboard | Para interconectar tierras y señales |
Conexiones eléctricas entre el Arduino Nano, los botones con pull-up interno, el buzzer y la tira LED WS2812B. Es indispensable unir todas las tierras (GND) para tener una referencia eléctrica común.
| Pin Arduino | Conexión | Tipo / Notas |
|---|---|---|
| Pin D2 | Botón Jugador 1 (Verde) | Entrada digital con INPUT_PULLUP hacia GND |
| Pin D3 | Botón Jugador 2 (Rojo) | Entrada digital con INPUT_PULLUP hacia GND |
| Pin D6 | Línea de datos (DIN) tira WS2812B | Salida digital (con resistencia 470Ω en serie) |
| Pin D8 | Terminal (+) Buzzer Pasivo | Salida digital PWM / tono hacia GND |
| GND | Tierra común de todo el circuito | Unir GND Arduino + GND Fuente 5V + GND Tira + Botones |
| 5V Externa | Línea de alimentación +5V tira LED | Alimentar directo desde fuente 5V 2A+ (no del Arduino) |
Requiere instalar la librería FastLED en el IDE de Arduino (Herramientas → Administrar bibliotecas). El código permite configurar la cantidad de LEDs de tu tira modificando la constante NUM_LEDS.
// --- Configuración básica de Hardware ---
#include <FastLED.h>
#define NUM_LEDS 50 // Cambia según la cantidad de LEDs de tu tira
#define LED_PIN 6 // Pin digital conectado a DIN (con resistencia 470Ω)
#define COLOR_ORDER GRB // Orden de color típico en tiras WS2812B
#define LED_TYPE WS2812B
#define BRIGHTNESS 80 // Brillo general (0-255)
#define BTN_P1 2 // Botón Jugador 1 (Verde - Pin D2 a GND)
#define BTN_P2 3 // Botón Jugador 2 (Rojo - Pin D3 a GND)
#define BUZZER_PIN 8 // Buzzer pasivo (Pin D8 a GND)
#define MAX_LAPS 3 // Vueltas para ganar la carrera
#define CAR_SIZE 3 // LEDs de largo por cada carro
INPUT_PULLUP).Documentación técnica, librerías y guías para complementar el armado del proyecto:
¿Te gustó este juego de Carreras y Pong LED o estás armando uno para jugar con amigos? Si aprecias el trabajo de programación, diseño del circuito y código libre que comparto, ¡un café es una excelente forma de respaldar el canal para seguir creando más proyectos!