my condition will trigger the while loop but why does it not exit when the condition is false
//----FRONT RIGHT SENSOR---- //
int FrontRight_Left = 40;
int FrontRight_Mid = 41;
int FrontRight_Right = 42;
int FrontRight_Left_sensorvalue;
int FrontRight_Mid_sensorvalue;
int FrontRight_Right_sensorvalue;
//----FRONT Left SENSOR---- //
int FrontLeft_Left = 44;
int FrontLeft_Mid = 45;
int FrontLeft_Right = 46;
int FrontLeft_Left_sensorvalue;
int FrontLeft_Mid_sensorvalue;
int FrontLeft_Right_sensorvalue;
//--BACK Right Sensor--//
int BackRight_Left = 48;
int BackRight_Right = 49;
int BackRight_Left_sensorvalue;
int BackRight_Right_sensorvalue;
//--BACK Left Sensor--//
int BackLeft_Left = 50;
int BackLeft_Right = 51;
int BackLeft_Left_sensorvalue;
int BackLeft_Right_sensorvalue;
///--------MOTOR--------///
//---Motor A //
int ENA = 2;
int IN1 = 22;
int IN2 = 23;
//--- MotorB //
int ENB = 3;
int IN3 = 24;
int IN4 = 25;
void setup() {
Serial.begin(9600);
pinMode(FrontRight_Left, INPUT);
pinMode(FrontRight_Mid, INPUT);
pinMode(FrontRight_Right, INPUT);
pinMode(FrontLeft_Left, INPUT);
pinMode(FrontLeft_Mid, INPUT);
pinMode(FrontLeft_Right, INPUT);
pinMode(BackRight_Left, INPUT);
pinMode(BackRight_Right, INPUT);
pinMode(BackLeft_Left, INPUT);
pinMode(BackLeft_Right, INPUT);
pinMode (ENA, OUTPUT);
pinMode (IN1, OUTPUT);
pinMode (IN2, OUTPUT);
pinMode (ENB, OUTPUT);
pinMode (IN3, OUTPUT);
pinMode (IN4, OUTPUT);
analogWrite(ENA,0);
analogWrite(ENB,0);
}
void loop() {
LineSensorReading();
//DisplayReading();
//FrontRightFollowingLine();
//FrontLeftFollowingLine();
while(FrontRight_Mid_sensorvalue==1)
{
Forward();
}
MotorStop();
}
void LineSensorReading()
{
FrontRight_Left_sensorvalue=digitalRead(FrontRight_Left);
FrontRight_Mid_sensorvalue=digitalRead(FrontRight_Mid);
FrontRight_Right_sensorvalue=digitalRead(FrontRight_Right);
FrontLeft_Left_sensorvalue=digitalRead(FrontLeft_Left);
FrontLeft_Mid_sensorvalue=digitalRead(FrontLeft_Mid);
FrontLeft_Right_sensorvalue=digitalRead(FrontLeft_Right);
BackRight_Left_sensorvalue=digitalRead(BackRight_Left);
BackRight_Right_sensorvalue=digitalRead(BackRight_Right);
BackLeft_Left_sensorvalue=digitalRead(BackLeft_Left);
BackLeft_Right_sensorvalue=digitalRead(BackLeft_Right);
}
void DisplayReading()
{
Serial.print("FrontRight_Left_sensorvalue ");
Serial.print(FrontRight_Left_sensorvalue);
Serial.print(" ");
Serial.print("FrontRight_Mid_sensorvalue ");
Serial.print(FrontRight_Mid_sensorvalue);
Serial.print(" ");
Serial.print("FrontRight_Right_sensorvalue ");
Serial.print(FrontRight_Right_sensorvalue);
Serial.println("");
Serial.print("FrontLeft_Left_sensorvalue ");
Serial.print(FrontLeft_Left_sensorvalue);
Serial.print(" ");
Serial.print("FrontLeft_Mid_sensorvalue ");
Serial.print(FrontLeft_Mid_sensorvalue);
Serial.print(" ");
Serial.print("FrontLeft_Right_sensorvalue ");
Serial.print(FrontLeft_Right_sensorvalue);
Serial.println("");
Serial.print("BackRight_Left_sensorvalue ");
Serial.print(BackRight_Left_sensorvalue);
Serial.print(" ");
Serial.print("BackRight_Right_sensorvalue ");
Serial.print(BackRight_Right_sensorvalue);
Serial.println("");
Serial.print("BackLeft_Left_sensorvalue ");
Serial.print(BackLeft_Left_sensorvalue);
Serial.print(" ");
Serial.print("BackLeft_Right_sensorvalue ");
Serial.print(BackLeft_Right_sensorvalue);
Serial.println("");
Serial.println("");
Serial.println("");
Serial.println("");
Serial.println("");
Serial.println("");
}
void Reverse()
{
analogWrite(ENA,0);
digitalWrite(IN1,LOW);
digitalWrite(IN2,HIGH);
analogWrite(ENB,0);
digitalWrite(IN3,LOW);
digitalWrite(IN4,HIGH);
}
void Forward()
{
analogWrite(ENA,150);
digitalWrite(IN1,HIGH);
digitalWrite(IN2,LOW);
analogWrite(ENB,150);
digitalWrite(IN3,HIGH);
digitalWrite(IN4,LOW);
}
void TurnLeftSlight()
{
analogWrite(ENA,100);
digitalWrite(IN1,HIGH);
digitalWrite(IN2,LOW);
analogWrite(ENB,0);
digitalWrite(IN3,LOW);
digitalWrite(IN4,HIGH);
}
void TurnRightSlight()
{
analogWrite(ENA,0);
digitalWrite(IN1,LOW);
digitalWrite(IN2,HIGH);
analogWrite(ENB,100);
digitalWrite(IN3,HIGH);
digitalWrite(IN4,LOW);
}
void TurnLeft()
{
analogWrite(ENA,140);
digitalWrite(IN1,HIGH);
digitalWrite(IN2,LOW);
analogWrite(ENB,0);
digitalWrite(IN3,LOW);
digitalWrite(IN4,HIGH);
}
void TurnRight()
{
analogWrite(ENA,0);
digitalWrite(IN1,LOW);
digitalWrite(IN2,HIGH);
analogWrite(ENB,140);
digitalWrite(IN3,HIGH);
digitalWrite(IN4,LOW);
}
void MotorStop()
{
analogWrite(ENA,0);
analogWrite(ENB,0);
}
void FrontRightFollowingLine()
{
if((FrontRight_Mid_sensorvalue==0)&&(FrontRight_Left_sensorvalue==1)&&(FrontRight_Right_sensorvalue==1))
{
Forward();
}
else if((FrontRight_Mid_sensorvalue==0)&&(FrontRight_Left_sensorvalue==0)&&(FrontRight_Right_sensorvalue==1))
{
TurnRightSlight();
}
else if((FrontRight_Mid_sensorvalue==0)&&(FrontRight_Left_sensorvalue==1)&&(FrontRight_Right_sensorvalue==0))
{
TurnLeftSlight();
}
else if((FrontRight_Mid_sensorvalue==1)&&(FrontRight_Left_sensorvalue==1)&&(FrontRight_Right_sensorvalue==0))
{
TurnLeft();
}
else if((FrontRight_Mid_sensorvalue==1)&&(FrontRight_Left_sensorvalue==0)&&(FrontRight_Right_sensorvalue==1))
{
TurnRight();
}
else if((FrontRight_Mid_sensorvalue==0)&&(FrontRight_Left_sensorvalue==0)&&(FrontRight_Right_sensorvalue==0))
{
Forward();
}
}
void FrontLeftFollowingLine()
{
if((FrontLeft_Mid_sensorvalue==0)&&(FrontLeft_Left_sensorvalue==1)&&(FrontLeft_Right_sensorvalue==1))
{
Forward();
}
else if(((FrontLeft_Mid_sensorvalue>=0&&FrontLeft_Mid_sensorvalue<=400))&&((FrontLeft_Left_sensorvalue>=0&&FrontLeft_Left_sensorvalue<=400))&&((FrontLeft_Right_sensorvalue>=400&&FrontLeft_Right_sensorvalue<=800)))
{
TurnLeftSlight();
}
else if(((FrontLeft_Mid_sensorvalue>=0&&FrontLeft_Mid_sensorvalue<=400))&&((FrontLeft_Left_sensorvalue>=400&&FrontLeft_Left_sensorvalue<=800))&&((FrontRight_Right_sensorvalue>=0&&FrontLeft_Right_sensorvalue<=400)))
{
TurnRightSlight();
}
else if(((FrontLeft_Mid_sensorvalue>=400&&FrontLeft_Mid_sensorvalue<=800))&&((FrontLeft_Left_sensorvalue>=400&&FrontLeft_Left_sensorvalue<=800))&&((FrontLeft_Right_sensorvalue>=0&&FrontLeft_Right_sensorvalue<=400)))
{
TurnRight();
}
else if(((FrontLeft_Mid_sensorvalue>=400&&FrontLeft_Mid_sensorvalue<=800))&&((FrontLeft_Left_sensorvalue>=0&&FrontLeft_Left_sensorvalue<=400))&&((FrontLeft_Right_sensorvalue>=400&&FrontLeft_Right_sensorvalue<=800)))
{
TurnLeft();
}
else
{
MotorStop();
}
}
void TurnLeft90deg()
{
analogWrite(ENA,110);
digitalWrite(IN1,HIGH);
digitalWrite(IN2,LOW);
analogWrite(ENB,0);
digitalWrite(IN3,LOW);
digitalWrite(IN4,HIGH);
}