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.
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.
Egal ob Schüler oder Rentner wie ich, wir pflegen in diesem Forum das freundliche "Du". Ausnahmen bestätigen die Regel
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
Bis auf J-M-L, der als Franzose das Forum verwendet, um sein hervorragendes Deutsch weiter zu verbessern
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.
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
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