In this tutorial we will learn how to build a self driving car that avoid any obstacles.
Components needed- Arduino Uno
- Jumper Cables
- 9 volt battery
- L298N Motor Driver
- 2 DC Motors
- 2 wheels
- 1 caster wheel
- Ultrasonic Sensor
The image above is an L298N Motor Driver. The L298N is a dual H-Bridge motor driver which allows the speed and the direction control of two DC motors at the same time. We can also use this motor driver to control one stepper motor.
L298N Driver Pin Out
The table above shows the connections of the L298N module.
Completed CircuitThe Code #include <HCSR04.h>
UltraSonicDistanceSensor ultrasonic(A0,A1);
float distance;
// left motor
int leftMotorSpeedPin = 3;
int leftMotorForwardPin = 4;
int leftMotorBackwardPin = 5;
// right motor
int rightMotorSpeedPin = 11;
int rightMotorForwardPin = 12;
int rightMotorBackwardPin = 13;
void setup() {
pinMode(leftMotorSpeedPin, OUTPUT);
pinMode(leftMotorForwardPin, OUTPUT);
pinMode(leftMotorBackwardPin, OUTPUT);
pinMode(rightMotorSpeedPin, OUTPUT);
pinMode(rightMotorForwardPin, OUTPUT);
pinMode(rightMotorBackwardPin, OUTPUT);
Serial.begin(9600);
digitalWrite(leftMotorSpeedPin, HIGH);
digitalWrite(rightMotorSpeedPin, HIGH);
}
void loop() {
distance = ultrasonic.measureDistanceCm(); //Use 'CM' for centimeters or 'INC' for inches
Serial.println(distance);
if (distance > -1 && distance < 25) {
stop();
delay(1000);
goBackward();
delay(300);
stop();
delay(1000);
if(random(0, 2) == 0) {
goLeft();
} else {
goRight();
}
delay(500);
stop();
delay(700);
} else {
goForward();
}
}
void goForward() {
digitalWrite(leftMotorForwardPin, HIGH);
digitalWrite(leftMotorBackwardPin, LOW);
digitalWrite(rightMotorForwardPin, HIGH);
digitalWrite(rightMotorBackwardPin, LOW);
}
void goBackward() {
digitalWrite(leftMotorForwardPin, LOW);
digitalWrite(leftMotorBackwardPin, HIGH);
digitalWrite(rightMotorForwardPin, LOW);
digitalWrite(rightMotorBackwardPin, HIGH);
}
void stop() {
digitalWrite(leftMotorForwardPin, LOW);
digitalWrite(leftMotorBackwardPin, LOW);
digitalWrite(rightMotorForwardPin, LOW);
digitalWrite(rightMotorBackwardPin, LOW);
}
void goRight() {
digitalWrite(leftMotorForwardPin, HIGH);
digitalWrite(leftMotorBackwardPin, LOW);
digitalWrite(rightMotorForwardPin, LOW);
digitalWrite(rightMotorBackwardPin, LOW);
}
void goLeft() {
digitalWrite(leftMotorForwardPin, LOW);
digitalWrite(leftMotorBackwardPin, LOW);
digitalWrite(rightMotorForwardPin, HIGH);
digitalWrite(rightMotorBackwardPin, LOW);
}
The video below shows a quick demonstration of the self driving arduino car.
Comments
Please log in or sign up to comment.