reaktionstesterclean.ino aktualisiert
This commit is contained in:
@@ -1,105 +1,80 @@
|
|||||||
// Copyright Santhosh Venugopal™℗®© & Justus Wolff™℗®©
|
// Copyright Santhosh Venugopal™℗®© & Justus Wolff™℗®©
|
||||||
|
|
||||||
#include <LiquidCrystal_I2C.h>
|
#include <LiquidCrystal_I2C.h>
|
||||||
#include <Wire.h>
|
#include <Wire.h>
|
||||||
|
|
||||||
uint8_t led = 7; // pin Nummern für jwl. Komponente
|
uint8_t led = 7; // pin Nummern für jwl. Komponente
|
||||||
uint8_t bt = 8;
|
uint8_t bt = 8;
|
||||||
uint32_t highscore = -1; // wer hier einen bitoverflow hinbekommt verdient den respekt
|
uint32_t highscore = -1; // wer hier einen bitoverflow hinbekommt verdient den respekt
|
||||||
uint8_t godmode = 0;
|
LiquidCrystal_I2C lcd(0x27,16,2); // LCD deklarieren
|
||||||
LiquidCrystal_I2C lcd(0x27,16,2); // LCD deklarieren
|
|
||||||
|
void setup() {
|
||||||
void setup() {
|
// put your setup code here, to run once:
|
||||||
// put your setup code here, to run once:
|
pinMode(led, OUTPUT);
|
||||||
pinMode(led, OUTPUT);
|
pinMode(bt, INPUT_PULLUP); // pinmodes setzen (selbsterklärend)
|
||||||
pinMode(bt, INPUT_PULLUP); // pinmodes setzen (selbsterklärend)
|
|
||||||
|
randomSeed(analogRead(A1)); // Zufallsgenerator initialisieren
|
||||||
randomSeed(analogRead(A1)); // Zufallsgenerator initialisieren
|
Serial.begin(9600);
|
||||||
Serial.begin(9600);
|
Serial.println("Santhosh Justus Reaktionstester debug Information");
|
||||||
Serial.println("Santhosh Justus Reaktionstester debug Information");
|
lcd.init(); // LCD initialisieren
|
||||||
lcd.init(); // LCD initialisieren
|
lcd.clear();
|
||||||
lcd.clear();
|
lcd.backlight(); // backlight an machen
|
||||||
lcd.backlight(); // backlight an machen
|
}
|
||||||
}
|
|
||||||
|
void loop() {
|
||||||
void handlecmds() {
|
lcd.setCursor(0, 0);
|
||||||
if (!Serial.available()) {return;}
|
lcd.print("klicke sobald");
|
||||||
|
lcd.setCursor(0, 1);
|
||||||
String cmd = Serial.readString();
|
lcd.print("Die LED leuchtet"); // gebrauchsanleitung für tester
|
||||||
if (cmd == "godmode enable\n") {
|
|
||||||
godmode = 1;
|
uint16_t del = random(300, 3000); // Wartezeit für das Leuchten der LED
|
||||||
Serial.println("Okidoki, du citri!");
|
|
||||||
}
|
Serial.println("--------------------------------------"); // extra Informationen im seriellen Monitor
|
||||||
if (cmd == "godmode disable\n") {
|
Serial.print("Wartezeit:"); // debug
|
||||||
godmode = 0;
|
Serial.println(del); // debug
|
||||||
Serial.println("Whad de fug, bong ding ow");
|
delay(del); // warten
|
||||||
}
|
|
||||||
if (cmd == "ich bin ein cheater\n") {
|
while (digitalRead(bt)==0) { // warten bis nicht mehr gedrückt
|
||||||
godmode = 2;
|
Serial.println("Versuch zu schummeln."); // debug
|
||||||
Serial.println(">:(");
|
delay(random(300, 3000)); // zufällige Zeit warten bis zur nächsten Überprüfung
|
||||||
}
|
}
|
||||||
if (cmd == "ich bin KEIN cheater\n") {
|
uint32_t t1 = millis();
|
||||||
godmode = 0;
|
|
||||||
Serial.println("aight bet");
|
digitalWrite(led, HIGH);
|
||||||
}
|
|
||||||
}
|
while (digitalRead(bt)==1) {} // warten bis gedrückt
|
||||||
|
|
||||||
void loop() {
|
t1 = millis()-t1; // berechnen der reaktionszeit
|
||||||
handlecmds();
|
|
||||||
lcd.setCursor(0, 0);
|
digitalWrite(led, LOW);
|
||||||
lcd.print("klicke sobald");
|
|
||||||
lcd.setCursor(0, 1);
|
Serial.print("Ergebnis: "); // debug
|
||||||
lcd.print("Die LED leuchtet"); // gebrauchsanleitung für tester
|
Serial.println(t1); // debug
|
||||||
|
|
||||||
uint16_t del = random(300, 3000); // Wartezeit für das Leuchten der LED
|
lcd.clear(); // anzeigen der reaktionszeit
|
||||||
|
lcd.setCursor(0, 1);
|
||||||
Serial.println("--------------------------------------"); // extra Informationen im seriellen Monitor
|
lcd.print(t1);
|
||||||
Serial.print("Wartezeit:"); // debug
|
lcd.print("ms");
|
||||||
Serial.println(del); // debug
|
lcd.setCursor(0, 0);
|
||||||
delay(del); // warten
|
lcd.print("Reaktionszeit:");
|
||||||
|
|
||||||
while (digitalRead(bt)==0 || godmode == 2) { // warten bis nicht mehr gedrückt
|
delay(100);
|
||||||
handlecmds();
|
while (digitalRead(bt)==0) {} // warten bis nicht gedrückt
|
||||||
Serial.println("Versuch zu schummeln."); // debug
|
while (digitalRead(bt)==1) {} // warten bis gedrückt
|
||||||
delay(random(300, 3000)); // zufällige Zeit warten bis zur nächsten Überprüfung
|
delay(100);
|
||||||
}
|
|
||||||
uint32_t t1 = millis();
|
if (t1 < highscore) { // highscore logik, zeigt "highscore" falls Reaktionszeit am niedrigsten ist bzw. < highscore
|
||||||
|
highscore = t1;
|
||||||
digitalWrite(led, HIGH);
|
Serial.println("Highscore");
|
||||||
|
lcd.clear();
|
||||||
while (digitalRead(bt)==1 && godmode == 0) {} // warten bis gedrückt
|
lcd.setCursor(0,0);
|
||||||
|
lcd.print("--HIGHSCORE!!!--");
|
||||||
t1 = millis()-t1; // berechnen der reaktionszeit
|
lcd.setCursor(0,1);
|
||||||
|
lcd.print("Zeit:");
|
||||||
digitalWrite(led, LOW);
|
lcd.print(t1);
|
||||||
|
Serial.println("wartet bis drücken");
|
||||||
Serial.print("Ergebnis: "); // debug
|
while (digitalRead(bt)==1) {} // warten bis gedrückt
|
||||||
Serial.println(t1); // debug
|
}
|
||||||
|
lcd.clear(); // cleanup
|
||||||
lcd.clear(); // anzeigen der reaktionszeit
|
delay(1000);
|
||||||
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);
|
|
||||||
}
|
|
||||||
|
|||||||
Reference in New Issue
Block a user