Skip to Content

Obstacle Avoiding robot


An obstacle-avoiding robot built with Arduino utilizes ultrasonic sensors to detect obstacles in its path. Through programmed logic on the Arduino microcontroller, the robot interprets sensor data to determine the presence and proximity of obstacles. When an obstacle is detected within a certain range, the Arduino sends commands to motor drivers, instructing the robot to stop, reverse, or change direction accordingly. This continuous feedback loop allows the robot to navigate its environment autonomously, avoiding obstacles while moving towards its destination.

 Circuit Diagram :-


Code :-


// By Arduino Techy
// #include <AFMotor.h> #include <NewPing.h> #include <Servo.h> #define TRIG_PIN A0 #define ECHO_PIN A1 #define MAX_DISTANCE 200 #define MAX_SPEED 190 // sets speed of DC motors #define MAX_SPEED_OFFSET 20 NewPing sonar(TRIG_PIN, ECHO_PIN, MAX_DISTANCE); AF_DCMotor motor1(1, MOTOR12_1KHZ); AF_DCMotor motor2(2, MOTOR12_1KHZ); AF_DCMotor motor3(3, MOTOR34_1KHZ); AF_DCMotor motor4(4, MOTOR34_1KHZ); Servo myservo; boolean goesForward=false; int distance = 100; int speedSet = 0; void setup() { myservo.attach(10); myservo.write(115); delay(2000); distance = readPing(); delay(100); distance = readPing(); delay(100); distance = readPing(); delay(100); distance = readPing(); delay(100); } void loop() { int distanceR = 0; int distanceL = 0; delay(40); if(distance<=15) { moveStop(); delay(100); moveBackward(); delay(300); moveStop(); delay(200); distanceR = lookRight(); delay(200); distanceL = lookLeft(); delay(200); if(distanceR>=distanceL) { turnRight(); moveStop(); }else { turnLeft(); moveStop(); } }else { moveForward(); } distance = readPing(); } int lookRight() { myservo.write(50); delay(500); int distance = readPing(); delay(100); myservo.write(115); return distance; } int lookLeft() { myservo.write(170); delay(500); int distance = readPing(); delay(100); myservo.write(115); return distance; delay(100); } int readPing() { delay(70); int cm = sonar.ping_cm(); if(cm==0) { cm = 250; } return cm; } void moveStop() { motor1.run(RELEASE); motor2.run(RELEASE); motor3.run(RELEASE); motor4.run(RELEASE); } void moveForward() { if(!goesForward) { goesForward=true; motor1.run(FORWARD); motor2.run(FORWARD); motor3.run(FORWARD); motor4.run(FORWARD); for (speedSet = 0; speedSet < MAX_SPEED; speedSet +=2) { motor1.setSpeed(speedSet); motor2.setSpeed(speedSet); motor3.setSpeed(speedSet); motor4.setSpeed(speedSet); delay(5); } } } void moveBackward() { goesForward=false; motor1.run(BACKWARD); motor2.run(BACKWARD); motor3.run(BACKWARD); motor4.run(BACKWARD); for (speedSet = 0; speedSet < MAX_SPEED; speedSet +=2) { motor1.setSpeed(speedSet); motor2.setSpeed(speedSet); motor3.setSpeed(speedSet); motor4.setSpeed(speedSet); delay(5); } } void turnRight() { motor1.run(FORWARD); motor2.run(FORWARD); motor3.run(BACKWARD); motor4.run(BACKWARD); delay(500); motor1.run(FORWARD); motor2.run(FORWARD); motor3.run(FORWARD); motor4.run(FORWARD); } void turnLeft() { motor1.run(BACKWARD); motor2.run(BACKWARD); motor3.run(FORWARD); motor4.run(FORWARD); delay(500); motor1.run(FORWARD); motor2.run(FORWARD); motor3.run(FORWARD); motor4.run(FORWARD); }


Components :-

blue and black circuit board

Arduino Uno 

Buying Link - 

https://amzn.to/4cRUkBX

L293d Motor Shield 

Buying Link - 

https://amzn.to/3Q4fSkX

Servo Motor

Buying Link - 

https://amzn.to/3xKqSgU

Ultrasonic Sensor - 

https://amzn.to/4aTpV49

 Gear Motor 

Buying Link - 

https://amzn.to/3xDnWCQ

Switch 

Buying Link - 

https://amzn.to/3Q4g7wn

Jumper Wires 

Buying Link - 

https://amzn.to/3JkQTpG

Note :-

If you are getting error in the code because you have not installed the libraries.

You have to install the libraries.

Anti Sleep Alarm for Drivers