Tabla de contenido:

Consola Arduino VGA con cinco juegos: 4 pasos
Consola Arduino VGA con cinco juegos: 4 pasos

Video: Consola Arduino VGA con cinco juegos: 4 pasos

Video: Consola Arduino VGA con cinco juegos: 4 pasos
Video: Consola Retro Con ATtiny85 y Arduino | Multiples Juegos 2024, Noviembre
Anonim
Image
Image
Consola Arduino VGA con cinco juegos
Consola Arduino VGA con cinco juegos
Consola Arduino VGA con cinco juegos
Consola Arduino VGA con cinco juegos

En mis Instructables anteriores, he reproducido versiones simplificadas de algunos de los juegos de arcade clásicos más populares, mediante un Arduino desnudo y algunos otros componentes. Más tarde uní cinco de ellos en un solo boceto. Aquí mostraré cómo puedes construir una consola simple que pueda jugar Pong, Breakout, Bomber, Tetris y un juguete de dibujo inspirado en Etch-a-Sketch. Esta consola se puede utilizar también para jugar a Snake, y dos juegos más escritos por otros autores: Bit Ninja de Sandro Maffiodo alias "Smaffer" y Stacker de Nikita Kurylev.

La característica principal es la generación de una señal VGA, gracias a la biblioteca VGAx, por lo que la consola necesita un monitor VGA. Mi objetivo, como de costumbre, es evitar cualquier "componente especial" para construirlo, ¡no necesitas ningún IC de apoyo o escudos! Los únicos componentes son dos potenciómetros, cinco botones, pocas resistencias y un conector DSUB15 (VGA). Un altavoz piezoeléctrico es opcional. Puedes ver cómo se ven estos juegos en las imágenes de esta página.

La biblioteca VGAx permite usar cuatro colores con una resolución de 120 x 60 píxeles, no muchos pero suficientes para esta consola de juegos retro. El gráfico es crudo pero, gracias al uso de los potenciómetros, los juegos se ejecutan sin problemas. También hay disponibles efectos de sonido simples.

Paso 1: Cómo construir su propia consola Arduino VGA

Cómo construir su propia consola Arduino VGA
Cómo construir su propia consola Arduino VGA
Cómo construir su propia consola Arduino VGA
Cómo construir su propia consola Arduino VGA

Primero descargue los códigos ArduinoVGAgame.ino y / o Snake.ino en la parte inferior de esta página y cópielos en su PC en un directorio con el mismo nombre. Descargue la biblioteca VGAx desde este enlace en GitHub. La forma más sencilla es copiarlo en la subcarpeta del software Arduino llamada "bibliotecas", para que se reconozca de inmediato.

IMPORTANTE: esta biblioteca funciona para Arduno IDE 1.6.4 pero no es totalmente compatible con versiones anteriores o posteriores.

Sube el código en tu placa Arduino (probé tanto Uno como Nano). Una advertencia de poca memoria disponible es normal. Si no tiene otros errores, todo está bien y puede comenzar inmediatamente a construir su propia consola.

Para esto necesitas:

  • un Arduino Uno Rev.3 o Arduino Nano 3.x (ATmega328)
  • un conector DSUB15, es decir, un conector VGA hembra o un cable VGA a cortar.
  • resistencias: 2 x 68 Ohm y 2 x 470 Ohm y 5 x 1 a 2 kOhm
  • dos potenciómetros lineales de 10 kOhmios (valores similares también están bien)
  • cinco botones
  • algún trozo de cable
  • una o dos bonitas cajas para poner todos los componentes.

Facultativo:

  • una placa de pruebas o una tabla de tiras
  • un altavoz piezoeléctrico

El esquema se muestra en la parte superior de este paso, junto con un ejemplo de una "consola" terminada.

el esquema muestra cómo conectar un botón y un potenciómetro. Más específicamente, debe conectar cinco botones a los pines 5, 10, 11, 12 y 13 respectivamente. La acción realizada por cada botón se describe en la tabla superior derecha del esquema. A la izquierda se muestra cómo conectar un potenciómetro (necesita dos potenciómetros a los pines A1 y A2). El altavoz debe estar conectado al pin analógico A0.

Coloqué la placa Arduino con el conector VGA en una caja de madera, que contiene también el potenciómetro del primer jugador y cuatro botones, mientras que el potenciómetro del segundo jugador y su botón de inicio están en una caja separada y más pequeña.

Si te gusta este juguete y decides reproducirlo, te agradecería que escribas un comentario o envíes una imagen en la sección de comentarios a continuación.

Paso 2: juegos de otros autores

Sandro Maffiodo ha publicado recientemente el juego BitNinja. Youn puede encontrar más información aquí y descargar el código aquí.

Para usar mi consola, solo tiene que reasignar el botón en su código de la siguiente manera:

#define BTN_UP 11 (en lugar de 13)

#define BTN_LEFT 10 (en lugar de 12)

#define BTN_RIGHT 12 (en lugar de 11)

Stacker, de Nikita Kurylev, está disponible aquí. Más información aquí.

Nuevamente, debe reasignar un botón, en una parte diferente del código: simplemente reemplace digitalRead (2) con digitalRead (13)

Paso 3: Apéndice 1: Más detalles sobre cómo construir los controladores

Apéndice 1: Más detalles sobre cómo construir los controladores
Apéndice 1: Más detalles sobre cómo construir los controladores
Apéndice 1: Más detalles sobre cómo construir los controladores
Apéndice 1: Más detalles sobre cómo construir los controladores
Apéndice 1: Más detalles sobre cómo construir los controladores
Apéndice 1: Más detalles sobre cómo construir los controladores
Apéndice 1: Más detalles sobre cómo construir los controladores
Apéndice 1: Más detalles sobre cómo construir los controladores

Puede realizar el controlador de muchas formas diferentes, según el material disponible y su gusto.

Me gusta realizarlos con cajas de madera (ver las imágenes en esta página). Una caja principal para el Arduino, el conector VGA y los botones y potenciómetro del primer reproductor; un segundo (más pequeño) solo para el botón y la rueda del segundo jugador (necesario para Pong y el juguete de dibujo). Otra posibilidad es poner todo en una sola caja más grande.

Primero recomiendo conectar el puerto VGA. En la primera y segunda imágenes puede ver algunos detalles: observe las dos resistencias de 470 Ohm para Rojo y Verde conectadas a los pines 6 y 7 respectivamente, y dos de 68 Ohm a los pines 3 y 9 para señal de sincronización horizontal y vertical.

Puede elegir diferentes combinaciones de colores dependiendo de los pines que conecte en el conector VGA DSUB15, los pines 1, 2 y 3 representan rojo, verde, azul (RGB) respectivamente. Conecté los pines 1 y 2, por lo que tengo la siguiente combinación de colores: (0, 0) = negro; (1, 0) = rojo; (0, 1) = verde; (1, 1) = amarillo.

Para todas las diferentes posibilidades, sugiero leer los detalles en la página donde descarga las bibliotecas VGAx.

Tan pronto como el conector VGA esté listo, puede preparar todos los demás cables para los botones, las ruedas y el altavoz (ver imagen 2).

Ahora simplemente ponga todo junto: recuerde que cada pin de botón debe estar conectado a tierra a través de una resistencia de 1 o 2 kOhmios, de lo contrario, cuando el botón está abierto, el estado del pin puede no estar definido. Esto significa que si el pin se deja desconectado, puede tener un voltaje aleatorio (estático) que puede activarlo. Para obtener más detalles, consulte el esquema en el segundo paso de este instructable.

El último paso es arreglar todo en su lugar. Usé la pistola de pegamento caliente, pero puedes usar tu método preferido.

Paso 4: Apéndice 2: Algunas consideraciones sobre los límites de memoria

Es sorprendente que un Arduino simple sea capaz de generar una señal VGA y todos estos juegos juntos. El verdadero cuello de botella es la falta de SRAM. El microcontrolador AVR tiene solo 2048 bytes disponibles para almacenar y manipular las variables, y la biblioteca VGAx almacena las variables de pantalla en un framebuffer de 120x60 píxeles donde cada píxel necesita 2 bits (4 colores), para un total de 1800 bytes. Esto significa que solo quedan 248 bytes para las variables de croquis. Además, en mi experiencia, se deben dejar al menos 100 bytes libres para evitar inestabilidades. Usando más de 1950 bytes de memoria dinámica, el microcontrolador comienza a mostrar un comportamiento extraño e impredecible.

Esto significa que todas las variables deben compartirse entre los diferentes juegos, y esto hace que el código sea bastante ilegible y difícil de depurar. No se trata solo de "agregar un nuevo juego" al boceto anterior, sino que todo el código debe modificarse y optimizarse profundamente.

Además, tuve que usar el formato de variable mínimo posible: por ejemplo, para todas las coordenadas tuve que usar "byte" en lugar de "int" o, en otros casos, tuve que preferir "int" en lugar de "float".

Finalmente, mi reconocimiento es para Sandro Maffiodo, también conocido como Smaffer, el creador de la biblioteca VGAx y el increíble juego BitNinja. Sin esta biblioteca, este proyecto no podría haberse realizado.

Gracias también a Nikita Kurylev por el sencillo pero divertido juego Stacker.

Recomendado: