Jeu Arduino avec écran LCD 1602

Le jeu Arduino Uno avec écran LCD est un projet simple pour les débutants en programmation de microcontrôleurs. Pour le construire, vous aurez besoin d’un écran LCD I2C, un bouton poussoir et un haut-parleur piézoélectrique. Le programme du jeu et le schéma du projet se trouvent ci-dessous sur cette page. Le bouton et le haut-parleur piézo peuvent être assemblés sur une planche à pain ou les modules bouton et piézo peuvent être connectés à l’Arduino.


Ce dont vous aurez besoin

  • Arduino Uno / Arduino Nano / Arduino Mega
  • bouton-poussoir
  • passif ou actif buzzer
  • écran LCD 1602 I2C
  • breadboard et fils de connexion
  • librairie LiquidCrystal_I2C.h

Matériel supplémentaire sur ce sujet:

  1. Jeu Arduino avec LEDs « Répétez la séquence »
  2. Projet Arduino avec boutons « Devinez le chiffre »
  3. Simple jeu de réaction avec Arduino et boutons

Arduino LCD Game « Dinosaur »

Au lieu de connecter le bouton-poussoir de l’horloge à l’Arduino via une résistance sur la planche à pain, vous pouvez utiliser un module avec un bouton-poussoir. Le haut-parleur buzzer Arduino pour les effets sonores du jeu est connecté à la carte si vous le souhaitez, mais vous pouvez également vous en passer. Assemblez le circuit comme dans l’image et téléchargez le programme suivant. La vitesse du jeu peut être modifiée dans le code.

Construction d’un Jeu Arduino « Dinosaur »

Jeu Arduino Dinosaur sur Arduino avec LCD
Jeu Arduino Dinosaur sur Arduino avec LCD
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

Programme pour jeu Arduino avec LCD 1602

#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;
}

Explication du code pour jeu Arduino LCD 1602:

  1. variable int pause = 400; définit la vitesse initiale des obstacles à l’écran (vous pouvez définir votre propre valeur);
  2. après avoir passé chaque niveau, la vitesse du jeu est augmentée en réduisant le temps de retard de 20 millisecondes pause = pause – 20;.

Conclusion. L’essence du jeu « Dinosaur » est très simple. L’écran LCD 1602 I2C indique le niveau du jeu et le personnage principal, qui doit esquiver les obstacles. Un arbre, une pierre ou un oiseau apparaît au hasard sur l’écran et le dinosaure doit sauter par-dessus. Pour contrôler le Dinosaur T-Rex Google, le bouton-poussoir est connecté à la carte Arduino Uno / Nano. A chaque niveau, la vitesse des obstacles sur l’écran LCD avec I2C augmente.





7 Replies to “Jeu Arduino avec afficheur LCD 1602 i2c”

  1. I like the valuable information you provide in your articles.

    I’ll bookmark your blog and check again
    here frequently. I’m quite certain I’ll learn many new
    stuff right here! Best of luck for the next!

  2. Bonjour,

    J’ai effectué une petite correction dans le programme car le port A1 est analogique.

    if (analogRead(A0) == LOW) { d = 1; }
    if (analogRead(A0) == HIGH) { d = 0; }
    if (p > 2) d = 1;

    1. Tous les ports analogiques peuvent être rendus numériques, et ils peuvent également être utilisés pour activer les LED. Dans ce cas, il est préférable de ne pas utiliser la commande analogRead, car la broche A1 est utilisée comme entrée numérique.

    1. Régler le contraste à l’aide de la résistance variable sur l’afficheur

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. Découvrez comment les données de vos commentaires sont traitées.