Tidied up train examples
This commit is contained in:
parent
74a222fd8c
commit
d40ba5cee6
@ -19,12 +19,12 @@ const trains = [
|
|||||||
{
|
{
|
||||||
name: "NK_Horizon_1",
|
name: "NK_Horizon_1",
|
||||||
ports: ["A"],
|
ports: ["A"],
|
||||||
lights: ["B"]
|
lights: ["B"],
|
||||||
|
reverse: ["A"]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "NK_Horizon_2",
|
name: "NK_Horizon_2",
|
||||||
ports: ["A"],
|
ports: ["A"]
|
||||||
reverse: ["A"]
|
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
@ -35,7 +35,8 @@ const trains = [
|
|||||||
{
|
{
|
||||||
name: "NK_Emerald",
|
name: "NK_Emerald",
|
||||||
ports: ["A"],
|
ports: ["A"],
|
||||||
lights: ["B"]
|
lights: ["B"],
|
||||||
|
reverse: ["A"]
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
@ -46,7 +47,8 @@ const trains = [
|
|||||||
{
|
{
|
||||||
name: "NK_Metroliner",
|
name: "NK_Metroliner",
|
||||||
ports: ["A"],
|
ports: ["A"],
|
||||||
lights: ["B"]
|
lights: ["B"],
|
||||||
|
reverse: ["A"]
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
@ -57,7 +59,7 @@ poweredUP.on("discover", async (hub) => {
|
|||||||
|
|
||||||
if (hub instanceof PoweredUP.PUPRemote) {
|
if (hub instanceof PoweredUP.PUPRemote) {
|
||||||
await hub.connect();
|
await hub.connect();
|
||||||
hub._currentTrain = 0;
|
hub._currentTrain = 2;
|
||||||
hub.on("button", (button, state) => {
|
hub.on("button", (button, state) => {
|
||||||
|
|
||||||
if (button === "GREEN") {
|
if (button === "GREEN") {
|
||||||
@ -69,8 +71,7 @@ poweredUP.on("discover", async (hub) => {
|
|||||||
hub.setLEDColor(trains[hub._currentTrain].color);
|
hub.setLEDColor(trains[hub._currentTrain].color);
|
||||||
console.log(`Switched active train on remote ${hub.name} to ${trains[hub._currentTrain].name}`);
|
console.log(`Switched active train on remote ${hub.name} to ${trains[hub._currentTrain].name}`);
|
||||||
}
|
}
|
||||||
break;
|
} else if ((button === "LEFT" || button === "RIGHT") && state !== PoweredUP.Consts.ButtonStates.RELEASED) {
|
||||||
} else if (button === "LEFT" || button === "RIGHT") {
|
|
||||||
trains[hub._currentTrain]._speed = trains[hub._currentTrain]._speed || 0;
|
trains[hub._currentTrain]._speed = trains[hub._currentTrain]._speed || 0;
|
||||||
if (state === PoweredUP.Consts.ButtonStates.UP) {
|
if (state === PoweredUP.Consts.ButtonStates.UP) {
|
||||||
trains[hub._currentTrain]._speed += 10;
|
trains[hub._currentTrain]._speed += 10;
|
||||||
@ -79,17 +80,19 @@ poweredUP.on("discover", async (hub) => {
|
|||||||
}
|
}
|
||||||
} else if (state === PoweredUP.Consts.ButtonStates.DOWN) {
|
} else if (state === PoweredUP.Consts.ButtonStates.DOWN) {
|
||||||
trains[hub._currentTrain]._speed -= 10;
|
trains[hub._currentTrain]._speed -= 10;
|
||||||
if (trains[hub._currentTrain]._speed < 0) {
|
if (trains[hub._currentTrain]._speed < -100) {
|
||||||
trains[hub._currentTrain]._speed = 0;
|
trains[hub._currentTrain]._speed = -100;
|
||||||
}
|
}
|
||||||
} else if (state === PoweredUP.Consts.ButtonStates.STOP) {
|
} else if (state === PoweredUP.Consts.ButtonStates.STOP) {
|
||||||
trains[hub._currentTrain]._speed = 0;
|
trains[hub._currentTrain]._speed = 0;
|
||||||
}
|
}
|
||||||
for (let trainHub in trains[hub._currentTrain].hubs) {
|
for (let trainHub in trains[hub._currentTrain].hubs) {
|
||||||
|
trainHub = trains[hub._currentTrain].hubs[trainHub];
|
||||||
if (trainHub._hub) {
|
if (trainHub._hub) {
|
||||||
for (let port in trainHub.ports) {
|
for (let port in trainHub.ports) {
|
||||||
|
port = trainHub.ports[port];
|
||||||
trainHub.reverse = trainHub.reverse || [];
|
trainHub.reverse = trainHub.reverse || [];
|
||||||
trainHub._hub.setMotorSpeed(port, trainHub.reverse.indexOf(port) >= 0 ? -trains[hub._currentTrain].speed : trains[hub._currentTrain].speed);
|
trainHub._hub.setMotorSpeed(port, trainHub.reverse.indexOf(port) >= 0 ? -trains[hub._currentTrain]._speed : trains[hub._currentTrain]._speed);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -103,7 +106,9 @@ poweredUP.on("discover", async (hub) => {
|
|||||||
}
|
}
|
||||||
|
|
||||||
for (let train in trains) {
|
for (let train in trains) {
|
||||||
|
train = trains[train];
|
||||||
for (let trainHub in train.hubs) {
|
for (let trainHub in train.hubs) {
|
||||||
|
trainHub = train.hubs[trainHub];
|
||||||
if (hub.name === trainHub.name) {
|
if (hub.name === trainHub.name) {
|
||||||
await hub.connect();
|
await hub.connect();
|
||||||
trainHub._hub = hub;
|
trainHub._hub = hub;
|
||||||
|
@ -7,9 +7,12 @@ poweredUP.scan(); // Start scanning for trains
|
|||||||
const FORWARD_DIRECTION_COLOR = PoweredUP.Consts.Colors.YELLOW;
|
const FORWARD_DIRECTION_COLOR = PoweredUP.Consts.Colors.YELLOW;
|
||||||
const BACKWARDS_DIRECTION_COLOR = PoweredUP.Consts.Colors.RED;
|
const BACKWARDS_DIRECTION_COLOR = PoweredUP.Consts.Colors.RED;
|
||||||
const TRAIN_SPEED = 40;
|
const TRAIN_SPEED = 40;
|
||||||
|
const STOPPING_SPEED = 2000;
|
||||||
const STOP_DELAY = 2000;
|
const STOP_DELAY = 2000;
|
||||||
const TRAIN_MOTOR_PORT = "A";
|
const TRAIN_MOTOR_PORT = "A";
|
||||||
|
|
||||||
|
let currentSpeed = 0;
|
||||||
|
|
||||||
console.log("Looking for trains...");
|
console.log("Looking for trains...");
|
||||||
|
|
||||||
poweredUP.on("discover", async (hub) => { // Wait to discover a train
|
poweredUP.on("discover", async (hub) => { // Wait to discover a train
|
||||||
@ -19,27 +22,39 @@ poweredUP.on("discover", async (hub) => { // Wait to discover a train
|
|||||||
await hub.connect(); // Connect to train
|
await hub.connect(); // Connect to train
|
||||||
console.log(`Connected to ${hub.name}!`);
|
console.log(`Connected to ${hub.name}!`);
|
||||||
|
|
||||||
await hub.wait(2000); // Wait two seconds before starting the train
|
await hub.sleep(2000); // Wait two seconds before starting the train
|
||||||
hub.setMotorSpeed(TRAIN_MOTOR_PORT, TRAIN_SPEED);
|
hub.setMotorSpeed(TRAIN_MOTOR_PORT, TRAIN_SPEED);
|
||||||
|
currentSpeed = TRAIN_SPEED;
|
||||||
|
console.log("Started moving");
|
||||||
|
|
||||||
hub.on("color", async (port, color) => {
|
hub.on("color", async (port, color) => {
|
||||||
|
|
||||||
if (color === FORWARD_DIRECTION_COLOR && moving) { // If yellow is seen, stop the train, wait seconds, and reverse direction
|
if (color === FORWARD_DIRECTION_COLOR && moving) { // If yellow is seen, stop the train, wait seconds, and reverse direction
|
||||||
|
|
||||||
|
console.log("Slowing down");
|
||||||
moving = false;
|
moving = false;
|
||||||
hub.setMotorSpeed(TRAIN_MOTOR_PORT, 0);
|
await hub.rampMotorSpeed(TRAIN_MOTOR_PORT, currentSpeed, 0, STOPPING_SPEED);
|
||||||
|
currentSpeed = 0;
|
||||||
|
console.log("Stopped");
|
||||||
await hub.sleep(STOP_DELAY);
|
await hub.sleep(STOP_DELAY);
|
||||||
hub.setMotorSpeed(TRAIN_MOTOR_PORT, -TRAIN_SPEED);
|
console.log("Changing direction and speeding up");
|
||||||
await hub.sleep(2000);
|
await hub.rampMotorSpeed(TRAIN_MOTOR_PORT, currentSpeed + 10, TRAIN_SPEED, STOPPING_SPEED);
|
||||||
|
currentSpeed = TRAIN_SPEED;
|
||||||
|
await hub.sleep(STOPPING_SPEED + 1000);
|
||||||
moving = true;
|
moving = true;
|
||||||
|
|
||||||
} else if (color === BACKWARDS_DIRECTION_COLOR && moving) { // If red is seen, stop the train, wait seconds, and reverse direction
|
} else if (color === BACKWARDS_DIRECTION_COLOR && moving) { // If red is seen, stop the train, wait seconds, and reverse direction
|
||||||
|
|
||||||
|
console.log("Slowing down");
|
||||||
moving = false;
|
moving = false;
|
||||||
hub.setMotorSpeed(TRAIN_MOTOR_PORT, 0);
|
await hub.rampMotorSpeed(TRAIN_MOTOR_PORT, currentSpeed, 0, STOPPING_SPEED);
|
||||||
|
currentSpeed = 0;
|
||||||
|
console.log("Stopped");
|
||||||
await hub.sleep(STOP_DELAY);
|
await hub.sleep(STOP_DELAY);
|
||||||
hub.setMotorSpeed(TRAIN_MOTOR_PORT, -TRAIN_SPEED);
|
console.log("Changing direction and speeding up");
|
||||||
await hub.sleep(2000);
|
await hub.rampMotorSpeed(TRAIN_MOTOR_PORT, -(currentSpeed + 10), -TRAIN_SPEED, STOPPING_SPEED);
|
||||||
|
currentSpeed = -TRAIN_SPEED;
|
||||||
|
await hub.sleep(STOPPING_SPEED + 1000);
|
||||||
moving = true;
|
moving = true;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user