Deutsch English |
DU LERNST HIER... |
wie zwei Computer über Bluetooth miteinander Informationen austauschen. |
DRAHTLOSE KOMMUNIKATION |
Bei der Kommunikation zwischen zwei micro:bits (auch Knoten genannt) ist jeder der Knoten gleichzeitig ein Sender und ein Empfänger. Zuerst schalten beide Knoten mit radio.on() das Sende-/Empfangsgerät ein. Dabei wird eine drahtlose Bluetooth-Verbindung erstellt. Nachfolgend kann jeder der Knoten mit radio.send(msg) eine Message (als String) an den anderen Knoten senden, die dort zuerst in einen Empfangsbuffer wie in einer Warteschlange gespeichert wird. Mit radio.receive() holst du die "älteste" Message, die dann im Buffer gelöscht wird.
|
MUSTERBEISPIELE |
Du erstellst mit einer anseren Person eine drahtlose Kommunikation, um Informationen mit Punkten und Strichen (wie im Morsecode) auszutauschen. Wenn man auf dem einen micro:bit den Button A klickt, so leuchtet beim anderen die mittlere LED des Displays während ½ s auf (wie ein Punkt), klickt man auf Button B so leuchten drei LEDs auf (wie ein Strich).
Der zentrale Teil des Programms besteht aus einer Endlosschleife, in der zuerst das Senden und dann das Empfangen geregelt wird. Wenn A geklickt wird, überträgst du die Message "p", (kurz für "point"), wenn B geklickt wird, überträgst du "d" (kurz für "dash"). Nachfolgend holst du mit receive() den ältesten Eintrag in der Warteschlage. (Falls diese leer ist, kriegst du den speziellen Wert None.) Je nachdem, ob du "p" oder "d" erhalten hast, führst du die entsprechende Aktion aus.
Echte Morsestationen arbeiten fast immer mit kurzen und langen Tönen. Dazu musst du einen Kopfhörer (oder wie im Kapitel Sound gezeigt einen aktiven Lautsprecher) anschliessen. Dein Programm soll jetzt beim Empfänger den Ton einschalten, solange der Button A gedrückt ist. Sobald der Button gedrückt wird, sendest du dem Empfänger die Message "d" (für "down"), wenn du den Button loslässt, so sendest du "u" (für "up"). Dazu musst du eine boolesche Variable down einführen, wo du dir merkst, ob der Button gedrückt oder losgelassen ist. Orientiere dich über den Morsecode und versuche einige kurzen Meldungen (z.B. "SOS") auszutauschen. import radio from microbit import * import music radio.on() down = False while True: if button_a.is_pressed() and not down: down = True radio.send("d") elif not button_a.is_pressed() and down: down = False radio.send("u") rec = radio.receive() if rec != None: if rec == "d": music.pitch(500, 1000000, wait = False) elif rec == "u": music.stop() sleep(10) |
MERKE DIR... |
dass der Sender mit send(msg) eine Message sendet, die dann im Empfangsbuffer der Reihe nach gespeichert wird, bis der Empfänger die "älteste" mit msg = receive() im Buffer abholt. |
ZUM SELBST LÖSEN |
|
Bei dieser Art von Rechnerkommunikation sind beide Knoten gleichgestellt. Üblicherweise findet aber die Kommunikation gemäss dem Client-Server-Prinzip statt, bei dem der Serverknoten zuerst auf den Anruf eines Clientknotens wartet und dann entscheidet, ob er mit diesem kommunizieren will.
Es handelt sich um eine sogenannte "automatische Morsetaste", wie sie als Elbug bei Morsestationen weit verbreitet ist.
Einige Tonfrequenzen:
Ton | Frequenz | Ton | Frequenz |
h' | 494 | h'' | 988 | ||
a' | 440 | a'' | 880 | ||
g' | 392 | g'' | 784 | ||
f' | 349 | f'' | 698 | ||
e' | 330 | e'' | 660 | ||
d' | 294 | d'' | 588 | ||
c' | 262 | c'' | 524 | c''' | 1048 |