Hi there, so I was working on this line following and obstacle avoiding robot, and it worked very well in the morning, then suddenly later in the day when I decided to test it, the ultrasonic sensor was not even working and kept continuously giving distance 0. Here is the code that I am using:
/*------ Arduino Line Follower Code----- */
/*-------definning Inputs------*/
#define LS 9 // left sensor
#define RS 10 // right sensor
int vspeed = 110;
int turn_speed = 230;
int t_p_speed = 125;
int stop_distance = 12;
const int trigPin = 11;
const int echoPin = 12;
int turnspeed;
int left_sensor_state;
int right_sensor_state;
long duration;
int distance;
/*-------definning Outputs------*/
#define LM1 3 // left motor
#define LM2 4 // left motor
#define RM1 7 // right motor
#define RM2 8 // right motor
#define MtrspeedA 5
#define MtrspeedB 6
void setup()
{
pinMode(LS, INPUT);
pinMode(RS, INPUT);
pinMode(LM1, OUTPUT);
pinMode(LM2, OUTPUT);
pinMode(RM1, OUTPUT);
pinMode(RM2, OUTPUT);
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
Serial.begin(9600);
delay(3000);
}
void loop()
{
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
duration = pulseIn(echoPin, HIGH);
distance= duration*0.034/2;
Serial.print("Distance: ");
Serial.println(distance);
left_sensor_state = digitalRead(LS);
right_sensor_state = digitalRead(RS);
if(!(digitalRead(LS)) && !(digitalRead(RS))) // Move Forward
{
digitalWrite(LM1, LOW);
digitalWrite(LM2, HIGH);
digitalWrite(RM2, LOW);
digitalWrite(RM1, HIGH);
analogWrite(MtrspeedA, vspeed);
analogWrite(MtrspeedB, vspeed);
}
if(digitalRead(LS) && !(digitalRead(RS))) // Turn right
{
digitalWrite(LM1, HIGH);
digitalWrite(LM2, HIGH);
digitalWrite(RM2, LOW);
digitalWrite(RM1, HIGH);
analogWrite(MtrspeedA, vspeed);
analogWrite(MtrspeedB, vspeed);
}
if(!(digitalRead(LS)) && digitalRead(RS)) // turn left
{
digitalWrite(LM1, LOW);
digitalWrite(LM2, HIGH);
digitalWrite(RM2, HIGH);
digitalWrite(RM1, HIGH);
analogWrite(MtrspeedA, vspeed);
analogWrite(MtrspeedB, vspeed);
}
if(digitalRead(LS) && digitalRead(RS)) // stop
{
digitalWrite(LM1, HIGH);
digitalWrite(LM2, HIGH);
digitalWrite(RM2, HIGH);
digitalWrite(RM1, HIGH);
analogWrite(MtrspeedA, 0);
analogWrite(MtrspeedB, 0);
}
if(distance < stop_distance)
{
digitalWrite (LM1,HIGH);
digitalWrite(LM2,LOW);
digitalWrite (RM2,LOW);
digitalWrite(RM1,HIGH);
delay(250);
analogWrite (MtrspeedA, 0);
analogWrite (MtrspeedB, 0);
delay(500);
digitalWrite (LM1,HIGH);
digitalWrite(LM2,LOW);
digitalWrite (RM1,HIGH);
digitalWrite(RM2,LOW);
analogWrite (MtrspeedA, t_p_speed);
analogWrite (MtrspeedB, t_p_speed);
delay(900);
digitalWrite (LM1,LOW);
digitalWrite(LM2,HIGH);
digitalWrite (RM1,HIGH);
digitalWrite(RM2,LOW);
analogWrite (MtrspeedA, t_p_speed);
analogWrite (MtrspeedB, t_p_speed);
delay(800);
digitalWrite (LM1,LOW);
digitalWrite(LM2,HIGH);
digitalWrite (RM1,LOW);
digitalWrite(RM2,HIGH);
delay(900);
digitalWrite (LM1,LOW);
digitalWrite(LM2,HIGH);
digitalWrite (RM1,HIGH);
digitalWrite(RM2,LOW);
delay(700);
digitalWrite (LM1,LOW);
digitalWrite(LM2,HIGH);
digitalWrite (RM1,LOW);
digitalWrite(RM2,HIGH);
delay(650);
digitalWrite (LM1,LOW);
digitalWrite(LM2,HIGH);
digitalWrite (RM1,HIGH);
digitalWrite(RM2,LOW);
}
}
Please help thank you, I tried clapping, as that sometimes works, but it still not working, thank you.