Tabla de contenido:

Juego Arduino Space Rocks: 3 pasos
Juego Arduino Space Rocks: 3 pasos

Video: Juego Arduino Space Rocks: 3 pasos

Video: Juego Arduino Space Rocks: 3 pasos
Video: “ABANDONO la MODIFICACIÓN y DEJO PASO a los JÓVENES” dice BLACK ALIEN 2024, Mes de julio
Anonim
Juego Arduino Space Rocks
Juego Arduino Space Rocks

Ya sea que se jueguen en una computadora, en un teléfono, en una consola de juegos o en una caja independiente, muchos videojuegos incluyen un elemento para evitar obstáculos. Claro, puede haber puntos otorgados por recolectar fichas o encontrar su camino a través de un laberinto, pero tenga la seguridad de que probablemente haya algo en el juego cuyo único propósito sea evitar que lo haga. El primer videojuego fue Pong, pero después los juegos más populares fueron cosas como "Asteroids" o "Pac-Man". Una variación más reciente sería el simple pero adictivo juego de "Flappy Birds".

Recientemente vi que alguien había hecho una versión simple de dos niveles de “Flappy Bird” que se reproducía en una pantalla LCD 1602 común. Pensé que sería algo que les gustaría a los nietos, así que decidí hacer mi propia variación desde cero. La versión 1602 solo tiene dos niveles, así que decidí usar una pantalla LCD 2004 (20x4) en su lugar para aumentar ligeramente la dificultad del juego. También opté por hacerlo más parecido a "Asteroides" haciendo que el jugador guiara una "nave" a través de un laberinto de "rocas espaciales". Incluso si no está interesado en crear el juego, es posible que haya algunos elementos del software que pueda utilizar en uno de sus propios proyectos.

Paso 1: hardware

Hardware
Hardware
Hardware
Hardware
Hardware
Hardware

El hardware puede basarse en prácticamente cualquier versión de Arduino. Hice el prototipo usando un Nano y luego quemé el código en un chip ATMega328. Ese es el mismo chip que se usa en el Nano, pero usarlo por sí solo permite una construcción más compacta y menos consumo de energía. Como puede ver, construí el circuito en una pequeña placa que se acopla al módulo LCD. El otro aspecto que es diferente es que el Nano funciona a 16 MHz usando un cristal externo, pero yo elegí usar el oscilador integrado de 8 MHz para el chip ATMega328. Eso ahorra piezas y energía.

La pantalla LCD de 2004 se conecta al Arduino de la misma manera que una pantalla LCD 1602. Una diferencia interesante está en el direccionamiento de las ubicaciones de visualización. Obviamente hay una diferencia porque hay cuatro líneas en lugar de dos pero, en el 2004, la tercera línea es una extensión de la primera línea y la cuarta línea es una extensión de la segunda línea. En otras palabras, si tuviera un programa de prueba que acaba de enviar una cadena de caracteres a la pantalla LCD, el carácter 21 aparecería al comienzo de la tercera línea y el carácter 41 volvería al comienzo de la primera línea. Utilizo esa característica en el software para duplicar efectivamente la longitud del laberinto.

Decidí hacer que mi versión funcionara con batería, así que utilicé una batería común de iones de litio 18650 de 3,6 voltios. Eso requirió que agregara una placa pequeña para permitir la recarga USB y otra placa pequeña para aumentar el voltaje de la batería a 5 voltios para la pantalla LCD y el chip ATMega. Las imágenes muestran los módulos que utilicé, pero también hay módulos todo en uno que hacen ambas funciones.

Paso 2: software

El software es el mismo para el chip Nano y ATMega328. La única diferencia está en el método de programación. Utilizo mi propia versión básica del software 1602 LCD y el software LCD en este proyecto se basa en eso. Necesitaba agregar capacidades para abordar las líneas adicionales de la pantalla de 2004 y también agregué rutinas para cambiar la pantalla. El cambio de pantalla proporciona el efecto de movimiento de las "rocas" más allá del "barco".

Como se mencionó anteriormente, las líneas 1 y 3 forman una cola circular y las líneas 2 y 4 también lo hacen. Eso significa que después de 20 turnos, las líneas 1 y 3 se intercambian y las líneas 2 y 4 se intercambian. Después de 40 turnos, las líneas vuelven a sus posiciones originales. Debido a este comportamiento, el laberinto original de 20 caracteres se vuelve completamente diferente cuando las líneas se intercambian. Eso hizo que la vida fuera interesante cuando intenté formar un laberinto. Finalmente abrí una hoja de cálculo de Excel para poder trazar el camino sin tener que cambiar constantemente el software. El software proporcionado aquí tiene dos versiones del laberinto (una está comentada) para que pueda elegir cuál desea o crear la suya propia.

Originalmente quería que esto fuera lo suficientemente simple como para que los nietos jóvenes pudieran jugarlo, pero también quería que tuviera un desafío adicional si ellos (o alguien más) se volvían demasiado buenos en eso. El juego comienza con la tasa de cambio establecida en 1 segundo. La frecuencia de tic interna es de 50 ms, lo que significa que hay 20 intervalos durante los cuales se pueden presionar los botones arriba / abajo. En realidad, un botón presionado consume 2 tics porque se usa un intervalo de 50 ms para detectar la presión y otro intervalo de 50 ms para esperar el lanzamiento. Con el laberinto predeterminado, el número máximo de pulsaciones necesarias antes del siguiente turno es de tres. La forma más sencilla de aumentar la dificultad del juego es acortar el tiempo entre turnos para que un par de líneas de código hagan exactamente eso a medida que aumenta la puntuación. La velocidad de cambio está configurada para acelerar 50 ms cada 20 turnos, con la velocidad mínima limitada a 500 ms. Es fácil cambiar estos parámetros.

Aparte de alterar la tasa de cambio, la lógica principal del software es mover la "nave" y determinar si la "nave" ha chocado con una "roca". Estas funciones aprovechan la matriz definida "roca / espacio" y también la matriz que define las ubicaciones de memoria en la pantalla. El recuento de cambios corresponde a la longitud de la línea de la pantalla LCD (0-19) y se utiliza como índice en estas matrices. La lógica es algo complicada por el hecho de que las líneas se intercambian cada 20 turnos. Se utiliza una lógica similar para determinar la posición del "barco", que puede estar en cualquiera de las cuatro líneas.

La puntuación de cada juego es simplemente el recuento del número de turnos que se produjeron y la puntuación más alta se guarda en el EEROM interno del microcontrolador. La biblioteca EEPROM se utiliza para realizar las lecturas y escrituras en esta memoria. Las rutinas disponibles permiten lecturas / escrituras de un solo byte y lecturas / escrituras de valores de coma flotante. Se almacena un valor de 0xA5 en la primera ubicación EEROM para indicar que se ha guardado una puntuación alta. Si ese valor está presente en el encendido, entonces se lee y se muestra el valor de punto flotante para la puntuación más alta. Si el valor 0xA5 no está presente, entonces se llama a una rutina para inicializar la puntuación alta a un valor de 1. Se llama a esa misma rutina si se desea restablecer la puntuación alta. La puntuación más alta se vuelve a establecer en un valor de 1 manteniendo presionado uno de los botones arriba / abajo y luego presionando momentáneamente el botón de reinicio.

Paso 3: jugar el juego

Jugando el juego
Jugando el juego
Jugando el juego
Jugando el juego

Cuando se aplica energía, se muestra la puntuación más alta actual. Una vez que se muestra la puntuación más alta, se muestran el laberinto de "rocas" y el "barco" y el juego comienza unos segundos más tarde. Cuando el "barco" golpea una "roca", el mensaje "CRASH AND BURN" parpadea varias veces antes de mostrar la puntuación del juego. Si se obtiene una nueva puntuación alta, también se muestra ese mensaje. Se inicia un nuevo juego presionando el botón de reinicio.

Recomendado: