Juego Arduino LCD 1602

El juego Arduino Uno con pantalla LCD es un proyecto sencillo para principiantes en la programación de microcontroladores. Para construirlo, necesitarás una pantalla LCD I2C, un botón pulsador y un altavoz piezoeléctrico. El programa del juego y el diagrama del proyecto se encuentran en esta página. El botón y el altavoz piezoeléctrico se pueden montar en una protoboard o se pueden conectar los módulos de botón y piezoeléctrico.

Para esta actividad necesitaremos:

  • Arduino Uno / Arduino Nano / Arduino Mega
  • pulsador;
  • zumbador (buzzer);
  • placa de pruebas;
  • cables de conexion;
  • libreria LiquidCrystal_I2C.h

Juego Arduino LCD 1602 «Dino Game»

En lugar de conectar el pulsador del reloj al Arduino Uno / Arduino Nano mediante una resistencia en la protoboard, puedes utilizar un módulo con pulsador. El altavoz Arduino para los efectos de sonido del juego está conectado a la placa si lo deseas, pero también puedes prescindir de él. Monta el circuito como en la imagen de arriba y descarga el siguiente código. La velocidad del juego se puede cambiar en el programa.

Creación de un juego con Arduino LCD 1602

Juego Dinosaur en Arduino con LCD 1602
Juego Dinosaur en Arduino con LCD 1602
LCD 1602 i2c Arduino Uno Arduino Nano Arduino Mega
GND GND GND GND
VCC 5V 5V 5V
SDA A4 A4 20
SCL A5 A5 21

Programa Arduino juego con LCD 1602 i2c

#include "Wire.h"
#include "LiquidCrystal_I2C.h"
LiquidCrystal_I2C LCD(0x27, 20, 2);

int level = 1;
int pause = 400;
byte p = 0;

byte dragon[8] = {
 0b01110, 0b11011, 0b11111, 0b11100, 0b11111, 0b01100, 0b10010, 0b11011
};
byte arbre[8] = {
 0b00000, 0b00000, 0b00000, 0b11011, 0b11011, 0b11011, 0b01100, 0b01100
};
byte pierre[8] = {
 0b00000, 0b00000, 0b00000, 0b00000, 0b00000, 0b00000, 0b01110, 0b11111
};
byte oiseau[8] = {
 0b00100, 0b00101, 0b01111, 0b11111, 0b10100, 0b00100, 0b00000, 0b00000
};

void setup() {
 pinMode (10, OUTPUT);
 pinMode (A1, INPUT);
 analogWrite(A1, LOW);
 LCD.init();
 LCD.backlight();

 LCD.createChar(0, dragon);
 LCD.createChar(1, arbre);
 LCD.createChar(2, pierre);
 LCD.createChar(3, oiseau);

 LCD.setCursor(7, 0);
 LCD.print("GO!");
 delay(400);
 tone(10, 600);
 delay(100);
 noTone(10);
 LCD.clear();
}

void loop() {
  byte d = 1;
  byte x = 15;
  byte y = 1;

  byte i = random (1, 4);
  if (i == 3) y = 0;
  else y = 1;

  while (x > 0) {
    LCD.clear();
    LCD.setCursor(0, 0);
    LCD.print(level);

    if (digitalRead(A1) == LOW) d = 1;
    if (digitalRead(A1) == HIGH) d = 0;
    if (p > 3) d = 1;

    LCD.setCursor(4, d);
    LCD.print(char(0));
    LCD.setCursor(x, y);
    tone(10, 50);
    LCD.print(char(i));
    noTone(10);

    if (x == 4 && y == d) {
      delay(400);
      tone(10, 50);
      delay(100);
      noTone(10);
      delay(100);
      tone(10, 20);
      delay(300);
      noTone(10);
      LCD.clear();
      delay(200);
      LCD.setCursor(3, 0);
      LCD.print("GAME OVER!");
      delay(600);
      LCD.clear();
      delay(400);
      LCD.setCursor(3, 0);
      LCD.print("GAME OVER!");
      delay(600);
      LCD.clear();
      LCD.setCursor(3, 1);
      LCD.print("LEVEL: ");
      LCD.print(level);
      delay(400);
      LCD.setCursor(3, 0);
      LCD.print("GAME OVER!");
      delay(3000);
      LCD.clear();

      LCD.setCursor(7, 0);
      LCD.print("GO!");
      delay(400);
      tone(10, 600);
      delay(100);
      noTone(10);
      LCD.clear();

      level = 0;
      pause = 400;
      p = 0;
      y = 1;
      x = 0;
      break;
    }

    if (d == 0) { tone(10, 200); delay(100); noTone(10); }
    else { delay(100); }

    delay(pause);
    x = x - 1;
    p = p + 1;
    if (p > 4) p = 0; 
 }

  tone(10, 800);
  delay(20);
  level = level + 1;
  pause = pause - 20;
  if (pause < 0) pause = 0;
}

Explicación del código juego LCD 1602:

  1. variable int pause = 400; define la velocidad inicial de los obstáculos en la pantalla (puedes definir tu propio valor);
  2. después de pasar cada nivel, la velocidad del juego se incrementa reduciendo el tiempo de retardo en 20 milisegundos pausa = pausa – 20;

Conclusión. La esencia del juego «Dinosaurio» es muy simple. La pantalla LCD 1602 I2C muestra el nivel del juego y el personaje principal, que tiene que esquivar los obstáculos. Un árbol, una piedra o un pájaro aparecen aleatoriamente en la pantalla y el dinosaurio tiene que saltar sobre ellos. Para controlar el Dinosaurio, el pulsador del reloj se conecta a la Arduino. En cada nivel, la velocidad de los obstáculos en la pantalla LCD con I2C aumenta.


4 Replies to “Arduino Juego «Dino Game» con pantalla LCD 1602”

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *