DISPLAY LCD KEYPAD SHIELD E SENSORE TEMPERATURA LM35DZ

Ciao a tutti, ho realizzato il seguente progetto:
ho una display LCD Keypad Shield, quello con 6 tasti, sul quale voglio visualizzare la temperatura rilevata da un sensore LM35DZ. Il problema che mi si è posto e che non riesco a risolvere è che la visualizzazione della temperatura sul display non si aggiorna automaticamente ma soltanto alla pressione del tasto Left sul display stesso, in pratica finchè non premo il tasto sul display rimane visualizzata l’ultima lettura.
di seguito lo sketch utilizzato.
ciao e grazie a tutti.

#include <LiquidCrystal.h>

LiquidCrystal lcd(8, 9, 4, 5, 6, 7);

int prevValue = 0;
int lcd_key     = 0;
int adc_key_in  = 0;
#define btnRIGHT  0
#define btnUP     1
#define btnDOWN   2
#define btnLEFT   3
#define btnSELECT 4
#define btnNONE   5

int read_LCD_buttons() {
  if (analogRead(0) > 1000) return btnNONE;
  if (analogRead(0) < 50)   return btnRIGHT;  
  if (analogRead(0) < 250)  return btnUP; 
  if (analogRead(0) < 450)  return btnDOWN; 
  if (analogRead(0) < 650)  return btnLEFT; 
  if (analogRead(0) < 850)  return btnSELECT;
  return btnNONE;
}
int temperaturesensor = 15;
int relay = 13;
int override = 12;
int led = 11;

void setup() {
  Serial.begin(9600);
  pinMode(relay, OUTPUT);
  pinMode(override, INPUT);
  pinMode(led, OUTPUT);
  digitalWrite(relay, HIGH);
  lcd.begin(16, 2);
  lcd.setCursor(0,0);
  lcd.print("Press Select");

}

void loop() {
  int a = 1;
      int value = analogRead(temperaturesensor);
//  if (prevValue != value) {
     float millivolts = (value / 1024.0) * 5000;
     float temp = millivolts / 10;
     float celsius = temp;  // sensor output is 10mV per degree Celsius
     Serial.print(celsius);
     Serial.println(" degrees Celsius");
     float farenheit = ((celsius * 9)/5)+32;
     Serial.print(farenheit);
     Serial.println(" degrees Farenheit");
     float kelvin = celsius + 273.15;
     Serial.print(kelvin);
     Serial.println(" degrees Kelvin");
     delay(500);

  if(digitalRead(override) == 1) { 
    digitalWrite(led, HIGH);
    digitalWrite(relay, LOW);
    Serial.print(celsius);
    Serial.println(" degrees Celsius");
    delay(500);
  }
  
  else if (celsius >= 30) { 
    digitalWrite(led, HIGH);
    digitalWrite(relay, LOW);
    Serial.print(celsius);
    Serial.println(" degrees Celsius");
    delay(500);
  }
  else {
    digitalWrite(led, LOW);
    digitalWrite(relay, HIGH);
    Serial.print(celsius);
    Serial.println(" degrees Celsius");
    delay(500);
  }
    lcd_key = read_LCD_buttons();
    lcd.setCursor(0,0);

      

  switch (lcd_key) {
    case btnSELECT:
    {
    lcd.clear();
    lcd.print("Left:Celsius ");
    delay(750);
    lcd.clear();
    lcd.print("Right:Farenheit ");
    delay(750);
    lcd.clear();
    lcd.print("Up:Kelvin");
    delay(750);
    break;


      case btnLEFT: 
      {
        lcd.clear();
        lcd.setCursor(0,0);
        lcd.print("Celsius");
        lcd.setCursor(0,1);
        lcd.print(celsius);
        break;
      }
      case btnRIGHT:
      {
        lcd.clear();
        lcd.setCursor(0,0);
        lcd.print("Farenheit");
        lcd.setCursor(0,1);
        lcd.print(farenheit);
        break;
      }
      case btnUP:
      {
        lcd.clear();
        lcd.setCursor(0,0);
        lcd.print("Kelvin");
        lcd.setCursor(0,1);
        lcd.print(kelvin);
        break;
      }
    }
    
    }
        
  }