Le jeu de mémoire ultime
Placé surLes boutons
Pour contrôler les boutons, nous devons ajouter un morceau de code similaire au morceau de code des LED. La plus grande différence est que nous travaillons maintenant avec des boutons au lieu de LED.
aantal = aantal+1;
}
if (buttonCheck == 5){ // <----- vanaf hier
aantal = 1;
while (aantal < lengte){
buttonState1 = digitalRead(BUTTON_PIN1); // <-updaten van de pinstatus
buttonState2 = digitalRead(BUTTON_PIN2);
buttonState3 = digitalRead(BUTTON_PIN3);
if(buttonState1 == LOW){
digitalWrite(LED_PIN1, HIGH);
aantal = aantal + 1;
delay(500);
else if(buttonState2 == LOW){
digitalWrite(LED_PIN2, HIGH);
aantal = aantal + 1;
delay(500);
}
else if(buttonState3 == LOW){
digitalWrite(LED_PIN3, HIGH);
aantal = aantal + 1;
delay(500);
}
else{
digitalWrite(LED_PIN1, LOW);
digitalWrite(LED_PIN2, LOW);
digitalWrite(LED_PIN3, LOW);
}
}
} // <------ tot hier
digitalWrite(LED_PIN1, HIGH);
digitalWrite(LED_PIN2, HIGH);
digitalWrite(LED_PIN3, HIGH);
Cliquez suricipour voir ce que nous avons vu jusqu'à présent
Pour vérifier si le bouton droit a été enfoncé, j'ai utilisé le code ci-dessous :
xxxxxxxxxx
12
if(buttonState1 == LOW){
digitalWrite(LED_PIN1, HIGH);
delay(250);
buttonState = 1;
if (1 == volgorde[aantal+1]){
aantal = aantal+1;
}
else{
aantal = lengte + 1;
start = 1;
}
}
notation
Bien sûr, nous voulons voir nos points si nous sommes perdus. Ce code affiche les points au moyen d'un clignotement de la LED.
xxxxxxxxxx
17
aantal = 1;
}
if (start = 1){
aantal = 0;
while (aantal < lengte){
digitalWrite(LED_PIN1, HIGH);
delay(500);
digitalWrite(LED_PIN1, LOW);
delay(500);
aantal = aantal +1;
}
}
}
}
le code total :
x
const int BUTTON_PIN1 = 2;
const int BUTTON_PIN2 = 3;
const int BUTTON_PIN3 = 4;
const int LED_PIN1 = 5;
const int LED_PIN2 = 6;
const int LED_PIN3 = 7;
long randNumber; //<--
int buttonState1 = 0;
int buttonState2 = 0;
int buttonState3 = 0;
int start = 0;
int volgorde[] = {};
int lengte = 1;
int aantal = 1;
int buttonCheck = 5;
int buttonState = 0;
void setup() {
randomSeed(analogRead(0)); //<--
pinMode(LED_PIN1, OUTPUT);
pinMode(LED_PIN2, OUTPUT);
pinMode(LED_PIN3, OUTPUT);
pinMode(BUTTON_PIN1, INPUT_PULLUP);
pinMode(BUTTON_PIN2, INPUT_PULLUP);
pinMode(BUTTON_PIN3, INPUT_PULLUP);
}
void loop() {
buttonState1 = digitalRead(BUTTON_PIN1);
if (buttonState1 == LOW) {
digitalWrite(LED_PIN1, HIGH);
delay(1000);
digitalWrite(LED_PIN2, HIGH);
delay(1000);
digitalWrite(LED_PIN3, HIGH);
delay(1000);
digitalWrite(LED_PIN1, LOW);
digitalWrite(LED_PIN2, LOW);
digitalWrite(LED_PIN3, LOW);
aantal = 1;
while(start == 0){
volgorde[lengte] = random(0,4);
while (aantal < lengte){
if (volgorde[aantal] == 1){
digitalWrite(LED_PIN1, HIGH);
delay(500);
digitalWrite(LED_PIN1, LOW);
delay(500);
}
else if (volgorde[aantal] == 2){
digitalWrite(LED_PIN2, HIGH);
delay(500);
digitalWrite(LED_PIN2, LOW);
delay(500);
}
else{
digitalWrite(LED_PIN3, HIGH);
delay(500);
digitalWrite(LED_PIN3, LOW);
delay(500);
}
aantal = aantal+1;
}
aantal = 1;
if (buttonCheck == 5){
while (aantal < lengte){
buttonState1 = digitalRead(BUTTON_PIN1);
buttonState2 = digitalRead(BUTTON_PIN2);
buttonState3 = digitalRead(BUTTON_PIN3);
if(buttonState1 == LOW){
digitalWrite(LED_PIN1, HIGH);
delay(250);
buttonState = 1;
if (1 != volgorde[aantal+1]){
aantal = aantal+1;
}
else{
aantal = lengte + 1;
start = 1;
}
}
else if(buttonState2 == LOW){
digitalWrite(LED_PIN2, HIGH);
delay(250);
buttonState = 2;
if (2 != volgorde[aantal+1]){
aantal = aantal + 1;
}
else{
aantal = lengte + 1;
start = 1;
}
}
else if(buttonState3 == LOW){
digitalWrite(LED_PIN3, HIGH);
delay(250);
buttonState = 3;
if (3 != volgorde[aantal+1]){
aantal = aantal + 1;
}
else{
aantal = lengte + 1;
start = 1;
}
}
else{
digitalWrite(LED_PIN1, LOW);
digitalWrite(LED_PIN2, LOW);
digitalWrite(LED_PIN3, LOW);
}
}
}
digitalWrite(LED_PIN1, HIGH);
digitalWrite(LED_PIN2, HIGH);
digitalWrite(LED_PIN3, HIGH);
delay(1000);
digitalWrite(LED_PIN1, LOW);
digitalWrite(LED_PIN2, LOW);
digitalWrite(LED_PIN3, LOW);
delay(1000);
lengte = lengte + 1;
aantal = 1;
}
if (start = 1){
aantal = 0;
while (aantal < lengte){
digitalWrite(LED_PIN1, HIGH);
delay(500);
digitalWrite(LED_PIN1, LOW);
delay(500);
aantal = aantal +1;
}
}
}
}