/
esc-blobfish.js
57 lines (47 loc) · 1.13 KB
/
esc-blobfish.js
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
const {Board, ESC, Fn, Led} = require("../lib/johnny-five.js");
const keypress = require("keypress");
const board = new Board();
board.on("error", error => {
console.error(error);
process.exit(1);
});
board.on("ready", () => {
const led = new Led(13);
const esc = new ESC({
device: "FORWARD_REVERSE",
pin: 11,
});
let speed = 0;
let last = null;
// just to make sure the program is running
led.blink(500);
function controller(_, key) {
let change = 0;
if (key) {
if (!key.shift) {
change = esc.neutral;
speed = 0;
} else {
if (key.name === "up" || key.name === "down") {
if (last !== key.name) {
change = esc.neutral;
speed = 0;
} else {
speed += 1;
change = key.name === "up" ?
esc.neutral + speed :
esc.neutral - speed;
}
last = key.name;
}
}
if (change) {
esc.throttle(change);
}
}
}
keypress(process.stdin);
process.stdin.on("keypress", controller);
process.stdin.setRawMode(true);
process.stdin.resume();
});