2 Jeux de Réflexe

Description :

Jeux de réflexe avec 30 niveaux disponibles.

Le but et de stopper la lumière rouge dans la zone jaune à l’aide du bouton.

Plus les niveaux augment plus la vitesse augmente et la zone jaune diminue.

Jeux de réflexe avec 30 niveaux disponibles.

 

 

    Prérequis :

Matériel :

  • 1 x Carte Arduino Uno
  • 1 x Bouton
  • 1 x Anneau 24 Leds NeoPixel
  • 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);

#define PIN 6 //Définit la sortie D1 de l'anneau sur le Pin 6
#define NUMPIXELS 24 //Définit le nombre de Led sur l'anneau
#include <Adafruit_NeoPixel.h> //Appelle bibliothèque Neopixel
Adafruit_NeoPixel pixels(NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800);

int Bt1 = 5; // La broche numérique 5 est reliée au bouton 1. On lui donne le nom Bt1.
bool EtatBt1;
int PosLedRed;
int PrevPosLedRed = NUMPIXELS;
int PosLedJaune[3];
int Etape;
int Niveau;
int Vitesse = 200;
unsigned long currentTime = 0;
unsigned long previousTime = 0;

void setup() {
Serial.begin(9600); //Défini la vitesse du moniteur série
pixels.begin(); //INITIALIZE NeoPixel strip object
lcd.init();
lcd.backlight();
pinMode(Bt1, INPUT_PULLUP);
pixels.clear();
pixels.show();
}

void loop() {
int Nbrandom = random(1, NUMPIXELS - 2);
currentTime = millis();
switch (Etape) {
case 0:
lcd.setCursor(0, 0); lcd.print("- Jeux de reflexe -");
lcd.setCursor(0, 2); lcd.print(" Bouton pour jouer ");
EtatBt1 = digitalRead(Bt1);
while (EtatBt1 == HIGH) {
EtatBt1 = digitalRead(Bt1);
}
Etape++;
break;

case 1:
lcd.clear();
lcd.setCursor(0, 0); lcd.print(" Quand la led rouge ");
lcd.setCursor(0, 1); lcd.print(" et dans le jaune ");
lcd.setCursor(0, 2); lcd.print(" Press Bouton ");
pixels.clear();
pixels.show();
delay(3000);
Etape++;
break;

case 2:
lcd.clear();
lcd.setCursor(0, 0); lcd.print("Niveau: ");
lcd.setCursor(8, 0); lcd.print(Niveau);
lcd.setCursor(0, 1); lcd.print(" --- GO --- ");
lcd.setCursor(0, 2); lcd.print(" Press Bouton ");
PosLedJaune[0] = Nbrandom;
PosLedJaune[1] = PosLedJaune[0] - 1;
PosLedJaune[2] = PosLedJaune[0] + 1;
previousTime = millis();
Etape++;
break;

case 3:
if ((currentTime - previousTime) > Vitesse) {
previousTime = currentTime;
PosLedRed++;
PrevPosLedRed++;
if (PosLedRed > NUMPIXELS - 1) {
PosLedRed = 0;
}
if (PrevPosLedRed > NUMPIXELS - 1) {
PrevPosLedRed = 0;
}
pixels.setPixelColor(PrevPosLedRed, pixels.Color(0 , 0, 0));
pixels.setPixelColor(PosLedJaune[0], pixels.Color(100 , 100, 0));
if (Niveau < 11) {

pixels.setPixelColor(PosLedJaune[2], pixels.Color(100 , 100, 0));
}
if (Niveau < 21) {
pixels.setPixelColor(PosLedJaune[1], pixels.Color(100 , 100, 0));
}
pixels.setPixelColor(PosLedRed, pixels.Color(255 , 0, 0));
pixels.show();
}
EtatBt1 = digitalRead(Bt1);
if (EtatBt1 == LOW) {
if ((PosLedRed == PosLedJaune[0] || PosLedRed == PosLedJaune[1] || PosLedRed == PosLedJaune[2]) && Niveau < 11) {
Etape = 5;
}
else if ((PosLedRed == PosLedJaune[0] || PosLedRed == PosLedJaune[1]) && Niveau < 21) {
Etape = 5;
}
else if ((PosLedRed == PosLedJaune[0]) && Niveau < 31) {
Etape = 5;
}
else {
Etape = 4;
}
if (Niveau == 30) {
Etape = 6;
}
}
break;
case 4:
lcd.setCursor(0, 1); lcd.print(" ");
lcd.setCursor(0, 2); lcd.print(" !! Perdu !! ");
delay(1500);
lcd.setCursor(0, 2); lcd.print(" Bt1 pour rejouer ");
EtatBt1 = digitalRead(Bt1);
while (EtatBt1 == HIGH) {
EtatBt1 = digitalRead(Bt1);
}
while (EtatBt1 == LOW) {
Niveau = 0;
Vitesse = 200;
Etape = 1;
EtatBt1 = digitalRead(Bt1);
}
break;
case 5:
lcd.setCursor(0, 1); lcd.print(" ");
lcd.setCursor(0, 2); lcd.print(" ** Gagner ** ");
Etape = 2;
Niveau++;
if (Niveau == 11 || Niveau == 21) {
Vitesse = 200;
}
Vitesse = Vitesse - 16;
Serial.println(Niveau);
Serial.println(Vitesse);
delay(1500);
pixels.clear();
pixels.show();
break;
case 6:
lcd.setCursor(0, 1); lcd.print(" ");
lcd.setCursor(0, 2); lcd.print(" !! Big Winner !! ");
delay(1500);
lcd.setCursor(0, 2); lcd.print(" Bt1 pour rejouer ");
EtatBt1 = digitalRead(Bt1);
while (EtatBt1 == HIGH) {
EtatBt1 = digitalRead(Bt1);
}
while (EtatBt1 == LOW) {
Niveau = 0;
Vitesse = 200;
Etape = 1;
EtatBt1 = digitalRead(Bt1);
}
break;
}
}

 


 

Laisser un commentaire