Reaktionszeit-Messgerät Lösung: Unterschied zwischen den Versionen

Aus microbit - Das Schulbuch
Zur Navigation springen Zur Suche springen
Leonie.dreher (Diskussion | Beiträge)
Leonie.dreher (Diskussion | Beiträge)
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),  
..., wenn Running = wahr ("Running" wurde erst ganz am Schluss des Programmteils mit P0 auf "wahr" gesetzt),  
Zeile 89: Zeile 89:




<Spoiler> [[Datei:201 Wenn dann ansonsten.PNG|center|200px]] </spoiler>
<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.  
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|center|200px]] </spoiler>
<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.
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 |center|200px]] </spoiler>
<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.  
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|center|200px]][[Datei:206 Pause.PNG|center|200px]] </spoiler>
<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.  
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|center|200px]] </spoiler>
<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.  
Nun wird die Zeit berechnet, die zwischen dem Ende des Countdowns und dem Berühren der Alufolie vergangen ist.  


<Spoiler> [[Datei:208 Subtraktion.PNG|center|200px]] [[Datei:209 Ende-Start.PNG|center|200px]] [[Datei:210 Reaktionszeit anzeigen.PNG|center|200px]]</spoiler>
<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.  
Wenn die Variable "Running" nicht auf "wahr" gesetzt ist, wird die Variable "Fehlstart" auf "wahr" gestellt.  


<Spoiler> [[Datei:211 Fehlstart wahr.PNG|center|200px]] </spoiler>
<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.  
Auf der LED-Matrix soll auf der Seite des mit P1 verbundenen Spielers ein entsprechendes Symbol dargestellt werden.  


<Spoiler> [[Datei:212 Fehlstart Symbol.PNG|center|200px]] </spoiler>
<Spoiler> [[Datei:212 Fehlstart Symbol.PNG|frame|center|200px]] </spoiler>


== Fertiges Programm ==
== Fertiges Programm ==

Version vom 25. Mai 2018, 20:41 Uhr

Flussdiagramm

<Spoiler>

</Spoiler>

Flussdiagramm mit Programmierhilfe

<Spoiler>

</Spoiler>

Schritt-Für-Schritt-Lösungen

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>

Datei:104 Countdown.PNGframe

</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>

Frame
Frame

</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>