The Queens Cupcake: Unterschied zwischen den Versionen

Aus microbit - Das Schulbuch
Zur Navigation springen Zur Suche springen
Die Seite wurde neu angelegt: „== 20px|Icon Übertragen von Geheimcode I == 300px|right Hallo, ich bin Robi-x01 und ich möchte mich…“
 
Keine Bearbeitungszusammenfassung
Zeile 1: Zeile 1:
== [[Datei:Icon_story.png|20px|Icon]] Übertragen von Geheimcode I ==
== [[Datei:Icon_story.png|20px|Icon]] Geschichte ==


[[Datei:Robo_mbit_morse.gif|300px|right]]  
[[Datei:Frostwaechter2.jpeg|400px|right]]  
Hallo, ich bin Robi-x01 und ich möchte mich mit meiner Freundin unterhalten können, ohne dass dies jemand anderer versteht. Dazu verwenden wir eine Geheimsprache namens Morsecode. Diese Sprache hat genauso 2 Zeichen, einen Punkt und einen Strich.
Es war einmal...
* Wie soll das klappen?
 
* Wir werden den Micro:bit hier verwenden, um Informationen zu übertragen.
 
* Der Morsecode hatte früher eine große Bedeutung in der Nachrichtenübertragung. Lies dazu und zur Entstehung in Wikipedia [https://de.wikipedia.org/wiki/Morsecode **Morsecode**] nach.
 
* Eine erste Begrüßung an dich, verstehst du das? [[Datei:Gruss.png|50%]]
 
Wenn man Geheimsprache vereinbart, dann muss der Sender und der Empfänger genau dieselbe Verschlüsselung und Entschlüsselung verwenden. Dazu gibt es Tabellen, die diese Schlüssel verraten. Unterhalb siehst eine solche Tabelle, die Morse-Tabelle. Diese Schlüsseltabelle dürfen bei Geheimprojekten natürlich nur der Sender und der Empfänger haben.


== [[Datei:Icon_gluehbirne.png|20px|Icon]] Aufgabenstellung  ==
== [[Datei:Icon_gluehbirne.png|20px|Icon]] Aufgabenstellung  ==
[[Datei:Morsetaster.jpg|right|500px|Morsegerät historisch]]
Mithilfe von zwei BBC Micro:bit wird die Temperatur gemessen und angezeigt. Dazu schickt ein BBC Micro:bit dauerhaft die Temperatur an einem zweiten. Dieser zeigt die gemessene Temperatur an.
Mit dem BBC micro:bit wirst du Morsezeichen anzeigen und auch übertragen. Entwickle ein Programm mit dem man eine Morsekombination für einen Buchstaben oder ein Wort anzeigen und versenden kann.
Wenn die Temperatur unter 0 Grad fällt, soll ein Warnton ausgegeben werden.  
 
Der Akku soll dabei möglichst lange halten.
Folgende Aufgaben sollte dieses Programm ausführen können:
 
* Das Drücken der Taste A sollte einen Morsepunkt aussenden (.)
* Die Taste B sollte einen Morsestrich aussenden (-)
* Beim Empfänger sollten diese Symbole angezeigt werden
* Mehrere Morsesymbole (Punkte und Striche) ergeben einen Buchstaben - nun muss man noch mitteilen, wann ein Buchstabe abgeschlossen ist und der nächste beginnt,  - das passiert über eine Pause von etwa 1 Sekunde
* Damit haben wir einen einfachen Morseapparat
* Hier abgebildet ein echtes Morsegerät, wie es Jahre verwendet wurde:
 
* Durch schnelles Öffnen und Schließen des Stromkreises wurden elektrische Signale übersendet: Ein kurzes Signal entspricht dem Punkt, langes entspricht dem Strich.
 
* Die Regelmäßigkeit des Drückens der Tasten hat hier große Bedeutung für das Erkennen von Morsezeichen.
* Man muss extrem konzentriert arbeiten, damit man dem Gegenüber keine unlesbare Fehlernachricht übermittelt.


== [[Datei:icon_material.png|20px|Icon]] Materialien ==
== [[Datei:icon_material.png|20px|Icon]] Materialien ==
[[Datei:morse-tab.png|thumb|500px|Morsetabelle]]
* Zwei BBC Micro:bit (Version V2 oder V1 mit Lautsprecher für die Soundausgabe)
* Zwei BBC Micro:bit (Version V2 oder V1 mit Lautsprecher oder Kopfhörer)
* Papier und Stift
* Das gedruckte Morsealphabet (ausdruckbar mit der rechten Maustaste und "Grafik kopieren" und drucken)


== [[Datei:icon_sanduhr.png|20px|Icon]] Zeitaufwand ==
== [[Datei:icon_sanduhr.png|20px|Icon]] Zeitaufwand ==


* 2 Unterrichtseinheit
* 1-2 Unterrichtseinheit(en)


== [[Datei:Icon_puzzle3.png|20px|Icon]] Schwierigkeitsgrad ==
== [[Datei:Icon_puzzle3.png|20px|Icon]] Schwierigkeitsgrad ==
Zeile 47: Zeile 22:
== [[Datei:Icon_brain.png|20px|Icon]] Kompetenzen ==
== [[Datei:Icon_brain.png|20px|Icon]] Kompetenzen ==


[[Datei:SOS_svg_gruen.png|thumb|400px|Das wichtigste Morsewort]]
Du solltest bereits  
Du solltest bereits  
* Daten mit dem Micro:bit anzeigen können
* Daten mit dem Micro:bit übertragen können
* Tastenfunktionen (A und B) verwenden können
* Bedingte Anweisungen kennen




Beim Programmieren lernst bzw. übst du
Beim Programmieren lernst bzw. übst du


* [[Variable]] zu verwenden
* [[Operatoren]] zu verwenden
* [[Bedingungen]] zu verwenden
* [[Funkverbindungen]] aufzunehmen
* [[Funkverbindungen]] aufzunehmen
* [[Funksignale]] zu empfangen
* [[Funksignale]] zu empfangen
* [[Bedingungen]] zu verwenden
* die Soundausgabe zu verwenden


Bei dieser Aufgabe lernst du auch  
Bei dieser Aufgabe lernst du auch  
* ein System für eine exakte Kommunikation zu entwerfen
* ein neues Programm zu erstellen
* ein neues Programm zu erstellen
* ein fremdes Programm zu lesen und zu ändern


== [[Datei:Icon faecher.png|20px|Icon]] Unterrichtsfächer ==
== [[Datei:Icon faecher.png|20px|Icon]] Unterrichtsfächer ==
Zeile 70: Zeile 41:
* Werken
* Werken
* Informatik
* Informatik
* Deutsch
* Physik
* Physik


== [[Datei:Icon_hilfe.png|20px|Icon]] Tipps und Hilfestellungen ==
== [[Datei:Icon_hilfe.png|20px|Icon]] Tipps und Hilfestellungen ==
[[Datei:Morse_d2.gif|thumb|Welcher Buchstabe wird hier im Bild angezeigt?]]
=== Erforderliche Programmierblöcke ===
=== Erforderliche Programmierblöcke ===
==== Ziel ====  
==== Ziel ====  


* Nach Programmstart sollte ein Symbol zeigen, dass der Micro:bit bereit ist
* Nach Programmstart soll ein beliebiges Symbol zeigen, dass der Micro:bit, der die Temperatur misst, eingeschaltet ist.
* '''Taste A''' soll einen Punkt, '''Taste B''' einen Strich auf das Display schicken
* Um den Akku zu schonen, soll dieses Symbol möglichst schwach leuchten.
* Per Funk sollte das Zeichen versendet werden
* Die Temperatur soll fortlaufend gemessen werden und alle 5 Minuten an einen weiteren Micro:bit gesendet werden.
* Beim Empfänger soll das Zeichen angezeigt werden
* Beim einem weiteren Micro:bit soll die Temperatur angezeigt werden.
* Erweiterung: Es sollte ein ganzes Wort versendet werden
* Falls die Temperatur unter 0 Grad sinkt, soll ein Alarmton beim Empfänger abgespielt werden.
 


==== Blöcke ====
==== Blöcke ====


* Ein Morsezeichen (. oder -) sollte per Tastendruck angezeigt werden <spoiler text="Block">
* Zwei Micro:bit sollen mit Funk verbunden werden. <spoiler text="Block">
<pre id="pre01">
input.onButtonPressed(Button.A, function () {
    basic.showLeds(`
        . . . . .
        . . . . .
        . . # . .
        . . . . .
        . . . . .
        `)
})
input.onButtonPressed(Button.B, function () {
    basic.showLeds(`
        . . . . .
        . . . . .
        . # # # .
        . . . . .
        . . . . .
        `)
})
</pre>
</spoiler>
* Zwei Micro:bit sollen mit Funk verbunden werden <spoiler text="Block">
<pre id="pre01">
<pre id="pre01">
basic.showLeds(`
radio.setGroup(47)
    . . # . .
    # # # # #
    . . # . .
    . # . # .
    # . . . #
    `)
radio.setGroup(25)
</pre>
</pre>
</spoiler>
</spoiler>
** Der Funkkanal muss für beide gleich lauten
**Der Funkkanal muss für beide gleich lauten.
** Kein anderes Kommunikations-Paar in der Klasse darf diesen Kanal benutzen (Kanal 1 bis 255 ist möglich)  
**Kein anderes Kommunikations-Paar in der Klasse darf diesen Kanal benutzen (Kanal 1 bis 255 ist möglich).
* Daten müssen an den zweiten Micro.bit gesendet werden
* Beim Starten des Senders wird ein beliebiges Symbol angezeigt, um zu wissen, dass der Micro:bit eingeschaltet ist. Mit diesem Befehl kannst du die Helligkeit des Displays verringern, um den Akku zu schonen.<spoiler text="Block">
* Gesendet können nur Buchstaben, Texte oder Ziffern sein - aber keine Bilder
* Blöcke zum Senden von Daten <spoiler text="Block">
<pre id="pre02">
<pre id="pre02">
input.onButtonPressed(Button.A, function () {
radio.setGroup(47)
    radio.sendString(".")
led.setBrightness(5)
})
basic.showIcon(IconNames.Yes)
input.onButtonPressed(Button.B, function () {
    radio.sendString("---")
})
</pre>
</pre>
</spoiler>
</spoiler>
* Empfangen und Anzeigen von Daten <spoiler text="Block">
* Block zum Senden der Temperatur <spoiler text="Block">
<pre id="pre02">
<pre id="pre03">
radio.onReceivedString(function(receivedString: string) {
let receivedNumber = 0
     basic.showString(receivedString)
basic.forever(function () {
     receivedNumber = input.temperature()
    radio.sendNumber(receivedNumber)
})
})
</pre>
</pre>
</spoiler>
</spoiler>
* Ausgeben von kurzem Sound <spoiler text="Block">
* Block zum Empfangen und Anzeigen der Temperatur <spoiler text="Block">
<pre id="pre02">
<pre id="pre04">radio.onReceivedNumber(function (receivedNumber) {
radio.onReceivedString(function(receivedString: string) {
     basic.showNumber(receivedNumber)
    music.ringTone(Note.C)
     basic.pause(200)
})
})
</pre>
</pre>
</spoiler>
</spoiler>
* Ausgeben von langem Sound <spoiler text="Block">
* Ausgeben des Sounds, wenn die Temperatur unter 0 Grad ist <spoiler text="Block">
<pre id="pre02">
<pre id="pre04">
radio.onReceivedString(function(receivedString: string) {
radio.onReceivedNumber(function (receivedNumber) {
     music.ringTone(Note.C)
     basic.showNumber(receivedNumber)
     basic.pause(600)
     if (receivedNumber < 0) {
        music.startMelody(music.builtInMelody(Melodies.Chase), MelodyOptions.Forever)
    }
})
})
</pre>
</spoiler>
=== Eckpfeiler zur Umsetzung ===


* Versuche diese drei Zeichen (Strich, Punkt, Punkt) mit dem Micro:bit-Programm darzustellen auf dem Display darzustellen <spoiler text="Block">
<pre id="pre01">
input.onButtonPressed(Button.A, function () {
    basic.showLeds(`
        . . . . .
        . . . . .
        . . # . .
        . . . . .
        . . . . .
        `)
})
input.onButtonPressed(Button.B, function () {
    basic.showLeds(`
        . . . . .
        . . . . .
        . # # # .
        . . . . .
        . . . . .
        `)
})
</pre>
</spoiler>
* Wenn gleiche Zeichen mehrmals hintereinander gesendet werden, kann man nicht erkennen, dass es mehrfach gesendet wurde (es wurde nur länger dargestellt): Sieh dir das Morsealphabet an, es bestehen manche Buchstaben beispielsweise aus 3 Punkten hintereinander, "...."
** Überlegt eine Lösung zur besseren Lesbarkeit
** Das Problem ist beim Anzeigen von "-.." bereits erkennbar.
** Untersuche dieses <spoiler text="Bild 1"> [[Datei:Morse_d2.gif|400px]]</spoiler>
und dieses Bild 2 (ohne Zwischenphasen) <spoiler text="Bild2"> [[Datei:Morse_d2_ohne_zwischenbild.gif|400px]]</spoiler>
* Du brauchst ein Lösung zur besseren Lesbarkeit <spoiler text="Tipp">
<pre id="pre01">
input.onButtonPressed(Button.A, function () {
    basic.showLeds(`
        . . . . .
        . . . . .
        . . . . .
        . . . . .
        . . . . .
        `)
})
})
</pre>
</pre>
</spoiler>
</spoiler>


===[[Lösung_morse1|Schritt für Schritt zur Lösung]]===
===[[Frostwächter_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 [[Morse1_Lösung|Lösungsseite zu diesem Beispiel]]
:Hinweise zur Lösungsfindung und auch eine mögliche, komplette Lösung findest du auf der [[Frostwächter_Lösung|Lösungsseite zu diesem Beispiel]]


==[[Datei:presentation.png|20px|Icon]] Präsentation und Reflexion ==
==[[Datei:presentation.png|20px|Icon]] Präsentation und Reflexion ==
[[Datei:Morse-Tafel.png|thumb|500px|Optimierte Morsetabelle zum schnellen Lesen]]
===Allgemein===
===Allgemein===
* Stelle dein Ergebnis vor! Was kann dein Produkt?  
* Stelle dein Ergebnis vor! Was kann dein Produkt?  
Zeile 216: Zeile 110:
===Projektspezifisch===
===Projektspezifisch===


* Welche Darstellungssymbole (-.) wurde für die beiden Morsezeichen auf dem Micro:bit gewählt, welche Darstellung könnte man noch verwenden?
* Wie gut funktioniert der Temperatursensor im Vergleich zu einem gekauften Thermometer?
* Wie habt ihr während der Übungen festgelegt, wer senden und wer empfangen darf?
* Wie weit geht die Funkverbindung?
* Wie funktionierte das Senden eines ganzen Wortes - habt ihr das versucht?
* Würdest du dich auf diesen Frostwächter verlassen?
* Habt ihr das Senden und Empfangen auch in verschiedenen Räumen mit der Trennung von Sender und Empfänger probiert. Wenn ja, wie weit reicht das Signal des Micro:bit?
* Was müsste sich an diesem Programm verbessern, damit du ihn tatsächlich einsetzen kannst?
* Überlege, warum die Morsespezialistinnen diese rechts dargestellte Tabelle zum Nachschlagen der Morsezeichen lieber verwenden als die obere Liste? Suche beispielsweise das Zeichen .--- : es ist ein J.
* Welches wichtige Morsewort wird heute noch immer verwendet? Ein wichtiges Notsignal: ...  ---  ... 
* Wie könnte man Morsesignale ganz ohne Computer, mit sehr einfachen Mitteln produzieren?
* Wie könnte man ein Morsegerät mit dem Micro:bit programmieren, das nur Lichtsignal aussendet?
* Wie könnte ein von euch entworfenes Gehäuse für den Micro:bit aussehen, damit dieser "besser in der Hand liegt"?


==[[Datei:icon_plus.png|20px|Icon]] Weiterentwicklung ==
==[[Datei:icon_plus.png|20px|Icon]] Weiterentwicklung ==


* Überlegt, wie man eine Bestätigung vom Empfänger programmieren könnte, damit der Sender immer weiß, dass das Zeichen richtig vom Empfänger gelesen werden konnte oder ob es wiederholt werden sollte und auch, ob das nächste gesendet werden kann.
* Überlege, ob es wirklich sinnvoll ist, die Temperatur dauerhaft an den Sender zu schicken? Wäre es nicht besser für den Akku, wenn das nur alle 5 Minuten passiert?
* Wie könnte man gleich einen ganzen Buchstaben durch einen Tastendruck senden? Dh. man sendet gleich ein A oder B in Morsekodierung aus.
* Wie könnte man auf dem Sender-Micro:bit einen Buchstaben auswählen und dann wird er als Morsecode versendet (anstatt als Programmiererin jedes Mal den Buchstaben umzuprogrammieren)?
* Überlege andere Symbole für eine Geheimsprache - probiert diese auch auf dem Micro:bit aus.
 
== Erweiterungsaufgabe ==
'''Analyse eines fremden Programmcodes:'''<br>
* Ein Ausblick: Was stellt dieser komplizierte Programmcode dar? [https://dlpl-mb.github.io/morse_01_bst_senden/  Arrays, die Supervariablen]
* Es gibt Erweiterungsbeispiele mit dem Namen '''Morse 2''', dort werden Anwendungen der hier gezeigten Beispiele dargestellt sein
* Es werden auch viele weitere neue Schritte des Programmierens gezeigt.
* Erweiterungsbeispiele: [[Morse2]]
 


<htmlet>makecode_embed</htmlet>
== Erweiterungsaufgabe ==
* Programmiere den Frostwächter so, dass der Warnton bei gedrückter Taste "A" pausiert.
* Ein Micro:bit soll so programmiert werden, dass er die Temperatur misst. Bei Tastendruck "A" soll die kleinste gemessene Temperatur angezeigt werden und "B" das Maximum.

Version vom 27. Oktober 2021, 07:46 Uhr

Icon Geschichte

Es war einmal...

Icon Aufgabenstellung

Mithilfe von zwei BBC Micro:bit wird die Temperatur gemessen und angezeigt. Dazu schickt ein BBC Micro:bit dauerhaft die Temperatur an einem zweiten. Dieser zeigt die gemessene Temperatur an. Wenn die Temperatur unter 0 Grad fällt, soll ein Warnton ausgegeben werden. Der Akku soll dabei möglichst lange halten.

Icon Materialien

  • Zwei BBC Micro:bit (Version V2 oder V1 mit Lautsprecher für die Soundausgabe)

Icon Zeitaufwand

  • 1-2 Unterrichtseinheit(en)

Icon Schwierigkeitsgrad

borderlessborderlessborderless

Icon Kompetenzen

Du solltest bereits

  • Daten mit dem Micro:bit übertragen können
  • Bedingte Anweisungen kennen


Beim Programmieren lernst bzw. übst du

Bei dieser Aufgabe lernst du auch

  • ein neues Programm zu erstellen

Icon Unterrichtsfächer

  • Werken
  • Informatik
  • Physik

Icon Tipps und Hilfestellungen

Erforderliche Programmierblöcke

Ziel

  • Nach Programmstart soll ein beliebiges Symbol zeigen, dass der Micro:bit, der die Temperatur misst, eingeschaltet ist.
  • Um den Akku zu schonen, soll dieses Symbol möglichst schwach leuchten.
  • Die Temperatur soll fortlaufend gemessen werden und alle 5 Minuten an einen weiteren Micro:bit gesendet werden.
  • Beim einem weiteren Micro:bit soll die Temperatur angezeigt werden.
  • Falls die Temperatur unter 0 Grad sinkt, soll ein Alarmton beim Empfänger abgespielt werden.

Blöcke

  • Zwei Micro:bit sollen mit Funk verbunden werden. <spoiler text="Block">
radio.setGroup(47)

</spoiler>

    • Der Funkkanal muss für beide gleich lauten.
    • Kein anderes Kommunikations-Paar in der Klasse darf diesen Kanal benutzen (Kanal 1 bis 255 ist möglich).
  • Beim Starten des Senders wird ein beliebiges Symbol angezeigt, um zu wissen, dass der Micro:bit eingeschaltet ist. Mit diesem Befehl kannst du die Helligkeit des Displays verringern, um den Akku zu schonen.<spoiler text="Block">
radio.setGroup(47)
led.setBrightness(5)
basic.showIcon(IconNames.Yes)

</spoiler>

  • Block zum Senden der Temperatur <spoiler text="Block">
let receivedNumber = 0
basic.forever(function () {
    receivedNumber = input.temperature()
    radio.sendNumber(receivedNumber)
})

</spoiler>

  • Block zum Empfangen und Anzeigen der Temperatur <spoiler text="Block">
radio.onReceivedNumber(function (receivedNumber) {
    basic.showNumber(receivedNumber)
})

</spoiler>

  • Ausgeben des Sounds, wenn die Temperatur unter 0 Grad ist <spoiler text="Block">
radio.onReceivedNumber(function (receivedNumber) {
    basic.showNumber(receivedNumber)
    if (receivedNumber < 0) {
        music.startMelody(music.builtInMelody(Melodies.Chase), MelodyOptions.Forever)
    }
})

})

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

Icon Präsentation und Reflexion

Allgemein

  • Stelle dein Ergebnis vor! Was kann dein Produkt?
  • Was hat dir bei der Entwicklung deines Produkts gefallen?
  • Welche Schwierigkeiten hattest? Wie konntest du diese lösen?
  • Erläutere, wie du dein Produkt programmiert hast!
  • Was war bei dieser Aufgabe interessant für dich?

Projektspezifisch

  • Wie gut funktioniert der Temperatursensor im Vergleich zu einem gekauften Thermometer?
  • Wie weit geht die Funkverbindung?
  • Würdest du dich auf diesen Frostwächter verlassen?
  • Was müsste sich an diesem Programm verbessern, damit du ihn tatsächlich einsetzen kannst?

Icon Weiterentwicklung

  • Überlege, ob es wirklich sinnvoll ist, die Temperatur dauerhaft an den Sender zu schicken? Wäre es nicht besser für den Akku, wenn das nur alle 5 Minuten passiert?

Erweiterungsaufgabe

  • Programmiere den Frostwächter so, dass der Warnton bei gedrückter Taste "A" pausiert.
  • Ein Micro:bit soll so programmiert werden, dass er die Temperatur misst. Bei Tastendruck "A" soll die kleinste gemessene Temperatur angezeigt werden und "B" das Maximum.