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

Aus microbit - Das Schulbuch
Wechseln zu: Navigation, Suche
(Schritt-Für-Schritt-Komplettlösungen)
K (Teil 2 - Das Spiel starten)
 
(45 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>
  
Bedingung formulieren
+
=== Teil 2 - Das Spiel starten ===
  
<Spoiler>[[Datei:Variable Licht.PNG|frame|center|200px]][[Datei:Wenn Bedingung formuliert.PNG |frame|center|200px ]][[Datei:Ton spielen.PNG|frame|center|200px ]][[Datei:
+
Sobald von einem Spieler GND mit einer Hand und Pin 0 mit der anderen Hand berührt wird...
Ton spielen 2.PNG|frame|center|200px ]] </Spoiler>
+
 
 +
<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

Hinweis


Eckpfeiler zur Programmierung

Hinweis


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)


Hinweis


Teil 2 - Das Spiel starten

Sobald von einem Spieler GND mit einer Hand und Pin 0 mit der anderen Hand berührt wird...

Hinweis


... soll ein Countdown starten: 3 - 2 - 1. Anschließend soll der Bildschirminhalt gelöscht werden.

Hinweis


Damit das Spiel beliebig oft gespielt werden kann, sollen die Werte "Running" und "Fehlstart" erneut auf "falsch" gesetzt werden...


Hinweis


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

Hinweis


Wenn kein Fehlstart verursacht wurde...

Hinweis


... soll die seit dem Einschalten des BBC micro:bit vergangene Zeit ("Laufzeit ms") im Millisekunden ausgelesen und in der Variablen "Start" gespeichert werden.

Hinweis


Die Variable "Running" soll auf wahr gesetzt werden.

Hinweis


Es soll sichergestellt werden, dass alle Animationen an der LED-Matrix angehalten werden.

Hinweis


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)

Hinweis


Einspieler-Modus

Sobald von einem Spieler GND mit der einen Hand, und Pin 1 mit der anderen Hand berührt wird...

Hinweis


..., 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.


Hinweis


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.

Hinweis


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.

Hinweis


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.

Hinweis


Die Zeit, die zwischen dem Ende des Countdowns und dem Berühren der Alufolie vergangen ist, soll angezeigt werden.

Hinweis


Nun wird die Zeit berechnet, die zwischen dem Ende des Countdowns und dem Berühren der Alufolie vergangen ist.

Hinweis


Wenn die Variable "Running" nicht auf "wahr" gesetzt ist, wird die Variable "Fehlstart" auf "wahr" gestellt.

Hinweis


Auf der LED-Matrix soll auf der Seite des mit P1 verbundenen Spielers ein entsprechendes Symbol dargestellt werden.

Hinweis


Fertiges Programm

Start

Hinweis


Pin 0

Hinweis


Pin 1

Hinweis


Pin 2

Hinweis