Fablab ado > defi vitesse - arduino

par Antoine

C’est la reprise ;-)

commençons par un petit jeu !

Objectif :
Qui sera le plus rapide ? voici un petit jeu qui se joue à 2.
Lorsque la LED rouge du milieu s’allume : les joueurs doivent appuyer le plus vite possible sur leur bouton. La LED bleue du joueur qui a été le plus rapide à appuyer s’allume alors.
Un joueur gagne s’il a atteint le nombre de 5 victoires (LED bleue allumée 5 fois).

Un message est envoyé via le moniteur série pour dire qui a gagné.

Matériel nécessaire :
1 LED rouge
2 LED Bleues
5 résistances de 220ohm
2 boutons poussoir
des câbles
1 arduino

Voici le montage :

JPEG - 92.7 ko
montage_defi_vitesse_2
JPEG - 85.6 ko
montage_defi_vitesse_1

et voici le code :

// defi vitesse PLMCB

int ledm=10; //Led du Milieu
int ledd=8; // Led de Droide
int ledg=12; // Led de Gauche
int victd=0; // compteur victoire joueur de droite
int victg=0; // compteur victoire joueur de gauche

void setup()
{
 Serial.begin(9600);
 pinMode(ledm, OUTPUT);
 pinMode(ledd, OUTPUT);
 pinMode(ledg, OUTPUT);
 pinMode(2, INPUT);
 pinMode(3, INPUT);
}

void loop()
{
 Serial.println("**** ETES VOUS PRETS ? *****");
 
 digitalWrite(ledm, LOW);    // set the LED off
 digitalWrite(ledd, LOW);    // set the LED off
 digitalWrite(ledg, LOW);    // set the LED off
 
 int t = random(1,9); // mode aleatoire
 delay(t*500);     // delai d'attente entre 1 x 500ms et 9 x 500ms
 
 digitalWrite(ledm, HIGH);   // allumer la led du milieu

 int s1 = 0; //signal droite
 int s2 = 0; //signal gauche
 while (!s1 && !s2)
 {
 s1=digitalRead(2);  
 s2=digitalRead(3);  
 }

 if(s1 && !s2) // s1 avant (droit)
 {
   digitalWrite(ledd, HIGH);   // set the LED on
   digitalWrite(ledg, LOW);   // set the LED off
   victd++;  // le joueur de droite a appuyer avant le joueur de gauche, on incremente le nbre de victoire
 }
 else if(!s1 && s2) //s2 avant (gauche)
 {
   digitalWrite(ledd, LOW);   // set the LED off
   digitalWrite(ledg, HIGH);   // set the LED on
   victg++;
 }
 else
 {
   // s1=s2
   digitalWrite(ledd, HIGH);   // set the LED on
   digitalWrite(ledg, HIGH);   // set the LED on
 }
 delay(200);              // wait
 
if (victd==5)
{
 Serial.println("joueur de droite gagne");
 Serial.print("Joueur Droite");
 Serial.println(victd);
 Serial.print("Joueur Gauche");
 Serial.println(victg);
 victd=0;
 victg=0;
}
if (victg==5)
{
 Serial.println("joueur de gauche gagne");
 Serial.print("Joueur Droite");
 Serial.println(victd);
 Serial.print("Joueur Gauche");
 Serial.println(victg);
 victd=0;
 victg=0;
}
}

Pour ouvrir le moniteur série : outils / ouvrir le moniteur série dans le logiciel arduino :

JPEG - 71.1 ko
programme_defi_vitesse

A vous de jouer !

Source : les wikidébrouillards, rubrique jeu de réflexes.