top of page

Obstacle Avoiding Car using Arduino Uno

Updated: Jul 19, 2024

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


Contact

Mira Road, Thane - 401107

info@passion3dworld.com

9137361474, 8454863427

Passion 3D World

We will provide you the best service. 

Thanks for submitting!

@Copyright PASSION 3D WORLD.

All Rights Reserved or by other parties, where indicated. All rights controlled by their respective owners. Content on this website is for information only. It is not intended to provide medical or other professional advice. Views expressed here do not necessarily reflect those of PASSION 3D WORLD, its staff, its contributors, or its partners. Financial support for PASSION 3D WORLD comes from advertisements and referral programs, where indicated.

© 2023 by Passion 3D World

bottom of page