Reaktionstester programmieren

Wir müssen im unterricht einen reaktionstester bauen, der aus einer LED und einem taster besteht.
Er soll so funktionieren:

-LED leuchtet random auf
-Spieler muss so schnell wie möglich nachdem die led leuchtet den taster drücken.
-Arduino muss die vergangene zeit von led leuchtet bis taster gedrückt ausgeben

Können sie uns helfen??
Anbei noch unser schaltplan

Im englischen Teil des Forum müssen die Beiträge und Diskussionen in englischer Sprache verfasst werden. Deswegen wurde diese Diskussion in den deutschen Teil des Forums verschoben.

mfg ein Moderator.

Es handelt sich um eine Schulaufgabe, die SIE selbst erledigen müssen. Niemand hier wird den Code für Sie schreiben, das wäre Betrug.

Was haben Sie im Unterricht gelernt? Zerlegen Sie das Problem in kleine Schritte.

Zuerst die Ein- und Ausgänge klar identifizieren. Die LED ist ein Ausgang, den der Arduino steuert, und der Taster ist ein Eingang, den der Arduino ausliest.

Danach die Schaltung korrekt aufbauen. Die LED muss mit einem Widerstand an einen Ausgangspin angeschlossen werden, und der Taster an einen Eingangspin, oft mit INPUT_PULLUP zur Vereinfachung.

Anschließend das Programm in setup() initialisieren. Die LED als OUTPUT, den Taster als INPUT_PULLUP definieren und die serielle Kommunikation starten, um die Zeit auszugeben.

Beginnen Sie dann mit einem sehr einfachen Programm, das die LED ein- und ausschaltet, um zu überprüfen, ob der Ausgang korrekt funktioniert.

Schreiben Sie danach ein Programm, bei dem die LED nach einer festen Wartezeit mit delay() aufleuchtet, um das Prinzip einer Verzögerung zu verstehen.

Ersetzen Sie diese feste Wartezeit anschließend durch eine zufällige Wartezeit mit der Funktion random(), zum Beispiel zwischen 1000 und 5000 Millisekunden.

Schreiben Sie danach ein kleines Programm, das den Zustand des Tasters mit digitalRead() ausliest und im seriellen Monitor anzeigt, ob der Taster gedrückt wird oder nicht.

Wenn das funktioniert, erstellen Sie ein Programm, bei dem ein Tastendruck die LED ein- oder ausschaltet, um Eingang und Ausgang miteinander zu verknüpfen.

Lernen Sie danach, die Zeit mit millis() zu messen, indem Sie den genauen Zeitpunkt speichern, an dem die LED aufleuchtet.

Erkennen Sie dann den Tastendruck und speichern Sie mit millis() einen zweiten Zeitpunkt.

Berechnen Sie schließlich die Differenz zwischen beiden Zeiten, um die Reaktionszeit zu erhalten.

Der letzte Schritt besteht einfach darin, all diese bereits einzeln getesteten kleinen Bausteine zusammenzufügen: zufällige Wartezeit mit random(), LED einschalten, Zeit mit millis() messen, Taster mit digitalRead() erkennen und anschließend das Ergebnis ausgeben.

Unser lehrer hat das halt als projekt aufgegeben obwohl wir noch nie mit arduino was gemacht haben...
Außerdem fehlt er ständig.
Aber vielen dank

ChatGPT befragen, dann ist der Lehrer glücklich .. wegen "KI im Unterricht" und so ...

Klar doch!

Egal ob Schüler oder Rentner wie ich, wir pflegen in diesem Forum das freundliche "Du". Ausnahmen bestätigen die Regel :wink:

Allerdings hast Du das Thema als gelöst markiert, was potentiell Helfende von einer Hilfe abhalten könnte. Versuche mal, das wieder rückgängig zu machen.

Das mit dem ständig fehlenden Lehrer ist blöd. Hast Du schon mal was in C++ programmiert?

Die IDE bietet ein paar grundlegende Beispiele, so BlinkWithoutDelay, damit könntest Du die LED blinken lassen. Oder Button, wo bei einem Tastendruck die LED leuchtet. Das wäre ein Anfang :smiley:

Bitte überprüfe die Schaltung Deines Tasters!

Und jetzt einfach loslegen :blush:

Nee ,nie davon gehört :sweat_smile:

Ich schaue es mir an, danke!

Dann wird es eine Herausforderung! Kennst Du irgendeine andere Programmiersprache?

C++ ist die Programmiersprache für die Arduino-Programmierumgebung (IDE), daher natürlich sehr wichtig.

Bis auf J-M-L, der als Franzose das Forum verwendet, um sein hervorragendes Deutsch weiter zu verbessern :slight_smile:

Seinen Beitrag könntest du übrigens durchaus als "Lösung" markieren. Besser hätte es euer Lehrer auch nicht erklären können.

Was an seiner Antwort auch erkennbar ist:

  • Beim Arduino-Programmieren geht es nicht darum, eine Lösung einzutippen/kopieren, hochzuladen und gut, sondern darum, Dutzende Teilprobleme zu verstehen, in den Griff zu kriegen und alles immer wieder zu überarbeiten.
  • Und darum, selber etwas herauszufinden.

Konkret nachfragen, (z.B. wenn eine Fehlermeldung auch mit Nachdenken unverständlich bleibt) geht hier natürlich auch immer.

Ich wollte @concordez nur ein wenig Mut machen und Hilfe anbieten, auch wenn wir nicht sein Programm schreiben möchten.

Stimmt.

Mein Beitrag ist zwar formal eine Antwort an dich, @agmue, in meinem

Seinen Beitrag könntest du

ist mit "du" allerdings @concordez
und mit "seinen" @J-M-L gemeint, sorry.

Noch ein Tip: Am Ende dieses Threads sehe ich einen Abschnitt "Related Topics", bei denen mehrere "Reaktionstest" oder so ähnlich dabei sind.

Da kann man zumindest lernen, was echte Probleme sind :)

Allen Beteiligten (und Unbeteiligten) weiterhin einen schönen Tag.

Danke!

@concordez
Mein Tipp:
Suche nach "Stoppuhr" z.B. hier im Forum.
Da kannst du dir bestimmt was abschauen.

Den Link finde ich etwas unglücklich, da er zu einer Sperrung, nicht aber zu einer Lösung führte. Auch die anderen Themen sind leider eher von zweifelhafter Qualität. Einem Neuling und Schüler gegenüber wünschte ich mir etwas mehr Sorgfalt.

Auch ich wünsche allen einen schönen Tag, ich mache jetzt ein Mittagsschläfchen :sleeping_face:

Ich hab mal vor paar jahren python basics gelernt und kenn mich ein bisschen mit programierblocks, aber bin eigentlich nicht so technisch unterwegs haha....
Wird wirklich eine grosse herausvorderung!

Was machen die von mir vorgeschlagenen Beispiele? Hast Du sie gefunden und blinkt die LED?

Wenn ich einen neuen Mikroprozessor teste, fange ich meist mit einer blinkenden LED an. Dann weiß ich, daß ich die Pinbezeichnungen verstanden habe, ein erster Schritt :blush:

Die LED leuchtet, aber wir kriegen den taster nicht richtig angeschlossen :sweat_smile:
Wir versuchen es am donnerstag (nächstes mal nwt) wieder!

Zeige doch mal den Code von der LED und dem Taster.

Gut!

Hatte ich so erwartet :blush:

Schau Dir mal Taster am Mikrocontroller an, da ist gezeigt, wie es geht.

Ich mache keine Werbung, aber als Hinweis: Bei Funduino gibt es Schülerrabatt :wink: