Arduino temperatura ed ohm

Ciao ragazzi, hore alizzato questo sketch per poter leggere la temperatura con un LM35 su pin A0 ed il valore di una resistenza sul pin A1 con un partitore da 1k come resistenza nota.

il problema è sulla lettura della temperatura.
Quando lo sketch parte , fa la prima lettura con lm35 correttamenta, legge la resistenza e da qui in avanti continerà a sbagliare la lettura della temperatura.
Quancuno sa indicarmi l’errore per favore?

#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27,16,2);  // set the LCD address to 0x27 for a 16 chars and 2 line display

float tempC;
int tempPin = 0;
int analogPin= 1;
int raw= 0;
int Vin= 5;
float Vout= 0;
float R1= 1000;
float R2= 0;
float buffer= 0;


void setup()
{
  lcd.init();                      // initialize the lcd
  Serial.begin(9600);
lcd.clear();
  lcd.backlight();
  lcd.print("XXXXXXX");
  delay (1500); 
  lcd.clear();
  lcd.print("XXXXXXXXXX");
  delay (1500); 
  lcd.clear();
  lcd.print("XXXXXXXXXXX");
  delay (1500); 
  lcd.clear();
  lcd.print("XXXXXXXXXXX");
  delay (1500); 
  lcd.clear();
  lcd.print("XXXXXX");
  delay (1500); 
  lcd.clear();
  lcd.print("XXXXXXXXX");
  delay (1500); 
  lcd.clear();


}

void loop()
{
  tempC = analogRead(tempPin);
  tempC = (5.0 * tempC * 100.0)/1024.0;

  lcd.print(tempC);
  lcd.print(" gradi");
  delay(2000);
  lcd.clear();
  delay(2000);
  raw= analogRead(analogPin);
  if(raw) 
  {
    buffer= raw * Vin;
    Vout= (buffer)/1024.0;
    buffer= (Vin/Vout) -1;

    R2= R1 * buffer;
    lcd.setCursor(0, 1); 
    lcd.print("Ohm: ");
    lcd.print(R2);
    delay(1000);
    lcd.clear();

  }
}

(tags added by moderator)

Devi fare 2 letture del LM35 e scartare la prima. Questo perché cambiando il canale del Multiplexer ( entrata analogica) la prima lettura non é affidabile.
Ciao Uwe

Spesso si fanno 11 letture consecutive della porta analogica, si scarta la prima e si fa la media delle rimanenti 10.

Ciao, ho modificato così.
Temperatura letta dal LM35 è perfetta, però ora quando collego la resistenza da leggere la temperatura non funziona più e non leggo la resistenza.

(HINT HINT - CODE TAGS!)

//Compatible with the Arduino IDE 1.0
// LiquidCrystal_I2C  Library version:1.1

#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27,16,2);  // set the LCD address to 0x27 for a 16 chars and 2 line display

#define LM35_pin 0
float vref = 1.1;

int analogPin= 1;
int raw= 0;
int Vin= 5;
float Vout= 0;
float R1= 1000;
float R2= 0;
float buffer= 0;


void setup()

{
  
   analogReference( INTERNAL );
   analogRead( LM35_pin ); 
  lcd.init();                      // initialize the lcd
  Serial.begin(9600);
lcd.clear();
  lcd.backlight();
  lcd.print("xxxxxxxxxx");
  delay (1500); 
  lcd.clear();
  lcd.print("xxxxxxxxxx.");
  delay (1500); 
  lcd.clear();
  lcd.print("xxxxxxxxxx");
  delay (1500); 
  lcd.clear();
  lcd.print("xxxxxxxxxx");
  delay (1500); 
  lcd.clear();
  lcd.print("xxxxxxxxxx");
  delay (1500); 
  lcd.clear();
  lcd.print("xxxxxxxxxx");
  delay (1500); 
  lcd.clear();


}

void loop()
{
 
float temp = readTemp();
sendTempToLCD( temp );
}
float readTemp()
 

{
  float temp = 0.0;       // valore convertito in temperatura (°C)
  int val = 0;            // valore quantizzato dall'ADC [0..1023]
  int nread = 5;          // numero di letture (da 5 a 8)
  float somma = 0.0;      // somma delle letture
  for (int i=0; i<nread; i++)
  {
    val = analogRead( LM35_pin );              // legge il dato della tensione sul pin 'LM35_pin' 
    temp = ( 100.0 *  vref * val ) / 1024.0;   // lo converte in °C
    somma += temp;                             // aggiunge alla somma delle temperature lette   
  }   
  return ( somma / nread );                     // calcolo il valore medio 
}

/* Invia la temperatura su un LCD (modo 4bit) */
void sendTempToLCD( float temp )
{
  lcd.clear();               // Pulisce lo schermo 
  //lcd.setCursor( 0, 0 );     // Va in posizione di home: colonna 1, riga 1
  //lcd.print( "Temperatura di: ");
  lcd.setCursor( 0, 0 );     // Va in posizione di home: colonna 1, riga 2
  lcd.print( temp );         // Stampa solo la parte intera della temp.
  lcd.print( ' ' );          // Stampa uno spazio
  lcd.print( (char) 223 );   // Stampa '°'
  lcd.print( 'C' );
  delay( 250 );


  raw= analogRead(analogPin);
  if(raw) 
  {
    buffer= raw * Vin;
    Vout= (buffer)/1024.0;
    buffer= (Vin/Vout) -1;

    R2= R1 * buffer;
    lcd.setCursor(0, 1); 
    lcd.print("Ohm: ");
    lcd.print(R2);
    delay(1000);
    lcd.clear();

  }
}