-
Notifications
You must be signed in to change notification settings - Fork 4
/
Copy pathmorsecode.py
79 lines (74 loc) · 1.55 KB
/
morsecode.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
from machine import Pin
from time import sleep
CODE = {
'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' : '--..',
'0' : '-----',
'1' : '.----',
'2' : '..---',
'3' : '...--',
'4' : '....-',
'5' : '.....',
'6' : '-....',
'7' : '--...',
'8' : '---..',
'9' : '----.',
'.' : '.-.-.-',
',' : '--..--',
'?' : '..--..',
'/' : '--..-.',
'@' : '.--.-.',
'!' : '-.-.--',
' ' : ' '
}
class Morse:
def __init__(self, pin = 25, wpm = 15):
self.led = Pin(pin, Pin.OUT)
self.wpm = wpm
def flash(self, t = 0.5):
self.led.on()
sleep(t)
self.led.off()
return
def send(self, msg = "SOS"):
tdot = 1.2/self.wpm
tdash = tdot * 3
tspace = tdot * 2
tword = tdot * 6
self.led.off()
for l in msg:
c = CODE.get(l.upper())
for e in c:
if e==".":
self.flash(tdot)
sleep(tdot)
if e=="-":
self.flash(tdash)
sleep(tdot)
if e==" ": sleep(tword)
sleep(tword)
self.led.off()