diff --git a/examples/vernie_roaming.js b/examples/vernie_roaming.js index 314aa85..dee7579 100644 --- a/examples/vernie_roaming.js +++ b/examples/vernie_roaming.js @@ -19,6 +19,32 @@ const Modes = { } +const turnRight = async (vernie, multiplier = 1) => { + await vernie.wait([ + vernie.setMotorAngle("A", 300 * multiplier, 50), + vernie.setMotorAngle("B", 300 * multiplier, -50) + ]); +} + + +const turnHeadRight = async (vernie, multiplier = 1) => { + await vernie.setMotorAngle("D", 35 * 1, 20); +} + + +const turnLeft = async (vernie, multiplier = 1) => { + await vernie.wait([ + vernie.setMotorAngle("A", 300 * multiplier, -50), + vernie.setMotorAngle("B", 300 * multiplier, 50) + ]); +} + + +const turnHeadLeft = async (vernie, multiplier = 1) => { + await vernie.setMotorAngle("D", 35 * 1, -20); +} + + const scan = (vernie) => { return new Promise(async (resolve) => { let lastDistance = 0; @@ -26,23 +52,20 @@ const scan = (vernie) => { lastDistance = distance; }); await vernie.wait([ - vernie.setMotorAngle("A", 300, 50), - vernie.setMotorAngle("B", 300, -50), - vernie.setMotorAngle("D", 35, 20) + turnRight(vernie), + turnHeadRight(vernie) ]); await vernie.sleep(1000); const rightDistance = lastDistance; await vernie.wait([ - vernie.setMotorAngle("A", 600, -50), - vernie.setMotorAngle("B", 600, 50), - vernie.setMotorAngle("D", 70, -20) + turnLeft(vernie, 2), + turnHeadLeft(vernie, 2) ]); await vernie.sleep(1000); const leftDistance = lastDistance; await vernie.wait([ - vernie.setMotorAngle("A", 300, 50), - vernie.setMotorAngle("B", 300, -50), - vernie.setMotorAngle("D", 35, 20) + turnRight(vernie), + turnHeadRight(vernie) ]); await vernie.sleep(1000); const forwardDistance = lastDistance; @@ -60,9 +83,8 @@ poweredUP.on("discover", async (vernie) => { // Wait to discover Vernie await vernie.connect(); console.log("Connected to Vernie!"); vernie.setLEDColor(PoweredUP.Consts.Colors.BLUE); - vernie.setMotorSpeed("AB", 50); // Start moving! - await vernie.sleep(1000); + vernie.setMotorSpeed("AB", 50); // Start moving! vernie.on("distance", async (port, distance) => { if (distance < 150 && mode === Modes.ROAMING) { // If we're roaming around and we detect an object in front of us, stop and scan @@ -76,26 +98,24 @@ poweredUP.on("discover", async (vernie) => { // Wait to discover Vernie if (rightDistance >= forwardDistance && rightDistance >= leftDistance) { // Go right await vernie.wait([ - vernie.setMotorAngle("A", 300, 50), - vernie.setMotorAngle("B", 300, -50), - vernie.setMotorAngle("D", 35, 20) + turnRight(vernie), + turnHeadRight(vernie) ]); await vernie.sleep(1000); await vernie.wait([ vernie.setMotorSpeed("AB", 50), - vernie.setMotorAngle("D", 35, -20) + turnHeadLeft(vernie) ]); } else if (leftDistance >= forwardDistance && leftDistance >= rightDistance) { // Go left await vernie.wait([ - vernie.setMotorAngle("A", 300, -50), - vernie.setMotorAngle("B", 300, 50), - vernie.setMotorAngle("D", 35, -20) + turnLeft(vernie), + turnHeadLeft(vernie) ]); await vernie.sleep(1000); await vernie.wait([ vernie.setMotorSpeed("AB", 50), - vernie.setMotorAngle("D", 35, 20) + turnHeadRight(vernie) ]); } else { // Go forward