Stap 7 - Reactietijd meten

We zijn er nu echt bijna! De laatste stap is: tellen hoe lang de speler er over doet om op de knop te drukken.

void loop(){
  if(stap == "nieuw") {
    // Kiezen we een random wachttijd tussen 2 en 10 seconden
    wachttijd = millis() + random(2,11) * 1000;

    // Als we dat gedaan hebben, kunnen we gaan wachten.
    stap = "wachten";

  } else if(stap == "wachten") {
    // Zolang we aan het wachten zijn, moet het LEDje branden
    digitalWrite(A3, HIGH);

    // Alleen als de wachttijd verstreken is..
    if(millis() >= wachttijd) {
      // Gaan we naar de volgende stap; tellen.
      stap = "tellen";
    }

  } else if(stap == "tellen") {
    // Vanaf hier mag het LEDje uit en wachten
    // we tot er op de knop wordt gedrukt
    digitalWrite(A3, LOW);

    if(digitalRead(A5) == HIGH) {
      // Er is op de knop gedrukt!

      // bereken de reactietijd en print deze op het scherm
      Serial.print("Jouw reactiesnelheid is ");
      Serial.println(String( millis() - wachttijd ) + "ms");

      // We beginnen direct weer opnieuw ;)
      stap = "nieuw";
    }
  }
}

In de laatste stap tellen gebeuren een aantal dingen. We lopen er eventjes doorheen:

  • In de eerste regel zetten we het LEDje uit. Dit is voor de speler het teken dat er zo snel mogelijk op de knop gedrukt moet worden!

  • Met digitalRead() controleren we of de knop wordt ingedrukt. Als dat zo is, dan trekken we de originele wachttijd af van het aantal milliseconden dat de Marvin al aan staat. Wat over blijft is dan de reactiesnelheid.

  • De volgende regels printen de tekst naar de Serial Monitor en begint het programma weer opnieuw.

results matching ""

    No results matching ""