Para crear diferentes proyectos y para conocer los circuitos, la plataforma Arduino es la opción viable para los principiantes, ya que proporciona una amplia gama de opciones de hardware y software a sus usuarios. Para el software, se utiliza principalmente Arduino IDE y se utiliza el hardware en su mayoría el Arduino UNO. Usando el Arduino Uno y el Arduino IDE, hemos creado un juego llamado Ardi PAC en el que hemos creado un personaje que esquiva a su enemigo cuando presionamos un botón Push.
Cómo crear un juego en Arduino Uno usando LCD
Para crear un juego, tenemos que crear un circuito que implementaremos en el hardware y antes de eso tenemos que presentar la lista de los componentes necesarios que se requieren para diseñar el circuito:
- Tablero de circuitos
- 1 pantalla de cristal de 16x2liquid
- Conectando cables
- 1 Botón Push
- 1 potenciómetro
- Arduino Uno
La siguiente figura muestra el esquema del circuito diseñado para crear un juego usando Arduino Uno:
Cómo ensamblar el hardware para crear el juego usando Arduino Uno
Para facilitar el ensamblaje de hardware, hemos dado la imagen a continuación que muestran cómo podemos conectar los componentes necesarios para crear el juego Arduino:
Hemos conectado los pasadores de datos LCD a Arduino Uno usando su pin 5,4,3,2 con los cables morados y para el ajuste de brillo de la pantalla LCD hemos conectado el potenciómetro. El cable amarillo conecta la salida del potenciómetro con la pantalla LCD. Para jugar el juego, hemos usado el botón Push que cambiará la posición del personaje conectando su Pin usando Cyan Color Wire al Pin 8 de Arduino y conectando a tierra el otro PIN.
Para conectar la pantalla LCD, el potenciómetro y el botón Push With Supply, hemos tomado el suministro de Arduino Uno usando los pasadores de paneles.
Cómo escribir el código Arduino para crear un juego usando Arduino Uno
Hemos proporcionado debajo del código Arduino para hacer un juego de evitación de obstáculos usando Arduino Uno:
#Include / * DeCarling LCD la biblioteca * /
LiquidCrystal LCD (12, 11, 5, 4, 3, 2);/* Asignando los pines de Arduino a LCD*/
int button = 8;/*Asignación del pin Arduino para el botón Push*/
/*Variables para almacenar tiempo para mover al enemigo y el personaje*/
sin firmar largo a;
sin firmar largo B;
sin firmar largo C;
sin firmar largo D;
int demora = 500; / * Definición de la velocidad del enemigo */
int disminución = 20; / * para disminuir la velocidad del enemigo */
int state2 = 0;/ * variable que almacenará el valor del botón PUSH cuando se presiona al comienzo del juego */
int state1 = 0;/* variable para almacenar el valor del botón presionado para mover el lugar de carácter*/
Bool Pac = 0;/* variable que guardará el valor para el carácter para detectar la colisión con el enemigo*/
int i;/* variable que se usa para mover al enemigo a la LCD*/
intuntos int = 0;/ * variable para almacenar los puntos logrados el jugador */
/*Declarando los binarios para enemigo y personaje*/
byte enemigo [8] =
B00000,
B00100,
B01110,
B11111,
B10101,
B11111,
B11111,
B10101
;
byte Pac1 [8] =
B00000,
B01110,
B11011,
B11110,
B11100,
B11110,
B11111,
B01110
;
byte Pac2 [8] =
B00000,
B01110,
B11011,
B11111,
B11111,
B11111,
B11111,
B01110
;
setup () void
PinMode (botón, input_pullup); // Asigna el modo de trabajo al botón Push */
lcd.BEGIN (16, 2);/* Declarando el tamaño de la pantalla*/
lcd.createChar (7, enemigo); // declarando al enemigo como personaje
lcd.CreateChar (6, Pac1); // declarando el PAC1 como personaje
lcd.createChar (5, Pac2); // declarando el PAC2 como personaje
i = 15;/ * Definición del número de columnas para el enemigo */
/ * ahorrar tiempo en las variables de tiempo declaradas arriba */
a = Millis ();
b = milis ();
c = Millis ();
d = Millis ();
state1 = digitalRead (botón);/ * Lectura del estado del botón presionado por primera vez */
while (state1 == high) / * si no se presiona el botón */
/ * Mostrar el juego y la animación de personajes */
lcd.setCursor (3, 0);
lcd.imprimir ("Ardi-Pac");
lcd.setCursor (3, 1);
lcd.imprimir ("presione inicio");
lcd.setCursor (13, 0);
lcd.escribir (6);
retraso (300);
lcd.setCursor (13, 0);
lcd.escribir (5);
retraso (300);
state1 = digitalRead (botón);/* Lea nuevamente el estado del botón Push*/
if (state1 == low) / * si se presiona, entonces muévase a la sección de bucle */
romper;
retraso (500);
bucle void ()
State2 = digitalread (botón);/ * Verifique el estado del botón */
if ((millis ()-a)> = retraso) /* Comience el movimiento del enemigo en LCD* /
a = Millis ();
lcd.claro();
lcd.setCursor (i, 1);
lcd.escribir (7);
i = i-1;
if (i == -1) /* condición para mover al enemigo a la LCD a partir de 15 y yendo a cero*/
i = 15;
lcd.setCursor (6, 0);
lcd.imprimir ("puntos:");
lcd.imprimir (puntos);/ * Mostrar los puntos logrados por el jugador */
if ((millis ()-b)> = 50)
b = milis ();
if (state2 == Low && Pac == False) / * Mostrando el carácter en LCD leyendo el estado del botón * /
lcd.setCursor (1, 0);/* colocar el carácter en la primera columna y la primera fila cuando se presiona el botón*/
lcd.escribir (6);
Pac = verdadero; / * Actualización de que no hay colisión con enemigo */
b = Millis ();/ * Guardar el tiempo */
else if (pac == true) /* Si todavía no hay colisión, colóquelo en el mismo lugar* /
lcd.setCursor (1, 0);
lcd.escribir (6);
else if (pac == false) /* Mueva el carácter a la segunda fila de la primera columna en LCD*/
lcd.setCursor (1, 0);
lcd.imprimir(" ");
lcd.setCursor (1, 1);
lcd.escribir (6);
if ((millis ()-c)> = 1500 && pac == true) / * Si el botón se presiona nuevamente, mueva el carácter a la primera fila */
c = Millis ();
lcd.setCursor (1, 1);
lcd.escribir (6);
lcd.setCursor (1, 0);
lcd.imprimir(" ");
Pac = falso;
if ((((millis ()-d)> = 1000) && (i == 1)) /* Si el enemigo toma su primera ronda LCD sin ninguna colisión* /
d = Millis ();
if (pac == true)
puntos = puntos+1;/* Se detecta la colisión y luego agregue uno en los puntos*/
if (puntos%5 == 0)
Retraso = retraso-decramedElay;/* Disminución de la velocidad del enemigo*/
Si (demora <= 200) //changed the speed of enemy to 200
Disminución de la disminución = 0; / * No aumente la velocidad del enemigo */
else / * Cuando se produce la colisión, borre el juego LCD y muestra el juego */
lcd.claro();
lcd.setCursor (0, 0);
lcd.Imprimir ("Juego terminado!");
lcd.setCursor (0, 1);
lcd.imprimir ("comenzar de nuevo");
puntos = 0;
i = 15;
Retraso = 500; // Alternar a la velocidad básica
State2 = digitalRead (botón);
while (state2 == high) /* Sigue leyendo el estado del botón cuando el estado es alto*/
State2 = digitalRead (botón); /*Si se presiona el botón y luego comience el juego nuevamente*/
retraso (500);
Hemos creado un juego simple que evita las colisiones con objetos entrantes y para eso hemos declarado los binarios para el enemigo y el personaje. Además, hemos definido la biblioteca para la pantalla utilizada con Arduino Uno.
Para mover al enemigo a la pantalla LCD, hemos usado el bucle for que disminuirá uno en su valor en cada iteración. A continuación para mover la posición del personaje, hemos usado el botón Push de tal manera que cuando se presiona el botón, el personaje se mueve a la primera fila de la pantalla LCD.
Para traer de vuelta el personaje a su lugar original, hemos usado la función Mills (). Hemos ahorrado el tiempo en que el personaje se subió y luego hemos definido el tiempo después del cual el personaje volverá a su posición.
Cuando el lugar del enemigo y el personaje obtengan lo mismo, el juego se detendrá y comenzará de nuevo cuando se presione el botón.
Cómo crear hardware para hacer un juego usando Arduino y LCD
La imagen a continuación es la implementación de hardware de acuerdo con el ensamblaje de hardware descrito anteriormente:
La imagen de arriba es el menú principal del juego, presionando el botón Push comenzará el juego:
Al presionar el botón hará que el personaje salte para evitar enemigos y al chocar con el enemigo se mostrará el siguiente menú:
Para ilustrar cómo funcionará el juego, hemos dado el GIF animado a continuación:
Conclusión
La plataforma Arduino se puede utilizar para crear una variedad de proyectos que pueden ser de gran ayuda para que los principiantes aprendan sobre los circuitos. Hemos creado un juego en el que el jugador tiene que evitar los objetos entrantes. Para mover el jugador, hemos usado el botón Push y también calculamos los puntos igual al número de obstáculos evitados. También hemos proporcionado el código Arduino para crear el juego, así como dada la demostración de hardware.