Termometro con pulsante

ciao a tutti!
ho realizzato con arduino un "termometro" che visualizza su display temperatura e umidità interna e temperatura esterna, il tutto funziona correttamente finchè non ho aggiunto un pulsante che quando premuto mi permette di visualizzare o la temperatura e umidità interna o la temperatura esterna, praticamente quando il pulsante viene premuto il display viene cancellato per la nuova visualizzazione e fin qui tutto bene, il problema sta nel fatto che anche senza premere il pulsante il display si cancella automaticamente visualizzando prima la temperatura e umidità e poi si cancella di nuovo e visualizza la temperatura esterna. cosi va avanti all'infinito e se premo il pulsante non succede nulla.
il pulsante l'ho collegato come nello schema elettrico del tutorial di arduino : http://arduino.cc/en/tutorial/button
vi posto il codice.

#include "DHT.h"
#include <LiquidCrystal.h>
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
int Ventola= 9;
int LM35= A1;
int TempCest;
int pulsante= 7;
int mediaValori[10];
int somma;
int i = 0;

#define DHTPIN A0     



#define DHTTYPE DHT11


// Connect pin 1 (on the left) of the sensor to +5V
// Connect pin 2 of the sensor to whatever your DHTPIN is
// Connect pin 4 (on the right) of the sensor to GROUND
// Connect a 10K resistor from pin 2 (data) to pin 1 (power) of the sensor

DHT dht(DHTPIN, DHTTYPE);

void setup() {
  Serial.begin(9600); 
  Serial.println("DHTxx test!");
 
  dht.begin();
  lcd.begin(16, 2); //Impostazione del numero di colonne e righe del display LCD 
  lcd.setCursor(0,0); //Sposto il cursore sulla prima riga (riga 0) e sulla prima colonna
  lcd.print("Temp:"); //Stampo il messaggio 'Temperatura:' sulla prima riga
  lcd.setCursor(0, 1);
  lcd.print("umidita:");
  analogReference(INTERNAL);
  pinMode(Ventola, OUTPUT);
  pinMode(pulsante, INPUT);
}

void loop() {
  analogRead(LM35);
  int h = dht.readHumidity();  //lettura umidità h
  int t = dht.readTemperature(); //lettura temperatura t


  if (isnan(t) || isnan(h)) {
    lcd.clear();
    lcd.setCursor(0, 0);
    lcd.print("ERRORE");
  } else {
    lcd.clear();
    lcd.setCursor(0,0); //Sposto il cursore sulla prima riga (riga 0) e sulla prima colonna
    lcd.print("Temp:"); //Stampo il messaggio 'Temperatura:' sulla prima riga
    lcd.setCursor(0, 1);
    lcd.print("umidita:");
    lcd.setCursor(10, 1); 
    lcd.print(h);
    lcd.print(" %\t");
    lcd.setCursor(6, 0);
    lcd.print(t);
    lcd.print(" C");
  }
  if(t>=25){
   lcd.clear();
   lcd.setCursor(0, 0);
   lcd.print("ATTENZIONE");
   analogWrite(Ventola,255);
   }
   else{
    analogWrite(Ventola,0);
    lcd.clear();
    lcd.setCursor(0,0); //Sposto il cursore sulla prima riga (riga 0) e sulla prima colonna
    lcd.print("Temp:"); //Stampo il messaggio 'Temperatura:' sulla prima riga
    lcd.setCursor(0, 1);
    lcd.print("umidita:");
    lcd.setCursor(10, 1); 
    lcd.print(h);
    lcd.print(" %\t");
    lcd.setCursor(6, 0);
    lcd.print(t);
    lcd.print(" C");
    }
   delay(1000);
   
   
    for(i=0;i<10;i++){ 
  mediaValori[i]=analogRead(LM35);//lettura analogica dal sensore di temperatura
  delay(100);//ritardo 0.1 secondi
  }
  somma=0;
  for(int i=0;i<10;i++)
  somma=(somma + mediaValori[i]);
  TempCest=somma/10;
  TempCest=TempCest/9.31;
  pulsante= digitalRead(pulsante);
   if(pulsante == HIGH){
    lcd.clear();
    lcd.setCursor(0,0); 
    lcd.print("Temp E"); 
    lcd.setCursor(7, 0);
    lcd.print(TempCest);
    lcd.print(" C");
    Serial.print(pulsante);}
    delay(5000) ;
    }

Grazie!

nel pulsante penso ti manchi un else
oppure se pulsante è LOW fai il resto (umidità e temperatura interna)
ma forse non basta

camperos:
nel pulsante penso ti manchi un else
oppure se pulsante è LOW fai il resto (umidità e temperatura interna)
ma forse non basta

Grazie della risposta!
Comunque anche mettendo else sul ciclo if del pulsante il risultato non cambia

sbagli qui:

pulsante= digitalRead(pulsante);

Ok adesso visualizzo la temperatura esterna solo quando premo il pulsante, modificando lo sketch cosi:

Lpulsante= digitalRead(pulsante);
    if(Lpulsante == HIGH){
    lcd.clear();
    lcd.setCursor(0,0); 
    lcd.print("Temp E"); 
    lcd.setCursor(7, 0);
    lcd.print(TempCest);
    lcd.print(" C");
    Serial.print(Lpulsante);
    delay(10000);}
    else{goto INIZIO;}

però ho un'altra domanda, c'è la possibilità che quando visualizzo la temperatura esterna (quando premo il pulsante) di vedere l'aggiornamento della temperatua o per farlo devo premere di nuovo il pulsante?
grazie!

perchè usi un delay di 10 secondi?
dovresti usare innansitutto la funzione millis() per contare i 10 secondi in cui vuoi il display acceso, e poi non usare una logica tipo:
if (pulsante_premuto) {refresh_display} perchè così avrai un refresh continuo e suppongo uno sfarfallio..

quindi sempre usando il confronto con millis(), magari fai un refresh ogni 100ms, tanto non è che la temperatura cambia di continuo..

altra cosa, qui c'è un errore e un consiglio da darti:

for(i=0;i<10;i++){ 
  mediaValori[i]=analogRead(LM35);//lettura analogica dal sensore di temperatura
  delay(100);//ritardo 0.1 secondi
  }
  somma=0;
  for(int i=0;i<10;i++)
  somma=(somma + mediaValori[i]);

al secondo ciclo for mancano le parentesi graffe, e comunque puoi evitarlo.

somma = 0;
for(i=0;i<10;i++) {
  somma += analogRead(LM35);
  delay(100);
}

inoltre, se ad ogni loop fai questa lettura, il refresh dell'LCD già di suo è una volta ogni 1 secondo.