Morse2: Unterschied zwischen den Versionen

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


[[Datei:Robo_mbit_morse2.gif|right|300px]]  
[[Datei:Robi2.png|right|500px]]  
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 Morsecode. Diese Sprache hat genauso 2 Zeichen, einen Punkt und einen Strich.  
Hallo, wir sind Robi-x01 und Robi-x02 - wir werden uns in diesem Abschnitt einige erweiterte Programmabschnitte ansehen, wie wir beide noch besser und bequemer kommunizieren können.  
* Wie soll das klappen?


* Eine erste Begrüßung an dich: [[Datei:Gruss.png|50%]]
* Du solltest auf jeden Fall im Zweier-Team arbeiten.  


* Wir werden den Micro:bit hier auch verwenden, um Informationen zu übertragen.
* Unsere Begrüßung an dich ist nun schon etwas länger: [[Datei:Gruss2.png|300px]]
 
* 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.
 
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. Unterhalb siehst du 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  ==


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.
Versucht an "fremden" Programmen neue Funktionen selber zu entdecken. Am meisten lernt man dadurch, dass man Systeme, die etwas über dem eigenen Niveau liegen, analysiert, sie verändert und ausbaut. In diesem Beispiel werden Einzelfunktionen nicht mehr detailliert erklärt, sondern nur mehr in der Wirkung dargestellt.
 
Folgende Aufgaben sollte dieses Programm ausführen können:


* Das Drücken der Taste A sollte einen Morsepunkt aussenden (.)
* Zerlegt die folgenden Programme in Einzelbereiche und versucht durch kleine Änderungen die Wirkung oder den Aufgabenbereich zu erkunden.
* Die Taste B sollte einen Morsestrich aussenden (-)
* Diskutiert den Sinn der einzelnen Programme und schlagt Änderungen vor.
* Beim Empfänger sollten diese Symbole angezeigt werden
* Ein Programm ist dann gelungen,  
* Mehrere Morsesymbole (Punkte und Striche) ergeben einen Buchstaben - nun muss man noch mitteilen, wann ein Buchstabe fertiggestellt ist und der näcshte beginnt, - das passiert über eine Pause von etwa 1 Sekunde
** wenn es mit möglichst wenig Programmcode auskommt.
* Damit haben wir einen Morseapparat
** wenn es keine Wiederholungen im Programmcode enthält.
* Hier abgebildet ein echtes Morsegerät, wie es Jahre verwendet wurde:
** wenn es gut lesbar ist.
[[Datei:Morsetaster.jpg|500px]]
** wenn es ohne große Erklärungen seine Aufgaben erledigt.
* Durch schnelles Öffnen und Schließen des Stromkreises wurde elektrische Siganle übersendet: Ein kurzes Signal entpricht dem Punkt, langes entspricht dem Strich.
 
* Die Regelmäßigkeit des Drückens der Tasten hat hier eine 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 oder Kopfhörer)
* zwei BBC micro:bit (Version V2 oder V1 mit Lautsprecher oder Kopfhörer)
* Papier und Stift
* Papier und Stift
* Das ausgedrucke Morsealphabet (ausdruckbar mit rechter Maustaste und Grafik kopieren und drucken)  
* das Morsealphabet in ausgedruckter Form (ausdruckbar mit einem Klick der rechten Maustaste auf die Morsetabelle, "Grafik kopieren" wählen, in eine Textverarbeitung einfügen und drucken)
[[Datei:morse-tab.png|50%]]


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


* 2 Unterrichtseinheit
* ca. 2 bis 4 Unterrichtseinheiten pro Programm - je nach Funktionsumfang


== [[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:SternGelb.png|30px|borderless]][[Datei:SternGelb.png|30px|borderless]]


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


[[Datei:SOS_svg_gruen.png|right|400px]]
Du solltest bereits  
Du solltest bereits  
* Daten mit dem Micro:bit anzeigen können
* wissen, wie man Daten mit dem BBC micro:bit anzeigen kann
* Den Tastenfunktionen (A und B) verwenden können
* die Tastenfunktionen (A und B, A+B) verwenden können
 
* wissen, wie man 2 BBC micro:bit verbindet
* wissen, wie man zwischen BBC micro:bit Daten sendet und empfängt
* wissen, wie man Sound ausgibt


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


* [[Variablen]] zu verwenden
* [[Array]] zu verwenden
* [[Operatoren]] zu verwenden
* [[Operatoren]] einzusetzen
* [[Bedingungen]] zu verwenden
* [[Bedingungen]] aufzustellen
* Funkverbindungen aufzunehmen
* Funksignale zu empfangen
 
Bei dieser Aufgabe lernst du auch
* ein neues Programm zu erstellen
* ein fremdes Programm zu lesen und ändern


== [[Datei:Icon faecher.png|20px|Icon]] Unterrichtsfächer ==
== [[Datei:Icon faecher.png|20px|Icon]] Unterrichtsfächer ==
Zeile 73: Zeile 57:
* Physik
* Physik


== [[Datei:Icon_hilfe.png|20px|Icon]] Tipps und Hilfestellungen ==


=== Erforderliche Programmierblöcke ===
==== Ziel ====
[[Datei:Morse_d.gif|right|400px]]
* 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 ====
== [[Datei:Prg_icon.jpg|32px|Icon]] Programmsammlung ==
 
Öffnet die folgenden Programme in Makecode und spielt diese auf euren jeweiligen BBC micro:bit.
Ihr braucht den Link '''Programmaufruf''' nur anzuklicken und man kann den jeweiligen Programmcode sehen, verändern und neu speichern.
Die meisten Programme sollte man gleich auf zwei Computern aufrufen und schon geht es los: Diese Beispiele sind so gestaltet, dass Sender und Empfänger dasselbe Programm benutzen können. Im Einsatz in der Industrie werden Sender und Empfänger meist verschiedene Aufgaben und somit verschiedene Programme haben.
 
 
 
=== Programm 1: "Der Morsecode-Beamer" ===


* Nach Programmstart sollte ein Symbol zeigen, dass der Micro:bit bereit ist
==== [https://makecode.microbit.org/#pub:_L34VpDcr1Hfo Programmaufruf] ====
* Ein Morsezeichen (. oder -) sollte per Tastendruck angezeigt werden <spoiler text="Block">
* Ein Spiel zu zweit:
<pre id="pre01">
* Ihr braucht den Link "Programmaufruf" nur auf zwei Computern aufrufen und testet dann die Verbindung.
input.onButtonPressed(Button.A, function () {
* Einer ist der Sender, der andere Empfänger.
    basic.showLeds(`
* Sender: Drücke '''Taste A''' für die Aufgabe
        . . . . .
* Empfänger: Suche den empfangenen und angezeigten Buchstaben in der Morsetabelle
        . . . . .
* Führt 10 Versuche durch und tauscht die Rollen: Ändert die gesendete Nachricht.
        . . # . .
* Wie gut bist du im Erkennen von Nachrichten?
        . . . . .
* Schreibt auch die erhaltenen Nachrichten auf!
        . . . . .
* Führt dieses Spiel auch in getrennten Räumen durch.
        `)
})
input.onButtonPressed(Button.B, function () {
    basic.showLeds(`
        . . . . .
        . . . . .
        . # # # .
        . . . . .
        . . . . .
        `)
})
</pre>
</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
* Gesendet können nur Buchstaben, Texte oder Ziffern sein - aber keine Bilder
* Blöcke zum Senden von Daten <spoiler text="Block">
<pre id="pre02">
input.onButtonPressed(Button.A, function () {
    radio.sendString(".")
})
input.onButtonPressed(Button.B, function () {
    radio.sendString("---")
})
</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>
</spoiler>
* Ausgeben von langem Sound <spoiler text="Block">
<pre id="pre02">
radio.onReceivedString(function(receivedString: string) {
    music.ringTone(Note.C)
    basic.pause(600)
})
</pre>
</spoiler>


=== Eckpfeiler zur Umsetzung ===
=== Programm 2: "Kommunikation mit Antwortbestätigung" ===
==== [https://makecode.microbit.org/#pub:_RVzCKyPbCbg3 Programmaufruf] ====
[[Datei:Mars_rover.png|thumb|400px|Marsrover (Modell) - Signaldauer Erde <-> Mars 8 Minuten]]
'''Versucht nun folgende Bedingungen einzuhalten:'''
* Nur ein BBC micro:bit ist der Sender - der andere ist der Empfänger.
* Gesendet wird mit der '''Taste A''' - geantwortet (bestätigt) wird mit '''Taste B''' (man sendet ein “ok”).
* Möchte man als Empfänger die Nachricht noch einmal erhalten - dann antwortet man mit der '''Tastenkombination A+B''' (man sendet ein “no”).
* Diese Gesetzmäßigkeiten sind in diesem Programm enthalten:
* Ganz besonders schwierig und realitätsnah wird es, wenn ihr in verschiedene Räume geht.
* Man sieht an diesem einfachen Beispiel, dass es extrem schwierig ist, eine Kommunikation aufzubauen, wenn Sender und Empfänger nicht in Sprech- und Sichtweite sind.
* Oft entstehen Probleme bei der Datenübertragung, die manchmal Katastrophen auslösen können, wenn die Regeln nicht ganz genau vereinbart wurden.
* Du kennst das auch aus Filmen, dass Leute angefordert werden: "'''Bitte Nachricht bestätigen!'''
* Der Fachbegriff für das Erstellen dieser Regeln heißt '''Handshake'''.


* Versuche diese drei Zeichen (Strich, Punkt, Punkt) mit dem Micro:bit-Programm darzustellen <spoiler text="Block">
'''Eine aktuelle Anwendung aus der Wissenschaft, wo das extrem wichtig ist''':
<pre id="pre01">
* Amerikanische Weltraummission:
input.onButtonPressed(Button.A, function () {
* Derzeit befindet sich ein Roboter auf dem Mars, dieser wird mit Befehlen von der Erde gesteuert.
    basic.showLeds(`
* Ein Befehl dauert vom Absenden auf der Erde bis zum Empfänger auf dem Mars acht Minuten.
        . . . . .
* Man kann sich vorstellen, dass hier sehr exakte Abmachungen getroffen werden müssen, wann sendet wer, wie ist die Bestätigung oder die Antwort.
        . . . . .
* Auch alle Fotos vom Mars werden mit genauen Regeln Zeichen-für-Zeichen zur Erde geschickt.
        . . # . .
* Es können über diese Funksignale nur '''Zahlen''' zwischen Systemen geschickt werden. Wie beim BBC micro:bit muss die Gegenstelle die gesendete Nachricht dann entschlüsseln, auswerten und in Befehle oder Bilder umwandeln.
        . . . . .
        . . . . .
        `)
})
input.onButtonPressed(Button.B, function () {
    basic.showLeds(`
        . . . . .
        . . . . .
        . # # # .
        . . . . .
        . . . . .
        `)
})
</pre>
</spoiler>


* Wenn gleiche Zeichen mehrmals hintereinander gesendet werden, kann man nicht erkennen, dass es mehrfach angezeigt wurde (es wurde nur länger dargestellt): Es bestehen manche Buchstaben beispeilsweise aus 4 Strichen hintereinander, ----.
=== Programm 3: "Senden einer Nachrichtenzeile" ===
** Überlegt ein Lösung zur besseren Lesbarkeit
==== [https://makecode.microbit.org/#pub:_C5KTuFEA1T1C Programmaufruf] ====
** Das Problem ist beim Anzeigen von -.. bereits sichtbar - untersuche: <spoiler text="Bild 1"> [[Datei:Morse_d2.gif|400px]]</spoiler>
** 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>
</spoiler>


===[[Lösung_morse1|Schritt für Schritt zur Lösung]]===
Verwende diesen einfachen Programmcode und ändere die Übertragungsnachricht.
:Hinweise zur Lösungsfindung und auch eine mögliche, komplette Lösung findest du auf der [[Lösung_morse1|Lösungsseite zu diesem Beispiel]]
* Eine ganze Zeile lesen (hier sind die Wortgrenzen mit einem # markiert) - normalerweise ist das eine längere Pause von etwa 1-3 Sekunden.
* Was könnte man beim Empfänger noch gestalten, damit dieser mehr Zeit zum Lesen hat oder die Nachricht noch einmal ansehen kann?
* Diskutiert: Was hat noch nicht gut funktioniert, was ist zu verbessern?
 
=== Programm 4: "Zeigen eines Zufallsbuchstaben einer Liste" ===
==== [https://makecode.microbit.org/#pub:_RcD107c83V1o Programmaufruf] ====
 
* Wir werden in diesem Programm 26 Buchstaben verwenden - also brauchen wir eine Zufallszahl zwischen 0 und 25. 
* Dabei greifen wir mit dem Befehl '''liste_buchstaben[zufall]''' auf ein Element der Buchstaben-Liste zu und zeigen den gefundenen Buchstaben an.
* Experimentiert mit diesem Befehl - hier kommen bereits Listen (Arrays) zum Einsatz, diese sind eine der wichtigsten Variablentypen in der Programmierung.
 
=== Programm 5: "Sende ein zufälliges Morsezeichen zum Empfänger" ===
=== [https://makecode.microbit.org/#pub:_9otCa1HK2C1Y Programmaufruf] ===
 
* Ein zufälliges Morsezeichen zum Empfänger versenden:
* zwei Listen mit 26 Listenelementen
 
=== Programm 6: "Senden mit Handshake" ===
==== [https://makecode.microbit.org/#pub:_ijv32j2rRa7u Programmaufruf] ====
 
* Rollen tauschen** (immer auf die genaue Abstimmung mit der Partnerin oder dem Partner achten)
* Merke: Die '''Taste A''' gehört immer dem '''Sender'''.
* Erfindet selbst neue Spielregeln.
 
=== Programm 7: "Senden mit Tonausgabe" ===
==== [https://makecode.microbit.org/#pub:_0Uw0EdbciAaa Programmaufruf] ====
 
* Einbau einer Zusatzfunktion zur Tonausgabe (BBC micro:bit V2 erforderlich oder ein angeschlossener Kopfhörer):
* Sobald ein Buchstabe den Empfänger erreicht, soll ein Ton gespielt werden, ebenso, wenn die Antwort beim Sender ankommt.
 
=== Programm 8: "Senden von akustischen Morse-Signalen" ===
==== [https://makecode.microbit.org/#pub:_bsWVoP2PLdbK Programmaufruf] ====
 
* Hierzu muss das empfangene Morsezeichen (receiveString) zerlegt und untersucht werden.
* Es wird eine Schleife durch alle übertragenen Morsezeichen gestartet und analysiert,
** ob ein "." vorkommt: dann wird ein kurzer Ton gespielt
** ob ein "-" vorkommt: dann wird ein langer Ton gespielt
** ob ein Leerzeichen (Wortende) vorkommt -> Pause
 
=== Programm 9: "Senden von Lichtsignalen" ===
==== [https://makecode.microbit.org/#pub:_E7s9aqKLqicd Programmaufruf] ====
 
* Statt den optischen Signalen werden jetzt kurze und lange Lichtsignale gesendet.
* Sobald ein Morsecode gewählt ist, sollte das Zeichen **Punkt** ein kurzes Lichtsignal erzeugen und der **Strich** ein langes Lichtsignal.
* Erreichen kann man diesen Effekt, indem man alle 25 Lichtpunkte des BBC micro:bit verschieden lange aufleuchten lässt.
 
=== Programm 10: "Eine Tastatur zum Auswählen der Buchstaben" ===
[[Datei:Microbit-kippen.gif|right|300px]]
==== [https://makecode.microbit.org/#pub:_HvE8XXc23Etx Programmaufruf] ====
 
 
* Statt dem zufälligen Auswählen eines Morsezeichens, wollen wir mithilfe einer "Tastatur" die Sende-Buchstaben auswählen können.
* Dabei wird zwar keine richtige Tastatur ersetzt, aber eine Möglichkeit zur Auswahl eines Buchstabens gegeben: durch Kippen des BBC micro:bit.
* Kippt man den BBC micro:bit nach links, laufen die Buchstaben im Alphabet herunter, nach rechts hinauf. Im waagrechten Zustand bleibt die Tastatur "stehen" - dann kann man den Buchstaben senden - testet dies.
* Überlegt: Wie kann man mit der Sensorik des BBC micro:bit eine andere Auswahl schaffen: mit Licht, mit Sound, Neigung, Zufall, ... ?
* Welche Werte liefern die einzelnen Sensoren des BBC Micro:bit - untersuche?


==[[Datei:presentation.png|20px|Icon]] Präsentation und Reflexion ==
==[[Datei:presentation.png|20px|Icon]] Präsentation und Reflexion ==


===Allgemein===
* Was könnte man bei jedem gezeigten Programm verändern oder verbessern?  
* Stelle dein Ergebnis vor! Was kann dein Produkt?
* Was war zu schwierig zu verstehen, ersucht die Lehrperson um Unterstützung.
* 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===
[[Datei:Morse-Tafel.png|right|400px]]
* Welche Darstellungssymbole (-.) wurde für die beiden Morsezeichen auf dem Micro:bit gewählt, welche Darstellung könnte man noch verwenden?
* Wie habt ihr während der Übungen festgelegt, wer senden und wer empfangen darf?
* Wie funktionierte das Senden eines ganzen Wortes - habt ihr das versucht?
* 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 Singal des Micro:bit?
* Überlege, warum die Morsespezialistinnen diese rechts dargestellte Tabelle zum Nachschlagen der Morsezeichen lieber verwenden als die obere Liste?
* Welches wichtige Morsewort wird heute noch immer verwendet? Ein wichtiges Notsignal: ...  ---  ... 
* Wie könnte man die Morsesignal 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 dir erstes Gehäuse für den Micro:bit aussehen, damit dieser "besser in der hand liegt" beim schnellen Morsen.


==[[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.
* Ü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.  
* Wie könnte man gleich einen ganzen Buchstaben durch einen Tastendruck senden? Dh. man sendet gleich ein A oder B mit Morsecode aus.
* Könnte man dieses "'''Handshake'''" auch automatisieren?
* Wie könnte man auf dem Sender-Micro:bit einen Buchstaben auswählen und er wird dann als Morsecode versendet, anstatt als Programmiererin das Programm jedesmal zu ändern
* Wie könnte man auf dem Sender-BBC micro:bit nicht nur einen Buchstaben, sondern einen ganzen Satz auswählen lassen? Er wird dann als Morsecode versendet, anstatt als Programmiererin oder Programmierer das Programm jedes Mal zu ändern.
* Überlege andere Sysmbole für eine Geheimsprache zu Übertragung
* Überlege andere Symbole für eine Geheimsprache zur Übertragung - probiert diese auch auf dem BBC micro:bit aus.
* Probiert diese auch auf dem Micro:bit aus.
* Der Profibegriff zu diesem Thema heißt "Elektronische Datenkommunikation" und stellt einen enorm wichtigen Bereich der Computerwissenschaft dar - es würde kein Handy und keine Automaten ohne dieses Arbeitsgebiet geben.


== Erweiterungsaufgabe ==  
== 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]
* Schreibt zu zweit ein Programm mit einer eigenen Aufgabenstellung, wo die Kommunikation zwischen mehreren BBC micro:bit ein Rolle spielt.
* Es gibt Erweiterungsbeispiele mit dem Namen Morse 2, dort werden Anwendungen des hier gezeigten Beispiels dargestellt sein und bereits viele weitere neue Schritte des Programmierens zeigen.
* Ein ganz besonderes Programm von Makecode ermöglichst sogar das Simulieren von Kommunikation mit 2 BBC micro:bit auf dem Bildschirm.
* Erweiterungsbeispiele: [[Morse2]]
** [[https://makecode.com/multi#|Programmaufruf: Multi Micro:bit]]

Aktuelle Version vom 30. März 2022, 08:56 Uhr

Icon Übertragen von Geheimcode II

Hallo, wir sind Robi-x01 und Robi-x02 - wir werden uns in diesem Abschnitt einige erweiterte Programmabschnitte ansehen, wie wir beide noch besser und bequemer kommunizieren können.

  • Du solltest auf jeden Fall im Zweier-Team arbeiten.
  • Unsere Begrüßung an dich ist nun schon etwas länger:

Icon Aufgabenstellung

Versucht an "fremden" Programmen neue Funktionen selber zu entdecken. Am meisten lernt man dadurch, dass man Systeme, die etwas über dem eigenen Niveau liegen, analysiert, sie verändert und ausbaut. In diesem Beispiel werden Einzelfunktionen nicht mehr detailliert erklärt, sondern nur mehr in der Wirkung dargestellt.

  • Zerlegt die folgenden Programme in Einzelbereiche und versucht durch kleine Änderungen die Wirkung oder den Aufgabenbereich zu erkunden.
  • Diskutiert den Sinn der einzelnen Programme und schlagt Änderungen vor.
  • Ein Programm ist dann gelungen,
    • wenn es mit möglichst wenig Programmcode auskommt.
    • wenn es keine Wiederholungen im Programmcode enthält.
    • wenn es gut lesbar ist.
    • wenn es ohne große Erklärungen seine Aufgaben erledigt.

Icon Materialien

Morsetabelle
  • zwei BBC micro:bit (Version V2 oder V1 mit Lautsprecher oder Kopfhörer)
  • Papier und Stift
  • das Morsealphabet in ausgedruckter Form (ausdruckbar mit einem Klick der rechten Maustaste auf die Morsetabelle, "Grafik kopieren" wählen, in eine Textverarbeitung einfügen und drucken)

Icon Zeitaufwand

  • ca. 2 bis 4 Unterrichtseinheiten pro Programm - je nach Funktionsumfang

Icon Schwierigkeitsgrad

borderlessborderlessborderless

Icon Kompetenzen

Du solltest bereits

  • wissen, wie man Daten mit dem BBC micro:bit anzeigen kann
  • die Tastenfunktionen (A und B, A+B) verwenden können
  • wissen, wie man 2 BBC micro:bit verbindet
  • wissen, wie man zwischen BBC micro:bit Daten sendet und empfängt
  • wissen, wie man Sound ausgibt

Beim Programmieren lernst bzw. übst du

Icon Unterrichtsfächer

  • Werken
  • Informatik
  • Deutsch
  • Physik


Icon Programmsammlung

Öffnet die folgenden Programme in Makecode und spielt diese auf euren jeweiligen BBC micro:bit. Ihr braucht den Link Programmaufruf nur anzuklicken und man kann den jeweiligen Programmcode sehen, verändern und neu speichern. Die meisten Programme sollte man gleich auf zwei Computern aufrufen und schon geht es los: Diese Beispiele sind so gestaltet, dass Sender und Empfänger dasselbe Programm benutzen können. Im Einsatz in der Industrie werden Sender und Empfänger meist verschiedene Aufgaben und somit verschiedene Programme haben.


Programm 1: "Der Morsecode-Beamer"

Programmaufruf

  • Ein Spiel zu zweit:
  • Ihr braucht den Link "Programmaufruf" nur auf zwei Computern aufrufen und testet dann die Verbindung.
  • Einer ist der Sender, der andere Empfänger.
  • Sender: Drücke Taste A für die Aufgabe
  • Empfänger: Suche den empfangenen und angezeigten Buchstaben in der Morsetabelle
  • Führt 10 Versuche durch und tauscht die Rollen: Ändert die gesendete Nachricht.
  • Wie gut bist du im Erkennen von Nachrichten?
  • Schreibt auch die erhaltenen Nachrichten auf!
  • Führt dieses Spiel auch in getrennten Räumen durch.

Programm 2: "Kommunikation mit Antwortbestätigung"

Programmaufruf

Marsrover (Modell) - Signaldauer Erde <-> Mars 8 Minuten

Versucht nun folgende Bedingungen einzuhalten:

  • Nur ein BBC micro:bit ist der Sender - der andere ist der Empfänger.
  • Gesendet wird mit der Taste A - geantwortet (bestätigt) wird mit Taste B (man sendet ein “ok”).
  • Möchte man als Empfänger die Nachricht noch einmal erhalten - dann antwortet man mit der Tastenkombination A+B (man sendet ein “no”).
  • Diese Gesetzmäßigkeiten sind in diesem Programm enthalten:
  • Ganz besonders schwierig und realitätsnah wird es, wenn ihr in verschiedene Räume geht.
  • Man sieht an diesem einfachen Beispiel, dass es extrem schwierig ist, eine Kommunikation aufzubauen, wenn Sender und Empfänger nicht in Sprech- und Sichtweite sind.
  • Oft entstehen Probleme bei der Datenübertragung, die manchmal Katastrophen auslösen können, wenn die Regeln nicht ganz genau vereinbart wurden.
  • Du kennst das auch aus Filmen, dass Leute angefordert werden: "Bitte Nachricht bestätigen!
  • Der Fachbegriff für das Erstellen dieser Regeln heißt Handshake.

Eine aktuelle Anwendung aus der Wissenschaft, wo das extrem wichtig ist:

  • Amerikanische Weltraummission:
  • Derzeit befindet sich ein Roboter auf dem Mars, dieser wird mit Befehlen von der Erde gesteuert.
  • Ein Befehl dauert vom Absenden auf der Erde bis zum Empfänger auf dem Mars acht Minuten.
  • Man kann sich vorstellen, dass hier sehr exakte Abmachungen getroffen werden müssen, wann sendet wer, wie ist die Bestätigung oder die Antwort.
  • Auch alle Fotos vom Mars werden mit genauen Regeln Zeichen-für-Zeichen zur Erde geschickt.
  • Es können über diese Funksignale nur Zahlen zwischen Systemen geschickt werden. Wie beim BBC micro:bit muss die Gegenstelle die gesendete Nachricht dann entschlüsseln, auswerten und in Befehle oder Bilder umwandeln.

Programm 3: "Senden einer Nachrichtenzeile"

Programmaufruf

Verwende diesen einfachen Programmcode und ändere die Übertragungsnachricht.

  • Eine ganze Zeile lesen (hier sind die Wortgrenzen mit einem # markiert) - normalerweise ist das eine längere Pause von etwa 1-3 Sekunden.
  • Was könnte man beim Empfänger noch gestalten, damit dieser mehr Zeit zum Lesen hat oder die Nachricht noch einmal ansehen kann?
  • Diskutiert: Was hat noch nicht gut funktioniert, was ist zu verbessern?

Programm 4: "Zeigen eines Zufallsbuchstaben einer Liste"

Programmaufruf

  • Wir werden in diesem Programm 26 Buchstaben verwenden - also brauchen wir eine Zufallszahl zwischen 0 und 25.
  • Dabei greifen wir mit dem Befehl liste_buchstaben[zufall] auf ein Element der Buchstaben-Liste zu und zeigen den gefundenen Buchstaben an.
  • Experimentiert mit diesem Befehl - hier kommen bereits Listen (Arrays) zum Einsatz, diese sind eine der wichtigsten Variablentypen in der Programmierung.

Programm 5: "Sende ein zufälliges Morsezeichen zum Empfänger"

Programmaufruf

  • Ein zufälliges Morsezeichen zum Empfänger versenden:
  • zwei Listen mit 26 Listenelementen

Programm 6: "Senden mit Handshake"

Programmaufruf

  • Rollen tauschen** (immer auf die genaue Abstimmung mit der Partnerin oder dem Partner achten)
  • Merke: Die Taste A gehört immer dem Sender.
  • Erfindet selbst neue Spielregeln.

Programm 7: "Senden mit Tonausgabe"

Programmaufruf

  • Einbau einer Zusatzfunktion zur Tonausgabe (BBC micro:bit V2 erforderlich oder ein angeschlossener Kopfhörer):
  • Sobald ein Buchstabe den Empfänger erreicht, soll ein Ton gespielt werden, ebenso, wenn die Antwort beim Sender ankommt.

Programm 8: "Senden von akustischen Morse-Signalen"

Programmaufruf

  • Hierzu muss das empfangene Morsezeichen (receiveString) zerlegt und untersucht werden.
  • Es wird eine Schleife durch alle übertragenen Morsezeichen gestartet und analysiert,
    • ob ein "." vorkommt: dann wird ein kurzer Ton gespielt
    • ob ein "-" vorkommt: dann wird ein langer Ton gespielt
    • ob ein Leerzeichen (Wortende) vorkommt -> Pause

Programm 9: "Senden von Lichtsignalen"

Programmaufruf

  • Statt den optischen Signalen werden jetzt kurze und lange Lichtsignale gesendet.
  • Sobald ein Morsecode gewählt ist, sollte das Zeichen **Punkt** ein kurzes Lichtsignal erzeugen und der **Strich** ein langes Lichtsignal.
  • Erreichen kann man diesen Effekt, indem man alle 25 Lichtpunkte des BBC micro:bit verschieden lange aufleuchten lässt.

Programm 10: "Eine Tastatur zum Auswählen der Buchstaben"

Programmaufruf

  • Statt dem zufälligen Auswählen eines Morsezeichens, wollen wir mithilfe einer "Tastatur" die Sende-Buchstaben auswählen können.
  • Dabei wird zwar keine richtige Tastatur ersetzt, aber eine Möglichkeit zur Auswahl eines Buchstabens gegeben: durch Kippen des BBC micro:bit.
  • Kippt man den BBC micro:bit nach links, laufen die Buchstaben im Alphabet herunter, nach rechts hinauf. Im waagrechten Zustand bleibt die Tastatur "stehen" - dann kann man den Buchstaben senden - testet dies.
  • Überlegt: Wie kann man mit der Sensorik des BBC micro:bit eine andere Auswahl schaffen: mit Licht, mit Sound, Neigung, Zufall, ... ?
  • Welche Werte liefern die einzelnen Sensoren des BBC Micro:bit - untersuche?

Icon Präsentation und Reflexion

  • Was könnte man bei jedem gezeigten Programm verändern oder verbessern?
  • Was war zu schwierig zu verstehen, ersucht die Lehrperson um Unterstützung.

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.
  • Könnte man dieses "Handshake" auch automatisieren?
  • Wie könnte man auf dem Sender-BBC micro:bit nicht nur einen Buchstaben, sondern einen ganzen Satz auswählen lassen? Er wird dann als Morsecode versendet, anstatt als Programmiererin oder Programmierer das Programm jedes Mal zu ändern.
  • Überlege andere Symbole für eine Geheimsprache zur Übertragung - probiert diese auch auf dem BBC micro:bit aus.
  • Der Profibegriff zu diesem Thema heißt "Elektronische Datenkommunikation" und stellt einen enorm wichtigen Bereich der Computerwissenschaft dar - es würde kein Handy und keine Automaten ohne dieses Arbeitsgebiet geben.

Erweiterungsaufgabe

  • Schreibt zu zweit ein Programm mit einer eigenen Aufgabenstellung, wo die Kommunikation zwischen mehreren BBC micro:bit ein Rolle spielt.
  • Ein ganz besonderes Programm von Makecode ermöglichst sogar das Simulieren von Kommunikation mit 2 BBC micro:bit auf dem Bildschirm.