Dateien nach "/" hochladen

This commit is contained in:
2026-03-03 08:57:38 +01:00
parent 70d54afe48
commit 4c066985c1
3 changed files with 158 additions and 105 deletions

View File

@@ -1,83 +1,68 @@
// 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.
// Copyright Justus Wolff™℗®© & Santhosh Venugopal™℗®©
// gemacht auf Wunsch von Frau Bürgel dass wir einen Grundcode anfertigen sollen.
// Also einfach der Code mit den zeilen für die Highscore funktion entfernt.
#include <LiquidCrystal_I2C.h>
#include <Wire.h>
#include <LiquidCrystal_I2C.h> // Abhängikeit vom dem Projekt um das LCD zu verwenden
#include <Wire.h> // Abhängikeit von der Library "LiquidCrystal I2C"
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
int led = 7; // Pin nummer der LED
int bt = 8; // Pin nummer des Tasters
LiquidCrystal_I2C lcd(0x27,16,2); // LCD klasse der Bibliothek deklarieren
void setup() {
// put your setup code here, to run once:
pinMode(led, OUTPUT);
pinMode(bt, INPUT_PULLUP); // pinmodes setzen (selbsterklärend)
void setup() { // normale setup funktion, läuft einmal am start vom Arduino
pinMode(led, OUTPUT); // Setze pinmodus der LED auf output
pinMode(bt, INPUT_PULLUP); // Setze pinmode des Tasters auf input (pullup)
randomSeed(analogRead(A1)); // Zufallsgenerator initialisieren
Serial.begin(9600);
Serial.println("Santhosh Justus Reaktionstester debug Information");
randomSeed(analogRead(A1)); // Zufallsgenerator initialisieren mithilfe von noise von dem analogen pin A1
Serial.begin(9600); // Initialisiere das Serial System. Serial wird in diesem Projekt verwendet um zu debuggen, es gibt hilfreiche informationen bei runtime aus
Serial.println("Santhosh Justus Reaktionstester debug Information"); // Basis information ausgeben in Serial
lcd.init(); // LCD initialisieren
lcd.clear();
lcd.clear(); // LCD clearen (leeren also keine zeichen, leeres display)
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
void loop() { // normale loop funktion, läuft immer wieder. Wie "while (1) {setup();}"
lcd.setCursor(0, 0); // cursor links oben hinsetzen
lcd.print("klicke sobald"); // Teil einer kleinen erklärsnachricht an den Nutzer
lcd.setCursor(0, 1); // setze cursor links auf die zweite Zeile
lcd.print("Die LED leuchtet"); // Vervollständigt die erklärsnachricht
int del = random(300, 3000); // Wartezeit für das Leuchten der LED
int del = random(300, 3000); // Bestimme wartezeit bis die LED leuchtet (zwischen 300ms und 3s)
Serial.println("--------------------------------------"); // extra Informationen im seriellen Monitor
Serial.print("Wartezeit:"); // debug
Serial.println(del); // debug
delay(del); // warten
Serial.println("--------------------------------------"); // Seperator in serial damit verschiedene "Test runden" unterschieden werden können
Serial.print("Wartezeit:"); // debug, gebe die oben bestimmte Wartezeit in serial aus
Serial.println(del); // debug, vervollständigt die vorherige zeile
delay(del); // wir "delay"'en (get it?) das programm, also warten die obige bestimmte wartezeit
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
while (digitalRead(bt)==0) { // Schleife des anti-cheats. Überprüft wird ob der knopf bereits gedrückt wird obwohl die LED nicht mal an ist als versuch zu schummeln.
Serial.println("Versuch zu schummeln."); // debug, informiere dass der tester/nutzer versucht hat zu schummeln.
delay(random(300, 3000)); // wir warten zwischen einer zufälligen zeit von 300ms zu 3s bis wir die anti cheat überprüfung neu machen.
}
long t1 = millis();
long t1 = millis(); // Speichere jetzige Zeit (wie lange das programm bereits läuft, reicht aber aus um die reaktionszeit zu berechnen indem wir später delta zwischen zwei punkten in der zeit berechnen)
digitalWrite(led, HIGH);
digitalWrite(led, HIGH); // Bringe LED zum aufleuchten
while (digitalRead(bt)==1) {} // warten bis gedrückt
while (digitalRead(bt)==1) {} // warten bis der Taster gedrückt wird.
t1 = millis()-t1; // berechnen der reaktionszeit
t1 = millis()-t1; // hier wird delta zwischen dem zeitpunkt von vorhin und der jetzigen zeit berechnet was dann die reaktionszeit ist.
digitalWrite(led, LOW);
digitalWrite(led, LOW); // Mache LED aus
Serial.print("Ergebnis: "); // debug
Serial.println(t1); // debug
Serial.print("Ergebnis: "); // debug, gebe die reaktionszeit in serial aus
Serial.println(t1); // debug, vervollständigt die vorherige zeile
lcd.clear(); // anzeigen der reaktionszeit
lcd.setCursor(0, 1);
lcd.print(t1);
lcd.print("ms");
lcd.setCursor(0, 0);
lcd.print("Reaktionszeit:");
lcd.clear(); // cleare das LCD von der erklärsnachricht (leeres LCD)
lcd.setCursor(0, 1); // Setze cursor links, zweite zeile
lcd.print(t1); // gebe berechnete reaktionszeit (also delta) aus
lcd.print("ms"); // gebe danach noch ms aus um das zeitformat dem nutzer mitzuteilen
lcd.setCursor(0, 0); // setze cursor links, erste zeile
lcd.print("Reaktionszeit:"); // gebe "Reaktionszeit:" auf dem LCD aus
delay(100);
while (digitalRead(bt)==0) {} // warten bis nicht gedrückt
delay(100); // warte 100ms
while (digitalRead(bt)==0) {} // warten bis nicht gedrückt, da der arduino so schnell ist dass der nutzer vielleicht noch den knopf als reaktion gedrückt hält
while (digitalRead(bt)==1) {} // warten bis gedrückt
delay(100);
delay(100); // warte 100ms
/*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);
lcd.clear(); // cleare das LCD (also leere es)
delay(1000); // warte 1s
}