#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C LCD = LiquidCrystal_I2C(0x27, 20, 4);
int buttonPin = 23;
int ledPinGreen = 5;
int ledPinRed = 4;
int x = 0; // Reaktionszeit in Millisekunden
unsigned long startTime;
bool buttonPressed = false;
void setup() {
LCD.init();
LCD.backlight();
LCD.setCursor(1, 0);
LCD.println("--Reaktions Test--");
LCD.setCursor(1, 1);
LCD.println("------------------");
LCD.setCursor(1, 2);
LCD.println("Druecken wenn LED");
LCD.setCursor(1, 3);
LCD.println("gruen ist.");
pinMode(ledPinGreen, OUTPUT);
pinMode(ledPinRed, OUTPUT);
pinMode(buttonPin, INPUT);
}
void loop() {
digitalWrite(ledPinRed, HIGH);
delay(random(2000, 7000));
digitalWrite(ledPinRed, LOW);
digitalWrite(ledPinGreen, HIGH);
startTime = millis(); // Startzeit aufzeichnen
buttonPressed = false;
while (!buttonPressed) {
if (digitalRead(buttonPin) == HIGH) {
x = millis() - startTime; // Reaktionszeit berechnen
buttonPressed = true;
digitalWrite(ledPinGreen, LOW);
}
}
LCD.clear();
LCD.setCursor(1, 0);
LCD.println("Reaktionszeit: ");
LCD.setCursor(1, 1);
LCD.print(x);
LCD.setCursor(1, 2);
LCD.print("Millisekunden.");
delay(3000);
digitalWrite(ledPinRed, HIGH);
delay(2000);
digitalWrite(ledPinRed, LOW);
LCD.clear();
LCD.setCursor(1, 1);
LCD.println("------------------");
LCD.setCursor(1, 2);
LCD.println("Naechster Versuch");
LCD.setCursor(1, 3);
LCD.println("------------------");
}