diff --git a/reaktionstesterclean.ino b/reaktionstesterclean.ino index 04b146b..2806661 100644 --- a/reaktionstesterclean.ino +++ b/reaktionstesterclean.ino @@ -1,105 +1,80 @@ -// Copyright Santhosh Venugopal™℗®© & Justus Wolff™℗®© - -#include -#include - -uint8_t led = 7; // pin Nummern für jwl. Komponente -uint8_t bt = 8; -uint32_t highscore = -1; // wer hier einen bitoverflow hinbekommt verdient den respekt -uint8_t godmode = 0; -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 handlecmds() { - if (!Serial.available()) {return;} - - String cmd = Serial.readString(); - if (cmd == "godmode enable\n") { - godmode = 1; - Serial.println("Okidoki, du citri!"); - } - if (cmd == "godmode disable\n") { - godmode = 0; - Serial.println("Whad de fug, bong ding ow"); - } - if (cmd == "ich bin ein cheater\n") { - godmode = 2; - Serial.println(">:("); - } - if (cmd == "ich bin KEIN cheater\n") { - godmode = 0; - Serial.println("aight bet"); - } -} - -void loop() { - handlecmds(); - lcd.setCursor(0, 0); - lcd.print("klicke sobald"); - lcd.setCursor(0, 1); - lcd.print("Die LED leuchtet"); // gebrauchsanleitung für tester - - uint16_t 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 || godmode == 2) { // warten bis nicht mehr gedrückt - handlecmds(); - Serial.println("Versuch zu schummeln."); // debug - delay(random(300, 3000)); // zufällige Zeit warten bis zur nächsten Überprüfung - } - uint32_t t1 = millis(); - - digitalWrite(led, HIGH); - - while (digitalRead(bt)==1 && godmode == 0) {} // 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); -} +// Copyright Santhosh Venugopal™℗®© & Justus Wolff™℗®© + +#include +#include + +uint8_t led = 7; // pin Nummern für jwl. Komponente +uint8_t bt = 8; +uint32_t highscore = -1; // wer hier einen bitoverflow hinbekommt verdient den respekt +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 + + uint16_t 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 + } + uint32_t 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); +}