Hallo,
ich muss ein Spiel bauen bei dem Leds anfangs in einer bestimmten reihe aufleuchten und man diese dann mit den drucktasten in der selben Reihenfolge betätigen muss. Mein Problem liegt dabei, dass ich nicht weiß wie das Programm erkennen kann ob die gedrückte reihenfolge richtig ist oder nicht. Ich habe versucht if schleifen zu benutzen doch wenn ich mehrere if schleifen ineinander benutze dann kommt das Problem auf, dass die Drucktasten gleichzeitig gedrückt werden müssen. Das habe ich bis jetzt:
#include <LiquidCrystal_I2C.h>
#include <Wire.h>
LiquidCrystal_I2C lcd(0x27,16,2);
int a;
int e;
int b;
int c;
int d;
int x;
void setup() {
lcd.init();
lcd.backlight();
pinMode(8,INPUT_PULLUP);
pinMode(7,INPUT_PULLUP);
pinMode(6,INPUT_PULLUP);
pinMode(5,INPUT_PULLUP);
pinMode(4,INPUT_PULLUP);
Serial.begin(9600);
pinMode(13,OUTPUT);
pinMode(12,OUTPUT);
pinMode(11,OUTPUT);
pinMode(10,OUTPUT);
pinMode(9,OUTPUT);
digitalWrite(9, HIGH);
delay(500);
digitalWrite(9, LOW);
delay(500);
digitalWrite(10, HIGH);
delay(500);
digitalWrite(10, LOW);
delay(500);
digitalWrite(9, HIGH);
delay(500);
digitalWrite(9, LOW);
delay(500);
digitalWrite(13, HIGH);
delay(500);
digitalWrite(13, LOW);
delay(500);
digitalWrite(10, HIGH);
delay(500);
digitalWrite(10, LOW);
delay(500);
digitalWrite(10, HIGH);
delay(500);
digitalWrite(10, LOW);
delay(500);
digitalWrite(11, HIGH);
delay(500);
digitalWrite(11, LOW);
delay(500);
digitalWrite(10, HIGH);
delay(500);
digitalWrite(10, LOW);
delay(500);
digitalWrite(12, HIGH);
delay(500);
digitalWrite(12, LOW);
delay(1000);
}
void loop() {
a=digitalRead(4);
b=digitalRead(5);
c=digitalRead(6);
d=digitalRead(7);
e=digitalRead(8);
while(digitalRead(8)==1&&digitalRead(7)==1&&digitalRead(6)==1&&digitalRead(5)==1&&digitalRead(4)==1){
}
if(e==0){
digitalWrite(9,HIGH);
delay(500);
digitalWrite(9,LOW);
lcd.print("richtig");
delay(1000);
lcd.clear();
while(digitalRead(8)==1&&digitalRead(7)==1&&digitalRead(6)==1&&digitalRead(5)==1&&digitalRead(4)==1){
}
if(a==0){
digitalWrite(13,HIGH);
delay(500);
digitalWrite(13,LOW);
lcd.print("Falsch gemacht");
delay(1000);
lcd.clear();
}
if(b==0){
digitalWrite(12,HIGH);
delay(500);
digitalWrite(12,LOW);
lcd.print("Falsch gemacht");
delay(1000);
lcd.clear();
}
if(c==0){
digitalWrite(11,HIGH);
delay(500);
digitalWrite(11,LOW);
lcd.print("Falsch gemacht");
delay(1000);
lcd.clear();
}
}
if(d==0){
digitalWrite(10,HIGH);
delay(500);
digitalWrite(10,LOW);
if(e==0){
digitalWrite(9,HIGH);
delay(500);
if(a==0){
digitalWrite(13,HIGH);
delay(500);
if(d==0){
digitalWrite(10,HIGH);
delay(500);
if(d==0){
digitalWrite(10,HIGH);
delay(500);
if(c==0){
digitalWrite(11,HIGH);
delay(500);
if(d==0){
digitalWrite(10,HIGH);
delay(500);
if(b==0){
digitalWrite(12,HIGH);
delay(500);
lcd.print("Richtig gemacht");
delay(1000);
lcd.clear();
}
}
}
}
}
}
}
}
}
ich wäre sehr dankbar um Hilfe!
ps: bin erst anfänger Vorformatierter Text