const PoweredUP = require(".."); const poweredUP = new PoweredUP.PoweredUP(); poweredUP.scan(); // Start scanning for trains // Change these to make the train behave as you want const STATION_STOP_COLOR = PoweredUP.Consts.Color.RED; const TRAIN_SPEED = 55; const STOPPING_SPEED = 4000; const STOP_DELAY = 6000; const LOOPS_WITHOUT_STOPPING = 3; const TRAIN_MOTOR_PORT = "A"; let currentSpeed = 0; let currentLoop = 0; console.log("Looking for trains..."); poweredUP.on("discover", async (hub) => { // Wait to discover a train let sensing = true; await hub.connect(); // Connect to train console.log(`Connected to ${hub.name}!`); await hub.sleep(2000); // Wait two seconds before starting the train hub.setMotorSpeed(TRAIN_MOTOR_PORT, TRAIN_SPEED); currentSpeed = TRAIN_SPEED; console.log(`Started moving ${hub.name}`); hub.on("colorAndDistance", async (port, color, distance) => { if (color === STATION_STOP_COLOR && distance > 5 && distance < 15 && sensing) { // If color is seen, stop the train, wait, then go again if (currentLoop >= LOOPS_WITHOUT_STOPPING - 1) { console.log(`Looped ${hub.name} (${currentLoop + 1})`); console.log(`Stopping ${hub.name}`); sensing = false; await hub.rampMotorSpeed(TRAIN_MOTOR_PORT, currentSpeed, 0, STOPPING_SPEED); currentSpeed = 0; currentLoop = 0; console.log(`Stopped ${hub.name}`); await hub.sleep(STOP_DELAY); console.log(`Starting ${hub.name}`); await hub.rampMotorSpeed(TRAIN_MOTOR_PORT, currentSpeed + 10, TRAIN_SPEED, STOPPING_SPEED); currentSpeed = TRAIN_SPEED; await hub.sleep(2000); sensing = true; } else { console.log(`Looped ${hub.name} (${currentLoop + 1})`); sensing = false; currentLoop++; await hub.sleep(2000); sensing = true; } } }); });