Line Tracker Values - white tape on grey tile

My students have set up a 3 line tracker program where it’s supposed to check the sensor values and if they’re within a certain range of % it alters the motors to keep on track ( * | | , | * |, | | * etc.) however while on our black slate table with the white tape it can detect and display changing numbers to the display; as soon as we put it on the grey tile with the tape they’re basically identical and unchanging. I’ve seen videos of robots following lines easily using the same setup so I’m kind of at a loss as to where things are messed up.

We set up the three sensors manually rather than using potentiometers and then set three variables using the value returned from them and then had something along the following:

Setup of line sensors and variable values

start function(){


While(Sonar value > X){
if(Value A sees white){
Motor Command to turn right
} else if (Value A and C see black || Value B sees white){
Motor command to go forwards
else if(Value C sees white){
Motor Command to turn left
else {

While it’s basically working if we can make it detect it’s on top of a line the values seem to be interchangeable for light and dark, we’re about 1/8 of an inch off the ground but I’m sure we’re missing something :confused: What are the range of values that we should be seeing here? As it displays about 60 if lifted up to see the ‘sky’ and around 30 whether over the tile or over the white tape.

We’re using Vex C++ as an aside.