int zufallszeit;
long startzeit;
int reaktionszeit;
int zufallsLED;
bool zustandTaste1;
bool zustandTaste2;
bool zustandTaste3;
void setup()
{
pinMode(6, INPUT_PULLUP); // Taste 1
pinMode(7, INPUT_PULLUP); // Taste 2
pinMode(8, INPUT_PULLUP); // Taste 3
pinMode(9, OUTPUT); // LED 1
pinMode(10, OUTPUT); // LED 2
pinMode(11, OUTPUT); // LED 3
randomSeed(analogRead(A1)); // Zufallszahlengenerator
Serial.begin(9600); // Serielle Ausgabe
}
void loop()
{
// mit der mittleren Taste (Taste 2) startet man immer neu
do {
zustandTaste2 = digitalRead(7); // es wird so lange die mittlere Taste abgefragt...
} while (zustandTaste2 == 1); //... bis sie gedrückt wird
// Wenn mittlere Taste gedrückt wurde, geht es los
Serial.println("Los geht's...");
// LED mit zufälliger Zeitverzögerung anschalten
zufallsLED = random(9,12); // eine zufällige LED auswählen
zufallszeit = random(2000,6000); // eine zufällige Verzögerung festlegen
delay(zufallszeit); // zufällig lange warten
digitalWrite(zufallsLED,HIGH); // zufällige LED anschalten
startzeit = millis(); // den Timer starten
// alle gedrückten Tasten wieder zurücksetzen
zustandTaste1 = HIGH;
zustandTaste2 = HIGH;
zustandTaste3 = HIGH;
// Abfrage der Tasten
do {
zustandTaste1 = digitalRead(6);
zustandTaste2 = digitalRead(7);
zustandTaste3 = digitalRead(8);
} while (zustandTaste1 == HIGH && zustandTaste2 == HIGH && zustandTaste3 == HIGH); // es wird so lange abgefragt bis irgendeine Taste gedrückt wird
// Wenn die richtige Taste gedrückt wurde
if ((zustandTaste1 == LOW && zufallsLED == 9) || (zustandTaste2 == LOW && zufallsLED == 10) || (zustandTaste3 == LOW && zufallsLED == 11)){
// Berechnung der Reaktionszeit
reaktionszeit = millis() - startzeit;
// Anzeige der Reaktionszeit
Serial.print("Reaktionszeit: ");
Serial.print(reaktionszeit);
Serial.println(" ms");
}
// Wenn die falsche Taste gedrückt wurde
else{
Serial.println("Falsche Taste");
tone(5,150);
delay(300);
tone(5,80);
delay(300);
noTone(5);
}
// Alle LEDs wieder aus
digitalWrite(9, LOW);
digitalWrite(10, LOW);
digitalWrite(11, LOW);
}