Stoppuhr: Unterschied zwischen den Versionen

Aus microbit - Das Schulbuch
Zur Navigation springen Zur Suche springen
Sabine.mader (Diskussion | Beiträge)
Martin.teufel (Diskussion | Beiträge)
 
(82 dazwischenliegende Versionen von 6 Benutzern werden nicht angezeigt)
Zeile 1: Zeile 1:
== [[Datei:Icon_story.png|20px|Icon]] Welches Stopp-Faible hast du? ==
== [[Datei:Icon_story.png|20px|Icon]] Stoppe die Zeit! ==






[[File:Stoppuhren.jpg|300px|border|Stoppuhren]]
<!-- [[File:Stoppuhren.jpg|300px|border|Stoppuhren]] -->
 
[[File:Ampel.jpg|300px|border|Stoppuhren]]


Bernd und Lukas müssen auf ihrem gemeinsamen Schulweg mehrere Straßen überqueren, die von Ampeln geregelt sind.  
Bernd und Lukas müssen auf ihrem gemeinsamen Schulweg mehrere Straßen überqueren, die von Ampeln geregelt sind.  
Wie immer ist die Ampel auf Rot und es dauert schier unendlich lang, bis die Straße überquert werden kann.
Wie so oft ist die Ampel auf Rot und es dauert schier unendlich lang, bis die Straße überquert werden kann.
* Lukas und Bern wollen wissen, ob diese Rotphase der Ampeln immer gleich lang ist. Eine Stoppuhr ist gefragt.
Lukas und Bernd wollen wissen, ob diese Rotphase der Ampeln immer gleich lang ist. Eine Stoppuhr ist gefragt.
* Lässt sich mit dem micro:bit eine Stoppuhr programmieren? Was meinst du?  
* Lässt sich mit dem BBC micro:bit eine Stoppuhr programmieren? Was meinst du?  
* Wie könnte das funktionieren?
* Wie könnte das funktionieren?
* Zum Zeitvertreib während des Wartens überlegen sie, wie lange es dauert, bis ein rotes Auto vorbeifährt?  
* Wo könnte die BBC micro:bit-Stoppuhr im Schulalltag und im täglichen Leben eingesetzt werden?
Jede Menge lustige Ideen für statistische Aufgaben ist gegeben.


== [[Datei:Icon_gluehbirne.png|20px|Icon]] Deine Aufgabe ==
== [[Datei:Icon_gluehbirne.png|20px|Icon]] Aufgabenstellung ==


[[File:Stoppuhrgrafik.png|right|100px|border|Stoppuhr]]


* Entwickle den micro:bit zu einer Stoppuhr.
* Der micro:bit berechnet den Zeitunterschied zwischen Start und Stopp und gibt ihn aus.
* Der micro:bit soll den Zeitunterschied zwischen Start und Stop berechnen und ausgeben.
* Starte die Stoppuhr durch die Taste A.
* Wenn die Taste A gedrückt wird, startet die Stoppuhr.
* Die Stoppuhr stoppt und gibt die Dauer der Zeitspanne bei erneutem Dücken der Taste A an.
* Wird die Taste A erneut gedrückt, stoppt die Stoppuhr und zeigt die Dauer der Zeitspanne an.
* Welche Materialien brauchst du, um dieses Projekt umzusetzen?
* Welche Materialien brauchst du, um dieses Projekt umsetzen zu können?
* Finde eine Möglichkeit, die micro:bit-Stoppuhr umzuhängen oder zu tragen.
* Überlege auch eine Möglichkeit, wie du die micro:bit Stoppuhr umhängen oder tragen kannst.


[[File:Stoppuhrgrafik.png|100px|border|Stoppuhr]]
<!--[[File:Stoppuhrgrafik.png|100px|border|Stoppuhr]]-->


== [[Datei:Icon_story.png|20px|Icon]] Mögliche Materialliste  ==
== [[Datei:Icon_story.png|20px|Icon]] Materialien ==


   
   
* micro:bit  
* micro:bit  
* Powerpack
* 2 AAA-Batterien
* Computer mit Internetanschluss
* Karton oder Bastelfilz  
* Karton oder Bastelfilz  
* doppelseitiges Klebeband
* doppelseitiges Klebeband
* Verschlüsse (Magnet, Klett,…)  
* Verschlüsse (Magnet, Klett,…)  
* Bastelfilz
* Schlüsselband
* Schlüsselband


Zeile 51: Zeile 45:
== [[Datei:Icon_brain.png|20px|Icon]] Kompetenzen ==
== [[Datei:Icon_brain.png|20px|Icon]] Kompetenzen ==


Du lernst...
Du solltest bereits
[[Datei:Kompetenzpuzzle.jpg|200px|]]
 
* mit verschiedenen Materialien zu arbeiten
* den micro:bit mit dem Computer verbinden können.
* eine mathematische Aufgabe zu analysieren und zu strukturieren  
* ein Programm auf den micro:bit übertragen können.
* eine Programmiersprache anzuwenden
 
* das Projekt zu reflektieren und zu präsentieren
Du lernst
<!--[[Datei:Kompetenzpuzzle.jpg|200px|]]-->
* mit verschiedenen Materialien zu arbeiten.
* eine mathematische Aufgabe zu analysieren und zu strukturieren.
* eine Programmiersprache anzuwenden.
* das Projekt zu reflektieren und zu präsentieren.


* Programmierung:
Programmierung:
** logische Funktionen zu verwenden
Du lernst bzw. übst
** Sekunden in Millisekunden umrechnen zu lassen
* das Verwenden logischer Funktionen.
** Division mit Rest ausführen lassen
* das Umrechnen von Millisekunden in Sekunden.
* das Ausführen einer Divisionen mit dem Computer.
* den Zugriff auf die innere Uhr des micro:bits.


== [[Datei:Icon faecher.png|20px|Icon]] Unterrichtsfächer ==
== [[Datei:Icon faecher.png|20px|Icon]] Unterrichtsfächer ==
Zeile 72: Zeile 72:
== [[Datei:Icon_hilfe.png|20px|Icon]] Tipps und Hilfestellungen ==
== [[Datei:Icon_hilfe.png|20px|Icon]] Tipps und Hilfestellungen ==


Programmiere den micro:bit als Stoppuhr, sodass die Zeitspanne vom ersten Tastendruck auf die Taste A bis zum zweiten Tastendruck auf die Taste A gemessen und am Display angezeigt wird.
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.
=== Elemente der Programmierung ===


[[Variable]], [[Mathematische Operationen]], [[Zufallswerte]], [[Verzweigung]]
=== Erforderliche Programmierblöcke ===


=== Eckpfeiler zur Umsetzung ===
Folgende Programmierblöcke helfen dir bei der Umsetzung:


* Programmiere den Micro:bit den Zufallsgenerator so, dass durch Drücken der Taste A ein Wert "wahr" oder "falsch" ermittelt wird.
[[Variable]], [[mathematische Operationen]], [[Logik-Funktionen]], [[Textausgabe]]


[[Datei:Bild 20180424 022938.png|400px ]]
* Um mit der Taste A die Stoppuhr zu starten, verwende das Ereignis „Wenn Knopf A gedrückt“.
* Nutze die logische Funktion „Wenn ... dann ... ansonsten“ um festzustellen ob die Stoppuhr starten oder die gestoppte Zeit angezeigt werden soll.
<pre id="pre01">
input.onButtonPressed(Button.A, function () {
    if (true) {
   
    } else {
   
    }
})


* Wenn Taster A Auslöser für eine Anzeige sein soll, benötigt man das Ereignis "Wenn Knopf A gedrückt!"
</pre>
* Dabei soll ein Zufallswert durch "Wähle zufälligen Wahr- und Falsch-Wert" aus dem Menü '''Mathematik''' ermitteln werden.
* Wird Wahr ermittelt, so soll der Buchstabe "K" für Kopf erscheinen, andernfalls "Z" für Zahl.
* Hier benötigt man die logische Verzweigung "Wenn ... dann ... sonst"


[[Datei:Bild 20180424 023529.png|400px ]]
* Erhalte mit dem Block Laufzeit (ms) Zugriff auf die innere Uhr des micro:bit. Diese startet mit dem Start des micro:bit bei 0 und misst die Zeit seit dem Start in Millisekunden.
[[Datei:Laufzeit.png|200px ]]


* Für die Ausgabe der Zeitdauer mit Komma benötigst du den folgenden Textausgabeblock:
[[Datei:Textausgabe.png|200px ]]


'''Dadurch kann man nun durch Drücken der Taste A einen Zufallswert aufrufen.'''
=== Eckpfeiler zur Programmierung ===


* Überlege wie der micro:bit die Zeitdauer zwischen dem ersten Tastendruck und dem zweiten Tastendruck berechnet. Der micro:bit merkt sich vergangene Werte mithilfe von Variablen.
* Erstelle zuerst ein Programm in dem du die Zeit mit der Taste A startest und mit der Taste B stoppst. Das ist einfacher zu Programmieren.
* Rechne die Laufzeit (ms) durch 1000 um Sekunden zu erhalten.
* Um die Stoppuhr nur mit der Taste A zu bedienen muss sich der micro:bit merken ob die Taste A bereits gedrückt wurde oder nicht. Je nachdem zeigt der micro:bit die Zeitdauer an oder speichert die Startzeit. Mithilfe von Variablen kann sich der micro:bit auch vergangene Ereignisse merken. <spoiler text="Beispiel">Erstelle zum Beispiel eine Variable "gestartet" und setze diese zu Beginn des Programms auf 0. Das bedeutet dann, das die Stoppuhr noch nicht gestartet ist. Wenn das erste Mal die Taste A gedrückt wurde setze diese Variable auf 1. Das bedeutet, dass die Stoppuhr bereits gestartet wurde. Damit weiß der micro:bit ob die Stoppuhr bereits gestartet wurde oder nicht. Eine "Wenn - ansonsten" Abfrage startet dann den richtigen Programmteil. Du kannst aber auch eine bereits vorhandene Variable verwenden, um ein eleganteres Ergebnis zu erhalten.</spoiler>


* Erweiterung durch Animation (Intro):
** Es sollten 2 Bilder als Animation für den Start nacheinander erscheinen (Count-Down-Anzeige = Intro)


[[Datei:Bild 20180424 024428.png|400px ]]
===[[Stoppuhr Lösung|Schritt für Schritt zur Lösung]]===
:Hinweise zur Lösungsfindung und auch eine mögliche, komplette Lösung findest du auf der [[Stoppuhr Lösung|Lösungsseite]] zu diesem Beispiel.


==[[Datei:icon_plus.png|20px|Icon]] Optionen und Erweiterungen ==
Eine mögliche Lösung findest du hier: <spoiler text="Lösung">
<pre id="pre01">
let start = 0
let d = 0
let sec = 0
let msec = 0
input.onButtonPressed(Button.A, function () {
    if (!(start)) {
        start = input.runningTime()
    } else {
        d = input.runningTime() - start
        start = 0
        sec = Math.idiv(d, 1000)
        msec = d % 1000
        basic.clearScreen()
        basic.showString("" + sec + "." + msec)
    }
})




* Man sollte nun mitzählen können, wie oft wurde welcher Wert erzeugt wurde - dadurch würde man sich die Strichliste sparen
** Lege eine Zählvariable an.
** Jedesmal, wenn beispielsweise Kopf "geworfen" wird, sollte diese Variable hochgezählt werden.
** Diese Variable könnte dann mit der Taste B angezeigt werden (Befehl: Zeige Nummer ...)
** So kannst du immer schnell feststellen, wie viele man Kopf geworfen wurde


Allerdings:
* Man muss mitzahlen, wie oft man die Taste A insgesamt gedrückt hat:
** Das wäre auch noch mit einer Variable zu zählen?


Erweiterung für Neugierige:
</pre>
* Schleife: du kannst mit einer Schleife nicht nur einen Wurf produzieren, sondern gleich 100 oder gar 1000 Würfe produzieren.
</spoiler>


Die Frage an die ProfiprogrammiererIn:
==[[Datei:presentation.png|20px|Icon]] Präsentation und Reflexion ==
* Was stellt dieser Programmcode dar?
[[Datei:Bild 20180329 222942 1.png|800px]]


==[[Datei:presentation.png|20px|Icon]] Reflexion und Präsentation==
* Stelle deine Stoppuhr vor! Funktioniert sie wie gewünscht?
 
===Allgemein===
* Stelle dein Ergebnis vor! Was kann dein Projekt?  
* Was hat dir bei der Entwicklung deines Produkts gefallen?  
* Was hat dir bei der Entwicklung deines Produkts gefallen?  
* Welche Schwierigkeiten hast du gehabt? Wie konntest du diese lösen?
* Welche Schwierigkeiten sind aufgetreten? Wie konntest du sie lösen?  
* Erläutere, wie du dein Produkt programmiert hast!
* Erläutere, wie du dein Produkt programmiert hast!
* Was war bei dieser Aufgabenbearbeitung interessant für dich?
* Was war bei dieser Aufgabe neu oder interessant für dich?
* In welchen Situationen verwendest du gerne eine Stoppuhr? Lässt sich die micro:bit-Stoppuhr hiefür einsetzen?
* Welche besonderen Stoppuhren mit Timerfunktionen tragen viele Menschen?
 
==[[Datei:icon_plus.png|20px|Icon]] Weiterentwicklung ==


===Projektspezifisch===
* Programmiere deine Stoppuhr so, dass du die Tasten A und B verwendest.
* Erweitere deine Stoppuhr so, dass während des Stoppvorganges im Sekundentakt am Display ein Symbol erscheint. <spoiler text="Hinweis"> Mögliche Lösung für die Anzeige von Zufallszahlen:[[Datei:Zufallszahlen.PNG|border|800px|]]</spoiler>
* Lasse nach der Anzeige der Stoppzeit am Display ein akustisches Signal ertönen.
* Zeige Zwischenzeiten an, während die Stoppuhr im Hintergrund weiterläuft.


* Welche Regeln wurden für diesen Versuch festgelegt?
<htmlet>makecode_embed</htmlet>
* Wie hast du dich auf diese Simulation vorbereitet?
* Welche Diskussionspunkte ergaben sich während des Spiels?
* Wo wird im Alltag mit Zufallsgenerator gearbeitet (wo ist man auf Zufall angewiesen)?
* Bei welcher Erweiterungsstufe war es am schwierigsten, einen Programmcode zu erstellen.

Aktuelle Version vom 17. Mai 2022, 07:51 Uhr

Icon Stoppe die Zeit!

Stoppuhren

Bernd und Lukas müssen auf ihrem gemeinsamen Schulweg mehrere Straßen überqueren, die von Ampeln geregelt sind. Wie so oft ist die Ampel auf Rot und es dauert schier unendlich lang, bis die Straße überquert werden kann. Lukas und Bernd wollen wissen, ob diese Rotphase der Ampeln immer gleich lang ist. Eine Stoppuhr ist gefragt.

  • Lässt sich mit dem BBC micro:bit eine Stoppuhr programmieren? Was meinst du?
  • Wie könnte das funktionieren?
  • Wo könnte die BBC micro:bit-Stoppuhr im Schulalltag und im täglichen Leben eingesetzt werden?

Icon Aufgabenstellung

  • Der micro:bit berechnet den Zeitunterschied zwischen Start und Stopp und gibt ihn aus.
  • Starte die Stoppuhr durch die Taste A.
  • Die Stoppuhr stoppt und gibt die Dauer der Zeitspanne bei erneutem Dücken der Taste A an.
  • Welche Materialien brauchst du, um dieses Projekt umzusetzen?
  • Finde eine Möglichkeit, die micro:bit-Stoppuhr umzuhängen oder zu tragen.


Icon Materialien

  • micro:bit
  • Karton oder Bastelfilz
  • doppelseitiges Klebeband
  • Verschlüsse (Magnet, Klett,…)
  • Schlüsselband

Icon Zeitaufwand

  • 2 Unterrichtseinheiten

Icon Schwierigkeitsgrad

borderlessborderlessborderless

Icon Kompetenzen

Du solltest bereits

  • den micro:bit mit dem Computer verbinden können.
  • ein Programm auf den micro:bit übertragen können.

Du lernst

  • mit verschiedenen Materialien zu arbeiten.
  • eine mathematische Aufgabe zu analysieren und zu strukturieren.
  • eine Programmiersprache anzuwenden.
  • das Projekt zu reflektieren und zu präsentieren.

Programmierung: Du lernst bzw. übst

  • das Verwenden logischer Funktionen.
  • das Umrechnen von Millisekunden in Sekunden.
  • das Ausführen einer Divisionen mit dem Computer.
  • den Zugriff auf die innere Uhr des micro:bits.

Icon Unterrichtsfächer

  • Mathematik
  • Informatik
  • Deutsch (Kommunikation, Präsentation)

Icon Tipps und Hilfestellungen

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.

Erforderliche Programmierblöcke

Folgende Programmierblöcke helfen dir bei der Umsetzung:

Variable, mathematische Operationen, Logik-Funktionen, Textausgabe

  • Um mit der Taste A die Stoppuhr zu starten, verwende das Ereignis „Wenn Knopf A gedrückt“.
  • Nutze die logische Funktion „Wenn ... dann ... ansonsten“ um festzustellen ob die Stoppuhr starten oder die gestoppte Zeit angezeigt werden soll.
input.onButtonPressed(Button.A, function () {
    if (true) {
    	
    } else {
    	
    }
})

  • Erhalte mit dem Block Laufzeit (ms) Zugriff auf die innere Uhr des micro:bit. Diese startet mit dem Start des micro:bit bei 0 und misst die Zeit seit dem Start in Millisekunden.

  • Für die Ausgabe der Zeitdauer mit Komma benötigst du den folgenden Textausgabeblock:

Eckpfeiler zur Programmierung

  • Überlege wie der micro:bit die Zeitdauer zwischen dem ersten Tastendruck und dem zweiten Tastendruck berechnet. Der micro:bit merkt sich vergangene Werte mithilfe von Variablen.
  • Erstelle zuerst ein Programm in dem du die Zeit mit der Taste A startest und mit der Taste B stoppst. Das ist einfacher zu Programmieren.
  • Rechne die Laufzeit (ms) durch 1000 um Sekunden zu erhalten.
  • Um die Stoppuhr nur mit der Taste A zu bedienen muss sich der micro:bit merken ob die Taste A bereits gedrückt wurde oder nicht. Je nachdem zeigt der micro:bit die Zeitdauer an oder speichert die Startzeit. Mithilfe von Variablen kann sich der micro:bit auch vergangene Ereignisse merken. <spoiler text="Beispiel">Erstelle zum Beispiel eine Variable "gestartet" und setze diese zu Beginn des Programms auf 0. Das bedeutet dann, das die Stoppuhr noch nicht gestartet ist. Wenn das erste Mal die Taste A gedrückt wurde setze diese Variable auf 1. Das bedeutet, dass die Stoppuhr bereits gestartet wurde. Damit weiß der micro:bit ob die Stoppuhr bereits gestartet wurde oder nicht. Eine "Wenn - ansonsten" Abfrage startet dann den richtigen Programmteil. Du kannst aber auch eine bereits vorhandene Variable verwenden, um ein eleganteres Ergebnis zu erhalten.</spoiler>


Schritt für Schritt zur Lösung

Hinweise zur Lösungsfindung und auch eine mögliche, komplette Lösung findest du auf der Lösungsseite zu diesem Beispiel.

Eine mögliche Lösung findest du hier: <spoiler text="Lösung">

let start = 0
let d = 0
let sec = 0
let msec = 0
input.onButtonPressed(Button.A, function () {
    if (!(start)) {
        start = input.runningTime()
    } else {
        d = input.runningTime() - start
        start = 0
        sec = Math.idiv(d, 1000)
        msec = d % 1000
        basic.clearScreen()
        basic.showString("" + sec + "." + msec)
    }
})




</spoiler>

Icon Präsentation und Reflexion

  • Stelle deine Stoppuhr vor! Funktioniert sie wie gewünscht?
  • Was hat dir bei der Entwicklung deines Produkts gefallen?
  • Welche Schwierigkeiten sind aufgetreten? Wie konntest du sie lösen?
  • Erläutere, wie du dein Produkt programmiert hast!
  • Was war bei dieser Aufgabe neu oder interessant für dich?
  • In welchen Situationen verwendest du gerne eine Stoppuhr? Lässt sich die micro:bit-Stoppuhr hiefür einsetzen?
  • Welche besonderen Stoppuhren mit Timerfunktionen tragen viele Menschen?

Icon Weiterentwicklung

  • Programmiere deine Stoppuhr so, dass du die Tasten A und B verwendest.
  • Erweitere deine Stoppuhr so, dass während des Stoppvorganges im Sekundentakt am Display ein Symbol erscheint. <spoiler text="Hinweis"> Mögliche Lösung für die Anzeige von Zufallszahlen:</spoiler>
  • Lasse nach der Anzeige der Stoppzeit am Display ein akustisches Signal ertönen.
  • Zeige Zwischenzeiten an, während die Stoppuhr im Hintergrund weiterläuft.