My robot must stay in the ring that has a white edge, I wrote my program but it isn't working. I am using a black-white sensor(Arduino-Avoidance-Reflective-black-white-line-tracing-sensor-Robot-Smart-Car)
It is consisted of arduino uno, 2 motordrives(L9110 H-bridge), 4 Light sensors , and 4 motors.
the problem is that the robot is reading the white edge but keeps moving forwards and my program orders the robot to reverse
here is my code:
int DC1=6;
int DC2=5;
int DC3=9;
int DC4=10;
int BWFL=12; // BW = clack and white sensor
int BWBR=3;
int BWBL=11;
int BWFR=4;
void setup()
{
pinMode(DC1,OUTPUT);
pinMode(DC2,OUTPUT);
pinMode(DC3,OUTPUT);
pinMode(DC4,OUTPUT);
pinMode(BWFL,INPUT);
pinMode(BWFR,INPUT);
pinMode(BWBL,INPUT);
pinMode(BWBR,INPUT);
delay(4000);
analogWrite(DC1,250);
analogWrite(DC2,0);
analogWrite(DC3,250);
analogWrite(DC4,0);
delay(400);
analogWrite(DC1,0);
analogWrite(DC2,250);
analogWrite(DC3,0);
analogWrite(DC4,250);
delay(400);
}
void loop()
{ int valBWFL= digitalRead(BWFL);
int valBWFR= digitalRead(BWFR);
int valBWBL= digitalRead(BWBL);
int valBWBR= digitalRead(BWBR);
if ( valBWBL==0 || valBWBR==0 && valBWFL==1 && valBWFR==1)
{ analogWrite(DC1,200);
analogWrite(DC2,0);
analogWrite(DC3,200);
analogWrite(DC4,0);
delay(900);
analogWrite(DC1,200);
analogWrite(DC2,0);
analogWrite(DC3,0);
analogWrite(DC4,200);
delay(700);
analogWrite(DC1,200);
analogWrite(DC2,0);
analogWrite(DC3,200);
analogWrite(DC4,0);
delay(200);
}
else if ( valBWBL==1 && valBWBR==1 && valBWFL==0 || valBWFR==0)
{analogWrite(DC1,0);
analogWrite(DC2,200);
analogWrite(DC3,0);
analogWrite(DC4,200);
delay(900);
analogWrite(DC1,0);
analogWrite(DC2,200);
analogWrite(DC3,200);
analogWrite(DC4,0);
delay(700);
analogWrite(DC1,200);
analogWrite(DC2,0);
analogWrite(DC3,200);
analogWrite(DC4,0);
delay(200);
}
else if ( valBWBL==1 && valBWBR==1 && valBWFL==1 && valBWFR==1)
{analogWrite(DC1,0);
analogWrite(DC2,200);
analogWrite(DC3,0);
analogWrite(DC4,200);}}
please tell me the problem