Manual

{
while(true)
{
turnright();
if ((readQD(lsensor) < whitelevl && readQD(msensor)> blacklevl && readQD(rsensor) < whitelevl) ||
(readQD(lsensor)> blacklevl && readQD(msensor)> blacklevl && readQD(rsensor) < whitelevl))
{break;} // Break if Left sensor and right sensor are reading white and middle sensor is reading black
}
}
// Case 4 : Left sensor is reading black, middle sensor and right sensor are reading white. Turn left!
else if (readQD(lsensor) > blacklevl && readQD(msensor)< whitelevl && readQD(rsensor) < whitelevl)
{
while(true)
{
turnleft();
if ((readQD(lsensor) < whitelevl && readQD(msensor)> blacklevl && readQD(rsensor) < whitelevl) ||
(readQD(lsensor)< whitelevl && readQD(msensor)> blacklevl && readQD(rsensor) > blacklevl))
{break;} // Break if Left sensor and right sensor are reading white and middle sensor is reading black
}
}
// Case 5 : Left sensor and middle sensor are reading black and right sensor is reading white. Turn left!
else if (readQD(lsensor) > blacklevl && readQD(msensor)> blacklevl && readQD(rsensor) < whitelevl)
{
while(true)
{
turnleft();
if ((readQD(lsensor) < whitelevl && readQD(msensor)> blacklevl && readQD(rsensor) < whitelevl ) ||
(readQD(lsensor)< whitelevl && readQD(msensor)> blacklevl && readQD(rsensor) > blacklevl))
{break;} // Break if Left sensor and right sensor are reading white and middle sensor is reading black
}
}
else
{
goforward(); // If there is no line, the rover will go forward
}
}
///////////// Go Forward Routine ///////////////////
void goforward(){
analogWrite (E1,210);
digitalWrite(M1,LOW);
analogWrite (E2,210);
digitalWrite(M2,LOW);
}
////////////////////////////////////////////////////
///////////// Turn Right Routine ///////////////////
void turnright(){
analogWrite (E1,210);
digitalWrite(M1,LOW);
analogWrite (E2,210);
5