sensore temperatura

ho trovato un altro tutorial http://cinquetau.altervista.org/blog/2010/02/28/usare-un-lm35-per-misurare-temperature-negative-con-arduino/

/* ----------------LM35 per tutta la scala centigrada---------------
   
   Questo codice consente di usare un LM35 per misurare anche      
   temperature negative. 
   
   La configurazione usata è quella con due diodi tra il pin GND   
   del sensore e il GND dell'alimentazione.
   Vengono prelevati due segnali che andranno a due ingressi 
   analogici di Arduino:
   - il primo dal pin GND del LM35 chiamato "ref"
   - il secondo dal pin OUT del LM35 chiamato "sensoreTemperatura"
   
   La differenza tra "sensoreTemperatura" e "ref" contiene 
   l'informazione della temperatura che il sensore ha misurato
   
   creato il 27 Febbraio 2010
   da Federico Vanzati
*/

#define LM35_TEMP 0  // Pin analogico 0
#define LM35_REF 1   // Pin analogico 1

float temperatura; // variabile in cui viene salvata la temperatura in gradi centigradi 
float prev_temperatura = 0; // temperatura precendente
int ref; // valore della tensione di riferimento dei due diodi
int ref_medio = 0; // valore della tensione di riferimento medio
int sensoreTemperatura; // valore di tensione letto dal pin OUT del sensore 
int sensoreTemperatura_medio = 0; // valore sensoreTemperatura medio
int cont; //contatore usato per ottenere un valore medio

void setup()
{
  Serial.begin(9600); //inizializzazione della comunicazione seriale
}

void loop()
{
  // vengono sommati 10 valori di temperatura per poi farne la media
  for( cont = 0; cont < 10; cont++)
  {
    sensoreTemperatura = analogRead(LM35_TEMP); // lettura della tensione del pin OUT LM35
    sensoreTemperatura_medio += sensoreTemperatura; //sommatoria dei valori

    ref = analogRead(LM35_REF); // lettura della tensione di riferimento
    ref_medio += ref; // sommatoria dei valori

    delay(500); // intervallo di campionamento
    //la lettura durera' 10 (numero di camoioni) x 500ms (intervallo tra due campioni) = 5000ms
  } 

  if(cont == 10) // quando ho sommato i dieci valori campionati si esegue:
  {
    cont = 0; // azzeramento contatore, per far ripartire il successivo campionamento

    // media della sommatoria dei dieci valori campionati di ref e sensoreTemperatura
    sensoreTemperatura_medio = sensoreTemperatura_medio / 10;
    ref_medio = ref_medio / 10;
 
 // conversione dei valori medi misurati in una temperatura in gradi centigradi
    temperatura = (sensoreTemperatura_medio - ref_medio) * 100/2.56;
    temperatura = temperatura * 5/1024;

    // valore di temperatura che verra' mostrato quando si e' in fase di campionamento
    //e non c'e' una temperatura disponibile
    prev_temperatura = temperatura; 

    // stampa su seriale dei due valori medi
    Serial.print(" ref_medio: ");
    Serial.print(ref_medio);
    Serial.print(" temp_medio: ");
    Serial.print(sensoreTemperatura_medio);

    // prima di un successiva acquisizione e media questi valori vanno azzerati
    sensoreTemperatura_medio = 0;
    ref_medio = 0;
  }
  else{
    temperatura = prev_temperatura;
  }
  // stampa su seriale della temperatura ottenuta in gradi centigradi
  Serial.print(" gradi: ");
  Serial.println(temperatura);

}

ma è uguale mi da valori assurdi 360 gradi