Arduino UNO Obstacle Avoiding Car with Ultrasonic Sensor and Servo Motor
View and Edit Project In Cirkit Designer
Circuit Documentation
Summary
This document provides a detailed overview of an Arduino-based obstacle-avoiding car circuit. The circuit includes an Arduino UNO, an L293D motor driver shield, an HC-SR04 ultrasonic sensor, two DC motors, and a servo motor. The Arduino UNO is programmed to control the motors and the ultrasonic sensor to navigate and avoid obstacles.
Component List
Arduino UNO
- Description: A microcontroller board based on the ATmega328P.
- Pins: UNUSED, IOREF, Reset, 3.3V, 5V, GND, Vin, A0, A1, A2, A3, A4, A5, SCL, SDA, AREF, D13, D12, D11, D10, D9, D8, D7, D6, D5, D4, D3, D2, D1, D0
L293D Motor Driver Shield
- Description: A motor driver shield for Arduino that can control DC motors and servos.
- Pins: 5v, GND, A0, A1, A2, A3, A4, A5, M+, M2, M1, M3, M4, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, gnd, Aref, ser1, Servo2, +, -, 9v
HC-SR04 Ultrasonic Sensor
- Description: An ultrasonic distance sensor used for obstacle detection.
- Pins: VCC, TRIG, ECHO, GND
DC Motor
- Description: A simple DC motor.
- Pins: pin 1, pin 2
Servo Motor
- Description: A servo motor used for precise control of angular position.
- Pins: gnd, vcc, pulse
Wiring Details
Arduino UNO
- 5V connected to 5v on L293D Motor Driver Shield
- GND connected to gnd on L293D Motor Driver Shield
- A0 connected to TRIG on HC-SR04 Ultrasonic Sensor and A0 on L293D Motor Driver Shield
- A1 connected to ECHO on HC-SR04 Ultrasonic Sensor and A1 on L293D Motor Driver Shield
- AREF connected to Aref on L293D Motor Driver Shield
- D13 connected to 12 on L293D Motor Driver Shield
- D12 connected to 12 on L293D Motor Driver Shield
- D11 connected to 11 on L293D Motor Driver Shield
- D10 connected to 10 on L293D Motor Driver Shield
- D9 connected to 9 on L293D Motor Driver Shield
- D8 connected to 8 on L293D Motor Driver Shield
- D7 connected to 7 on L293D Motor Driver Shield
- D6 connected to 6 on L293D Motor Driver Shield
- D5 connected to 5 on L293D Motor Driver Shield
- D4 connected to 4 on L293D Motor Driver Shield
- D3 connected to 3 on L293D Motor Driver Shield
- D2 connected to 2 on L293D Motor Driver Shield
- D1 connected to 1 on L293D Motor Driver Shield
- D0 connected to 0 on L293D Motor Driver Shield
L293D Motor Driver Shield
- 5v connected to 5V on Arduino UNO
- gnd connected to GND on Arduino UNO
- A0 connected to A0 on Arduino UNO and TRIG on HC-SR04 Ultrasonic Sensor
- A1 connected to A1 on Arduino UNO and ECHO on HC-SR04 Ultrasonic Sensor
- Aref connected to AREF on Arduino UNO
- 12 connected to D13 and D12 on Arduino UNO
- 11 connected to D11 on Arduino UNO
- 10 connected to D10 on Arduino UNO
- 9 connected to D9 on Arduino UNO
- 8 connected to D8 on Arduino UNO
- 7 connected to D7 on Arduino UNO
- 6 connected to D6 on Arduino UNO
- 5 connected to D5 on Arduino UNO
- 4 connected to D4 on Arduino UNO
- 3 connected to D3 on Arduino UNO
- 2 connected to D2 on Arduino UNO
- 1 connected to D1 on Arduino UNO
- 0 connected to D0 on Arduino UNO
- ser1 connected to pulse on Servo Motor
- + connected to vcc on Servo Motor
- - connected to gnd on Servo Motor
- M1 connected to pin 1 and pin 2 on DC Motor
- M4 connected to pin 1 and pin 2 on DC Motor
HC-SR04 Ultrasonic Sensor
- TRIG connected to A0 on Arduino UNO and A0 on L293D Motor Driver Shield
- ECHO connected to A1 on Arduino UNO and A1 on L293D Motor Driver Shield
- VCC connected to 5v on L293D Motor Driver Shield
- GND connected to GND on L293D Motor Driver Shield
DC Motor 1
- pin 1 connected to M1 on L293D Motor Driver Shield
- pin 2 connected to M1 on L293D Motor Driver Shield
DC Motor 2
- pin 1 connected to M4 on L293D Motor Driver Shield
- pin 2 connected to M4 on L293D Motor Driver Shield
Servo Motor
- pulse connected to ser1 on L293D Motor Driver Shield
- vcc connected to + on L293D Motor Driver Shield
- gnd connected to - on L293D Motor Driver Shield
Code Documentation
//SCIENCE N MUSIC STUDIO//
//ARDUINO OBSTACLE AVOIDING CAR//
// 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 //
#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 = read