#define KNOPFA 2 #define KNOPFB 3 #define LEDA 8 #define LEDB 9 #define MAXWAIT 100 #define MUL 100 void setup() { pinMode(KNOPFA, OUTPUT); pinMode(KNOPFB, OUTPUT); pinMode(LEDA, INPUT); pinMode(LEDB, INPUT); Serial.begin(9600); Serial.println("Setupdone"); } void check_end(int stat) { Serial.println("check_end()"); if(stat == 1) { // 1 - A Verloren -> LEDB an digitalWrite(LEDB, HIGH); digitalWrite(LEDA, LOW); } else if(stat == 2) { // 1 - B Verloren -> LEDA an digitalWrite(LEDA, HIGH); digitalWrite(LEDB, LOW); } } void loop() { Serial.println("Start"); //lampen an digitalWrite(LEDA, HIGH); digitalWrite(LEDB, HIGH); delay(5000); //5s warten //lampen aus digitalWrite(LEDA, LOW); digitalWrite(LEDB, LOW); delay(200); int wait = (analogRead(0) + analogRead(1)) % MAXWAIT; if(wait < 1) wait = analogRead(2) % MAXWAIT; wait++; Serial.print("wait: "); Serial.println(wait, DEC); int state = 0; // 0 - running, 1 - A Verloren, 2 - B Verloren //prüfen, das keiner zu früh drückt. for(int i = 0; i < wait; i++) { delay(MUL); if(digitalRead(KNOPFA) == 1) { //A Verloren state = 1; break; } if(analogRead(KNOPFB) == 1) { //B Verloren state = 2; break; } } check_end(state); if(state > 0) { delay(5000); return; } //lampen an Serial.println("GOOO"); digitalWrite(LEDA, HIGH); digitalWrite(LEDB, HIGH); //prüfen wer als erstes drückt while(true) { if(digitalRead(KNOPFA) == 1) { //B Verloren check_end(2); break; } if(digitalRead(KNOPFB) == 1) { //A Verloren check_end(1); break; } } Serial.println("Ende"); delay(5000); //5 sec nichts machen }