Reaktionszeit-Messgerät Lösung: Unterschied zwischen den Versionen
(9 dazwischenliegende Versionen von einem anderen Benutzer werden nicht angezeigt) | |||
Zeile 4: | Zeile 4: | ||
<Spoiler>[[Datei:Reaktionszeit Teil 1 - Flussdiagramm.PNG |frame|center|200px]][[Datei:Reaktionszeit Teil 2 - Flussdiagramm.PNG |frame|center|200px]][[Datei:Reaktionszeit Teil 3 - Flussdiagramm.PNG |frame|center|200px]]</Spoiler> | <Spoiler>[[Datei:Reaktionszeit Teil 1 - Flussdiagramm.PNG |frame|center|200px]][[Datei:Reaktionszeit Teil 2 - Flussdiagramm.PNG |frame|center|200px]][[Datei:Reaktionszeit Teil 3 - Flussdiagramm.PNG |frame|center|200px]]</Spoiler> | ||
== | == Eckpfeiler zur Programmierung == | ||
Zeile 11: | Zeile 11: | ||
<Spoiler>[[Datei:Reaktionszeit Teil 1 - Flussdiagramm und Programmierhilfe.PNG|frame|center|200px]][[Datei:Reaktionszeit Teil 2 - Flussdiagramm und Programmierhilfe.PNG|frame|center|200px]][[Datei:Reaktionszeit Teil 3 - Flussdiagramm und Programmierhilfe.PNG|frame|center|200px]]</Spoiler> | <Spoiler>[[Datei:Reaktionszeit Teil 1 - Flussdiagramm und Programmierhilfe.PNG|frame|center|200px]][[Datei:Reaktionszeit Teil 2 - Flussdiagramm und Programmierhilfe.PNG|frame|center|200px]][[Datei:Reaktionszeit Teil 3 - Flussdiagramm und Programmierhilfe.PNG|frame|center|200px]]</Spoiler> | ||
== Schritt | == Schritt für Schritt zur Lösung == | ||
=== Teil 1 - Vorbereitung === | === Teil 1 - Vorbereitung === | ||
Zeile 43: | Zeile 43: | ||
Anschließend soll der Bildschirminhalt gelöscht werden. | Anschließend soll der Bildschirminhalt gelöscht werden. | ||
<Spoiler> [[Datei:102 Zeige Nummer.PNG |frame|center|200px]][[Datei:103 Bildschirm loeschen.PNG|frame|center|200px]] [[Datei:104 Countdown. | <Spoiler> [[Datei:102 Zeige Nummer.PNG |frame|center|200px]][[Datei:103 Bildschirm loeschen.PNG|frame|center|200px]] [[Datei:104 Countdown.PNG|frame|center|200px]] </Spoiler> | ||
Damit das Spiel beliebig oft gespielt werden kann, sollen die Werte "Running" und "Fehlstart" erneut auf "falsch" gesetzt werden... | Damit das Spiel beliebig oft gespielt werden kann, sollen die Werte "Running" und "Fehlstart" erneut auf "falsch" gesetzt werden... | ||
Zeile 83: | Zeile 83: | ||
Sobald von einem Spieler GND mit der einen Hand, und Pin 1 mit der anderen Hand berührt wird... | Sobald von einem Spieler GND mit der einen Hand, und Pin 1 mit der anderen Hand berührt wird... | ||
<Spoiler> [[Datei:200 Wenn Pin 1 gedrückt.PNG |center|200px]] </spoiler> | <Spoiler> [[Datei:200 Wenn Pin 1 gedrückt.PNG |frame|center|200px]] [[Datei:112 Wenn.PNG |frame|center|200px]]</spoiler> | ||
..., wenn Running = wahr ("Running" wurde erst ganz am Schluss des Programmteils mit P0 auf "wahr" gesetzt), | |||
dann soll die Reaktionszeit angezeigt werden, ansonsten soll ein Symbol für Fehlstart angezeigt werden. | |||
<Spoiler> [[Datei:201 Wenn dann ansonsten.PNG|frame|center|200px]] </spoiler> | |||
Nun soll zuerst die Variable "Running" auf "falsch" gesetzt werden, damit vom BBC micro:bit nicht mehr registriert wird, falls ein zweiter Spieler "seinen Pin" drückt. | |||
<Spoiler> [[Datei:203 Running falsch.PNG|frame|center|200px]] </spoiler> | |||
Als nächstes wird wieder die seit dem Einschalten des BBC Micro:bit vergangene Zeit ("Laufzeit MS") in Millisekunden ausgelesen und jetzt in der Variablen "Ende" gespeichert. | |||
<Spoiler> [[Datei:204 Ende-Laufzeit.PNG |frame|center|200px]] </spoiler> | |||
Damit man weiß, dass der mit P1 verbundene Spieler als erstes die Alufolie berührt hat, soll auf der LED-Matrix ein entsprechendes Symbol angezeigt werden und für eine Sekunde aufleuchten. | |||
<Spoiler> [[Datei:205 P1 gewinnt.PNG|frame|center|200px]][[Datei:206 Pause.PNG|frame|center|200px]] </spoiler> | |||
Die Zeit, die zwischen dem Ende des Countdowns und dem Berühren der Alufolie vergangen ist, soll angezeigt werden. | |||
<Spoiler> [[Datei:207 zeige Nummer.PNG|frame|center|200px]] </spoiler> | |||
Nun wird die Zeit berechnet, die zwischen dem Ende des Countdowns und dem Berühren der Alufolie vergangen ist. | |||
<Spoiler> [[Datei:208 Subtraktion.PNG|frame|center|200px]] [[Datei:209 Ende-Start.PNG|frame|center|200px]] [[Datei:210 Reaktionszeit anzeigen.PNG|frame|center|200px]]</spoiler> | |||
Wenn die Variable "Running" nicht auf "wahr" gesetzt ist, wird die Variable "Fehlstart" auf "wahr" gestellt. | |||
<Spoiler> [[Datei:211 Fehlstart wahr.PNG|frame|center|200px]] </spoiler> | |||
Auf der LED-Matrix soll auf der Seite des mit P1 verbundenen Spielers ein entsprechendes Symbol dargestellt werden. | |||
<Spoiler> [[Datei:212 Fehlstart Symbol.PNG|frame|center|200px]] </spoiler> | |||
== Fertiges Programm == | == Fertiges Programm == |
Aktuelle Version vom 30. Januar 2020, 18:03 Uhr
Flussdiagramm
<Spoiler>
</Spoiler>
Eckpfeiler zur Programmierung
<Spoiler>
</Spoiler>
Schritt für Schritt zur Lösung
Teil 1 - Vorbereitung
4 neue Variablen werden erstellt und ihnen ein Wert zugeordnet
- „Start“ – Wert „0“ (= setzt die abgelaufene Zeit auf Null)
- „Ende“ – Wert „0“ (= setzt die abgelaufene Zeit auf Null)
- „Running“ – Wert „Falsch“ (= Programm läuft noch nicht)
- „Fehlstart“ – Wert „Falsch“ (= Kein Fehlstart)
<Spoiler>
</Spoiler>
Teil 2 - Das Spiel starten
Sobald von einem Spieler GND mit einer Hand und Pin 0 mit der anderen Hand berührt wird...
<Spoiler>
</Spoiler>
... soll ein Countdown starten: 3 - 2 - 1. Anschließend soll der Bildschirminhalt gelöscht werden.
<Spoiler>
</Spoiler>
Damit das Spiel beliebig oft gespielt werden kann, sollen die Werte "Running" und "Fehlstart" erneut auf "falsch" gesetzt werden...
<Spoiler>
</Spoiler>
... soll eine zufällige Zeitspanne zwischen 1 und 3 Sekunden vergehen, bevor auf der LED Matrix ein Punkt erscheint, der das Startsignal gibt, dass mit der 2. Hand der „eigene Pin“ berührt werden soll..
<Spoiler>
</Spoiler>
Wenn kein Fehlstart verursacht wurde...
<Spoiler>
</Spoiler>
... soll die seit dem Einschalten des BBC micro:bit vergangene Zeit ("Laufzeit ms") im Millisekunden ausgelesen und in der Variablen "Start" gespeichert werden.
<Spoiler>
</Spoiler>
Die Variable "Running" soll auf wahr gesetzt werden.
<Spoiler>
</Spoiler>
Es soll sichergestellt werden, dass alle Animationen an der LED-Matrix angehalten werden.
<Spoiler>
</Spoiler>
Auf der LED-Matrix soll irgendwo ein Punkt erscheinen:
- Auf der X-Achse befinden sich 5 LEDs (0 bis 4)
- Auf der Y-Achse befinden sich 5 LEDs (0 bis 4)
<Spoiler>
</Spoiler>
Einspieler-Modus
Sobald von einem Spieler GND mit der einen Hand, und Pin 1 mit der anderen Hand berührt wird...
<Spoiler>
</spoiler>
..., wenn Running = wahr ("Running" wurde erst ganz am Schluss des Programmteils mit P0 auf "wahr" gesetzt), dann soll die Reaktionszeit angezeigt werden, ansonsten soll ein Symbol für Fehlstart angezeigt werden.
<Spoiler>
</spoiler>
Nun soll zuerst die Variable "Running" auf "falsch" gesetzt werden, damit vom BBC micro:bit nicht mehr registriert wird, falls ein zweiter Spieler "seinen Pin" drückt.
<Spoiler>
</spoiler>
Als nächstes wird wieder die seit dem Einschalten des BBC Micro:bit vergangene Zeit ("Laufzeit MS") in Millisekunden ausgelesen und jetzt in der Variablen "Ende" gespeichert.
<Spoiler>
</spoiler>
Damit man weiß, dass der mit P1 verbundene Spieler als erstes die Alufolie berührt hat, soll auf der LED-Matrix ein entsprechendes Symbol angezeigt werden und für eine Sekunde aufleuchten.
<Spoiler>
</spoiler>
Die Zeit, die zwischen dem Ende des Countdowns und dem Berühren der Alufolie vergangen ist, soll angezeigt werden.
<Spoiler>
</spoiler>
Nun wird die Zeit berechnet, die zwischen dem Ende des Countdowns und dem Berühren der Alufolie vergangen ist.
<Spoiler>
</spoiler>
Wenn die Variable "Running" nicht auf "wahr" gesetzt ist, wird die Variable "Fehlstart" auf "wahr" gestellt.
<Spoiler>
</spoiler>
Auf der LED-Matrix soll auf der Seite des mit P1 verbundenen Spielers ein entsprechendes Symbol dargestellt werden.
<Spoiler>
</spoiler>
Fertiges Programm
Start
<Spoiler>
</Spoiler>
Pin 0
<Spoiler>
</Spoiler>
Pin 1
<Spoiler>
</Spoiler>
Pin 2
<Spoiler>
</Spoiler>