Active Buzzer Duel
Code:
// Boutons Joueurs | |
int buttonApin = 8; | |
int buttonBpin = 9; | |
int buzzer = 10;//the pin of the active buzzer | |
int nbLoop = 0; // N° de la loop actuelle | |
int stopAtLoop = 0; // N° de la loop de fin | |
int stopGame = 0; // Fin du jeu | |
void setup() { | |
// Initialisation des boutons | |
pinMode(buttonApin, INPUT_PULLUP); | |
pinMode(buttonBpin, INPUT_PULLUP); | |
pinMode(buzzer,OUTPUT);//initialize the buzzer pin as an output | |
// Randomiser le numéro de la loop de fin | |
randomSeed(analogRead(0)); | |
stopAtLoop = random(50, 100); | |
// Initialiser l'output sur le moniteur série | |
Serial.begin(9600); | |
} | |
void loop() { | |
// Jeu terminé, appuyer sur reset pour redémarrer! | |
if(stopGame == 1) | |
return; | |
// Dernière loop atteinte | |
if(nbLoop == stopAtLoop) { | |
// Attendre le vainqueur | |
if(digitalRead(buttonApin) == LOW) { | |
Serial.println("Joueur 1 a gagné !"); | |
stopGame = 1; | |
return; | |
} | |
if(digitalRead(buttonBpin) == LOW) { | |
Serial.println("Joueur 2 a gagné !"); | |
stopGame = 1; | |
return; | |
} | |
} else { // Lancer le buzzer | |
digitalWrite(buzzer,HIGH); | |
delay(1);//wait for 1ms | |
digitalWrite(buzzer,LOW); | |
// Incrémenter compteur de loop | |
nbLoop++; | |
// delay 100 ms | |
for(int j=0; j< 10; j++) { | |
// Arrêter le jeu si qq appuie sur un bouton | |
if(digitalRead(buttonApin) == LOW) { | |
Serial.println("Joueur 1 a perdu"); | |
stopGame = 1; | |
return; | |
} else if(digitalRead(buttonBpin) == LOW) { | |
Serial.println("Joueur 2 a perdu"); | |
stopGame = 1; | |
return; | |
} | |
delay(10); | |
} | |
} | |
} |
Les montages ont été faits en utilisant le Starter Kit du Débutant d'Elegoo, acheté sur Amazon.
Cet article a été mis à jour le 18/02/2018