98 lines
1.7 KiB
C++
98 lines
1.7 KiB
C++
|
|
|
|
#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
|
|
}
|