Das
Projekt realisiert eine Morsetaste mit Decoder-Funktion. Als Morsetaste
wird die Taste A verwendet. Man hat einen Mithörton aus dem
Calliope-Lautsprecher. Zusätzlich werden die gemorsten Zeichen
dekodiert und im Display angezeigt. Das hat sich als ideale Methode für
die ersten Schritte zur Morsetelegrafie erwiesen.
Es
werden während der Zeichenerzeugung die Zeiten für Punkte, Striche und
Pausen in Einheiten von 10 ms gemessen. Das Programm ist für 60 Zeichen
pro Minute optimiert, also für Punktlängen von 100 ms, Strichlängen und
300 ms und Pausenlängen zwischen den Zeichen von 300 ms. Das Programm
erlaubt jedoch gewisse Toleranzen in beiden Richtungen. Ein Zeichen ist
beendet, wenn eine Pause von mindestens 200 ms auftritt. Ebenso wird
ein Ton als Strich gewertet, wenn er mindestens 200 ms lang ist. Punkte
und Striche werden zu einer Zahl zusammengefügt, die dann die Position
in einem Zeichenstring ergibt. So wird das anzuzeigende Zeichen
gefunden.
Das Programm funktioniert ohne Änderung am Calliope
und am Microbit, wobei dann ein Lautsprecher an P1 angeschlossen werden
muss.
let T1 = 0
let T0 = 0
let C = 0
let T = ""
basic.forever(() => {
C = 1
T0 = 0
while (T0 < 20) {
T1 = 0
T0 = T0 + 1
basic.pause(10)
T1 = 0
while (input.buttonIsPressed(Button.A)) {
music.ringTone(700)
T0 = 0
T1 = T1 + 1
basic.pause(10)
}
music.ringTone(0)
if (T1 > 5) {
C = C * 2
}
if (T1 > 20) {
C = C + 1
}
}
if (C < 30) {
basic.showString(T.charAt(C))
basic.pause(100)
}
})
T = " ETIANMSURWDKGOHVFYLZPJBXCYZQ "
Morse-Funkgerät
Dieses
Morsegerät mit Mithörton hilft beim Erlernen der Morse-Telegrafie.
Als Morsetaste dient wahlweise die Taste A oder eine externe Taste an
P1. Die erste Betätigung wählt die Taste aus. Hat man auf die Taste A
gedrückt, ist nur noch diese Eingabe aktiv. Wenn man dagegen die
externe Taste bedient hat, reagiert das Programm nicht mehr auf die
Taste A.
Wenn eine ganze Gruppe zum Beispiel zur Vorbereitung
auf den Amateurfunk Morsen lernen will, ist es hilfreich, wenn alles
möglichst realistisch abläuft. Man wählt eine Frequenz und sendet einen
allgemeinen Anruf, oder man antwortet auf eine rufende Station. Mehrere
Stationen können gleichzeitig senden und empfangen, weil sie
unterschiedliche Frequenzen verwenden.
In diesem Projekt
werden zehn Kanäle verwendet, die als Funk-Gruppen umgeschaltet werden
können. Dazu dient die Taste B. Der gerade aktive Kanal wird im
LED-Display angezeigt. Zwei Stationen können nur dann in Verbindung
treten, wenn sie auf den gleichen Kanal eingestellt sind. Auf einem der
zehn Kanäle kann gleichzeitig auch der weiter unten beschriebene
automatische Morsesender seine Fünfergruppen senden.
let K = 0
input.onButtonPressed(Button.B, () => {
K = K + 1
if (K > 9) {
K = 0
}
radio.setGroup(K)
basic.showNumber(K)
})
basic.forever(() => {
if (input.buttonIsPressed(Button.A)) {
radio.sendNumber(1)
music.ringTone(700)
while (input.buttonIsPressed(Button.A)) {
}
radio.sendNumber(0)
music.ringTone(0)
while (!(input.buttonIsPressed(Button.A))) {
basic.pause(10)
}
}
if (input.pinIsPressed(TouchPin.P1)) {
radio.sendNumber(1)
music.ringTone(700)
while (input.pinIsPressed(TouchPin.P1)) {
basic.pause(10)
}
radio.sendNumber(0)
music.ringTone(0)
while (!(input.pinIsPressed(TouchPin.P1))) {
basic.pause(10)
}
}
})
radio.onDataPacketReceived(({receivedNumber: D}) => {
if (D == 1) {
music.ringTone(700)
} else {
music.ringTone(0)
}
})
radio.setGroup(0)
K = 0
basic.showNumber(0)
Siehe auch: Morse-Telegraphie
für den Sparrow
Fünfergruppen-Morse-Trainer
Dieses
Projekt erzeugt die international üblichen Fünfergruppen zum Trainieren
der Mithörgeschwindigkeit. Das Programm erzeugt jeweils fünf Buchstaben
als Morsezeichen am Lautsprecher zum Hören und Mitschreiben. Als Hilfe
werden die Zeichen auch im Display sichtbar.
Intern ist jedes
Morsezeichen einer Binärzahl zugeordnet, wobei Nullen für Punkte und
Einsen für Striche stehen. Ein A (kurz-lang) wird also 01. Aber damit
die Zeichenlänge eindeutig ist, wird noch eine 1 als Startbit
vorangestellt. Das A wird also nun zu 0000 0101. Um es in Töne
umzusetzen, muss das Programm zuerst von links nach rechts die
erste Eins suchen. Dann ist klar dass die nachfolgende Null für einen
Punkt steht und dass insgesamt nur noch ein Strick folgt.
Das
Programm erzeugt Zufallszahlen von 0 bis 25. Die 0 steht für einen
einzelnen Punkt, also für den Buchstaben E. Durch die Addition mit 2
wird das Startbit hinzugefügt. Alle Buchstaben des Alphabets haben eine
maximale Länge von vier Punkten und Strichen. Und sie sind bis auch
zwei Ausnahmen wie aufsteigende Zahlen angeordnet.
Für die
Ausgabe an den Lautsprecher braucht man zwei Schleifen. Die erste sucht
den Anfang des Zeichens, indem sie das Startbit auswertet. Die
jeweilige Position des beobachteten Bits steht in J. Damit ist dann
klar wie lang das Morsezeichen ist. Damit kann jede noch folgende Eins
zu einem Strich und jede Null zu einem Punkt werden.
Die
Dekodierung zur Anzeige des gemorsten Buchstabens erfordert nur eine
Zeichenkette, die alle Buchstaben in der richtigen Reihenfolge enthält.
Die Liste beginnt mit dem E (Zufallszahl 0, mit Startbit 2).
Darauf folgt das T (ein Strich, Zufallszahl 1, mit Startbit 3) und so
weiter. Am Ende muss nur das Zeichen an der entsprechenden Position aus
der Zeichenkette T gelesen werden.
let D = 0
let J = 0
let C = 0
let T = ""
basic.forever(() => {
for (let I = 0; I <= 4; I++) {
C = Math.random(26)
C = C + 2
if (C == 19) {
C = 27
}
if (C == 21) {
C = 28
}
if (C == 25) {
C = 29
}
J = 1
D = C
while (C < 128) {
C = C * 2
J = J + 1
}
while (J < 8) {
C = C * 2
C = C % 256
radio.sendNumber(1)
music.ringTone(700)
if (C >= 128) {
basic.pause(300)
} else {
basic.pause(100)
}
radio.sendNumber(0)
music.ringTone(0)
basic.pause(100)
J = J + 1
}
basic.pause(300)
basic.showString(T.charAt(D))
}
basic.pause(1500)
})
T = " ETIANMSURWDKGOHVFYLZPJBXCYZQ"
radio.setGroup(0)
Elektronik-Labor Projekte Microbit