Stoppuhr Lösung: Unterschied zwischen den Versionen
Keine Bearbeitungszusammenfassung |
|||
(8 dazwischenliegende Versionen von 2 Benutzern werden nicht angezeigt) | |||
Zeile 2: | Zeile 2: | ||
Programmiere den micro:bit als Stoppuhr. Miss dazu die Zeit vom ersten Drücken der Taste A bis zum zweiten Drücken der Taste A. Zeige diese Zeit in Sekunden am Display an. | Programmiere den micro:bit als Stoppuhr. Miss dazu die Zeit vom ersten Drücken der Taste A bis zum zweiten Drücken der Taste A. Zeige diese Zeit in Sekunden am Display an. | ||
====Hinweis 1: Überlege dir, wie eine Stoppuhr die Zeitdauer misst ==== | |||
====Hinweis 1: Überlege dir wie eine Stoppuhr die Zeitdauer misst ==== | Im micro:bit ist eine Uhr eingebaut, aber keine Stoppuhr. Überlege, wie du eine Zeit stoppst, wenn du eine Uhr besitzt, aber keine Stoppuhr. Zum Beispiel bei einem Rennen. | ||
Im micro:bit ist eine Uhr eingebaut, aber keine Stoppuhr. Überlege wie du eine Zeit stoppst wenn du eine Uhr besitzt, aber keine Stoppuhr. Zum Beispiel bei einem Rennen. | |||
<spoiler text="Lösung"> | <spoiler text="Lösung"> | ||
Siehe zuerst beim Start auf die Uhr und merke dir die Zeit. Siehe dann im Ziel auf die Uhr und ziehe die Startzeit von der Zielzeit ab. | |||
zum Beispiel: | zum Beispiel: | ||
Zeile 47: | Zeile 46: | ||
Also die Uhrzeit 6:55 entspricht 24 900 000 Millisekunden | Also die Uhrzeit 6:55 entspricht 24 900 000 Millisekunden | ||
Diese Zahl | Diese Zahl ist sehr groß und damit nicht einfach beim Rechnen. Dem micro:bit machen große Zahlen allerdings nichts aus. Er rechnet mit diesen genauso, wie wir mit kleinen Zahlen. | ||
ACHTUNG: Die Zeit des micro:bits entspricht nicht der momentanen Uhrzeit. Der micro:bit startet seine innere Uhr immer bei 00:00 wenn er eingeschaltet wird. Das ändert aber nichts an der Differenz von Start- und Zielzeit. | ACHTUNG: Die Zeit des micro:bits entspricht nicht der momentanen Uhrzeit. Der micro:bit startet seine innere Uhr immer bei 00:00 wenn er eingeschaltet wird. Das ändert aber nichts an der Differenz von Start- und Zielzeit. | ||
</spoiler> | </spoiler> | ||
====Hinweis 2: Erstelle eine vereinfachte Version des Programmes==== | ====Hinweis 2: Erstelle eine vereinfachte Version des Programmes==== | ||
Zeile 59: | Zeile 57: | ||
<spoiler text="Programmcode"> | <spoiler text="Programmcode"> | ||
<pre id="pre01"> | |||
let Startzeit = 0 | |||
input.onButtonPressed(Button.A, function () { | |||
Startzeit = input.runningTime() | |||
}) | |||
</pre> | |||
</spoiler> | </spoiler> | ||
Durch das Drücken der Taste B wird der Stoppvorgang abgeschlossen. Ziehe die Startzeit von der aktuellen Zeit ab um die gestoppte Zeit zu erhalten. Zeige nun die gestoppte Zeit auf der LED-Matrix an. | Durch das Drücken der Taste B wird der Stoppvorgang abgeschlossen. Ziehe die Startzeit von der aktuellen Zeit ab um die gestoppte Zeit zu erhalten. Zeige nun die gestoppte Zeit auf der LED-Matrix an. | ||
<spoiler text="Programmcode"> | <spoiler text="Programmcode"> | ||
<pre id="pre01"> | |||
let gestoppte_Zeit = 0 | |||
input.onButtonPressed(Button.B, function () { | |||
let Startzeit = 0 | |||
gestoppte_Zeit = input.runningTime() - Startzeit | |||
basic.showNumber(gestoppte_Zeit) | |||
}) | |||
</pre> | |||
</spoiler> | </spoiler> | ||
Die gestoppte Zeit ist sehr groß, da sie in Millisekunden angezeigt wird. Um die gestoppte Zeit in Sekunden, statt in Millisekunden anzuzeigen, rechne die gestoppte Zeit durch 1000. Statt des Kommas wird ein Punkt angezeigt, da der micro:bit aus England kommt. | Die gestoppte Zeit ist sehr groß, da sie in Millisekunden angezeigt wird. Um die gestoppte Zeit in Sekunden, statt in Millisekunden anzuzeigen, rechne die gestoppte Zeit durch 1000. Statt des Kommas wird ein Punkt angezeigt, da der micro:bit aus England kommt. | ||
<spoiler text="Programmcode"> | <spoiler text="Programmcode"> | ||
<pre id="pre01"> | |||
let gestoppte_Zeit = 0 | |||
input.onButtonPressed(Button.B, function () { | |||
let Startzeit = 0 | |||
gestoppte_Zeit = input.runningTime() - Startzeit | |||
basic.showNumber(gestoppte_Zeit / 1000) | |||
}) | |||
</pre> | |||
</spoiler> | </spoiler> | ||
====Hinweis 3: Steuere deine Stoppuhr nur mit der Taste A==== | ====Hinweis 3: Steuere deine Stoppuhr nur mit der Taste A==== | ||
Zeile 80: | Zeile 100: | ||
<spoiler text="Programmcode"> | <spoiler text="Programmcode"> | ||
<pre id="pre01"> | |||
input.onButtonPressed(Button.A, function () { | |||
if (gestartet == 0) { | |||
Startzeit = input.runningTime() | |||
gestartet = 1 | |||
} else { | |||
gestoppte_Zeit = input.runningTime() - Startzeit | |||
basic.showNumber(gestoppte_Zeit / 1000) | |||
gestartet = 0 | |||
} | |||
}) | |||
let gestoppte_Zeit = 0 | |||
let Startzeit = 0 | |||
let gestartet = 0 | |||
gestartet = 0 | |||
</pre> | |||
</spoiler> | </spoiler> | ||
Zeile 86: | Zeile 124: | ||
<spoiler text="Kurzer Code für Profis"> | <spoiler text="Kurzer Code für Profis"> | ||
<pre id="pre01"> | |||
input.onButtonPressed(Button.A, function () { | |||
if (Startzeit == -1) { | |||
Startzeit = input.runningTime() | |||
} else { | |||
basic.showNumber((input.runningTime() - Startzeit) / 1000) | |||
Startzeit = -1 | |||
} | |||
}) | |||
let Startzeit = 0 | |||
Startzeit = -1 | |||
</pre> | |||
</spoiler> | </spoiler> | ||
Zeile 92: | Zeile 145: | ||
<spoiler text="Ersetze Punkt durch Komma"> | <spoiler text="Ersetze Punkt durch Komma"> | ||
<pre id="pre01"> | |||
input.onButtonPressed(Button.A, function () { | |||
if (gestartet == 0) { | |||
Startzeit = input.runningTime() | |||
gestartet = 1 | |||
} else { | |||
gestoppte_Zeit = input.runningTime() - Startzeit | |||
basic.showString("" + Math.trunc(gestoppte_Zeit / 1000) + "," + gestoppte_Zeit % 1000) | |||
gestartet = 0 | |||
} | |||
}) | |||
let gestoppte_Zeit = 0 | |||
let Startzeit = 0 | |||
let gestartet = 0 | |||
gestartet = 0 | |||
</pre> | |||
</spoiler> | </spoiler> | ||
Das funktioniert genauso mit dem kurzen Code. | Das funktioniert genauso mit dem kurzen Code. | ||
das fertige Programm findest du unter [https://makecode.microbit.org/_XVw9H2dRaKdJ MakeCode]. | das fertige Programm findest du unter [https://makecode.microbit.org/_XVw9H2dRaKdJ MakeCode]. | ||
<htmlet>makecode_embed</htmlet> |
Aktuelle Version vom 12. Dezember 2021, 12:58 Uhr
Hilfestellung und Lösung zur Aufgabe Stoppuhr
Programmiere den micro:bit als Stoppuhr. Miss dazu die Zeit vom ersten Drücken der Taste A bis zum zweiten Drücken der Taste A. Zeige diese Zeit in Sekunden am Display an.
Hinweis 1: Überlege dir, wie eine Stoppuhr die Zeitdauer misst
Im micro:bit ist eine Uhr eingebaut, aber keine Stoppuhr. Überlege, wie du eine Zeit stoppst, wenn du eine Uhr besitzt, aber keine Stoppuhr. Zum Beispiel bei einem Rennen.
Hinweis 2: Erstelle eine vereinfachte Version des Programmes
Darin startest du die Stoppuhr mit der Taste A und stoppst sie mit der Taste B.
Dabei merkt sich der micro:bit den Zeitpunkt an der die Taste A gedrückt wird. Verwende hierfür eine Variable.
Durch das Drücken der Taste B wird der Stoppvorgang abgeschlossen. Ziehe die Startzeit von der aktuellen Zeit ab um die gestoppte Zeit zu erhalten. Zeige nun die gestoppte Zeit auf der LED-Matrix an.
Die gestoppte Zeit ist sehr groß, da sie in Millisekunden angezeigt wird. Um die gestoppte Zeit in Sekunden, statt in Millisekunden anzuzeigen, rechne die gestoppte Zeit durch 1000. Statt des Kommas wird ein Punkt angezeigt, da der micro:bit aus England kommt.
Hinweis 3: Steuere deine Stoppuhr nur mit der Taste A
Um die Stoppuhr nur mit der Taste A zu bedienen, muss sich der micro:bit merken, ob die Taste A bereits gedrückt wurde. Je nachdem zeigt der micro:bit die Zeitdauer an, oder speichert die Startzeit. Mithilfe von Variablen merkt sich der micro:bit vergangene Ereignisse. Erstelle eine Variable gestartet, die sich merkt, ob die Stoppuhr bereits gestartet wurde. Stelle diese Variable auf 0 wenn die Stoppuhr noch nicht gestartet wurde und stelle sie auf 1, wenn die Stoppuhr gestartet wurde.
Füge in die Bedingung Wenn gestartet = 0 den Programmteil, der beim Start des Stoppvorgang passiert ein. Im Bereich ansonsten den Programmteil, der beim Ende des Stoppvorgang passiert. Stelle die Variable gestartet nach Ende des Stoppvorgang wieder auf 0, damit das Programm neu startet.
Nimm die Variable Startzeit um festzustellen, ob die Taste A bereits gedrückt wurde, damit dein Code kürzer wird.
Um den Punkt durch ein Komma zu ersetzen, rechne die Zahl vor dem Komma und die Zahl hinter dem Komma aus. Verwende den verbinde Baustein, um die beiden Zahlen mit einem Komma dazwischen zu verbinden.
Das funktioniert genauso mit dem kurzen Code. das fertige Programm findest du unter MakeCode.