angelo_perera
Published

How to make a Obstacle Avoiding Car

How to make a Obstacle Avoiding Car

BeginnerProtip441
How to make a Obstacle Avoiding Car

Things used in this project

Hardware components

Arduino UNO
Arduino UNO
×1
Jumper wires (generic)
Jumper wires (generic)
×1
Ultrasonic Sensor - HC-SR04 (Generic)
Ultrasonic Sensor - HC-SR04 (Generic)
×1
Male-Header 36 Position 1 Row- Long (0.1")
Male-Header 36 Position 1 Row- Long (0.1")
×1
SG90 Micro-servo motor
SG90 Micro-servo motor
×1
Rocker Switch, SPST
Rocker Switch, SPST
×1

Hand tools and fabrication machines

Multitool, Screwdriver
Multitool, Screwdriver

Story

Read more

Schematics

circuit diagram

Code

code

Arduino
#include<AFMotor.h>
#include<NewPing.h>
#include<Servo.h>

#define TRIG_PIN A0
#define ECHO_PIN A1 
#define MAX_SPEED 190
#define MAX_SPEED_OFFSET 20
#define MAX_DISTANCE 200

NewPing sonar(TRIG_PIN,ECHO_PIN,MAX_DISTANCE);

AF_DCMotor motor2(2,MOTOR12_1KHZ);
AF_DCMotor motor3(3,MOTOR34_1KHZ);

Servo myservo;

boolean goesForward = false;
int distance = 100;
int speedSet = 0;

void setup() {
 myservo.attach(10);
 myservo.write(110);
 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<=20)
  {
    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 distancee = readPing();
  delay(100);
  myservo.write (115);
  delay(100);
}
int readPing()
{
  delay(70);
  int cm = sonar.ping_cm();
  if(cm == 0 )
  {
 cm = 250;
  }
  return cm;
}
void moveStop(){
  motor2.run(RELEASE);
  motor3.run(RELEASE);

  }
  void moveForward()
  {
    if(!goesForward){
      goesForward = true;
      motor2.run(FORWARD);
      motor3.run(FORWARD);

      for(speedSet = 0;speedSet < MAX_SPEED;speedSet+=2)
      {
        motor2.setSpeed(speedSet);
        motor3.setSpeed(speedSet);
        delay(5);
      }
    }
  }
  void moveBackward(){
    goesForward = false;
    motor2.run(BACKWARD);
    motor3.run(BACKWARD);

    for(speedSet = 0;speedSet < MAX_SPEED;speedSet+=2)
    {
      motor2.setSpeed(speedSet);
      motor3.setSpeed(speedSet);
      delay(5);
    }
  }
  void turnLeft()
  {
    motor2.run(BACKWARD);
    motor3.run(FORWARD);
    delay(500);
    motor2.run(FORWARD);
    motor3.run(FORWARD);
  }
  void turnRight()
  {
    motor2.run(FORWARD);
    motor3.run(BACKWARD);
    delay(500);
    motor2.run(FORWARD);
    motor3.run(FORWARD);

  }












  

Credits

angelo_perera
6 projects • 6 followers

Comments