top of page

Obstacle Avoiding Car using Arduino Uno

Updated: Jul 19

An Obstacle Avoiding Bot is an intelligent robot, which can automatically sense and overcome obstacles on its path.




Components :


L Shaped BO motor : https://bit.ly/3kgZihN


Ultrasonic Sensor HC-SR04 : https://bit.ly/3wkPtnW


Arduino UNO R3 : https://bit.ly/3qj5Q3h


MICRO SERVO 9G : https://bit.ly/3wv9ecr


BO DC motor Single Shaft : https://bit.ly/3kb63lq


4-Wheel Smart Robot : https://bit.ly/3qfHho6

Car Chassis Kit


BO Motor And Wheel Set : https://bit.ly/3CWT3XG


Battery Holder 18650 - 2 Cell : https://bit.ly/3wvZlve


18650 Battery Li-ion 3.7V : https://bit.ly/3o2Q3mE

Battery


Rocker Switch : https://bit.ly/3BSoVLU


Mix Jumper Wires 30 wire : https://bit.ly/3BZmYgU

Pack




All the Information is provided in the video below.





Circuit Diagram :





CODE :


//ARDUINO OBSTACLE AVOIDING Bot//

// Modified by ProfessorHulk

// Before uploading the code you have to install the necessary library//

//AFMotor Library https://learn.adafruit.com/adafruit-motor-shield/library-install //

//NewPing Library https://github.com/livetronic/Arduino-NewPing//

//Servo Library https://github.com/arduino-libraries/Servo.git //

// To Install the libraries go to sketch >> Include Library >> Add .ZIP File >> Select the Downloaded ZIP files From the Above links //

//Always remember to select Board ,"Arduino Uno",and port.


#include <AFMotor.h>

#include <NewPing.h>

#include <Servo.h>


#define TRIG_PIN A0

#define ECHO_PIN A1

#define MAX_DISTANCE 200

#define MAX_SPEED 180 // sets speed of DC motors

#define MAX_SPEED_OFFSET 20


NewPing sonar(TRIG_PIN, ECHO_PIN, MAX_DISTANCE);


AF_DCMotor M1(1, MOTOR12_1KHZ);

AF_DCMotor M2(2, MOTOR12_1KHZ);

AF_DCMotor M3(3, MOTOR34_1KHZ);

AF_DCMotor M4(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() {

M1.run(RELEASE);

M2.run(RELEASE);

M3.run(RELEASE);

M4.run(RELEASE);

}

void moveForward() {


if(!goesForward)

{

goesForward=true;

M1.run(FORWARD);

M2.run(FORWARD);

M3.run(FORWARD);

M4.run(FORWARD);

for (speedSet = 0; speedSet < MAX_SPEED; speedSet +=2) // slowly bring the speed up to avoid loading down the batteries too quickly

{

M1.setSpeed(speedSet);

M2.setSpeed(speedSet);

M3.setSpeed(speedSet);

M4.setSpeed(speedSet);

delay(5);

}

}

}


void moveBackward() {

goesForward=false;

M1.run(BACKWARD);

M2.run(BACKWARD);

M3.run(BACKWARD);

M4.run(BACKWARD);

for (speedSet = 0; speedSet < MAX_SPEED; speedSet +=2) // slowly bring the speed up to avoid loading down the batteries too quickly

{

M1.setSpeed(speedSet);

M2.setSpeed(speedSet);

M3.setSpeed(speedSet);

M4.setSpeed(speedSet);

delay(5);

}

}


void turnRight() {

M1.run(FORWARD);

M2.run(FORWARD);

M3.run(BACKWARD);

M4.run(BACKWARD);

delay(500);

M1.run(FORWARD);

M2.run(FORWARD);

M3.run(FORWARD);

M4.run(FORWARD);

}

void turnLeft() {

M1.run(BACKWARD);

M2.run(BACKWARD);

M3.run(FORWARD);

M4.run(FORWARD);

delay(500);

M1.run(FORWARD);

M2.run(FORWARD);

M3.run(FORWARD);

M4.run(FORWARD);

}

Comments


bottom of page