Projekt: „Reaktionszeittester“

Baue und programmiere ein Reaktionszeitmessgerät: Nachdem eine LED nach einer bestimmten Zeit zufällig (random-Befehl verwenden) aufleuchtet, soll ein Taster gedrückt und die Reaktionszeit zwischen Aufleuchten und Drücken bestimmt werden.

 

  Quelltext

Quelltext

int led = 4;
int taster = 8;
int t =0;
int i; 
int r;

void setup() {
  pinMode(led, OUTPUT);
  pinMode(taster, INPUT);
  Serial.begin(9600);
}

void loop() {
 t =0;
 Serial.println("------");
 Serial.println("Noch ein Spiel? Bitte Taste drücken.");
 Serial.println("------");
  while (t == 0) {
     t = digitalRead(taster);
  }
 Serial.println("OK. Es geht los ....");
 i = random(1000, 3000); 
 t = 0;
 r = 0;
  
 delay(i);
 digitalWrite(led, HIGH);
 while (t == 0) { 
   r = r + 1;
   delay(1);
   t = digitalRead(taster);
  }
  digitalWrite(led, LOW);
  Serial.println(r);
  delay(1000); 
}
  Quelltext mit Kommentaren

Aufgaben

  1. Teste das Programm.
  2. Benenne die Variablen t,i und r sinnvoll.
  3. Kommentiere jede Zeile des Quelltextes.
  4. In welchem Programmabschnitt findet die Zeitmessung statt?
  5. Wozu dient der Befehl while (t == 0) { t = digitalRead(taster); } zu Beginn des loop-Teils.
  6. Welche Bedeutung hätte folgende Zeile: while (digitalRead(taster)==0) {} ?
  7. Erweitere das Programm so, dass die Reaktionszeit mit Kommentar auf dem seriellen Monitor angezeigt wird (z.B. Deine Reaktionszeit war 700 ms).
  8. Bestimme nun in jeweils 20 Einzelversuchen deine Reaktionszeit und berechne den Mittelwert.
  9. Der Arduino soll den Durchschnitt selbst berechnen. Führe dafür geeignete Variablen ein.

Mögliche Erweiterungen

  1. Wer zu früh drückt, soll Strafzeiten erhalten.
  2. Es soll immer ein Durchgang mit 10 Spielen gestartet werden. Danach sollen in einer Liste die erreichten Reaktionszeiten inkl. Durchschnittszeit angezeigt werden.

  3. ein anderes Spiel: die Lampe leuchtet eine bestimmte Zeit(Zufallszahl). Wenn die Lampe erlischt, soll genau die  gleiche Zeit bis zum Drücken des Tasters verstreichen. Die Abweichungen werden aufsummiert.

Quelle

https://sfz-bw.de/wp-content/uploads/2018/04/Arduino-Skript_SFZ_Version_12042018.pdf