Reproductor Portátil de Minijuegos
Sobre el proyecto
Este proyecto ha sido desarrollado por el grupo 8 de la asignatura de Diseño de Sistemas Empotrados, compuesto por los alumnos:
- Diego González García
- Alberto López Gómez
- Lucía Molinero Galán
- Javier Sánchez Serna
Periodo de desarrollo: Primer Cuatrimestre (2021-2022)
Introducción
Si tenéis familiares más pequeños que vosotros (primos, hermanos, etc.), seguro que os habéis encontrado con esta situación más de una vez en la que os pregunta:
¿Tienes juegos?
Tu primo al verte usar un teléfono móvil
Hemos creado una consola de videojuegos que nos permite distraer a este familiar dejándole jugar a dos grandes clásicos:
- Juego Breakout
- Juego Snake
Además, nos proporciona un menú desde el que acceder a estas opciones.
Para llevar a cabo este proyecto fueron necesarios los siguientes componentes:
Componentes utilizados en el proyecto | |
---|---|
Componente | Precio |
Placa Arduino UNO | Proveedor: URJC |
Pantalla TFT LCD 240×320 | 18,99€ |
Pack de componentes para arduino | 14.99€ |
Resistencias | Incluidas en el pack de componentes |
Cables adicionales | Incluidos en el pack de componentes |
Placa protoboard de 64 columnas | Incluida en el pack de componentes |
Botones | Proveedor: URJC |
Cubrebotones | Proveedor: Integrante del grupo |
Batería Externa | |
Piezoeléctrico | Incluido en el pack de componentes |
Montaje Hardware
El montaje consiste en una pantalla TFT interconectada a nuestra placa Arduino a través de una protoboard y cableado, una serie de botones que nos permiten tanto navegar por el menú como manejar a nuestro personaje en las diferentes pestañas de juego.
Además, para darle mayor interés a nuestra consola hemos querido añadir un piezoeléctrico para convertir nuestro proyecto en un dispositivo audiovisual.
Este piezoeléctrico nos permite reproducir sonidos que dan «feedback» al jugador cuando consigue un objetivo (selecciona una opción del menú, rompe un bloque, se come una manzana), o cuando pierde en uno de los juegos (sonido de GAME OVER).
Del mismo modo consideramos que la portabilidad de nuestra consola es uno de sus mayores atractivos, esta cuenta con una batería de 28000 mAh que nos ofrece una autonomía de una gran cantidad de horas, dado que nuestro programa a penas consume batería.
Una vez realizadas las interconexiones decidimos introducirlo en una caja de móvil, con el espacio necesario para la protoboard, la placa Arduino y el resto de componentes (pantalla TFT, botones, piezoeléctrico, cableado).
Posteriormente forramos la caja con cinta aislante para protegerla mejor y darle un acabado más limpio
Realización Software
Por la parte de software dividimos el trabajo realizado en 3 secciones:
Menú principal:
El menú es muy sencillo, se trata de una interfaz que nos permite entrar al juego deseado posicionando nuestro «cursor» sobre la opción que queramos y después pulsar el botón de acción (Botón Rojo) para acceder a este.
Juego Breakout:
El objetivo del juego es romper unos ladrillos de colores con una bola que rebota por la pantalla gracias a una barra que controlas para poder dirigir dicha bola y evitar que se caiga hasta romper todos los ladrillos.
Para programar el juego se hizo una previa investigación de diversos códigos de distintos juegos. Gracias al código obtenido se avanzó en la programación aunque se cambiaron grandes partes del mismo para adecuarlo a nuestro modelo.
El juego comienza una vez seleccionado en el menú previo y permite al jugador dirigir la barra inferior a la derecha y a la izquierda dando uso de sus respectivos botones.
Juego Snake:
Se trata del juego de una serpiente que crece a medida que se alimenta de pequeñas partículas que simulan manzanas y que se van generando aleatoriamente por el terreno de juego.
La programación de este juego no fue completamente a ciegas, se usaron múltiples referencias y repositorios que facilitaron la comprensión y realización de algunas de las lógicas del juego.
El juego en sí permite, mediante el uso de botones, seleccionar una dificultad (que modifica la velocidad a la que se mueve la serpiente) y comenzar a jugar.
En el terreno de juego nos permite movernos en las cuatro direcciones principales (arriba, abajo, izquierda, derecha) y consumir las manzanas incrementando nuestro puntaje.
Cuando la serpiente se choca consigo misma o con uno de los bordes de la pantalla, se llega a un game over que aparece en forma de pop-up, y que nos lleva de nuevo a la pestaña de selección de dificultad además de mostrarnos nuestra puntuación final.
Esquema de interconexión
A continuación se muestra el esquema de interconexión de nuestro proyecto:
Información extra sobre el proyecto
A continuación hemos dejado dos enlaces de interés, una memoria de la realización del proyecto, un video del funcionamiento de nuestra consola donde explicamos parte del código, y un repositorio con el código final del proyecto:
Reproductor Portátil de Minijuegos con Arduino Uno
Repositorio GitHub con el código del proyecto
Agradecimientos
Este trabajo no habría sido posible sin la facilitación de los componentes necesarios por parte de la Universidad Rey Juan Carlos y sin la ayuda de algunos compañeros programadores, a continuación, algunos repositorios de gitHub y otros enlaces que facilitaron la programación de los diferentes apartados del proyecto
Snake para pantalla TFT aprovechando sus funciones táctiles
Breakout para pantalla TFT aprovechando sus funciones táctiles