# Robot ```javascript const motorA = ev3_motorA(); const motorB = ev3_motorB(); const colour = ev3_colorSensor(); display(ev3_connected(motorA) ? "A connected" : "A not connected"); display(ev3_connected(motorB) ? "B connected" : "B not connected"); display(ev3_connected(colour) ? "colour connected" : "colour not connected"); // let green_count = 0; // let red_count = 0; // let flag = true; // //helper functions // function brake() { // ev3_motorSetStopAction(motorA, "brake"); // ev3_motorSetStopAction(motorB, "brake"); // } // function coast() { // ev3_motorSetStopAction(motorA, "coast"); // ev3_motorSetStopAction(motorB, "coast"); // } // function run_slow() { // const motor_dur = 50; // const motor_spd = -300; // ev3_runForTime(motorA, motor_dur, motor_spd); // ev3_runForTime(motorB, motor_dur, motor_spd); // ev3_pause(10); // } // function run_fast() { // const motor_dur = 50; // const motor_spd = -2000; // ev3_runForTime(motorA, motor_dur, motor_spd); // ev3_runForTime(motorB, motor_dur, motor_spd); // ev3_pause(10); // } // while (flag) { // function check_colour() { // if (ev3_colorSensorGetColor(colour) === 3) { // green_count = green_count + 1; // display("green: " + green_count); // } else if (ev3_colorSensorGetColor(colour) === 5) { // red_count = red_count + 1; // display("red: " + red_count); // } else {} // } // // programme // if (red_count === 1) { // run_slow(); // check_colour(); // } else if (red_count === 2) { // flag = false; // } else if (green_count === 1) { // run_slow(); // check_colour(); // } else { // run_fast(); // check_colour(); // } // } // brake(); //Q2 const motorA = ev3_motorA(); const motorB = ev3_motorB(); const colour = ev3_colorSensor(); display(ev3_connected(motorA) ? "A connected" : "A not connected"); display(ev3_connected(motorB) ? "B connected" : "B not connected"); display(ev3_connected(colour) ? "colour connected" : "colour not connected"); function turn(dir) { //motor_dur corresponds to the value for which robot will turn //the required value => 90 const motor_dur = 575; const motor_forward = -1000; const motor_reverse = 1000; //speed of motor have the same absolute values so robot will rotate the same //amount but in different directions if (dir === "left") { ev3_runForTime(motorA, motor_dur, motor_reverse); ev3_runForTime(motorB, motor_dur, motor_forward); ev3_pause(1000); } else if (dir === "right") { ev3_runForTime(motorA, motor_dur, motor_forward); ev3_runForTime(motorB, motor_dur, motor_reverse); ev3_pause(1000); } else {} } function run_forward_for(dist) { dist = dist / 10; //divided by ten so input can match the cm required to run //133 and 1000 corresponds to the value for which our robot travels 10cm const motor_dur = 133; const motor_spd = -1000; for (let i = 0; i < dist; i = i + 1) { ev3_runForTime(motorA, motor_dur, motor_spd); ev3_runForTime(motorB, motor_dur, motor_spd); ev3_pause(200); } } function check_colour() { if (ev3_colorSensorGetColor(colour) === 2) { //Blue } else if (ev3_colorSensorGetColor(colour) === 3) { //Green } else if (ev3_colorSensorGetColor(colour) === 4) { //Yellow } else if (ev3_colorSensorGetColor(colour) === 5) { //Red } else {} } function turn(dir) { //motor_dur corresponds to the value for which robot will turn //the required value => 90 const motor_dur = 575; const motor_forward = -1000; const motor_reverse = 1000; //speed of motor have the same absolute values so robot will rotate the same //amount but in different directions if (dir === "left") { ev3_runForTime(motorA, motor_dur, motor_reverse); ev3_runForTime(motorB, motor_dur, motor_forward); ev3_pause(1000); } else if (dir === "right") { ev3_runForTime(motorA, motor_dur, motor_forward); ev3_runForTime(motorB, motor_dur, motor_reverse); ev3_pause(1000); } else {} } function repair() { run_forward_for(30); check_colour(); turn("right"); run_forward_for(60); turn("right"); run_forward_for(50); } }