Files
NWT-projekt/reaktionstesterbase.ino

84 lines
2.6 KiB
Arduino
Raw Normal View History

2026-02-23 10:08:56 +01:00
// Copyright Justus Wolff™℗®©
// Schnell zusammengekleistert vom eigentlichem code den ich (Justus) und Santosh verwenden würden,
// auf Wunsch von Frau Bürgel dass wir einen Grundcode anfertigen sollen.
// Also einfach der Code mit den zeilen für die Highscore funktion auskommentiert.
#include <LiquidCrystal_I2C.h>
#include <Wire.h>
int led = 7; // pin Nummern für jwl. Komponente
int bt = 8;
// long highscore = 999999; // speichert highscore in einer Variable
LiquidCrystal_I2C lcd(0x27,16,2); // LCD deklarieren
void setup() {
// put your setup code here, to run once:
pinMode(led, OUTPUT);
pinMode(bt, INPUT_PULLUP); // pinmodes setzen (selbsterklärend)
randomSeed(analogRead(A1)); // Zufallsgenerator initialisieren
Serial.begin(9600);
Serial.println("Santhosh Justus Reaktionstester debug Information");
lcd.init(); // LCD initialisieren
lcd.clear();
lcd.backlight(); // backlight an machen
}
void loop() {
lcd.setCursor(0, 0);
lcd.print("klicke sobald");
lcd.setCursor(0, 1);
lcd.print("Die LED leuchtet"); // gebrauchsanleitung für tester
int del = random(300, 3000); // Wartezeit für das Leuchten der LED
Serial.println("--------------------------------------"); // extra Informationen im seriellen Monitor
Serial.print("Wartezeit:"); // debug
Serial.println(del); // debug
delay(del); // warten
while (digitalRead(bt)==0) { // warten bis nicht mehr gedrückt
Serial.println("Versuch zu schummeln."); // debug
delay(random(300, 3000)); // zufällige Zeit warten bis zur nächsten Überprüfung
}
long t1 = millis();
digitalWrite(led, HIGH);
while (digitalRead(bt)==1) {} // warten bis gedrückt
t1 = millis()-t1; // berechnen der reaktionszeit
digitalWrite(led, LOW);
Serial.print("Ergebnis: "); // debug
Serial.println(t1); // debug
lcd.clear(); // anzeigen der reaktionszeit
lcd.setCursor(0, 1);
lcd.print(t1);
lcd.print("ms");
lcd.setCursor(0, 0);
lcd.print("Reaktionszeit:");
delay(100);
while (digitalRead(bt)==0) {} // warten bis nicht gedrückt
while (digitalRead(bt)==1) {} // warten bis gedrückt
delay(100);
/*if (t1 < highscore) { // highscore logik, zeigt "highscore" falls Reaktionszeit am niedrigsten ist bzw. < highscore
highscore = t1;
Serial.println("Highscore");
lcd.clear();
lcd.setCursor(0,0);
lcd.print("--HIGHSCORE!!!--");
lcd.setCursor(0,1);
lcd.print("Zeit:");
lcd.print(t1);
Serial.println("wartet bis drücken");
while (digitalRead(bt)==1) {} // warten bis gedrückt
}*/
lcd.clear(); // cleanup
delay(1000);
}