Control de Temp LM35+Relay+LCD-DFR0009

Hola que tal amigos, requiero de hacer algo mas o menos asi:

https://www.youtube.com/watch?v=spUIqIKzsbs

Empece a programarlo pero al imprimir la temperatura, esta variaba demasiado con datos erroneos. Trate de juntar un código normal de un LM35 con el de un contador de tiempo y reloj. ALguien sabe a que se deba esto? Y aun me falta ponerle el relay...

Saludos Ante todo lee las normas del foro. Donde esta el código o el planteamiento de tu proyecto es solo eso?

Ante todo una disculpa, me doy cuenta que este post no iba en este modulo. Bueno les cuento mas especificadamente, deseo hacer una incubadora la cual contara con un relay que controlara 4 focos, con 4 sensores DS18B20 y un DHT22. El sistema contara con un humidificador y un servo que volteara los huevos.
Por el momento solo cuento con el relay y un sensor LM35, pues me estoy enseñando a programar y además de que sigo esperando los sensores de China jeje. Les adjunto los dos códigos que no pude juntar, el primero es el de temperatura del LM35 y el segundo es un reloj que muestra desde los segundos hasta los días de incubación, con la idea de declarar variables tanto de volteo de los rack como de humedad dependiendo del día. El problema fue que al juntar ambos códigos, las impresiones de las lecturas de las temperaturas me daban ilógicas comparándolas con las que mostraba cuando solo tenía el código del LM35.
Utilizo un Arduino Mega por cierto…Les adjunto ambos codigos juntos, no se donde esta el error, por mas que le cambio no logro la impresion correcta de la temperatura

#include <LiquidCrystal.h>
#include <stdio.h>


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

int horas    = 0;
int minutos  = 0;
int segundos = 1;
int diaz     = 0;
int  ajuste       = 0;

int hum      = 50;
float temp  = 37.7;

int pinoSensor = 8;  
int valorLido = 0;    
float temperatura = 0;

int  lcd_key      = 0;
int  adc_key_in   = 0;

#define btnRIGHT     0    // (Second Adjust)
#define btnUP        1    // (Count increment)
#define btnDOWN      2    // (Count Decrement)
#define btnLEFT      3    // (Minutes Adjust)
#define btnSELECT    4    // (Hours Adjust)
#define btnNONE      5    // (None pressed)

int read_LCD_buttons()
{
  adc_key_in = analogRead(0);
  if (adc_key_in > 1000) return btnNONE;
  if (adc_key_in < 50 )  return btnRIGHT;
  if (adc_key_in < 250 ) return btnUP;
  if (adc_key_in < 450 ) return btnDOWN;
  if (adc_key_in < 650 ) return btnLEFT;
  if (adc_key_in < 850 ) return btnSELECT;
  return btnNONE;
}

void setup() {


  Serial.begin(9600);

  lcd.begin(16, 2);


}

void loop() 
{

valorLido = analogRead(pinoSensor);
temperatura = (valorLido * 0.00488);
temperatura = temperatura * 100;
lcd.setCursor(0, 0);
lcd.print("T=");
lcd.setCursor(2, 0);
lcd.print(temperatura);
delay(1000);

  
  segundos++;
  delay(1000);
  
  
  // When count overflow 59 seconds, it must increment a minute.

  if (segundos > 59 ) {
    minutos++;
    segundos = 0;
  }
  // When count overflow 59 minutes, it must increment an hour
  if (minutos > 59 ) {
    horas++;
    minutos = 0;
  }
  // When count overflows 23 hours , it must reset all to zero.
  if (horas > 23 ){
       horas    = 0;
       minutos  = 0;
       segundos = 0;
       diaz++;       // Incrementa el dia en 1
  }

  lcd.setCursor(2, 1);
  if (diaz < 10) {
    lcd.print("0");
  }
  lcd.print(diaz);
  lcd.print(":");
  if (horas < 10) {
    lcd.print("0");
  }
  lcd.print(horas);
  lcd.print(":");

  if (minutos < 10) {
    lcd.print("0");
  }

  lcd.print(minutos);
  lcd.print(":");

  if (segundos < 10) {
    lcd.print("0");
  }

  lcd.print(segundos);
  lcd.print("   ");
  
  lcd_key=read_LCD_buttons();
  
  switch(lcd_key)
  {
       case btnSELECT: //Set Variable to change
       {
              ajuste++;
              lcd.setCursor(0, 1); /* Linea 2 */
              if (ajuste == 1) {
                    lcd.print("Hora : 00..23   ");
              }
              if (ajuste == 2) {
                    lcd.print("Minutos: 00..59 ");
              }
              if (ajuste == 3) {
                    lcd.print("Dias Inc: 00..30");
              }
              if (ajuste == 4){
                    lcd.print("Tem(1): 20...40 "); 
              }  
              if (ajuste == 5) {
                    lcd.print("Tem(0.1): 20..40");
              }
              if (ajuste == 6) {
                    lcd.print("Hum(5): 0...100 ");
              }
              if (ajuste == 7) {
                    lcd.print("Hum(1): 0...100 ");
              }    
              if (ajuste > 7 ) {
                     ajuste = 0;
              }
              
              delay(20);
              break;   
       }
             
       case btnUP:  // Count Increment
       {
            if (ajuste == 1){
                horas++;
                if (horas > 23)
                    horas = 0;
                lcd.setCursor(0, 1);    
                lcd.print ("Horas : ");
                lcd.setCursor(8, 1);
                if (horas < 10)
                    lcd.print("0");
                lcd.print(horas);
                lcd.print("  ");
            }  
                 
            if (ajuste == 2 ){
                minutos++;
                if (minutos > 59 )
                      minutos = 0;
                lcd.setCursor(0, 1);      
                lcd.print ("Minutos :       ");
                lcd.setCursor(9, 1);
                if (minutos < 10)
                    lcd.print("0");
                lcd.print(minutos);
              }
              if (ajuste == 3 ) {
                 diaz++;
                 if (diaz > 30 )
                    diaz = 0;
                 lcd.setCursor(0, 1);
                 lcd.print ("Diaz Inc :      ");
                 lcd.setCursor(9, 1);
                 if (diaz < 10)
                     lcd.print("0");
                 lcd.print(diaz);
               }
            if (ajuste == 4){
               temp++;
               
               lcd.setCursor(0,1);
               lcd.print("Temperatura:");
               lcd.setCursor(12,1);
               lcd.print(temp);
                     
            }  
            if (ajuste == 5){
                temp+=0.1;
                lcd.setCursor(0,1);
                lcd.print("Temperatura:");
                lcd.setCursor(12,1);
                lcd.print(temp);
                
            }  
            if (ajuste == 6){
                hum+=5;
                lcd.setCursor(0,1);
                lcd.print("Humedad:    ");
                lcd.setCursor(13,1);
                lcd.print(hum);
                
            }
            if (ajuste == 7){
                hum++;
                lcd.setCursor(0,1);
                lcd.print("Humedad:    ");
                lcd.setCursor(12,1);
                lcd.print(hum);
            }  

              break; 
       }
       
       case btnDOWN: // Count decrement
       {
            lcd.setCursor(0,0);
            lcd.print("Seteando...     "); 
            if (ajuste == 1){
                horas--;
                if (horas < 0)
                    horas = 23;
                lcd.setCursor(0, 1);    
                lcd.print ("Horas :         ");
                lcd.setCursor(8, 1);
                if (horas < 10)
                    lcd.print("0");
                lcd.print(horas);
            }  
            if (ajuste == 2 ){
                minutos--;
                if (minutos < 0 )
                      minutos = 59;
                lcd.setCursor(0, 1);      
                lcd.print ("Minutos :       ");
                lcd.setCursor(9, 1);
                if (minutos < 10)
                    lcd.print("0");
                lcd.print(minutos);
              }
              if (ajuste == 3 ) {
                 diaz--;
                 if (diaz > 30 )
                    diaz = 0;
                 lcd.setCursor(0, 1);
                 lcd.print ("Diaz Inc :      ");
                 lcd.setCursor(9, 1);
                 if (diaz < 10)
                     lcd.print("0");
                 lcd.print(diaz);
               }
            if (ajuste == 4){
               temp--;
               lcd.setCursor(0,1);
               lcd.print("Temperatura:");
               lcd.setCursor(12,1);
               lcd.print(temp);    
            }  
            if (ajuste == 5){
                temp-=0.1;
                lcd.setCursor(0,1);
                lcd.print("Temperatura:");
                lcd.setCursor(12,1);
                lcd.print(temp);
            }  
            if (ajuste == 6){
                hum-=5;
                lcd.setCursor(0,1);
                lcd.print("Humedad:     ");
                lcd.setCursor(12,1);
                lcd.print(hum);
            }
            if (ajuste == 7){
                hum--;
                lcd.setCursor(0,1);
                lcd.print("Humedad:     ");
                lcd.setCursor(12,1);
                lcd.print(hum);
            } 
            break;
       }

       case btnNONE:
       {
              break;
       }
  } /* Switch end */
           
           
}   /* loop() end */

Encuentro un leve error en SensorPin que definiste como 8. No hay AD con referencia a un pin 8 en arduino.
Lo cambie a A1.

El código asi modificado muestra esto en la pantalla.

Bien, pasé por algunos errores propios.

Cual es tu problema? Hasta acá va bien, salvo que no comparto el uso de delay(1000) pero te da una pausa que hace estable la presentación.

Bueno pues espero se pueda ver la foto, soy nuevo aquí…

Básicamente el problema es que la impresión de la temperatura no concuerda, además cuando doy clic en el botón SELECT oscila la temperatura, es decir me cambia a valores de hasta 40. Por otra parte la temperatura real (ambiente) actual es de 21°C aproximadamente, pero me da una impresión de 14-16°C y a veces se pasa a valores superiores a 30°C oscilatoriamente.
Por otra parte declare 8 porque no puedo insertar en el pin A1, ¿? (Inserto la fotografía) cambie en el código por A8 y tampoco funciona.
Sin embargo otro código que incluye la temperatura solamente si me da un valor ambiental del día de hoy, pero al adjuntarlo con el código de mi proyecto no logro la impresión de un valor real de la temperatura ambiente. Inserto el código

#include <LiquidCrystal.h>
// The numbers of the interface pins
LiquidCrystal lcd(8, 9, 4, 5, 6, 7);
// Variables
float TempC;
int TempPin = 8;
void setup(){
  // LCD's line position of columns and rows:
  lcd.begin(16, 2);
  lcd.setCursor(0, 0);
  lcd.print("T=");
}
void loop(){
  TempC = analogRead(TempPin);           //read the value from the sensor
  TempC = (5.0 * TempC * 100.0)/1024.0;  //convertion the analog data to temperature

  // print result to lcd display
  lcd.setCursor(2, 0);
  lcd.print(TempC,2);
  lcd.print("C");

 
  delay(1000);
}

Bueno no creo que esto haya resuelto tu problema pero ahora que comprendí que trabajas con un MEGA y volví a usar el Tempin en A8 modifiqué algo que hará muy rápido tu programa lo que trae otros problemas a la luz.
A ver como funciona.

Saque delay(1000) que tenías repetido dos veces o sea tomabas 2 segundos por 1.
Tambien estoy limpiando loop para que se vea mas claramente.

#include <LiquidCrystal.h>
#include <stdio.h>


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

int horas    = 0;
int minutos  = 0;
int segundos = 1;
int diaz     = 0;
int  ajuste       = 0;

int hum      = 50;
float temp  = 37.7;

int pinoSensor = A8;  
int valorLeido = 0;    
float temperatura = 0;

int  lcd_key      = 0;
int  adc_key_in   = 0;

#define btnRIGHT     0    // (Second Adjust)
#define btnUP        1    // (Count increment)
#define btnDOWN      2    // (Count Decrement)
#define btnLEFT      3    // (Minutes Adjust)
#define btnSELECT    4    // (Hours Adjust)
#define btnNONE      5    // (None pressed)

unsigned long time = 0;

int read_LCD_buttons()
{
  adc_key_in = analogRead(0);
  if (adc_key_in > 1000) { 
    Serial.println("NONE");
     return btnNONE;
  }
  if (adc_key_in < 50 )  {
     Serial.println("RIGHT");
     return btnRIGHT;
  }
  if (adc_key_in < 250 ) {
      Serial.println("UP");
      return btnUP;
  }
  if (adc_key_in < 450 ) {
      Serial.println("DOWN");
      return btnDOWN;
  }
  if (adc_key_in < 650 ) {
     Serial.println("LEFT"); 
     return btnLEFT;
  }
  if (adc_key_in < 850 ) {
      Serial.println("SELECT"); 
     return btnSELECT;
  }
  return btnNONE;
}

void setup() {
  Serial.begin(9600);
  lcd.begin(16, 2);
  time = millis();
}

void loop() 
{
  valorLeido = analogRead(pinoSensor);
  temperatura = (valorLeido * 0.00488);
  temperatura = temperatura * 100;
  lcd.setCursor(0, 0);
  lcd.print("T=");
  lcd.setCursor(2, 0);
  lcd.print(temperatura);
  //delay(1000);

  
  if (millis() - time > 1000) {
     time = millis();
     segundos++; 
     actualizo_tiempo();
  }

  lcd_key = read_LCD_buttons();

  switch(lcd_key)  {
  case btnSELECT: //Set Variable to change
      ajuste++;
      lcd.setCursor(0, 1); /* Linea 2 */
      switch (ajuste) { 
         case 1: 
                lcd.print("Hora : 00..23   ");
                break;
         case 2: 
                lcd.print("Minutos: 00..59 ");
                break;
         case 3: 
                lcd.print("Dias Inc: 00..30");
                break;
         case 4:
                lcd.print("Tem(1): 20...40 "); 
                break;       
         case 5:
                lcd.print("Tem(0.1): 20..40");
                break;
         case 6:
                lcd.print("Hum(5): 0...100 ");
                break;
         case 7: 
                lcd.print("Hum(1): 0...100 ");
                break;
         default: 
                ajuste = 0;
                break;
      }
      delay(20);
      break;   
      
   case btnUP:  // Count Increment
      switch (ajuste) {
         case 1: 
                horas++;
                if (horas > 23)
                  horas = 0;
                lcd.setCursor(0, 1);    
                lcd.print ("Horas : ");
                lcd.setCursor(8, 1);
                if (horas < 10)
                  lcd.print("0");
                lcd.print(horas);
                lcd.print("  ");
                break;
         case 2: 
                minutos++;
                if (minutos > 59 )
                  minutos = 0;
                lcd.setCursor(0, 1);      
                lcd.print ("Minutos :       ");
                lcd.setCursor(9, 1);
                if (minutos < 10)
                  lcd.print("0");
                lcd.print(minutos);
                break;
         case 3: 
              diaz++;
              if (diaz > 30 )
                diaz = 0;
              lcd.setCursor(0, 1);
              lcd.print ("Diaz Inc :      ");
              lcd.setCursor(9, 1);
              if (diaz < 10)
                lcd.print("0");
              lcd.print(diaz);
              break;   
         case 4: 
              temp++;
              lcd.setCursor(0,1);
              lcd.print("Temperatura:");
              lcd.setCursor(12,1);
              lcd.print(temp);
              break;   
         case 5:
              temp+=0.1;
              lcd.setCursor(0,1);
              lcd.print("Temperatura:");
              lcd.setCursor(12,1);
              lcd.print(temp);
              break;   
         case 6:
              hum+=5;
              lcd.setCursor(0,1);
              lcd.print("Humedad:    ");
              lcd.setCursor(13,1);
              lcd.print(hum);
              break;   
         case 7:
              hum++;
              lcd.setCursor(0,1);
              lcd.print("Humedad:    ");
              lcd.setCursor(12,1);
              lcd.print(hum);
              break;
      }  
      break; 
  case btnDOWN: // Count decrement
      lcd.setCursor(0,0);
      lcd.print("Seteando...     "); 
      
      switch (ajuste) {   
         case 1:
              horas--;
              if (horas < 0)
                horas = 23;
              lcd.setCursor(0, 1);    
              lcd.print ("Horas :         ");
              lcd.setCursor(8, 1);
              if (horas < 10)
                lcd.print("0");
              lcd.print(horas);
              break;   
         case 2:
              minutos--;
              if (minutos < 0 )
                minutos = 59;
              lcd.setCursor(0, 1);      
              lcd.print ("Minutos :       ");
              lcd.setCursor(9, 1);
              if (minutos < 10)
                lcd.print("0");
              lcd.print(minutos);
               break;   
         case 3:
              diaz--;
              if (diaz > 30 )
                diaz = 0;
              lcd.setCursor(0, 1);
              lcd.print ("Diaz Inc :      ");
              lcd.setCursor(9, 1);
              if (diaz < 10)
                lcd.print("0");
              lcd.print(diaz);
              break;   
         case 4:
              temp--;
              lcd.setCursor(0,1);
              lcd.print("Temperatura:");
              lcd.setCursor(12,1);
              lcd.print(temp);    
              break;   
         case 5:
              temp-=0.1;
              lcd.setCursor(0,1);
              lcd.print("Temperatura:");
              lcd.setCursor(12,1);
              lcd.print(temp);
              break;   
         case 6:
              hum-=5;
              lcd.setCursor(0,1);
              lcd.print("Humedad:     ");
              lcd.setCursor(12,1);
              lcd.print(hum);
              break;   
         case 7:
              hum--;
              lcd.setCursor(0,1);
              lcd.print("Humedad:     ");
              lcd.setCursor(12,1);
              lcd.print(hum);
              break;
       } 
      break;
  case btnNONE:
       break;
  } /* Switch end */
}   /* loop() end */

void actualizo_tiempo(){
// When count overflow 59 seconds, it must increment a minute.
  if (segundos > 59 ) {
    minutos++;
    segundos = 0;
  }
  // When count overflow 59 minutes, it must increment an hour
  if (minutos > 59 ) {
    horas++;
    minutos = 0;
  }
  // When count overflows 23 hours , it must reset all to zero.
  if (horas > 23 ){
    horas    = 0;
    minutos  = 0;
    segundos = 0;
    diaz++;       // Incrementa el dia en 1
  }
  lcd.setCursor(2, 1);
  if (diaz < 10) {
    lcd.print("0");
  }
  lcd.print(diaz);
  lcd.print(":");
  if (horas < 10) {
    lcd.print("0");
  }
  lcd.print(horas);
  lcd.print(":");

  if (minutos < 10) {
    lcd.print("0");
  }

  lcd.print(minutos);
  lcd.print(":");

  if (segundos < 10) {
    lcd.print("0");
  }

  lcd.print(segundos);
  lcd.print("   ");
}

Muchas gracias amigo, le hice algunas modificaciones en los tiempos al programa, sin embargo sigo con el mismo problema, la temperatura impresa no es la ambiental. Para darme cuenta de ello introduzco el código de un comentario de arriba y me imprime aproximadamente 26°C.Cuando introduzco tu código me imprime 19° aproximadamente, además de que varia la temperatura que imprime. El código tiene lógica, sin embargo no encuentro la falla que sucede al tratar de adjuntar los dos códigos. Adjunto los cambios realizados. Volvi a poner el delay(1000) y alguotros en los case: pues no dejaba visualizar la impresión…

#include <LiquidCrystal.h>
#include <stdio.h>


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

int horas    = 0;
int minutos  = 0;
int segundos = 1;
int diaz     = 0;
int  ajuste       = 0;

int hum      = 50;
float temp  = 37.7;

int pinoSensor = A8;  
int valorLeido = 0;    
float temperatura = 0;

int  lcd_key      = 0;
int  adc_key_in   = 0;

#define btnRIGHT     0    // (Second Adjust)
#define btnUP        1    // (Count increment)
#define btnDOWN      2    // (Count Decrement)
#define btnLEFT      3    // (Minutes Adjust)
#define btnSELECT    4    // (Hours Adjust)
#define btnNONE      5    // (None pressed)

unsigned long time = 0;

int read_LCD_buttons()
{
  adc_key_in = analogRead(0);
  if (adc_key_in > 1000) { 
    Serial.println("NONE");
     return btnNONE;
  }
  if (adc_key_in < 50 )  {
     Serial.println("RIGHT");
     return btnRIGHT;
  }
  if (adc_key_in < 250 ) {
      Serial.println("UP");
      return btnUP;
  }
  if (adc_key_in < 450 ) {
      Serial.println("DOWN");
      return btnDOWN;
  }
  if (adc_key_in < 650 ) {
     Serial.println("LEFT"); 
     return btnLEFT;
  }
  if (adc_key_in < 850 ) {
      Serial.println("SELECT"); 
     return btnSELECT;
  }
  return btnNONE;
}

void setup() {
  Serial.begin(9600);
  lcd.begin(16, 2);
  time = millis();
}

void loop() 
{
  valorLeido = analogRead(pinoSensor);
  temperatura = (valorLeido * 0.0048828125);
  temperatura = temperatura * 100;
  lcd.setCursor(0, 0);
  lcd.print("T=");
  lcd.setCursor(2, 0);
  lcd.print(temperatura);
  lcd.setCursor(7, 0);
  lcd.print("         ");  
  delay(1000);

  
  if (millis() - time > 1000) {
     time = millis();
     segundos++; 
     actualizo_tiempo();
  }

  lcd_key = read_LCD_buttons();

  switch(lcd_key)  {
  case btnSELECT: //Set Variable to change
      ajuste++;
      lcd.setCursor(0, 1); /* Linea 2 */
      switch (ajuste) { 
         case 1: 
                lcd.print("Hora : 00..23   ");
                break;
         case 2: 
                lcd.print("Minutos: 00..59 ");
                break;
         case 3: 
                lcd.print("Dias Inc: 00..30");
                break;
         case 4:
                lcd.print("Tem(1): 20...40 "); 
                break;       
         case 5:
                lcd.print("Tem(0.1): 20..40");
                break;
         case 6:
                lcd.print("Hum(5): 0...100 ");
                break;
         case 7: 
                lcd.print("Hum(1): 0...100 ");
                break;
         default: 
                ajuste = 0;
                break;
      }
      delay(50);
      break;   
      
   case btnUP:  // Count Increment
      switch (ajuste) {
         case 1: 
                horas++;
                if (horas > 23)
                  horas = 0;
                lcd.setCursor(0, 1);    
                lcd.print ("Horas:    ");
                lcd.setCursor(10, 1); 
                if (horas < 10)
                  lcd.print("0");
                lcd.print(horas);
                lcd.print("    ");
                break;
         case 2: 
                minutos++;
                if (minutos > 59 )
                  minutos = 0;
                lcd.setCursor(0, 1);      
                lcd.print ("Minutos:   ");
                lcd.setCursor(11, 1); 
                if (minutos < 10)
                  lcd.print("0");
                lcd.print(minutos);
                lcd.print("   ");
                break;
         case 3: 
              diaz++;
              if (diaz > 30 )
                diaz = 0;
              lcd.setCursor(0, 1);
              lcd.print ("Dias Incu:  ");
              lcd.setCursor(12, 1);
              if (diaz < 10)
                lcd.print("0");
              lcd.print(diaz);
              lcd.print("  ");
              break;   
         case 4: 
              temp++;
              lcd.setCursor(0, 1);
              lcd.print("Temperatura:");
              lcd.setCursor(12, 1);
              lcd.print(temp);
              break;   
         case 5:
              temp+=0.1;
              lcd.setCursor(0, 1);
              lcd.print("Temperatura:");
              lcd.setCursor(12, 1);
              lcd.print(temp);     
              break;   
         case 6:
              hum+=5;
              lcd.setCursor(0, 1);
              lcd.print("Humedad:    ");
              lcd.setCursor(11, 1);
              lcd.print(hum);
              lcd.print("%  ");
              break;   
         case 7:
              hum++;
              lcd.setCursor(0, 1);
              lcd.print("Humedad:    ");
              lcd.setCursor(11, 1);
              lcd.print(hum);
              lcd.print("%  ");
              break;
              delay(20);
      }  
      break; 
  case btnDOWN: // Count decrement
      
      switch (ajuste) {
         case 1:
              horas--;
              if (horas < 0)
                horas = 23;
              lcd.setCursor(0, 1);    
              lcd.print ("Horas:    ");
              lcd.setCursor(10, 1); 
              if (horas < 10)
                lcd.print("0");
              lcd.print(horas);
              lcd.print("    ");
              break;   
         case 2:
              minutos--;
              if (minutos < 0 )
                minutos = 59;
              lcd.setCursor(0, 1);      
              lcd.print ("Minutos:   ");
              lcd.setCursor(11, 1); 
              if (minutos < 10)
                lcd.print("0");
              lcd.print(minutos);
              lcd.print("   ");
               break;   
         case 3:
              diaz--;
              if (diaz > 30 )
                diaz = 0;
              lcd.setCursor(0, 1);
              lcd.print ("Dias Incu:  ");
              lcd.setCursor(12, 1);
              if (diaz < 10)
                lcd.print("0");
              lcd.print(diaz);
              lcd.print("  ");
              break;   
         case 4:
              temp--;
              lcd.setCursor(0, 1);
              lcd.print("Temperatura:");
              lcd.setCursor(12, 1);
              lcd.print(temp);    
              break;   
         case 5:
              temp-=0.1;
              lcd.setCursor(0, 1);
              lcd.print("Temperatura:");
              lcd.setCursor(12, 1);
              lcd.print(temp);
              break;   
         case 6:
              hum-=5;
              lcd.setCursor(0, 1);
              lcd.print("Humedad:     ");
              lcd.setCursor(11, 1);
              lcd.print(hum);
              lcd.print("%  ");
              break;   
         case 7:
              hum--;
              lcd.setCursor(0, 1);
              lcd.print("Humedad:     ");
              lcd.setCursor(11, 1);
              lcd.print(hum);
              lcd.print("%  ");
              break;
              delay(20);
       } 
      break;
  case btnNONE:
       break;
  } /* Switch end */
}   /* loop() end */

void actualizo_tiempo()
{
// When count overflow 59 seconds, it must increment a minute.
  if (segundos > 59 ) {
    minutos++;
    segundos = 0;
  }
  // When count overflow 59 minutes, it must increment an hour
  if (minutos > 59 ) {
    horas++;
    minutos = 0;
  }
  // When count overflows 23 hours , it must reset all to zero.
  if (horas > 23 ){
    horas    = 0;
    minutos  = 0;
    segundos = 0;
    diaz++;       // Incrementa el dia en 1
  }
  lcd.setCursor(0, 1);
  lcd.print("  ");
  lcd.setCursor(2, 1);
  if (diaz < 10) {
    lcd.print("0");
  }
  lcd.print(diaz);
  lcd.print(":");
  if (horas < 10) {
    lcd.print("0");
  }
  lcd.print(horas);
  lcd.print(":");

  if (minutos < 10) {
    lcd.print("0");
  }

  lcd.print(minutos);
  lcd.print(":");

  if (segundos < 10) {
    lcd.print("0");
  }

  lcd.print(segundos);
  lcd.print("   ");
  
}

Primero agrega un Serial.print(temperatura) para asegurarte que no cambian los valores, verás que no es la temperatura sino algun valor que se confunde con la temperatura en la misma ubicación del lcd.

Hola de nuevo. Ya logre visualizar la temperatura que busco con el Serial.print(temperatura) pero solo me lo muestra en el primer renglón, y en el LCD nunca lo muestra. He revisado el programa y no se encima nada, intento borrar el LCD antes de imprimir la temperatura y aún sigo obteniendo el mismo resultado....quizás me falte un comando o librería? O alguna otra manera de vincularlo? He intentado con diversos códigos para el LM35 y aun asi no logro resultado alguno...

Recuerda que solo tu tienes armado físicamente el hardware que responde a este código. Yo puedo seguirte con la simulación. Porque no vuelves a poner tu ultimo código para ver donde te quedaste atascado.

Bueno pues una vez más gracias amigo. Adjunto el código. He descubierto que al presionar el botón UP y DOWN me imprime la temperatura que busco, sin embargo al presionar SELECT no es así. No será que el problema viene desde el menú del LCD? Pues no encuentro en el código dos impresiones en el mismo lugar…

#include <LiquidCrystal.h>
#include <stdio.h>


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

int horas    = 0;
int minutos  = 0;
int segundos = 1;
int diaz     = 0;
int  ajuste  = 0;

int hum      = 50;
float temp  = 37.7;

int pinoSensor = A8;  
int valorLeido = 0;    
float temperatura = 0;

int  lcd_key      = 0;
int  adc_key_in   = 0;

#define btnRIGHT     0    // (Second Adjust)
#define btnUP        1    // (Count increment)
#define btnDOWN      2    // (Count Decrement)
#define btnLEFT      3    // (Minutes Adjust)
#define btnSELECT    4    // (Hours Adjust)
#define btnNONE      5    // (None pressed)

unsigned long time = 0;

int read_LCD_buttons()
{
  adc_key_in = analogRead(0);
  if (adc_key_in > 1000) { 
    Serial.println("NONE");
     return btnNONE;
  }
  if (adc_key_in < 50 )  {
     Serial.println("RIGHT");
     return btnRIGHT;
  }
  if (adc_key_in < 250 ) {
      Serial.println("UP");
      return btnUP;
  }
  if (adc_key_in < 450 ) {
      Serial.println("DOWN");
      return btnDOWN;
  }
  if (adc_key_in < 650 ) {
     Serial.println("LEFT"); 
     return btnLEFT;
  }
  if (adc_key_in < 850 ) {
      Serial.println("SELECT"); 
     return btnSELECT;
  }
  return btnNONE;
}

void setup() {
  Serial.begin(9600);
  lcd.begin(16, 2);
  time = millis();
}

void loop() 
{
     delay(1000);
     if (millis() - time > 1000) {
     time = millis();
     segundos++; 
     actualizo_tiempo();
     imprimo_temperatura();

  }
   
  lcd_key = read_LCD_buttons();
  
  switch(lcd_key)  {
  case btnSELECT: //Set Variable to change
      ajuste++;
      switch (ajuste) { 
         case 1: 
                lcd.setCursor(0, 1);
                lcd.print("Hora : 00..23   ");
                break;
         case 2: 
                lcd.setCursor(0, 1);
                lcd.print("Minutos: 00..59 ");
                break;
         case 3: 
                lcd.setCursor(0, 1);
                lcd.print("Dias Inc: 00..30");
                break;
         case 4:
                lcd.setCursor(0, 1);
                lcd.print("Tem(1): 20...40 "); 
                break;       
         case 5:
                lcd.setCursor(0, 1);
                lcd.print("Tem(0.1): 20..40");
                break;
         case 6:
                lcd.setCursor(0, 1);
                lcd.print("Hum(5): 0...100 ");
                break;
         case 7: 
                lcd.setCursor(0, 1);
                lcd.print("Hum(1): 0...100 ");
                break;
         default: 
                ajuste = 1;
                break;  
                lcd.clear();
                delay(50);
      }
      break;   
      
   case btnUP:  // Count Increment
      switch (ajuste) {
        
         case 1: 
                horas++;
                if (horas > 23)
                  horas = 0;
                lcd.setCursor(0, 1);    
                lcd.print ("Horas:    ");
                lcd.setCursor(10, 1); 
                if (horas < 10)
                  lcd.print("0");
                lcd.print(horas);
                lcd.print("    ");
                break;
         case 2: 
                minutos++;
                if (minutos > 59 )
                  minutos = 0;
                lcd.setCursor(0, 1);      
                lcd.print ("Minutos:   ");
                lcd.setCursor(11, 1); 
                if (minutos < 10)
                  lcd.print("0");
                lcd.print(minutos);
                lcd.print("   ");
                break;
         case 3: 
              diaz++;
              if (diaz > 30 )
                diaz = 0;
              lcd.setCursor(0, 1);
              lcd.print ("Dias Incu:  ");
              lcd.setCursor(12, 1);
              if (diaz < 10)
                lcd.print("0");
              lcd.print(diaz);
              lcd.print("  ");
              break;   
         case 4: 
              temp++;
              lcd.setCursor(0, 1);
              lcd.print("Temperatura:");
              lcd.setCursor(12, 1);
              lcd.print(temp);
              break;   
         case 5:
              temp+=0.1;
              lcd.setCursor(0, 1);
              lcd.print("Temperatura:");
              lcd.setCursor(12, 1);
              lcd.print(temp);     
              break;   
         case 6:
              hum+=5;
              lcd.setCursor(0, 1);
              lcd.print("Humedad:    ");
              lcd.setCursor(11, 1);
              lcd.print(hum);
              lcd.print("%  ");
              break;   
         case 7:
              hum++;
              lcd.setCursor(0, 1);
              lcd.print("Humedad:    ");
              lcd.setCursor(11, 1);
              lcd.print(hum);
              lcd.print("%  ");
              break;
              lcd.clear();
              delay(20);
      }  
      break; 
  case btnDOWN: // Count decrement
      
      switch (ajuste) {
         case 1:
              horas--;
              if (horas < 0)
                horas = 23;
              lcd.setCursor(0, 1);    
              lcd.print ("Horas:    ");
              lcd.setCursor(10, 1); 
              if (horas < 10)
                lcd.print("0");
              lcd.print(horas);
              lcd.print("    ");
              break;   
         case 2:
              minutos--;
              if (minutos < 0 )
                minutos = 59;
              lcd.setCursor(0, 1);      
              lcd.print ("Minutos:   ");
              lcd.setCursor(11, 1); 
              if (minutos < 10)
                lcd.print("0");
              lcd.print(minutos);
              lcd.print("   ");
               break;   
         case 3:
              diaz--;
              if (diaz > 30 )
                diaz = 0;
              lcd.setCursor(0, 1);
              lcd.print ("Dias Incu:  ");
              lcd.setCursor(12, 1);
              if (diaz < 10)
                lcd.print("0");
              lcd.print(diaz);
              lcd.print("  ");
              break;   
         case 4:
              temp--;
              lcd.setCursor(0, 1);
              lcd.print("Temperatura:");
              lcd.setCursor(12, 1);
              lcd.print(temp);    
              break;   
         case 5:
              temp-=0.1;
              lcd.setCursor(0, 1);
              lcd.print("Temperatura:");
              lcd.setCursor(12, 1);
              lcd.print(temp);
              break;   
         case 6:
              hum-=5;
              lcd.setCursor(0, 1);
              lcd.print("Humedad:     ");
              lcd.setCursor(11, 1);
              lcd.print(hum);
              lcd.print("%  ");
              break;   
         case 7:
              hum--;
              lcd.setCursor(0, 1);
              lcd.print("Humedad:     ");
              lcd.setCursor(11, 1);
              lcd.print(hum);
              lcd.print("%  ");
              break;
              lcd.clear();
              delay(20);
       } 
      break;
  case btnNONE:
       break;
  } /* Switch end */
}   /* loop() end */

void actualizo_tiempo()
{
// When count overflow 59 seconds, it must increment a minute.
  if (segundos > 59 ) {
    minutos++;
    segundos = 0;
  }
  // When count overflow 59 minutes, it must increment an hour
  if (minutos > 59 ) {
    horas++;
    minutos = 0;
  }
  // When count overflows 23 hours , it must reset all to zero.
  if (horas > 23 ){
    horas    = 0;
    minutos  = 0;
    segundos = 0;
    diaz++;       // Incrementa el dia en 1
  }
  lcd.setCursor(0, 1);
  lcd.print("  ");
  lcd.setCursor(2, 1);
  if (diaz < 10) {
    lcd.print("0");
  }
  lcd.print(diaz);
  lcd.print(":");
  if (horas < 10) {
    lcd.print("0");
  }
  lcd.print(horas);
  lcd.print(":");

  if (minutos < 10) {
    lcd.print("0");
  }

  lcd.print(minutos);
  lcd.print(":");

  if (segundos < 10) {
    lcd.print("0");
  }

  lcd.print(segundos);
  lcd.print("   ");
  

}

void imprimo_temperatura()
{
  valorLeido = analogRead(pinoSensor);
  temperatura = (valorLeido * 0.0048828125);
  temperatura = temperatura * 100;
  lcd.setCursor(0, 0);
  lcd.print("T=");
  lcd.print(temperatura,2);
  Serial.println(temperatura, 2);
  }

te comento algo que me ha sucedido con el tema del LCD Shield y el menu de botones conectados a A0. Yo te diría que pruebes que cada boton funciona como debe. A mi me sucedió que debí adaptar los rangos de detección.

No pude, le intente e mil maneras y la única forma fue borrando lcd_key = read_LCD_buttons(); Al parecer surge alguna interferencia con el menú, solamente de haber alguotra manera de hacer el menú, o cambiar a un sensor digital como el DS18B20, pues intente en todos los puertos analógico poner el LM35 y no funciono....al parecer3 surge alguna interferencia con los botones del shield

este código donde vuelve a suprimir tu delay(1000) corre bien, se actualiza correctamente.
Pero no tiene grandes cambios que alterenla lectura de A8

#include <LiquidCrystal.h>
#include <stdio.h>


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

int horas    = 0;
int minutos  = 0;
int segundos = 1;
int diaz     = 0;
int  ajuste       = 0;

int hum      = 50;
float temp  = 37.7;

int pinoSensor = A8;  
int valorLeido = 0;    
float temperatura = 0;

int  lcd_key      = 0;
int  adc_key_in   = 0;

#define btnRIGHT     0    // (Second Adjust)
#define btnUP        1    // (Count increment)
#define btnDOWN      2    // (Count Decrement)
#define btnLEFT      3    // (Minutes Adjust)
#define btnSELECT    4    // (Hours Adjust)
#define btnNONE      5    // (None pressed)

unsigned long time = 0;

int read_LCD_buttons()
{
  adc_key_in = analogRead(0);
  //Serial.print(adc_key_in);
  if (adc_key_in > 1000) { 
    //Serial.println("NONE");
     return btnNONE;
  }
  if (adc_key_in < 50 )  {
     Serial.println("RIGHT");
     return btnRIGHT;
  }
  if (adc_key_in < 250 ) {
      Serial.println("UP");
      return btnUP;
  }
  if (adc_key_in < 450 ) {
      Serial.println("DOWN");
      return btnDOWN;
  }
  if (adc_key_in < 650 ) {
     Serial.println("LEFT"); 
     return btnLEFT;
  }
  if (adc_key_in < 850 ) {
      Serial.println("SELECT"); 
     return btnSELECT;
  }
  return btnNONE;
}

void setup() {
  Serial.begin(9600);
  lcd.begin(16, 2);
  time = millis();
}

void loop() 
{
  valorLeido = analogRead(pinoSensor);
  temperatura = (valorLeido * 0.48828125);
  lcd.setCursor(0, 0);
  lcd.print("T=");
  lcd.setCursor(2, 0);
  lcd.print(temperatura);
  lcd.setCursor(7, 0);
  lcd.print("         ");  
  //delay(1000);

  
  if (millis() - time > 1000) {
     time = millis();
     segundos++; 
     actualizo_tiempo();
  }

  lcd_key = read_LCD_buttons();

  switch(lcd_key)  {
  case btnSELECT: //Set Variable to change
      ajuste++;
      lcd.setCursor(0, 1); /* Linea 2 */
      switch (ajuste) { 
         case 1: 
                lcd.print("Hora : 00..23   ");
                break;
         case 2: 
                lcd.print("Minutos: 00..59 ");
                break;
         case 3: 
                lcd.print("Dias Inc: 00..30");
                break;
         case 4:
                lcd.print("Tem(1): 20...40 "); 
                break;       
         case 5:
                lcd.print("Tem(0.1): 20..40");
                break;
         case 6:
                lcd.print("Hum(5): 0...100 ");
                break;
         case 7: 
                lcd.print("Hum(1): 0...100 ");
                break;
         default: 
                ajuste = 0;
                break;
      }
      delay(50);
      break;   
      
   case btnUP:  // Count Increment
      switch (ajuste) {
         case 1: 
                horas++;
                if (horas > 23)
                  horas = 0;
                lcd.setCursor(0, 1);    
                lcd.print ("Horas:    ");
                lcd.setCursor(10, 1); 
                if (horas < 10)
                  lcd.print("0");
                lcd.print(horas);
                lcd.print("    ");
                break;
         case 2: 
                minutos++;
                if (minutos > 59 )
                  minutos = 0;
                lcd.setCursor(0, 1);      
                lcd.print ("Minutos:   ");
                lcd.setCursor(11, 1); 
                if (minutos < 10)
                  lcd.print("0");
                lcd.print(minutos);
                lcd.print("   ");
                break;
         case 3: 
              diaz++;
              if (diaz > 30 )
                diaz = 0;
              lcd.setCursor(0, 1);
              lcd.print ("Dias Incu:  ");
              lcd.setCursor(12, 1);
              if (diaz < 10)
                lcd.print("0");
              lcd.print(diaz);
              lcd.print("  ");
              break;   
         case 4: 
              temp++;
              lcd.setCursor(0, 1);
              lcd.print("Temperatura:");
              lcd.setCursor(12, 1);
              lcd.print(temp);
              break;   
         case 5:
              temp+=0.1;
              lcd.setCursor(0, 1);
              lcd.print("Temperatura:");
              lcd.setCursor(12, 1);
              lcd.print(temp);     
              break;   
         case 6:
              hum+=5;
              lcd.setCursor(0, 1);
              lcd.print("Humedad:    ");
              lcd.setCursor(11, 1);
              lcd.print(hum);
              lcd.print("%  ");
              break;   
         case 7:
              hum++;
              lcd.setCursor(0, 1);
              lcd.print("Humedad:    ");
              lcd.setCursor(11, 1);
              lcd.print(hum);
              lcd.print("%  ");
              break;
              delay(20);
      }  
      break; 
  case btnDOWN: // Count decrement
      
      switch (ajuste) {
         case 1:
              horas--;
              if (horas < 0)
                horas = 23;
              lcd.setCursor(0, 1);    
              lcd.print ("Horas:    ");
              lcd.setCursor(10, 1); 
              if (horas < 10)
                lcd.print("0");
              lcd.print(horas);
              lcd.print("    ");
              break;   
         case 2:
              minutos--;
              if (minutos < 0 )
                minutos = 59;
              lcd.setCursor(0, 1);      
              lcd.print ("Minutos:   ");
              lcd.setCursor(11, 1); 
              if (minutos < 10)
                lcd.print("0");
              lcd.print(minutos);
              lcd.print("   ");
               break;   
         case 3:
              diaz--;
              if (diaz > 30 )
                diaz = 0;
              lcd.setCursor(0, 1);
              lcd.print ("Dias Incu:  ");
              lcd.setCursor(12, 1);
              if (diaz < 10)
                lcd.print("0");
              lcd.print(diaz);
              lcd.print("  ");
              break;   
         case 4:
              temp--;
              lcd.setCursor(0, 1);
              lcd.print("Temperatura:");
              lcd.setCursor(12, 1);
              lcd.print(temp);    
              break;   
         case 5:
              temp-=0.1;
              lcd.setCursor(0, 1);
              lcd.print("Temperatura:");
              lcd.setCursor(12, 1);
              lcd.print(temp);
              break;   
         case 6:
              hum-=5;
              lcd.setCursor(0, 1);
              lcd.print("Humedad:     ");
              lcd.setCursor(11, 1);
              lcd.print(hum);
              lcd.print("%  ");
              break;   
         case 7:
              hum--;
              lcd.setCursor(0, 1);
              lcd.print("Humedad:     ");
              lcd.setCursor(11, 1);
              lcd.print(hum);
              lcd.print("%  ");
              break;
              delay(20);
       } 
      break;
  case btnNONE:
       break;
  } /* Switch end */
}   /* loop() end */

void actualizo_tiempo()
{
// When count overflow 59 seconds, it must increment a minute.
  if (segundos > 59 ) {
    minutos++;
    segundos = 0;
  }
  // When count overflow 59 minutes, it must increment an hour
  if (minutos > 59 ) {
    horas++;
    minutos = 0;
  }
  // When count overflows 23 hours , it must reset all to zero.
  if (horas > 23 ){
    horas    = 0;
    minutos  = 0;
    segundos = 0;
    diaz++;       // Incrementa el dia en 1
  }
  lcd.setCursor(0, 1);
  lcd.print("  ");
  lcd.setCursor(2, 1);
  if (diaz < 10) {
    lcd.print("0");
  }
  lcd.print(diaz);
  lcd.print(":");
  if (horas < 10) {
    lcd.print("0");
  }
  lcd.print(horas);
  lcd.print(":");

  if (minutos < 10) {
    lcd.print("0");
  }

  lcd.print(minutos);
  lcd.print(":");

  if (segundos < 10) {
    lcd.print("0");
  }

  lcd.print(segundos);
  lcd.print("   ");
  
}

Si soluciono un poco el problema...En la impresión aunque no se pueden notar del todo los decimales devido a la supresión del dalay, la temperatura es baja unos 8°C distinta a la que deberia de estar mostrando, eso se corrige calibrando el LM35, esto es aumentando la constante 0.48828125. Por otra parte al presionar cualquier boton del LCD shield la temperatura aumenta hasta 40° aproximadamenete (sólo alpresionar un boton, despues vuelve a la temperatura anterior)...

Intenta hacer un esquema de tu circuito electrónico. Le sacas una foto y lo subes acá. Tienes algo mal. No es posible lo que explicas, al menos como lo veo ahora.