111 lines
2.8 KiB
Python
111 lines
2.8 KiB
Python
from microbit import *
|
|
import radio
|
|
import time
|
|
|
|
radio.config(channel=25)
|
|
radio.on()
|
|
|
|
alfabet = {
|
|
"A": ".-", "B": "-...", "C": "-.-.", "D": "-..",
|
|
"E": ".", "F": "..-.", "G": "--.", "H": "....",
|
|
"I": "..", "J": ".---", "K": "-.-", "L": ".-..",
|
|
"M": "--", "N": "-.", "O": "---", "P": ".--.",
|
|
"Q": "--.-", "R": ".-.", "S": "...", "T": "-",
|
|
"U": "..-", "V": "...-", "W": ".--", "X": "-..-",
|
|
"Y": "-.--", "Z": "--..", "Æ": ".-.-", "Ø": "---.",
|
|
"Å": ".--.-",
|
|
"1": ".----", "2": "..---", "3": "...--", "4": "....-",
|
|
"5": ".....", "6": "-....", "7": "--...", "8": "---..",
|
|
"9": "----.", "0": "-----"
|
|
}
|
|
|
|
morse = {
|
|
".-": "A", "-...": "B", "-.-.": "C", "-..": "D",
|
|
".": "E", "..-.": "F", "--.": "G", "....": "H",
|
|
"..": "I", ".---": "J", "-.-": "K", ".-..": "L",
|
|
"--": "M", "-.": "N", "---": "O", ".--.": "P",
|
|
"--.-": "Q", ".-.": "R", "...": "S", "-": "T",
|
|
"..-": "U", "...-": "V", ".--": "W", "-..-": "X",
|
|
"-.--": "Y", "--..": "Z", ".-.-": "Æ", "---.": "Ø",
|
|
".--.-": "Å",
|
|
".----": "1", "..---": "2", "...--": "3", "....-": "4",
|
|
".....": "5", "-....": "6", "--...": "7", "---..": "8",
|
|
"----.": "9", "-----": "0"
|
|
}
|
|
|
|
tegn_skiller = "/"
|
|
ord_skiller = "//"
|
|
|
|
prik = 200 # tid, i millisekunder
|
|
streg = prik * 3 # 600 millisekunder
|
|
bogstav = streg # 600 millisekunder pause
|
|
ord = prik * 7 # 1.4 sekund pause
|
|
|
|
test_ord = "coding pirates rules"
|
|
|
|
running = True
|
|
|
|
def alfa_2_morse(tegn):
|
|
return alfabet[tegn.upper()]
|
|
|
|
def morse_2_alfa(kode):
|
|
return morse[kode]
|
|
|
|
def vis_prik():
|
|
display.set_pixel(2, 2, 9)
|
|
sleep(prik)
|
|
display.clear()
|
|
|
|
def vis_streg():
|
|
display.set_pixel(2, 2, 9)
|
|
sleep(streg)
|
|
display.clear()
|
|
|
|
def send_prik():
|
|
radio.send(".")
|
|
|
|
def send_streg():
|
|
radio.send("-")
|
|
sleep(streg)
|
|
|
|
def nyt_bogstav():
|
|
radio.send("/")
|
|
sleep(bogstav)
|
|
|
|
def nyt_ord():
|
|
radio.send("//")
|
|
sleep(ord)
|
|
|
|
def afslut():
|
|
radio.send("\\")
|
|
return False
|
|
|
|
def sending(sender=False):
|
|
while sender:
|
|
if button_a.was_pressed():
|
|
send_prik()
|
|
timeout_prik = time.ticks_add(time.ticks_ms(), prik)
|
|
timeout_bogstav = time.ticks_add(time.ticks_ms(), bogstav)
|
|
elif button_b.was_pressed():
|
|
send_streg()
|
|
timeout_prik = time.ticks_add(time.ticks_ms(), prik)
|
|
elif button_a.was_pressed() and button_b.was_pressed():
|
|
sender=afslut()
|
|
if time.ticks_diff(timeout_prik, time.ticks_ms()) > 0:
|
|
if time.ticks_diff():
|
|
pass
|
|
|
|
def receiving(modtag=False):
|
|
while modtag:
|
|
tmp = ""
|
|
msg = radio.receive()
|
|
|
|
rolle = "sender"
|
|
|
|
# Code in a 'while True:' loop repeats forever
|
|
while running:
|
|
if rolle == "sender":
|
|
sending(sender=True)
|
|
elif rolle == "modtager":
|
|
receiving(True)
|
|
|