Tengo un problema con una medida de los sensores QTR

Buenas tardes, es que tengo un problema al hacer el codigo pareciera que no coge bien los sensores, basicamente lo que hice fue una funcion que me devuelve los tiempos que tardan los qtr en leer y despues dependiendo de ese valor que tarde decido si es blanco o negro, pero no funciona correctamente y tampoco se porque a veces la variable last me da negativa, este es el codigo

unsigned long time;
int color=0,last,last_color;

int x,y;

  void setup(){
// put your setup code here, to run once:
pinMode(10,INPUT); //Sensor de linea de la Izquierda
pinMode(9,INPUT); //Sensor de linea de la derecha
digitalWrite(10,HIGH); //Configurar la resistencia puesta en vcc
digitalWrite(9,HIGH); //Configurar la resistencia puesta en vcc
}
int QTR(int x){

  Serial.println(last);
// Serial.println(color);
// delay(1000);
pinMode(x,OUTPUT);
digitalWrite(x,HIGH);
delayMicroseconds(12);
pinMode(x,INPUT);
time=micros();
while(digitalRead(x)) {}
 
 if(last>1000 ){ color=1;}
     else  {color=0;}
  
//   if(color!=last_color) Sserial.print(color),Serial.println(" ");
   last=micros()-time;
//   last_color=color;
return color;
}
void loop(){
while(QTR(9)==1 & QTR(10)==1){
Serial.println("ambos pines detectan negro");
//  delay(1000);
 }
 while(QTR(9)==0 & QTR(10)==1){
Serial.println("9 detecta blanco 10 detecta negro");
//delay(1000);
 }
  while(QTR(9)==1 & QTR(10)==0){
Serial.println("9 detecta negro 10 detecta blanco");
//delay(1000);
 }
 while(QTR(9)==0 & QTR(10)==0){
Serial.println("9 detecta blanco 10 detecta blanco");
}
}

Gracias por la ayuda igualmente