Reaktionstester

Hallo, ich brauche dringend eure Hilfe, ich muss einen Reaktionstester programmieren und habe nur noch eine Woche Zeit. Ich bin ein absoluter Anfänger und verstehe nicht gerade viel. Ich muss 3 LED`s benutzen und 2 Schalter. Die eine LED ist ein Startsignal und wenn es beginnt soll von 3 runtergezählt werden. Wenn es beginnt soll eine zufällige LED von den anderen 2 leuchten und der Taster unter dieser muss gedrückt werden. Wir benutzen ein LCD-Display mit 2 Zeilen. Ich bitte um schnelle Rückantwort.

Danke :slight_smile:

Zeig doch mal wenigstens einen Ansatz.
So eine "Hausaufgabe" fertigt sich nicht von allein.
Wenn Du später gefragt wirst, solltest Du das auch erklären können wie und warum es funktioniert.

Zudem die Eckpunkte recht dünn sind.
Wozu ist das Display (welches)
Wie sind die Taster angeschlossen?
[....]

#include <LiquidCrystal_I2C.h>
#include <Wire.h>
LiquidCrystal_I2C Lcd(0x3F,16,2);
long differenz, stoppzeit,startzeit;
void setup() {
pinMode(4,INPUT_PULLUP);
pinMode(9,INPUT_PULLUP);
pinMode(3,OUTPUT);
pinMode(7,OUTPUT);
pinMode(11,OUTPUT);
Lcd.init();
Lcd.backlight();
Lcd.setCursor(3,0);
Lcd.print("Willkommen!");
Lcd.setCursor(0,1);
Lcd.print("Im Reaktionstest");
delay(3500);
Lcd.clear();
Lcd.setCursor(4,0);
Lcd.print("Mach dich");
Lcd.setCursor(5,1);
Lcd.print("bereit!");
delay(2000);
Lcd.clear();
Lcd.setCursor(3,0);
Lcd.print("Start der");
Lcd.setCursor(0,1);
Lcd.print("ersten Runde in:");
delay(2500);
Lcd.clear();
Lcd.setCursor(8,1);
Lcd.print("3");
digitalWrite(7,HIGH);
delay(1000);
Lcd.clear();
digitalWrite(7,LOW);
Lcd.setCursor(8,1);
Lcd.print("2");
digitalWrite(7,HIGH);
delay(1000);
Lcd.clear();
digitalWrite(7,LOW);
Lcd.setCursor(8,1);
Lcd.print("1");
digitalWrite(7,HIGH);
delay(1000);
Lcd.clear();
Lcd.setCursor(6,1);
Lcd.print("Los!");
delay(1000);
Lcd.clear();
}

void loop() {
Lcd.setCursor(1,1);
Lcd.print("Zeit:");
Lcd.setCursor(8,1);
if(digitalRead(4)==0){
startzeit=millis();
}
if(digitalRead(9)==1){
stoppzeit=millis();
}{
Lcd.print(differenz);
differenz=stoppzeit-startzeit;
}

}

Das ist es bisher, ich bin mir jedoch ziemlich sicher, dass es falsch ist.

Ich kann mich irren und ich will dem TO auch nix unterstellen, klingt aber ein bisschen nach: ICH muss diese Aufgabe lösen, aber TEAM wäre mir lieber. :thinking:

Hallo,
ein Reaktionstester und die Verwendung der delay() Funktion passen nicht wirklich zusammen.

Ich muss die Aufgabe lösen, ja es ist sehr wichtig.

Dir ist schon klar, dass ein großer Teil derjenigen, die solche Aufgaben stellen in den einschlägigen Foren mitlesen und ihre Aufgabenstellungen mit Sicherheit erkennen.
Dann heißt es plötzlich: Betrug - 6 setzen.

Die Aufgabenstellungen sind dazu da, Deine Kenntnisse zu prüfen, nicht die Kenntnisse anderer Foristen und wenn Deine Kenntnisse nicht da sind, sollte auch die Note entsprechend ausfallen.

Gruß Tommy

Ich denke, da das delay nur in der Vorbereitung (setup) ist, würde es sich sicher nicht störend auf den eigentlichen Reaktionstest auswirken.

@andiqmo

na dann analsyieren wir mal:

Was macht dein Sketch falsch/nicht so wie von dir gewünscht?
Beschreibe was der Sketch aktuell macht - und was du statt dessen benötigst.

Beschreibe den Bug in kurzen Sätzen.

(und nachträglich: schau nach im Forum How to wie man Code postet und editiere deinen Beitrag entsprechend).

ich auch.

stimmt, danke :grinning:
Brille aufsetz

1 Like

Hallo
Schau mal hier.
Vor einem Jahr war das schon mal ein Thema.

Hallo,
eventuell versuchst Du erst mal einen Ablaufplan zu erstellen. Das kann auch gerne in Textform untereinander sein.
"Wenn es beginnt" was meinst Du damit ? "Soll von 3 runter gezählt werden" wie ? im sekunden Takt , zufällig , auf der Anzeige ?? Du siehst es ist nix klar beschrieben, eventuell gibt es eine Vorstellung in Deinem Kopf dazu. Wie Du ein LCD Display benutzt ?? , das hast Du doch schon gemacht. Also schreibe es untereinander dann ergibt das eine vernünftige Struktur und du merkst was Dir noch fehlt oder wo es logisch klemmt. Ich gehe mal davon aus das die Aufgabe auch nicht so ganz klar Punkt für Punkt beschrieben ist, also sei kreativ und mach was draus.

Beispiel:
Arduino wird eingeschaltet
Bergrüssung auf dem Display anzeigen
erste LED einschalten
einen Zähler eins runter zählen,
nach einer sekunde , oder Zufallszeit weiter runter zählen
....
Zähler ist bei 0 angekommen.
LED 2 oder LED 3 einschalten
.
usw

Wenn Du das vernünftig gemacht hast und es dir logisch und schlüssig erscheint kannst Du das mit ein bisschen Übung fast Zeile für Zeile in Code umsetzten.

Letztlich geht es Deinem Lehrer ja auch darum ob Du im Stande bist eine halbwegs komplexe Aufgabe vernünftig zu strukturieren und das dann umzusetzen. Und ja, das wird bewertet werden. Und nein ich bin nicht Dein Lehrer, könnte es aber sein. :wink: