You have a bunch of these
// in case the sensor value is outside the range seen during calibration
if (LeftValue > 100) {
digitalWrite (IndicatorL, HIGH);
}
if (LeftValue < 100) {
digitalWrite (IndicatorL, LOW);
}
I was thinking the 2nd should be < = 100 to cover the condition of 100,
Goforsmoke covers it better with
else // value can only <=100 if > 100 is not met
{
digitalWrite (IndicatorL, LOW);
}
No need to make the comparison twice in this case. Make it once and then act on it.
It is possible to see the other conditions here?
if (digitalRead(IndicatorL) == LOW && digitalRead(IndicatorC) == HIGH && digitalRead(IndicatorR) == LOW){
You have these covered
010 (2)
000 (0)
111 (7)
001 (1)
100 (4)
are 3,5,6 not a concern? 011, 101, 110 Or just not able to happen?