82 lines
2.1 KiB
JavaScript
82 lines
2.1 KiB
JavaScript
const LPF2 = require(".").LPF2;
|
|
|
|
const lpf2 = new LPF2();
|
|
lpf2.scan(); // Start scanning for hubs
|
|
|
|
console.log("Looking for Hubs...");
|
|
|
|
let train = null;
|
|
let left = null;
|
|
let right = null;
|
|
|
|
const trainUUID = "";
|
|
const leftUUID = "";
|
|
const rightUUID = "";
|
|
|
|
let ignoreColor = false;
|
|
let leftSwitchState = false;
|
|
|
|
lpf2.on("discover", async (hub) => {
|
|
|
|
if (hub.uuid === trainUUID) {
|
|
train = hub;
|
|
await train.connect();
|
|
console.log("Train connected!");
|
|
|
|
train.on("color", (port, color) => {
|
|
if (color === LPF2.Consts.Colors.RED && !ignoreColor) {
|
|
train.setMotorSpeed("A", 30);
|
|
ignoreColor = true;
|
|
if (left) {
|
|
if (leftSwitchState) {
|
|
leftSwitchState = !leftSwitchState;
|
|
left.setMotorSpeed("A", 30);
|
|
} else {
|
|
leftSwitchState = !leftSwitchState;
|
|
left.setMotorSpeed("A", -30);
|
|
}
|
|
}
|
|
setTimeout(() => {
|
|
left.setMotorSpeed("A", 0);
|
|
}, 500);
|
|
setTimeout(() => {
|
|
ignoreColor = false;
|
|
}, 2000);
|
|
} else if (color === LPF2.Consts.Colors.BLUE && !ignoreColor) {
|
|
train.setMotorSpeed("A", -30);
|
|
ignoreColor = true;
|
|
setTimeout(() => {
|
|
ignoreColor = false;
|
|
}, 2000);
|
|
}
|
|
});
|
|
|
|
train.setMotorSpeed("A", 30);
|
|
|
|
} else if (hub.uuid === leftUUID) {
|
|
left = hub;
|
|
await left.connect();
|
|
console.log("Left Switch connected!");
|
|
} else if (hub.uuid === rightUUID) {
|
|
right = hub;
|
|
await right.connect();
|
|
console.log("Right Switch connected!");
|
|
} else {
|
|
return;
|
|
}
|
|
|
|
});
|
|
|
|
let color = 0;
|
|
setInterval(() => {
|
|
|
|
const hubs = lpf2.getConnectedDevices();
|
|
hubs.forEach((hub) => {
|
|
hub.setLEDColor(color);
|
|
})
|
|
color++;
|
|
if (color > 10) {
|
|
color = 0;
|
|
}
|
|
|
|
}, 2000); |