-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathmorse_code_translator.ino
More file actions
86 lines (70 loc) · 2.29 KB
/
morse_code_translator.ino
File metadata and controls
86 lines (70 loc) · 2.29 KB
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
80
81
82
83
84
85
86
struct MorseEntry {
char character;
const char* morse;
};
MorseEntry morseTable[] = {
{'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', "----."},
{'.', ".-.-.-"}, {',', "--..--"}, {'?', "..--.."}, {'\'', ".----."},
{'!', "-.-.--"}, {'/', "-..-."}, {'(', "-.--."}, {')', "-.--.-"},
{'&', ".-..."}, {':', "---..."}, {';', "-.-.-."}, {'=', "-...-"},
{'+', ".-.-."}, {'-', "-....-"}, {'_', "..--.-"}, {'\"', ".-..-."},
{'@', ".--.-."}, {' ', "/"}
};
String morseDecode(String text) {
String morse = "";
text.toLowerCase();
for (char c : text) {
for (int i = 0; i < (sizeof(morseTable) / sizeof(MorseEntry)); ++i) {
if (morseTable[i].character == c) {
morse.concat(morseTable[i].morse);
if (morseTable[i].morse == "/") {
morse.remove(morse.length()-2, 1);
} else {
morse.concat(" ");
};
};
};
};
return morse;
}
void setup() {
pinMode(13, OUTPUT);
digitalWrite(13, LOW);
String text = "peace be upon you, the plan is to kill my self";
double speed = 1; // default: 1
const int baseDotDuration = 100/speed;
const int baseDashDuration = 300/speed;
const int baseDotDashDuaration = 100/speed;
const int baseInterCharGap = 300/speed;
const int baseInterWordGap = 700/speed;
String morse = morseDecode(text);
for (char c : morse) {
if (c == '.') {
digitalWrite(13, HIGH);
delay(baseDotDuration);
digitalWrite(13, LOW);
delay(baseDotDashDuaration);
} else if (c == '-') {
digitalWrite(13, HIGH);
delay(baseDashDuration);
digitalWrite(13, LOW);
delay(baseDotDashDuaration);
} else if (' ') {
digitalWrite(13, LOW);
delay(baseInterCharGap);
} else if ('/') {
digitalWrite(13, LOW);
delay(baseInterWordGap);
}
};
};
void loop() {};