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

Aus microbit - Das Schulbuch
Zur Navigation springen Zur Suche springen
Leonie.dreher (Diskussion | Beiträge)
Oliver.kastner (Diskussion | Beiträge)
 
(47 dazwischenliegende Versionen von einem anderen Benutzer werden nicht angezeigt)
Zeile 2: Zeile 2:




<Spoiler>[[Datei:Hacke deine Kopfhoerer - 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>


== Flussdiagramm mit Programmierhilfe ==
== Eckpfeiler zur Programmierung ==








<Spoiler>[[Datei:Flussdiagramm Programmierung Hack.jpg|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-Für-Schritt-Komplettlösungen ==
== Schritt für Schritt zur Lösung ==


Erstellen einer neuen Variablen mit dem Namen "Licht"
=== Teil 1 - Vorbereitung ===


<Spoiler>[[Datei:Neue Variable anlegen.PNG|frame|center|200px]][[Datei:Variablenname.PNG|frame|center|200px ]][[Datei:Variable Licht.PNG|frame|center|200px]]</Spoiler>
4 neue Variablen werden erstellt und ihnen ein Wert zugeordnet
*„Start“ – Wert „0“ (= setzt die abgelaufene Zeit auf Null)


Variable in einem Programm anwenden
*„Ende“ – Wert „0“ (= setzt die abgelaufene Zeit auf Null)


<Spoiler>[[Datei:Variable Licht verwenden.PNG|frame|center|200px]][[Datei:Variable Licht verwenden 2.PNG|frame|center|200px ]]</Spoiler>
*„Running“ – Wert „Falsch“ (= Programm läuft noch nicht)


Einer Variablen einen Wert zuweisen
*„Fehlstart“ – Wert „Falsch“ (= Kein Fehlstart)


<Spoiler>[[Datei:Einer Variablen einen Wert zuweisen.PNG|frame|center|200px]][[Datei:Einer Variablen einen Wert zuweisen 2.PNG|frame|center|200px ]]</Spoiler>


Musik-Pause einfügen
<Spoiler>[[Datei:01 beim Start.PNG |frame|center|200px]][[Datei:02 neue Variable anlegen.PNG |frame|center|200px ]]
[[Datei:03 Variable Start.PNG|frame|center|200px]][[Datei:04 Variable Start.PNG |frame|center|200px]][[Datei:05 alle Variablen.PNG  |frame|center|200px]]


<Spoiler>[[Datei:Musik Pause.PNG|frame|center|200px]][[Datei:Musik Pause 2.PNG|frame|center|200px ]]</Spoiler>
[[Datei:06 Variable einfuegen.PNG |frame|center|200px]][[Datei:07 alle Variablen Programm.PNG   |frame|center|200px]]


Bedingung einfügen - Block für die Bedingung konfigurieren
[[Datei:07 falsch.PNG |frame|center|200px]][[Datei:08 Start fertig.PNG  |frame|center|200px]]


<Spoiler>[[Datei:Wenn dann ansonsten.PNG |frame|center|200px]][[Datei:Wenn dann ansonsten 2.PNG|frame|center|200px ]][[Datei:Wenn Bedingung formulieren.PNG|frame|center|200px ]][[Datei:Wenn Bedingung formulieren 2.PNG|frame|center|200px ]]</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> [[Datei:100 Wenn Pin 0 gedrückt.PNG |frame|center|200px]][[Datei:101 Wenn Pin 0 gedrückt.PNG |frame|center|200px]] </Spoiler>
 
... soll ein Countdown starten: 3 - 2 - 1.
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.PNG|frame|center|200px]] </Spoiler>
 
Damit das Spiel beliebig oft gespielt werden kann, sollen die Werte "Running" und "Fehlstart" erneut auf "falsch" gesetzt werden...
 
 
<Spoiler> [[Datei:105 Boolsche auf falsch.PNG |frame|center|200px]] </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> [[Datei:106 pausiere ms.PNG  |frame|center|200px]][[Datei:107 pausiere ms.PNG |frame|center|200px]] [[Datei:108 Zahlenbereich.PNG |frame|center|200px]]
[[Datei:109 Zufallszahl.PNG |frame|center|200px]] [[Datei:110 Verzoegerung fertig.PNG |frame|center|200px]]</Spoiler>
 
Wenn kein Fehlstart verursacht wurde...
 
<Spoiler> [[Datei:111 Wenn.PNG |frame|center|200px]] [[Datei:112 Wenn.PNG |frame|center|200px]]
[[Datei:113 Wenn nicht.PNG|frame|center|200px]] [[Datei:114 Wenn nicht.PNG|frame|center|200px]]</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> [[Datei:115 Laufzeit.PNG |frame|center|200px]] [[Datei:116 Laufzeit zuweisen.PNG |frame|center|200px]]</Spoiler>
 
Die Variable "Running" soll auf wahr gesetzt werden.
 
<Spoiler> [[Datei:117 Running wahr.PNG|frame|center|200px]] </Spoiler>
 
Es soll sichergestellt werden, dass alle Animationen an der LED-Matrix angehalten werden.
 
<Spoiler> [[Datei:118 Stopp Animation.PNG  |frame|center|200px]] [[Datei:119 Bildschrim loeschen.PNG |frame|center|200px]][[Datei:120 Animation stopp bildschirm loeschen.PNG |frame|center|200px]]</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> [[Datei:121 zeichne.PNG|frame|center|200px]] [[Datei:122 zeichne.PNG |frame|center|200px]]
[[Datei:124 Pin 0 fertig-Punkt an zufaelliger Stelle.PNG |frame|center|200px]] [[Datei:109 Zufallszahl.PNG|frame|center|200px]]</Spoiler>
 
=== Einspieler-Modus ===
 
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 |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 ==
 
Start
 
<Spoiler>[[Datei:300 Loesung Start.PNG |frame|center|200px]] </Spoiler>
 
Pin 0
 
<Spoiler>[[Datei:301 Loesung Pin 0.PNG |frame|center|200px]] </Spoiler>
 
Pin 1
 
<Spoiler>[[Datei:302 Loesung Pin1.PNG|frame|center|200px]] </Spoiler>
 
Pin 2  
 
<Spoiler>[[Datei:303 Loesung Pin2.PNG|frame|center|200px]] </Spoiler>

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>