• Post category:Mini jeux Arduino
  • Commentaires de la publication :0 commentaire
  • Dernière modification de la publication :mai 15, 2022
  • Temps de lecture :6 min de lecture

1 Jeux de Mémoire

Description :

Jeux de mémoire avec 50 niveaux disponible.

Les schémas à mémoriser sont créés aléatoirement à chaque partie.

À vous de jouer et tester votre mémoire visuelle 

 

 

    Prérequis :

Matériel :

  • 1 x Carte Arduino Uno
  • 5 x Boutons
  • 5 x Leds
  • 5 x Résistances 220Ω
  • 1 x LCD 20×4
  • 1 x Module I2C
  • Fils de connexion
  • 1 x Breadboard

Version IDE :

Bibliothèque :

 

 

Vidéo de démonstration :

 

Schéma de câblage :

 

Code :

#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27, 20, 4);
int Led[5] = {12, 11, 10, 9, 8};
int Bt[5] = {6, 5, 4, 3, 2};
boolean EtatBt[5] = {0, 0, 0, 0, 0};
boolean Perdu;
int TabCombGene [50];
int TabCombJouer [50];
int NbdeCombJouer;
int Niveau;
int Etape;

void setup() {
lcd.init();
lcd.backlight();
for (int i = 0; i <= 4; i++) {
pinMode(Led[i], OUTPUT);
digitalWrite(Led[i], LOW);
pinMode(Bt[i], INPUT_PULLUP);
}
}

void loop() {
int Nbrandom = random(8, 13);
switch (Etape) {
case 0:
lcd.setCursor(0, 0); lcd.print("- Jeux de memoire -");
lcd.setCursor(0, 2); lcd.print(" Bt1 pour jouer ");
EtatBt[0] = digitalRead(Bt[0]);
while (EtatBt[0] == HIGH) {
EtatBt[0] = digitalRead(Bt[0]);
}
Etape++;
break;
case 1:
lcd.clear();
lcd.setCursor(0, 0); lcd.print("Niveau: ");
lcd.setCursor(8, 0); lcd.print(Niveau);
lcd.setCursor(0, 2); lcd.print(" -- Memoriser -- ");
delay(1500);
TabCombGene[Niveau] = Nbrandom;
for (int i = 0; i <= Niveau; i++) {
digitalWrite(TabCombGene[i], HIGH);
delay(200);
digitalWrite(TabCombGene[i], LOW);
delay(400);
}
delay(500);
Etape++;
break;
case 2:
Etape++;
lcd.setCursor(0, 2); lcd.print(" -- Play -- ");
break;
case 3:
for (int i = 0; i <= 4; i++) {
EtatBt[i] = digitalRead(Bt[i]);
if (EtatBt[i] == LOW) {
TabCombJouer[NbdeCombJouer] = Led[i];
digitalWrite(Led[i], HIGH);
while (EtatBt[i] == LOW) {
EtatBt[i] = digitalRead(Bt[i]);
}
delay(50);
digitalWrite(Led[i], LOW);
NbdeCombJouer++;
if (NbdeCombJouer - 1 == Niveau) {
NbdeCombJouer = 0;
Etape++;
break;
}
}
}
delay(10);
break;

case 4:
lcd.setCursor(0, 2); lcd.print(" -- Verification -- ");
delay(1000);
for (int i = 0; i <= Niveau; i++) {
if (TabCombGene[i] != TabCombJouer[i]) {
Perdu = 1;
break;
}
}
if (Perdu == 1) {
Etape = 5;
}
else {
Etape = 6;
}
break;

case 5:
lcd.setCursor(0, 2); lcd.print(" !! Perdu !! ");
delay(1000);
lcd.setCursor(0, 2); lcd.print(" Bt1 pour rejouer ");
EtatBt[0] = digitalRead(Bt[0]);
while (EtatBt[0] == HIGH) {
EtatBt[0] = digitalRead(Bt[0]);
}
while (EtatBt[0] == LOW) {
Niveau = 0;
Etape = 1;
Perdu = 0;
EtatBt[0] = digitalRead(Bt[0]);
}
break;

case 6:
lcd.setCursor(0, 2); lcd.print(" ** Gagner ** ");
Niveau++;
Etape = 1;
delay(1000);
break;
default:
break;
}
}

 


 

Laisser un commentaire