Morse: Unterschied zwischen den Versionen

Aus microbit - Das Schulbuch
Zur Navigation springen Zur Suche springen
Alois.bachinger (Diskussion | Beiträge)
Keine Bearbeitungszusammenfassung
Martin.teufel (Diskussion | Beiträge)
Keine Bearbeitungszusammenfassung
 
(86 dazwischenliegende Versionen von 2 Benutzern werden nicht angezeigt)
Zeile 1: Zeile 1:
== [[Datei:Icon_story.png|20px|Icon]] Übertragen von Geheimcode  ==
== [[Datei:Icon_story.png|20px|Icon]] Übertragen von Geheimcode  ==


[[Datei:kopf_zahl.jpg|right|600px]]  
[[Datei:Robi-x01.png|right|300px]]  
[[https://raw.githubusercontent.com/dlpl-mb/baa_morse_code_01/master/images/robi_klein.png]]
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 ein Geheimsprache namens Morse. Diese Sprache hat genauso 2 Zeichen, einen Punkt und einen Strich.  
Wie soll das klappen?


Eine erste Begrüßung an dich: [[Datei:Gruss.png|50%]]


Hallo, ich bin Robi-x01 und werde dich beim Programmieren mit BBC micro:bit begleiten. Wir werden uns eine Geheimsprache ansehen - das Morse-Alphabet.
Übrigens hatte der Morsecode früher eine sehr große Bedeutung in der Nachrichtenübertragung. Weitere Informationen zum Morsecode findest du in der Wikipedia https://de.wikipedia.org/wiki/Morsecode.
* Ist das exakt immer so?
* Ist das meistens so?
* Könnte es auch 10 zu 90 ausgehen?


Am besten du testest einmal mit einigen Würfen einer Münze – versuche einmal 10 Würfe:
Wir werden den Micro:bit verwenden, um die Sprache zu übertragen.
Lege dir eine Tabelle an, in die du die Ergebnisse einträgst.


[[Datei:Tabelle zufall1.jpg|50%]]
Wenn man Geheimsprache vereinbart, dann muss der Sender und der Empfänger genau diesselbe Verschlüsselung und Entschlüsselung verwenden. Dazu gibt es Tabellen die diese Schlüssel verraten.
Hier diese Tabelle, diese Schlüsseltabelle dürfen nur Sender und Empfänger haben, wenn geheim kommuniziert wird.


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


Mit dem BBC micro:bit kannst du dies noch bequemer testen – du benützt den Zufallsgenerator des micro:bit. Entwickle ein Programm, mit dem man das Werfen der Münzen simulieren kann. Der Vorteil des Computers, sehr viele Würfe zu produzieren, sollte dabei ebenfalls zum Tragen kommen.
Mit dem BBC micro:bit kannst du Morsezeichen anzeigen und auch übertragen. Entwickle ein Programm mit dem man ein Morsekombination für einen Buchstaben (zB.A) anzeigen und versenden kann.


* Das Schütteln des micro:bit sollte den Zufallsgenerator aufrufen: Dieser soll Kopf oder Zahl produzieren.
* Das Drücken der Taste A sollte einen Morsepunkt aussenden
* Taste A sollte die Anzahl der "Kopfwürfe" darstellen
* Die Taste B sollte einen Morsestrich aussenden
* Taste B sollte die Anzahl der "Zahlwürfe" darstellen
* Beim Empfänger sollten diese Symbole angezeigt werden
* Taste A+B sollten die Gesamtanzahl der Versuche darstellen
* Mehrere Morsesymbole (Punkte und Striche) ergeben einen Buchstaben - nun muss man noch mitteilen, wann ein Buchstabe fertiggestellt ist - das macht man mit einer Pause von etwa 1 Sekunde
* Neustart mit "Reset"-Taste (Erweiterung)
* Damit haben wir einen Morseapparat
* Die Regelmäßigkeit des Drückens der Tasten hat hier eine große Bedeutung für das Erkennen von Morsezeichen


== [[Datei:icon_material.png|20px|Icon]] Materialien ==
== [[Datei:icon_material.png|20px|Icon]] Materialien ==


* Eine Münze
* Zwei BBC Micro:bit (Version V2 oder V1 mit Lautsprecher oder Kopfhörer)
* Ein Blatt Papier
* Papier und Stift
* micro:bit
* Das ausgedrucke Morsealphabet (ausdruckbar mit rechter Maustaste und Grafik kopieren und drucken)
[[Datei:morse-tab.png|50%]]


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


* 1 Unterrichtseinheit  
* 2 Unterrichtseinheit


== [[Datei:Icon_puzzle3.png|20px|Icon]] Schwierigkeitsgrad ==
== [[Datei:Icon_puzzle3.png|20px|Icon]] Schwierigkeitsgrad ==


[[Datei:SternGelb.png|30px|borderless]][[Datei:SternLeer.png|30px|borderless]][[Datei:SternLeer.png|30px|borderless]]
[[Datei:SternGelb.png|30px|borderless]][[Datei:SternLeer.png|30px|borderless]][[Datei:SternLeer.png|30px|borderless]]


== [[Datei:Icon_brain.png|20px|Icon]] Kompetenzen ==
== [[Datei:Icon_brain.png|20px|Icon]] Kompetenzen ==
Zeile 45: Zeile 44:
[[Datei:IMG_5764_(1).png|right]]
[[Datei:IMG_5764_(1).png|right]]
Du solltest bereits  
Du solltest bereits  
* einen Prozentanteil schätzen können
* Daten mit dem Micro:bit anzeigen können
* eine Wertetabelle anlegen und auswerten können
* Den Tastenfunktionen (A, B und A+B) verwenden können




Zeile 53: Zeile 52:
* [[Variablen]] zu verwenden
* [[Variablen]] zu verwenden
* [[Operatoren]] zu verwenden
* [[Operatoren]] zu verwenden
* den [[Zufallsgenerator]] zu nutzen
* [[Bedingungen]] zu verwenden
* [[Bedingungen]] zu verwenden
* [Funk]-Verbindungen aufzunehmen
* Funksignale zu empfangen


Bei dieser Aufgabe lernst du auch  
Bei dieser Aufgabe lernst du auch  
* ein NEUES Programm zu lesen und es zu interpretieren
* ein NEUES Programm zu lesen und es zu interpretieren
* ein fremdes Programm zu ändern


== [[Datei:Icon faecher.png|20px|Icon]] Unterrichtsfächer ==
== [[Datei:Icon faecher.png|20px|Icon]] Unterrichtsfächer ==


* Mathematik
* Werken
* Informatik
* Informatik
* Deutsch
* Deutsch
* Physik


== [[Datei:Icon_hilfe.png|20px|Icon]] Tipps und Hilfestellungen ==
== [[Datei:Icon_hilfe.png|20px|Icon]] Tipps und Hilfestellungen ==
Zeile 69: Zeile 71:
=== Erforderliche Programmierblöcke ===
=== Erforderliche Programmierblöcke ===
==== Ziel ====  
==== Ziel ====  
* Der Zufallsgenerator sollte 2 Zustände darstellen: wahr oder falsch
* Taste A soll einen Punkt, Taste B einen Strich auf das Display schicken
* Diese Zustände entsprechen den 2 Möglichkeiten beim Münzwurf
* Per Funk sollte das Zeichen versendet werden
* Es sollte jeweils die Anzahl der Treffer für "wahr" und für "falsch" gezählt werden.
* Beim Empfänger soll das Zeichen angezeigt werden
 
[[Datei:Morse_d.gif|400px]]
==== Vereinbarung ====
* Welcher Buchstabe wird hier im Bild angezeigt?
* "'''W'''ahr bedeutet Kopf" und "Falsch bedeutet '''Z'''ahl"
* Erweiterung: Es sollte ein ganzes Wort versendet werden
 
[[Datei:kopf.png|200px ]] ... [[Datei:zahl.png|200px ]]


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


* Anstelle des Münzwurfs sollte der Zufallsgenerator "wahr" oder "falsch" liefern
* Nach Programmstart sollte ein Symbol zeigen, dass er Micro:bit bereit ist
* Der Zufallsgenerator sollte durch Schütteln des micro:bit aufgerufen werden
* Ein Morsezeichen (. oder -) sollte per Tastendruck angezeigt werden <spoiler text="Block">
* Je nach Bedingung "wahr" oder "falsch" sollten verschiedene Aktionen stattfinden
<pre id="pre01">
<pre id="pre01">
input.onGesture(Gesture.Shake, function () {
input.onButtonPressed(Button.A, function () {
if (true) {
    basic.showLeds(`
 
        . . . . .
} else {
        . . . . .
 
        . . # . .
}
        . . . . .
        . . . . .
        `)
})
input.onButtonPressed(Button.B, function () {
    basic.showLeds(`
        . . . . .
        . . . . .
        . # # # .
        . . . . .
        . . . . .
        `)
})
})
</pre>
</pre>
* Bestimmte Tastenereignisse für Taste A, B und A+B - müssen Daten anzeigen <spoiler text="Block">
</spoiler>
* Zwei Micro:bit sollen mit Funk verbunden werden
* 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) <spoiler text="Block">
<pre id="pre01">
basic.showLeds(`
    . . # . .
    # # # # #
    . . # . .
    . # . # .
    # . . . #
    `)
radio.setGroup(25)
</pre>
</spoiler>
* Daten müssen an den zweiten Micro.bit gesendet werden
* Sendungen 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 () {
input.onButtonPressed(Button.A, function () {
    radio.sendString(".")
})
})
input.onButtonPressed(Button.AB, function () {
input.onButtonPressed(Button.B, function () {
    radio.sendString("---")
})
})
input.onButtonPressed(Button.B, function () {
</pre>
</spoiler>
* Empfangen und Anzeigen von Daten <spoiler text="Block">
<pre id="pre02">
radio.onReceivedString(function(receivedString: string) {
    basic.showString(receivedString) 
})
</pre>
</spoiler>
* Ausgeben von kurzem Sound <spoiler text="Block">
<pre id="pre02">
radio.onReceivedString(function(receivedString: string) {
    music.ringTone(Note.C)
    basic.pause(200)
})
})
</pre>
</pre>
</spoiler>
</spoiler>
* Daten müssen angezeigt werden <spoiler text="Block">
* Ausgeben von langem Sound <spoiler text="Block">
<pre id="pre03">
<pre id="pre02">
basic.showNumber(0)
radio.onReceivedString(function(receivedString: string) {
    music.ringTone(Note.C)
    basic.pause(600)
})
</pre>
</pre>
</spoiler>
</spoiler>
* Bei Programmstart durchzuführen <spoiler text="Block"> <pre id="pre03">
basic.showNumber(0)
</pre></spoiler>
* Variablen müssen angelegt und initialisiert werden <spoiler text="Block"><pre id="pre03">
let anzahl_kopf = 0
let anzahl_zahl = 0
</pre></spoiler>
* Variablen müssen hochgezählt werden <spoiler text="Block"><pre id="pre03">
anzahl_zahl += 1
anzahl_kopf += 1
</pre></spoiler>
* Variablen müssen addiert werden <spoiler text="Block"><pre id="pre03">
let varx = anzahl_zahl + 1


</pre></spoiler>
=== Eckpfeiler zur Umsetzung ===


=== Eckpfeiler zur Umsetzung ===
* Wenn zwei gleiche Symbole unmittelbar hintereinander angezeigt werden, dann erkennt man schwer, dass es zweimal dargestellt wurde
* Untersuche diese beiden Darstellung, in beiden Fällen wird derselbe Buchstabe gesendet: -..
* Versuche diese drei Zeichen gleich mit dem Micro:bit-Programm darzustlellen <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 hintereinander gesendet werden, dann kann man nicht erkennen, dass es zweimal angezeigt wurde, das sit aber beim Morsecode wichtig, es bestehen manche zeichen aus 4 Strichen hintereinander, ...
* Überlegt ein Lösung zur besseren Lesbarkeit
* Zeichen schön lesbar getrennt angezeigt <spoiler text="Block">
[[Datei:Morse_d2.gif|300px]]</spoiler>
* Du brauchst ein Lösung zur besseren Lesbarkeit <spoiler text="Block">
<pre id="pre01">
  basic.showLeds(`
        . . . . .
        . . . . .
        . . . . .
        . . . . .
        . . . . .
        `)
</pre>
</spoiler>


* Programmiere den micro:bit-Zufallsgenerator so, dass durch Schütteln ein Wert "wahr" oder "falsch" ermittelt wird (= Kopf oder Zahl)
* Programmiere den micro:bit-Zufallsgenerator so, dass durch Schütteln ein Wert "wahr" oder "falsch" ermittelt wird (= Kopf oder Zahl)
* Wenn Taster "A" gedrückt wird, soll die Anzahl Kopfwürfe gezeigt werden
* Wenn Taster "B" gedrückt wird, soll die Anzahl Zahlwürfe gezeigt werden
* Wenn Taster "A+B" gedrückt werden, soll die Summe der Würfe dargestellt werden
* Zufallswerte erhält man aus dem Menü Mathematik "Wähle zufälligen Wahr- und Falsch-Wert"
* 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"
* Das System sollte über zwei Variablen protokollieren, wie oft Kopf und wie oft Zahl geworfen wurde


===[[Lösung_zufall|Schritt für Schritt zur Lösung]]===
===[[Lösung_zufall|Schritt für Schritt zur Lösung]]===
Zeile 170: Zeile 231:


Dieses Programm ist hier aufrufbar:
Dieses Programm ist hier aufrufbar:
[https://makecode.microbit.org/#pub:_XdWYVaPe8WUk Link]
[like this|https://makecode.microbit.org/#pub:_XdWYVaPe8WUk|target='_blank']
 
[Like this|http://google.com|target='_blank']
 
 
<a class="external" href="baa.at">asdfasd</a>
 
 
<htmlet>makecode_embed</htmlet>
<htmlet>makecode_embed</htmlet>

Aktuelle Version vom 22. April 2022, 06:10 Uhr

Icon Übertragen von Geheimcode

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 ein Geheimsprache namens Morse. Diese Sprache hat genauso 2 Zeichen, einen Punkt und einen Strich. Wie soll das klappen?

Eine erste Begrüßung an dich: 50%

Übrigens hatte der Morsecode früher eine sehr große Bedeutung in der Nachrichtenübertragung. Weitere Informationen zum Morsecode findest du in der Wikipedia https://de.wikipedia.org/wiki/Morsecode.

Wir werden den Micro:bit verwenden, um die Sprache zu übertragen.

Wenn man Geheimsprache vereinbart, dann muss der Sender und der Empfänger genau diesselbe Verschlüsselung und Entschlüsselung verwenden. Dazu gibt es Tabellen die diese Schlüssel verraten. Hier diese Tabelle, diese Schlüsseltabelle dürfen nur Sender und Empfänger haben, wenn geheim kommuniziert wird.

Icon Aufgabenstellung

Mit dem BBC micro:bit kannst du Morsezeichen anzeigen und auch übertragen. Entwickle ein Programm mit dem man ein Morsekombination für einen Buchstaben (zB.A) anzeigen und versenden kann.

  • 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 fertiggestellt ist - das macht man mit einer Pause von etwa 1 Sekunde
  • Damit haben wir einen Morseapparat
  • Die Regelmäßigkeit des Drückens der Tasten hat hier eine große Bedeutung für das Erkennen von Morsezeichen

Icon Materialien

  • Zwei BBC Micro:bit (Version V2 oder V1 mit Lautsprecher oder Kopfhörer)
  • Papier und Stift
  • Das ausgedrucke Morsealphabet (ausdruckbar mit rechter Maustaste und Grafik kopieren und drucken)

50%

Icon Zeitaufwand

  • 2 Unterrichtseinheit

Icon Schwierigkeitsgrad

borderlessborderlessborderless

Icon Kompetenzen

Du solltest bereits

  • Daten mit dem Micro:bit anzeigen können
  • Den Tastenfunktionen (A, B und A+B) verwenden können


Beim Programmieren lernst bzw. übst du

Bei dieser Aufgabe lernst du auch

  • ein NEUES Programm zu lesen und es zu interpretieren
  • ein fremdes Programm zu ändern

Icon Unterrichtsfächer

  • Werken
  • Informatik
  • Deutsch
  • Physik

Icon Tipps und Hilfestellungen

Erforderliche Programmierblöcke

Ziel

  • Taste A soll einen Punkt, Taste B einen Strich auf das Display schicken
  • Per Funk sollte das Zeichen versendet werden
  • Beim Empfänger soll das Zeichen angezeigt werden

  • Welcher Buchstabe wird hier im Bild angezeigt?
  • Erweiterung: Es sollte ein ganzes Wort versendet werden

Blöcke

  • Nach Programmstart sollte ein Symbol zeigen, dass er Micro:bit bereit ist
  • Ein Morsezeichen (. oder -) sollte per Tastendruck angezeigt werden <spoiler text="Block">
input.onButtonPressed(Button.A, function () {
    basic.showLeds(`
        . . . . .
        . . . . .
        . . # . .
        . . . . .
        . . . . .
        `)
})
input.onButtonPressed(Button.B, function () {
    basic.showLeds(`
        . . . . .
        . . . . .
        . # # # .
        . . . . .
        . . . . .
        `)
})

</spoiler>

  • Zwei Micro:bit sollen mit Funk verbunden werden
  • 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) <spoiler text="Block">
basic.showLeds(`
    . . # . .
    # # # # #
    . . # . .
    . # . # .
    # . . . #
    `)
radio.setGroup(25)

</spoiler>

  • Daten müssen an den zweiten Micro.bit gesendet werden
  • Sendungen können nur Buchstaben, Texte oder Ziffern sein - aber keine Bilder
  • Blöcke zum Senden von Daten <spoiler text="Block">
input.onButtonPressed(Button.A, function () {
    radio.sendString(".")
})
input.onButtonPressed(Button.B, function () {
    radio.sendString("---")
})

</spoiler>

  • Empfangen und Anzeigen von Daten <spoiler text="Block">
radio.onReceivedString(function(receivedString: string) {
    basic.showString(receivedString)  
})

</spoiler>

  • Ausgeben von kurzem Sound <spoiler text="Block">
radio.onReceivedString(function(receivedString: string) {
    music.ringTone(Note.C)
    basic.pause(200)
})

</spoiler>

  • Ausgeben von langem Sound <spoiler text="Block">
radio.onReceivedString(function(receivedString: string) {
    music.ringTone(Note.C)
    basic.pause(600)
})

</spoiler>

Eckpfeiler zur Umsetzung

  • Wenn zwei gleiche Symbole unmittelbar hintereinander angezeigt werden, dann erkennt man schwer, dass es zweimal dargestellt wurde
  • Untersuche diese beiden Darstellung, in beiden Fällen wird derselbe Buchstabe gesendet: -..
  • Versuche diese drei Zeichen gleich mit dem Micro:bit-Programm darzustlellen <spoiler text="Block">
input.onButtonPressed(Button.A, function () {
    basic.showLeds(`
        . . . . .
        . . . . .
        . . # . .
        . . . . .
        . . . . .
        `)
})
input.onButtonPressed(Button.B, function () {
    basic.showLeds(`
        . . . . .
        . . . . .
        . # # # .
        . . . . .
        . . . . .
        `)
})

</spoiler>

  • Wenn gleiche Zeichen hintereinander gesendet werden, dann kann man nicht erkennen, dass es zweimal angezeigt wurde, das sit aber beim Morsecode wichtig, es bestehen manche zeichen aus 4 Strichen hintereinander, ...
  • Überlegt ein Lösung zur besseren Lesbarkeit
  • Zeichen schön lesbar getrennt angezeigt <spoiler text="Block">

</spoiler>

  • Du brauchst ein Lösung zur besseren Lesbarkeit <spoiler text="Block">
   basic.showLeds(`
        . . . . .
        . . . . .
        . . . . .
        . . . . .
        . . . . .
        `)

</spoiler>

  • Programmiere den micro:bit-Zufallsgenerator so, dass durch Schütteln ein Wert "wahr" oder "falsch" ermittelt wird (= Kopf oder Zahl)

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

  • Welche Regeln wurden für Kopf und Zahl festgelegt? Welche andere Regeln für "Kopf oder Zahl" gäbe es noch?
  • Welche Diskussionspunkte ergaben sich während des Spiels?
  • Wo wird im Alltag der Wirtschaft mit Zufallsgenerator gearbeitet?
  • Wo braucht man bei einem Computerspiel den Zufallsgenerator.
  • Wo war bei diesem Beispiel der Vorteil des Computers zu sehen, wo war er eher ein Nachteil?
  • Bei welcher Erweiterungsstufe war es am schwierigsten, einen Programmcode zu erstellen.

Icon Weiterentwicklung

  • Schleife: Du kannst mit einer Schleife nicht nur jeweils einen Wurf produzieren, sondern gleich 100 oder gar 1000 Würfe
  • Das bedeutet: Wenn einmal geschüttelt wird, werden gleich 1000 Würfe simuliert
  • Nütze dabei den Vorteil des Computers – er kann sehr schnell rechnen

Noch eine Erweiterungsaufgabe

Analyse eines fremden Programmcodes:

  • Was stellt dieser Programmcode dar?

Dieses Programm ist hier aufrufbar: [like this|https://makecode.microbit.org/#pub:_XdWYVaPe8WUk%7Ctarget='_blank']

[Like this|http://google.com%7Ctarget='_blank']


<a class="external" href="baa.at">asdfasd</a>