View difference between Paste ID: uFADP1sj and z4Db3Tvv
SHOW: | | - or go back to the newest paste.
1
let message = "testing";
2
let charList = "abcdefghijklmnopqrstuvwxyz";
3
const morseMap: { [name: string]: string } = {
4
    a: "._",
5
    b: "_...",
6
    c: "_._.",
7
    d: "_..",
8
    e: ".",
9
    f: ".._.",
10
    g: "__.",
11
    h: "....",
12
    i: "..",
13
    j: ".___",
14
    k: "_._",
15
    l: "._..",
16
    m: "__",
17
    n: "_.",
18
    o: "___",
19
    p: ".__.",
20
    q: "__._",
21
    r: "._.",
22
    s: "...",
23
    t: "_",
24
    u: ".._",
25
    v: "..._",
26
    w: ".__",
27
    x: "_.._",
28
    y: "_.__",
29
    z: "__.."
30
}
31
let morseMapInverse: { [name: string]: string } = {};
32
33
charList.split("").forEach(function (c, i) {
34
    morseMapInverse[morseMap[c]] = c;
35
});
36
37
morseMapInverse["-"] = " ";
38
39
let dot = images.createImage(`
40
    . . . . .
41
    . . # . .
42
    . # # # .
43
    . . # . .
44
    . . . . .
45
    `);
46
47
let dash = images.createImage(`
48
    . . . . .
49
    . . . . .
50
    # # # # #
51
    . . . . .
52
    . . . . .
53
    `);
54
55
let clear = images.createImage(`
56
    . . . . .
57
    . . . . .
58
    . . . . .
59
    . . . . .
60
    . . . . .
61
    `);
62
63
let timings: number[] = [];
64
65
66
control.onEvent(1, 1, function () {
67
    timings.push(input.runningTime());
68
    led.toggle(0, 0);
69
});
70
control.onEvent(1, 2, function () {
71
    timings.push(input.runningTime());
72
    led.toggle(0, 0);
73
});
74
75
function decode(): string {
76
    let morse = "";
77
    let t = 0;
78
    let on = false;
79
    timings.forEach(function (value: number, index: number) {
80
        if (t == 0) {
81
            t = value;
82
        } else {
83
            let deltaT = value - t;
84
            t = value;
85
            if (deltaT < 0) {
86
                led.toggleAll();
87
            }
88
            if (index % 2 == 1) {
89
                if (deltaT < 250) {
90
                    morse = morse + ".";
91
                } else {
92
                    morse = morse + "_";
93
                }
94
            } else {
95
                if (deltaT > 500) {
96
                    morse = morse + "-";
97
                }
98
            }
99
        }
100
        on = !on;
101
    });
102
    let result = "";
103
    morse.split("-").forEach(function (value: string, index: number) {
104
        if (morseMapInverse[value] != undefined) {
105
            result = result + morseMapInverse[value];
106
        } else {
107
            result = result + "#";
108
        }
109
    })
110
    return result;
111
}
112
113
input.onButtonPressed(Button.B, function () {
114
    basic.showString(decode());
115
    timings = [];
116
})
117
basic.forever(function () {
118
119
    /*message.split("").forEach(function (char, index) {
120
        basic.showString(char);
121
        if (char == " ") {
122
            basic.pause(3000);
123
        } else {
124
            morseMap[char].split("").forEach(function (s, i) {
125
                if (s == ".") {
126
                    dot.showImage(0);
127
                    basic.pause(1000);
128
                    clear.showImage(0);
129
                } else {
130
                    dash.showImage(0);
131
                    basic.pause(1000);
132
                    clear.showImage(0);
133
                }
134
            });
135
        }
136
    });
137
    basic.pause(5000);
138
    */
139
})