diff --git a/roomba/main.ino b/roomba/main.ino new file mode 100644 index 0000000..ec6263b --- /dev/null +++ b/roomba/main.ino @@ -0,0 +1,52 @@ +#include "Arduino.h" +#include "Wire.h" +#include "MeMCore.h" + +// Declare 1 variable of type MeUltrasonicSensor at PORT_3 +MeUltrasonicSensor sensor(PORT_3); +int speed = 100; +MeDCMotor _leftMotor(9); +MeDCMotor _rightMotor(10); +bool goagain = false; + +// Define the number of iterations required to turn for 30 degrees +// This value may need to be adjusted based on the specific motor and robot configuration +#define TURN_ITERATIONS 50 + +void setup() { + // Initialize the serial port at 9600 baud + Serial.begin(9600); + // put your setup code here, to run once: + _leftMotor.run(0); + _rightMotor.run(0); +} + +void loop() { + float distance = sensor.distanceCm(); + // Use parentheses to enclose the condition + if (distance <= 15 or goagain == true) { + goagain = false; + // Add a for loop to turn for 30 degrees + for (int i = 0; i < TURN_ITERATIONS; i++) { + _leftMotor.run(speed); + _rightMotor.run(speed); + delay(10); + } + // Stop the motors after turning + _leftMotor.run(0); + _rightMotor.run(0); + // Check the distance again + distance = sensor.distanceCm(); + if (distance < 90) { + goagain = true; + } + } else { + _leftMotor.run(-speed); + _rightMotor.run(speed); + } + // Add a small delay to avoid continuous motor changes + delay(10); + Serial.print("Distance: "); + Serial.print(distance); + Serial.println(" cm"); +}