Juego de bloques luminosos controlados por Arduino y pantalla formada por matriz de 16×8 leds WS2812b, con sonido y manejado con un joystick y un pulsador. Con control de volumen e intensidad de la luz y batería recargable.

Material necesario

  • 2 matriz de leds WS2812b 8×8
  • 1 Joystick 2 ejes
  • 1 Pulsador metálico 15mm diámetro
  • 1 Altavoz 8 ohmios de 30mm de diámetro
  • 1 Buzzer
  • Potenciómetro de rueda (Open-Smart)
  • 1 Batería de litio recargable 18650 3,7V
  • Cargador de batería de litio mini USB TP4056
  • 1 conector USB tipo square (opcional para reprogramar)
  • 1 interruptor 15×9 mm
  • 1 módulo de serie UART mp3 (Open- Smart)
  • 1 tarjeta de memoria para los mp3
  • 1 Regulador de voltaje Step Up
  • 1 Arduino Nano

Alimentación

El sistema se alimenta con una batería de litio 18650 que administra 3.7V que sebe ser manejada por un módulo de carga y para ello emplearé el cómodo TP4056 con entrada de carga de USB mini.

Este elemento incorpora un led azul de carga completa que indica la finalización de este proceso. Además el uso del módulo permite el funcionamiento del sistema durante el periodo de carga y con el cable de alimentación conectado en el zócalo USB.

Para suministrar los 5 voltios necesarios para alimentar el microprocesador usaremos un conversor DC Step-Up Booster MT3608, pues los 3,7 voltios de la batería de litio son insuficientes.

En el módulo encontraremos un tornillo regulador que giraremos con un destornillador de precisión hasta alcanzar el valor adecuado. Suministra 2Amperios máximo.

Colocaremos un pequeño interruptor entre el módulo cargador de la batería y el Step-Up (parte positiva) para apagar el artefacto.

Encaje de la pieza interruptor (en segunda revisión se cambiará de ubicación en la parte superior para permitir colocar el dispositivo de pie).

Módulo reproductor MP3

Será necesario para la música de fondo durante el juego y los sonidos de inicio y finalización del mismo.

Son 3 mp3 que deben grabarse en la tarjeta de memoria en el directorio raiz.

Este módulo se alimenta a 5V y lo controlaremos pro software mediante la librería RedMP3.h que incluimos en el zip de descarga. 

Usaremos los pines Rx y Tx para controlarlo y se conectarán a D10 y D11 respectivamente que para actuar como puerto Serial deberemos usar también la librería SoftwareSerial.h del propio IDE de Arduino.

Para acabar se conectará el propio módulo al altavoz correspondiente que en este proyecto hemos empleado uno de pequeñas dimensiones pues no esta necesario una gran potencia de volumen.

Buzzer

El buzzer que colocaremos hará un sonido cada vez que se coloque una pieza del juego o se complete una línea. Este dispositivo se conectará al pin D12 y tierra.

Por otro lado usaremos un potenciómetro de rueda como el de la imagen para variar el nivel de volumen de la música y del buzzer. Así graduará la salida de audio del MP3 y eliminará los servicios del buzzer cuando el volumen esté al mínimo.

Los pies de conexión para este módulo serán 5V, tierra y A3, pues medirá su posición de 0 a 1023 por el pin analógico.

Parte inferior de la caja que contendrá la mayoría de los módulos.

Pantalla

Para la pantalla usaremos dos matrices de 8×8 leds tipo WS2812b que conectaremos en serie y controlaremos con el pin D6 a través de la librería Adafruit_NeoPixel.h que se puede dercargar desde el IDE.

Matriz 8×8

Las matrices de atornillarán a la parte superior de la caja mordiendo a la vez la pieza que actuará de pantalla difusora. Los leds encajan en la cuadrícula destinada para ello.

Piezas distribuidas listas para ensamblaje.

Por último colocar el joystick  conectado al pin A1, A2 y A0 (SW), y el pulsador al  D3.

Para controlar la intensidad de los leds se empleará el pulsador interno del joystick incrementando el nivel en cada pulsación.

Piezas STL

El sistema consta de una carcasa de 3 piezas y algunas otras internas de pequeño tamaño.

Modelo1 de tres piezas V1

Alternativa 2

Se ha modificado el modelo de las piezas de la carcaza para que sean más ergonómicas y se ha simplificado el modelo que ahora consta de solo dos partes. Además permite poner el artefacto en posición vertical para exposición en caso de no usarlo.

También se ha añadido un puerto de programación USB hembra para poder programarlo sin necesidad de acceder físicamente al microcontrolador.

En futuras revisiones se añadirá un Bluetooth para manejarlo inalámbricamente desde el móvil para jugar en modo exposición.

Nuevo modelo 2 piezas V2

Esquema eléctrico

Es posible añadirle un módulo de bluetooth para controlar desde el móvil. Esta actualización no aparece en el esquema siguiente.

Librerías

En el siguiente enlace de descarga puedes obtener las librerías necesarias para el código del juego. Recuerda añadir SoftwareSerial.h del IDE de Arduino.

Código

Comenzamos como siempre incluyendo las librerías que habrás descargado ya. 

Primero definimos los pines UART del módulo MP3 que serán D10 y D11.

Seguidamente describimos los paneles luminosos y sus dimensiones que irán al pin D6. La variable definida como BACKWARDS determina el comportamiento de los leds en el espacio es decir, depende de la forma que hayas colocado las 2 pantallas matriciales. En mi caso será el 2, pero puede darse el caso de 0 y 1.

Debajo definimos el tamaño de los bloques (4×4). y el número de tipos de piezas distintos.

Definimos algunas variables más como calibración del joystick, velocidad del juego y algunos pines más de entrada.

Posteriormente definimos las formas de rotación de las piezas. Las hay de varias formas que se asemejan a las letras siguientes: I, L, J, T, S, Z, O.

Luego definimos el color de las piezas en numeración hexagesimal que puedes cambiar si te apetece con ayuda de esta web.

Añadimos un puñado más de variables globales y comenzamos con los métodos.

En este caso se ha colocado el SETUP en la parte final del código. Aquí tienes el código completo y un poco más abajo puedes descargarlo en *.ino.

Basado en el trabajo de GitHub – MarginallyClever/LED8x16tetris: an 8×16 WS2811 LED tetris game

Proyecto acabado

Feliz Navidad