hey everyone i am new to arduino project i have an obstacle avoiding car with 4 ultrasonic sensor's and 2 motors which are controlled by a l298n bridge i am using arduino mega with them but i have one problem it is that 2 of my ultrasonic sensor dont work i checked the power all of them have power i changed the pins still doesn't work i even changed my mega , the sensors are connected to four 4A batteries and my motors and arduino are connected to two 3.7v batteries and this is the code am using
int Front_Right_Echo = 2;
int Front_Right_Triger = 3;
int Front_Left_Echo = 4;
int Front_Left_Triger = 5;
int Front_Midel_Echo = 6;
int Front_Midel_Triger = 7;
int Back_Echo = 8;
int Back_Triger =9;
int in1 = 10;
int in2 = 11;
int in3 = 12;
int in4 = 13;
int minDistanse = 20;
int Left_Distance = 0, Right_Distance = 0, Middle_Distance = 0, Back_Distance = 0;
void _mForward() {
digitalWrite(in1, LOW);
digitalWrite(in2, HIGH);
digitalWrite(in3, LOW);
digitalWrite(in4, HIGH);
}
void _mBack() {
digitalWrite(in1, HIGH);
digitalWrite(in2, LOW);
digitalWrite(in3, HIGH);
digitalWrite(in4, LOW);
}
void _mleft() {
digitalWrite(in1, LOW);
digitalWrite(in2, HIGH);
digitalWrite(in3, LOW);
digitalWrite(in4, LOW);
}
void _mright() {
digitalWrite(in1, LOW);
digitalWrite(in2, LOW);
digitalWrite(in3, LOW);
digitalWrite(in4, HIGH);
}
void _mStop() {
digitalWrite(in1, LOW);
digitalWrite(in2, LOW);
digitalWrite(in3, LOW);
digitalWrite(in4, LOW);
}
//Ultrasonic distance measurement:
int Left_Distance_test() {
digitalWrite(Front_Left_Triger, LOW);
delayMicroseconds(2);
digitalWrite(Front_Left_Triger, HIGH);
delayMicroseconds(10);
digitalWrite(Front_Left_Triger, LOW);
float duration = pulseIn(Front_Left_Echo, HIGH);
float distance = duration * 0.034 / 2; // Speed of sound = 343 meters/second (0.034 cm/microsecond)
return (int)distance;
}
int Middle_Distance_test() {
digitalWrite(Front_Midel_Triger, LOW);
delayMicroseconds(2);
digitalWrite(Front_Midel_Triger, HIGH);
delayMicroseconds(10);
digitalWrite(Front_Midel_Triger, LOW);
float duration = pulseIn(Front_Midel_Echo, HIGH);
float distance = duration * 0.034 / 2; // Speed of sound = 343 meters/second (0.034 cm/microsecond)
return (int)distance;
}
int Right_Distance_test() {
digitalWrite(Front_Right_Triger, LOW);
delayMicroseconds(2);
digitalWrite(Front_Right_Triger, HIGH);
delayMicroseconds(10);
digitalWrite(Front_Right_Triger, LOW);
float duration = pulseIn(Front_Right_Echo, HIGH);
float distance = duration * 0.034 / 2; // Speed of sound = 343 meters/second (0.034 cm/microsecond)
return (int)distance;
}
int Back_Distance_test() {
digitalWrite(Back_Triger, LOW);
delayMicroseconds(2);
digitalWrite(Back_Triger, HIGH);
delayMicroseconds(10);
digitalWrite(Back_Triger, LOW);
float duration = pulseIn(Back_Echo, HIGH);
float distance = duration * 0.034 / 2; // Speed of sound = 343 meters/second (0.034 cm/microsecond)
return (int)distance;
}
void setup()
{
Serial.begin(9600);
pinMode(Front_Right_Echo, INPUT);
pinMode(Front_Right_Triger, OUTPUT);
pinMode(Front_Left_Echo, INPUT);
pinMode(Front_Left_Triger, OUTPUT);
pinMode(Front_Midel_Echo, INPUT);
pinMode(Front_Midel_Triger, OUTPUT);
pinMode(Back_Echo, INPUT);
pinMode(Back_Triger, OUTPUT);
pinMode(in1, OUTPUT);
pinMode(in2, OUTPUT);
pinMode(in3, OUTPUT);
pinMode(in4, OUTPUT);
_mStop();
}
void loop() {
// Read sensor values
Left_Distance = Left_Distance_test();
Middle_Distance = Middle_Distance_test();
Right_Distance = Right_Distance_test();
Back_Distance = Back_Distance_test();
if (Right_Distance > minDistanse && Left_Distance > minDistanse && Middle_Distance > minDistanse)
{
_mForward();
}
else if (Right_Distance < minDistanse && Left_Distance < minDistanse && Middle_Distance < minDistanse) {
_mStop();
{
if (Back_Distance < minDistanse)
{
_mStop();
}
else if(Back_Distance > minDistanse){
_mBack();
}
}
} else if (Right_Distance > minDistanse && Left_Distance < minDistanse) {
_mleft();
} else if (Right_Distance < minDistanse && Left_Distance > minDistanse) {
_mright();
}
}