Aiuto Programma Arduino PT1000

Ciao a tutti, prendendo spunto da un topic presente in questo sito ho realizzato un circuito per il controllo di una PT1000 utilizzando questo integrato http://www.smartec.nl/pdf/DSUTI.pdf di preciso da pagina 13 a 15.
Il programma che ho utilizzato per arduino è questo:

#include <stdio.h>
#include "pins_arduino.h"

#define UTI_PIN 5
#define UTI_RESISTANCE_REF 1000

void setup()
{

  Serial.begin(9600);
  pinMode(UTI_PIN, INPUT);
}

void loop()

{
  float res1;
float temperatura;


   if(ReadUTI(UTI_PIN,&res1,&temperatura,UTI_RESISTANCE_REF)) { 

	Serial.print("Resistance 1: ");
	Serial.print(res1);
	Serial.print("\t");
	Serial.print("Temperatura: ");
	Serial.print(temperatura);
	Serial.print("\t");
	
    }
    else {
	Serial.print("Not Found");
    }
    Serial.print("\n");
   delay(2000);
}

int ReadUTI(uint8_t pin, float *res1,float  *Temperatura,int refRes)
{
    int state = HIGH;
    int i,startindex=-1;
    uint8_t bit = digitalPinToBitMask(pin);
    uint8_t port = digitalPinToPort(pin);
    uint8_t stateMask = (state ? bit : 0); // mette la variabile bit valori ke ha in ingresso
    unsigned long width[12] = {0,0,0,0,0,0,0,0,0,0,0,0};
    float nOff=0,nAB=0,nCD=0,nBC=0,nDF=0;// mettere anche queste float se cambio

   // while ( (*portInputRegister(port) & bit) != stateMask)
	 // ;

    for(i=0;i<12;i++) {
	while ( (*portInputRegister(port) & bit) == stateMask)
	    width[i]++;
	while ( (*portInputRegister(port) & bit) != stateMask)
  width[i]++;
  }
  for(i=1;i<12;i++) {
  if(i<7) {
  if(width[i]<width[i+2]&&width[i]<width[i+3]&&width[i]<width[i+4]&&width[i]<width[i+5]&&width[i+1]<width

  [i+2]&&width[i+1]<width[i+3]&&width[i+1]<width[i+4]&&width[i+1]<width[i+5]) {
startindex=i;
i=12;
}
}
}
if(startindex!=-1) { //se  startindex vale -1 nn ho trovato niente
	nOff=width[startindex]+width[startindex+1];
	nAB=width[startindex+2];
	nCD=width[startindex+3];
	//nBC=width[startindex+4];
	//nDF=width[startindex+5];

	*res1=((nCD-nOff)/(nAB-nOff))*refRes;
	*Temperatura=GetPlatinumRTD(*res1,refRes);

	return 1;
    }
    else {
	return 0;
    }
 
}


 float GetPlatinumRTD(float R,float R0) {
    float A=3.9083E-3;
    float B=-5.775E-7;
    float T;

    R=R/R0;

    //T = (0.0-A + sqrt((A*A) - 4.0 * B * (1.0 - R))) / 2.0 * B;
    T=0.0-A;
    T+=sqrt((A*A) - 4.0 * B * (1.0 - R));
    T/=(2.0 * B);

    if(T>-50&&T<500) {
	return T;
    }
    else {
	//T=  (0.0-A - sqrt((A*A) - 4.0 * B * (1.0 - R))) / 2.0 * B;
	T=0.0-A;
	T-=sqrt((A*A) - 4.0 * B * (1.0 - R));
	T/=(2.0 * B);
	return T;
    }
}

Il programma funziona abbastanza bene il problema è che mi trova troppi notfound e non mi riesce correggerlo, c’è da specificare che questo programmino era per tre PT1000.
Mi potete aiutare???Come mai mi trova tanti notfound???
Grazie