from microbit import * # Morse Code Text Sender. G3RSP January 2017 # Version 3 lookup = { "a": (130), # = 82h = 0 1xxx 0010 "b": (260), # = 104h = 1 000x 0100 "c": (324), # = 144h = 1 010x 0100 "d": (259), # = 103h = 1 00xx 0011 "e": (1), # = 1h = 0 xxxx 0001 "f": (68), # = 44h = 0 010x 0100 "g": (387), "h": (4), "i": (2), "j": (228), "k": (323), "l": (132), "m": (386), "n": (258), "o": (451), "p": (196), "q": (420), "r": (131), "s": (3), "t": (257), "u": (67), "v": (36), "w": (195), "x": (292), "y": (356), "z": (388), " ": (0), "1": (245), "2": (117), "3": (53), "4": (21), "5": (5), "6": (261), "7": (389), "8": (453), "9": (485), "0": (501), "/": (293), ".": (174), ",": (414), "?": (102), "(": (357), ")": (365), "'": (246), "=": (277), "-": (270) } def decode(buffer): return lookup.get(buffer) def send_dit(): speed = pin2.read_analog() pin1.write_digital(1) sleep(speed) pin1.write_digital(0) sleep(speed) def send_dah(): speed = pin2.read_analog() pin1.write_digital(1) sleep(speed * 3) pin1.write_digital(0) sleep(speed) def send_letter(mc): elc = 0 els = mc & 7 while elc < els: bit = mc & 256 elc = elc + 1 mc = mc * 2 if bit == 256: send_dah() if bit == 0: send_dit() def send_text(): tctr = 0 while tctr < len(text): char = text[tctr] speed = pin2.read_analog() if char == " ": sleep(speed) buffer = char mc = decode(buffer) send_letter(mc) sleep(speed * 2) tctr = tctr + 1 msg1 = "abcdefghijklmnopqrstuvwxyz1234567890/.,?(-=)" msg2 = "the quick brown fox jumped over the lazy dog's back" msg3 = "pneumonoultramicroscopicsilicovolcanoconios?" pin1.write_digital(0) while True: speed = pin2.read_analog() if button_a.is_pressed(): text = msg1 send_text() if button_b.is_pressed(): text = msg2 send_text() if pin8.read_digital(): text = msg3 send_text()