How to Make an Obstacle Detecting Car

by 560105 in Circuits > Arduino

405 Views, 1 Favorites, 0 Comments

How to Make an Obstacle Detecting Car

IMG_4785.jpg

this is a car

Getting Materials

IMG_4784.jpg
IMG_4780.jpg
IMG_4779.jpg
IMG_4783.jpg
IMG_4782.jpg
IMG_4778.jpg
IMG_4781.jpg

you will need

  • abra electronics geeekus gk kit 003 ($74)
  • 2 non polarized capacitors ($8)
  • h bridge($7)
  • 2 electric motors ($8)
  • arduino uno ($23)
  • distance sensor ($8)
  • wires($15)
  • breadboard ($10)

Assemble the Car

IMG_4785.jpg

attach the arduino to the top of the car with screws and attach a small breadboard to the other side of the car

put the motors into the mounts and solder wires to the end of the motor terminals

Wiring

circuit.png

follow this circuit except wire trig on the distance sensor to pin 8 and wire echo to pin 7

Coding Part 1

------------------------

// for distance sensor

const int trig = 8;

const int echo = 7;

int duration = 0;

int inches = 0;

// for right motor const int controlPin1 = 5;

const int controlPin2 = 2;

const int enablePin1 = 9;

// for left motor const int controlPin3 = 3;

const int controlPin4 = 4;

const int enablePin2 = 11;

---------------------------------------

this goes before the void setup and sets up the pins

Coding Part 2

--------------------------------

void setup() {

Serial.begin(9600);

// for distance sensor

pinMode(trig,OUTPUT);

pinMode(echo, INPUT);

// for right motor

pinMode(controlPin1, OUTPUT);

pinMode(controlPin2, OUTPUT);

pinMode(enablePin1, OUTPUT); //turn the motor off, initially

digitalWrite(enablePin1, LOW);

// for left motor

pinMode(controlPin3, OUTPUT);

pinMode(controlPin4, OUTPUT);

pinMode(enablePin2, OUTPUT); //turn the motor off, initially

digitalWrite(enablePin2, LOW); }

----------------------------------------

this sets up the h bridge and the distance sensor

Coding Part 3

------------------------------

void loop() {

// for distance sensor

digitalWrite(trig,LOW);

delay(0.001);

digitalWrite(trig,HIGH);

delay (0.01);

digitalWrite(trig, LOW);

duration = pulseIn(echo,HIGH);

inches = duration /74/2;

Serial.print("inches: ");

Serial.print(inches);

Serial.print("");

Serial.println();

delay (5);

if (inches <5){

analogWrite (enablePin1, 200);

digitalWrite (controlPin1, LOW);

digitalWrite (controlPin2, HIGH);

analogWrite (enablePin2, 200);

digitalWrite (controlPin3, LOW);

digitalWrite (controlPin4, HIGH); }

else if (inches >=5 and inches <9 ){

digitalWrite (controlPin1, LOW);

digitalWrite (controlPin2, LOW);

analogWrite (enablePin1, 0);

digitalWrite (controlPin3, LOW);

digitalWrite (controlPin4, LOW);

analogWrite (enablePin2, 0); }

else if (inches >=9){

analogWrite (enablePin1, 255);

digitalWrite (controlPin1, HIGH);

digitalWrite (controlPin2, LOW);

analogWrite (enablePin2, 255);

digitalWrite (controlPin3, HIGH);

digitalWrite (controlPin4, LOW); }

}

--------------------------

this makes it so that the car stops between 5 and 9 inches, move backwards between 0 and 5 inches, and moves forwards from 9 inches to infinity