Arduino Obstacle Avoiding Car Making video:
Arduino Obstacle Avoiding Car Circuit diagram:
Arduino Obstacle Avoiding Car code:
#include "LedControl.h"
LedControl lc = LedControl(11, 13, 10, 2);
const int addrL = 0; // first LED matrix - Left robot eye
const int addrR = 1; // second LED matrix - Right robot eye
int trigPin = 2; // Trig Pin Of HC-SR04
int echoPin = 3; // Echo Pin Of HC-SR04
int revleft4 = 4; // Motor Pins
int fwdleft5 = 5;
int revright6 = 6;
int fwdright7 = 7;
long duration, distance;
void setup() {
Serial.begin(9600);
pinMode(revleft4, OUTPUT); // Set Motor Pins As O/P
pinMode(fwdleft5, OUTPUT);
pinMode(revright6, OUTPUT);
pinMode(fwdright7, OUTPUT);
pinMode(trigPin, OUTPUT); // Set Trig Pin As O/P To Transmit Waves
pinMode(echoPin, INPUT); //Set Echo Pin As I/P To Recieve Reflected Waves
lc.shutdown(addrL, false);
lc.shutdown(addrR, false);
/* Set the brightness to max values */
lc.setIntensity(addrL, 15);
lc.setIntensity(addrR, 15);
/* and clear the display */
lc.clearDisplay(addrL);
lc.clearDisplay(addrR);
// turn on all LEDs for a test
for (int row = 0; row < 8; row++) {
lc.setRow(addrL, row, 255);
lc.setRow(addrR, row, 255);
delay(100);
}
delay(300);
}
void showNeutral() {
byte left[8] = {
0b00000000,
0b00111100,
0b01111110,
0b01100110,
0b01100110,
0b01111110,
0b00111100,
0b00000000};
displayEmotion(left, left);
}
void left1(){
byte left[8] = {
0b00000000,
0b00111100,
0b01111110,
0b01111110,
0b01110010,
0b01110010,
0b00111100,
0b00000000};
displayEmotion(left, left);
}
void right1(){
byte left[8] = {
0b00000000,
0b00111100,
0b01111110,
0b01111110,
0b01001110,
0b01001110,
0b00111100,
0b00000000
};
displayEmotion(left, left);
}
void he(){
byte left[8] = {
0b00000000,
0b00111100,
0b01111110,
0b01111110,
0b01111110,
0b01111110,
0b00111100,
0b00000000
};
displayEmotion(left, left);
}
void displayEmotion(byte left[8], byte right[8]) {
lc.clearDisplay(addrL);
lc.clearDisplay(addrR);
for(int row=0;row<8;row++) {
lc.setRow(addrL,row,left[row]);
lc.setRow(addrR,row,right[row]);
}
}
void loop() {
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH); // Transmit Waves For 10us
delayMicroseconds(10);
duration = pulseIn(echoPin, HIGH); // Recieve Reflected Waves
distance = duration / 58.2; // Get Distance
delay(10);
Serial.println(distance);
delay(1000);
if (distance > 20) // Condition For Absence Of Obstacle
{
digitalWrite(fwdright7, HIGH); // Move Forward
digitalWrite(revright6,LOW);
digitalWrite(fwdleft5, HIGH);
digitalWrite(revleft4, LOW);
showNeutral();
}
if (distance < 20) // Condition For Presence Of Obstacle
{ he();
digitalWrite(fwdright7, LOW); //Stop
digitalWrite(revright6, LOW);
digitalWrite(fwdleft5, LOW);
digitalWrite(revleft4, LOW);
delay(500);
digitalWrite(fwdright7, LOW); // Move Backward
digitalWrite(revright6, HIGH);
digitalWrite(fwdleft5, LOW);
digitalWrite(revleft4, HIGH);
delay(500);
he();
digitalWrite(fwdright7, LOW); //Stop
digitalWrite(revright6, LOW);
digitalWrite(fwdleft5, LOW);
digitalWrite(revleft4, LOW);
delay(100);
left1();
delay(500);
right1();
digitalWrite(fwdright7, HIGH); // Move Left
digitalWrite(revright6,LOW);
digitalWrite(revleft4, HIGH);
digitalWrite(fwdleft5, LOW);
delay(500);
}
}
0 Comments