Conversion issue: display LM35 on a 16x2

On a MEGA board, with LM35 and LCD Keypad shield connected, I noticed it does not manages directly the temperature reading. If I print on the display the variable, I can only read strange symbols. I managed to find a way to convert the temperature reading in a valid number suitable to be passed to the display, but I failed.

This it the part of the code I wrote now and which is not working.

 void setup() {                              
  pinMode(sonda_refrigerata, INPUT);  
  pinMode(sonda_birra, INPUT);

 lcd.init();
  lcd.clear();
  lcd.cursorTo(1, 0);
  lcd.printIn("Birra");
  lcd.cursorTo(2, 0);
  lcd.printIn("Refr.");
  lcd.cursorTo(1, 10);
  lcd.printIn("Set");
  lcd.cursorTo(2, 10);
  lcd.printIn("Set");
  
}
void loop() {
  lettura_birra = analogRead(sonda_birra);               
  lettura_refrigerata = analogRead (sonda_refrigerata);                 
  temp_birra = (5.0 * lettura_birra * 100.0)/1024.0;  
  temp_ref = (5.0 * lettura_refrigerata * 100.0)/1024.0;
  lcd.cursorTo(1, 7);
  lcd.print(temp_birra);
  lcd.cursorTo(2, 7);
  lcd.print(temp_ref);
  lcd.cursorTo(1, 14);
  lcd.print(setpoint_birra);
  lcd.cursorTo(2, 14);
  lcd.print(setpoint_ref);
}

You need to post all of your code. Specifically, which LCD library are you using?

Ok here’s the full code.

#include <LCD4Bit_mod.h> 
LCD4Bit_mod lcd = LCD4Bit_mod(2); 

float sonda_refrigerata = 8;    // pin a cui e' collegata la sonda serbatoio refrigerata
float sonda_birra = 9;          // pin a cui e' collegata la sonda serbatoio birra
float sonda_tec = 10;          // pin a cui e' collegata la sonda TEC
int alza_refr = 22;      // pin per il bottone aumento setpoint refrigerata
int abbassa_refr = 23;   // pin per il bottone diminuzione setpoint refrigerata
int alza_birra = 24;     // pin per il bottone aumento setpoint birra
int abbassa_birra = 25;  // pin per il bottone diminuzione setpoint birra
int tec = 53;            // pin per il comando relais accensione TEC
int vent_tec = 52;       // pin per il comando relais ventilatore TEC (eventualmente libero il pin e collego il ventilatore al relais TEC)
int pompa_ref = 51;          // pin per il comando relais pompa circuito refrigerata (eventualmente libero il pin e collego la pompa al relais TEC)
int pompa_birra = 50;       // pin per il comando relais pompa circuito birra
int escludi_ref = 49;        // pin per l'interruttore esclusione circuito refrigerata (non essenziale, si puo' anche eliminare)
int escludi_birra = 48;      // pin per l'interruttore esclusione circuito birra
int setpoint_ref = 60;   // inizializza il setpoint dell'acqua refrigerata a 5 C 
int setpoint_birra = 60;// inizializza il setpoint della birra a 22 C
int incr_refr;      // inzializza la variabile associata ai bottoni di regolazione setpoint refrigerata
int incr_birra;     // inizializza una variabile associata ai bottoni di regolazione setpoint birra
int decr_refr;      // inzializza la variabile associata ai bottoni di regolazione setpoint refrigerata
int decr_birra;     // inizializza una variabile associata ai bottoni di regolazione setpoint birra
long lettura_birra;         // inizializza una variabile contenente la lettura della birra
long lettura_refrigerata;           // inizializza una variabile contenente la lettura della refrigerata
long lettura_tec;          // inizializza una variabile contenente la lettura della TEC
int temp_tec;       // inizializza una variabile contenente la temperatura della TEC
int temp_birra;     // inizializza una variabile contenente la temperatura della birra
int temp_ref;       // inizializza una variabile contenente la temperatura della refrigera


void setup() {                                  //dichiarazione degli ingressi come imput o output
  pinMode(sonda_refrigerata, INPUT);  
  pinMode(sonda_birra, INPUT);
  pinMode(sonda_tec, INPUT);
  pinMode(alza_refr, INPUT);
  pinMode(abbassa_refr, INPUT);  
  pinMode(alza_birra, INPUT);
  pinMode(abbassa_birra, INPUT);
  pinMode(tec, OUTPUT);
  pinMode(vent_tec, OUTPUT);
  pinMode(pompa_ref, OUTPUT);
  pinMode(pompa_birra, OUTPUT);
  pinMode(escludi_ref, INPUT);
  pinMode(escludi_birra, INPUT);

 lcd.init();
  lcd.clear();
  lcd.cursorTo(1, 0);
  lcd.printIn("Birra");
  lcd.cursorTo(2, 0);
  lcd.printIn("Refr.");
  lcd.cursorTo(1, 10);
  lcd.printIn("Set");
  lcd.cursorTo(2, 10);
  lcd.printIn("Set");
  
}

void loop() {
  
  lettura_birra = analogRead(sonda_birra);                 // legge la sonda birra in valore sonda
  lettura_refrigerata = analogRead (sonda_refrigerata);    // legge la sonda refrigerata in valore sonda
  lettura_tec = analogRead (sonda_tec);                    // legge la sonda TEC in valore sonda
  temp_tec = (5.0 * lettura_tec * 100.0)/1024.0;           // interpreta la lettura della sonda TEC in gradi centigradi
  temp_birra = (5.0 * lettura_birra * 100.0)/1024.0;       // interpreta la lettura della sonda birra in gradi centigradi
  temp_ref = (5.0 * lettura_refrigerata * 100.0)/1024.0;   // interpreta la lettura della sonda refrigerata in gradi centigradi
  incr_birra = digitalRead (alza_birra);        // legge il bottone per alzare il setpoint birra
  delay(20);                                    // il delay serve per evitare che ciclando il programma la lettura venga effettuata piu' volte per una sola pressione
  decr_birra = digitalRead (abbassa_birra);     // legge il bottone per abbassare il setpoint birra
  delay(20);
  incr_refr = digitalRead (alza_refr);          // legge il bottone per alzare il setpoint refrigerata
  delay(20);
  decr_refr = digitalRead (abbassa_refr);       // legge il bottone per abbassare il setpoint refrigerata
  delay(20);

  if (incr_birra = HIGH){           // se ha rilevato pressione del bottone + birra incrementa
    setpoint_birra++;
  }
  if (decr_birra = HIGH){           // se ha rilevato pressione del bottone - birra decrementa
    setpoint_birra--;
  }
  if (incr_refr = HIGH){            // se ha rilevato pressione del bottone + refrigerata incrementa
    setpoint_ref++;
   }
  if (decr_refr = HIGH){            // se ha rilevato pressione del mottone - refrigerata decrementa
    setpoint_ref--;
  }

  if (escludi_ref != HIGH && temp_tec < 80){   // controlla se non e' escluso il circuito refrigerata e se la temperatura della TEC e' sotto soglia
    if (temp_ref > setpoint_ref){              // se il passaggio precedente e' validato, controlla se l'accumulo non e' in temperatura
    digitalWrite(pompa_ref, HIGH);             // se non e' in temperatura accende la pompa del circuito refrigerata
    delay(50);                          // attende un secondo
    digitalWrite(vent_tec, HIGH);       // accende il ventilatore della TEC
    delay(50);                          // attende un secondo
    digitalWrite(tec, HIGH);            // accende la TEC
    }
    else                                // se l'accumulo e' in temperatura 
    { 
    digitalWrite(tec, LOW);             // spegne la TEC
    delay(50);                          // attende 5 secondi
    digitalWrite(vent_tec, LOW);        // spegne il ventilatore della TEC
    digitalWrite(pompa_ref, LOW);       // e la TEC
    }
  }
  else                                  // se il circuito refrigerata e' escluso o se la TEC e' surriscaldata
  { 
    digitalWrite(tec, LOW);             // spegne la TEC 
    delay(50);                          // attende 5 secondi
    digitalWrite(vent_tec, LOW);        // spegne il ventilatore della TEC
    digitalWrite(pompa_ref, LOW);       // e la TEC
  }
  if (escludi_birra != HIGH && temp_birra > setpoint_birra){ // controlla se non e' escluso il circuito birra e che la temperatura della birra sia sopra soglia
    digitalWrite(pompa_birra, HIGH);                         // accende la pompa del circuito birra
    }
    else              
    { 
    digitalWrite(pompa_ref, LOW);       // altrimenti spegne la pompa del circuito birra  
  }
  lcd.cursorTo(1, 7);
  lcd.print(temp_birra);
  lcd.cursorTo(2, 7);
  lcd.print(temp_ref);
  lcd.cursorTo(1, 14);
  lcd.print(setpoint_birra);
  lcd.cursorTo(2, 14);
  lcd.print(setpoint_ref);
  
}

I’m not a programmer, so I’m learning step by step what I need both for the code and the hardware.

arkanoid:

You are using one of the older LCD libraries. You really should consider using the LiquidCrystal library from Arduino v0018.

In any case you need to convert your temperature to a form that is 'suitable to be passed to the display'. With the LiquidCrystal library I believe this is done with the [u]BASE[/u] part of the lcd.print(data, BASE) function. (C programmers please help me out here).

Don

The reason I'm using that library are two: - on dealer website I found that library to be used with shield (it's not a simple display but it has also 5 analog mapped buttons) - looking to the code, I think that's a slight different syntax.

More, maybe in that library pins are custom mapped compared to liquidcrystal.

Anyway now I'll try to understand if I need to remap the pins so I cas safely use the library you suggested.

I'm in trouble. :-/ Looking to http://www.nuelectronics.com/download/projects/LCDshield_v1_1.pdf (if I can correctly read it!) I see that pin mapping is different and extended compared to lyquidcrystal one. I tried to upload "hello world" lyquidcrystal default example but it's not working. As well, opening library files make me worried, it's not for me. Unless using lyquidcrystal, you think it's impossible to convert the value in a suitable format?

Update: I found the itoa() function, and something happened. Now the display shows numbers, no more symbols, but not decimal numbers.

itoa (temp_ref,buffer,2);

with ,2 iI can read 1180H01 and so, if I set 1 display is blank. It seems to convert the number in CHAR format, but in HEX format I think.

#include <LCD4Bit_mod.h> 
LCD4Bit_mod lcd = LCD4Bit_mod(2); 

float sonda_refrigerata = 8;    // pin a cui e' collegata la sonda serbatoio refrigerata
float sonda_birra = 9;          // pin a cui e' collegata la sonda serbatoio birra
float sonda_tec = 10;          // pin a cui e' collegata la sonda TEC
int alza_refr = 22;      // pin per il bottone aumento setpoint refrigerata
int abbassa_refr = 23;   // pin per il bottone diminuzione setpoint refrigerata
int alza_birra = 24;     // pin per il bottone aumento setpoint birra
int abbassa_birra = 25;  // pin per il bottone diminuzione setpoint birra
int tec = 53;            // pin per il comando relais accensione TEC
int vent_tec = 52;       // pin per il comando relais ventilatore TEC (eventualmente libero il pin e collego il ventilatore al relais TEC)
int pompa_ref = 51;          // pin per il comando relais pompa circuito refrigerata (eventualmente libero il pin e collego la pompa al relais TEC)
int pompa_birra = 50;       // pin per il comando relais pompa circuito birra
int escludi_ref = 49;        // pin per l'interruttore esclusione circuito refrigerata (non essenziale, si puo' anche eliminare)
int escludi_birra = 48;      // pin per l'interruttore esclusione circuito birra
int setpoint_ref = 60;   // inizializza il setpoint dell'acqua refrigerata a 5 C 
int setpoint_birra = 60;// inizializza il setpoint della birra a 22 C
int incr_refr;      // inzializza la variabile associata ai bottoni di regolazione setpoint refrigerata
int incr_birra;     // inizializza una variabile associata ai bottoni di regolazione setpoint birra
int decr_refr;      // inzializza la variabile associata ai bottoni di regolazione setpoint refrigerata
int decr_birra;     // inizializza una variabile associata ai bottoni di regolazione setpoint birra
long lettura_birra;         // inizializza una variabile contenente la lettura della birra
long lettura_refrigerata;           // inizializza una variabile contenente la lettura della refrigerata
long lettura_tec;          // inizializza una variabile contenente la lettura della TEC
int temp_tec;       // inizializza una variabile contenente la temperatura della TEC
int temp_birra;     // inizializza una variabile contenente la temperatura della birra
int temp_ref;       // inizializza una variabile contenente la temperatura della refrigera
char buffer[2];

void setup() {                                  //dichiarazione degli ingressi come imput o output
  pinMode(sonda_refrigerata, INPUT);  
  pinMode(sonda_birra, INPUT);
  pinMode(sonda_tec, INPUT);
  pinMode(alza_refr, INPUT);
  pinMode(abbassa_refr, INPUT);  
  pinMode(alza_birra, INPUT);
  pinMode(abbassa_birra, INPUT);
  pinMode(tec, OUTPUT);
  pinMode(vent_tec, OUTPUT);
  pinMode(pompa_ref, OUTPUT);
  pinMode(pompa_birra, OUTPUT);
  pinMode(escludi_ref, INPUT);
  pinMode(escludi_birra, INPUT);

 lcd.init();
  lcd.clear();
  lcd.cursorTo(1, 0);
  lcd.printIn("Birra");
  lcd.cursorTo(2, 0);
  lcd.printIn("Refr.");
  lcd.cursorTo(1, 10);
  lcd.printIn("Set");
  lcd.cursorTo(2, 10);
  lcd.printIn("Set");
  
}

void loop() {
  
  lettura_birra = analogRead(sonda_birra);                 // legge la sonda birra in valore sonda
  lettura_refrigerata = analogRead (sonda_refrigerata);    // legge la sonda refrigerata in valore sonda
  lettura_tec = analogRead (sonda_tec);                    // legge la sonda TEC in valore sonda
  temp_tec = (5.0 * lettura_tec * 100.0)/1024.0;           // interpreta la lettura della sonda TEC in gradi centigradi
  temp_birra = (5.0 * lettura_birra * 100.0)/1024.0;       // interpreta la lettura della sonda birra in gradi centigradi
  temp_ref = (5.0 * lettura_refrigerata * 100.0)/1024.0;   // interpreta la lettura della sonda refrigerata in gradi centigradi
  incr_birra = digitalRead (alza_birra);        // legge il bottone per alzare il setpoint birra
  delay(20);                                    // il delay serve per evitare che ciclando il programma la lettura venga effettuata piu' volte per una sola pressione
  decr_birra = digitalRead (abbassa_birra);     // legge il bottone per abbassare il setpoint birra
  delay(20);
  incr_refr = digitalRead (alza_refr);          // legge il bottone per alzare il setpoint refrigerata
  delay(20);
  decr_refr = digitalRead (abbassa_refr);       // legge il bottone per abbassare il setpoint refrigerata
  delay(20);

  if (incr_birra = HIGH){           // se ha rilevato pressione del bottone + birra incrementa
    setpoint_birra++;
  }
  if (decr_birra = HIGH){           // se ha rilevato pressione del bottone - birra decrementa
    setpoint_birra--;
  }
  if (incr_refr = HIGH){            // se ha rilevato pressione del bottone + refrigerata incrementa
    setpoint_ref++;
   }
  if (decr_refr = HIGH){            // se ha rilevato pressione del mottone - refrigerata decrementa
    setpoint_ref--;
  }

  if (escludi_ref != HIGH && temp_tec < 80){   // controlla se non e' escluso il circuito refrigerata e se la temperatura della TEC e' sotto soglia
    if (temp_ref > setpoint_ref){              // se il passaggio precedente e' validato, controlla se l'accumulo non e' in temperatura
    digitalWrite(pompa_ref, HIGH);             // se non e' in temperatura accende la pompa del circuito refrigerata
    delay(50);                          // attende un secondo
    digitalWrite(vent_tec, HIGH);       // accende il ventilatore della TEC
    delay(50);                          // attende un secondo
    digitalWrite(tec, HIGH);            // accende la TEC
    }
    else                                // se l'accumulo e' in temperatura 
    { 
    digitalWrite(tec, LOW);             // spegne la TEC
    delay(50);                          // attende 5 secondi
    digitalWrite(vent_tec, LOW);        // spegne il ventilatore della TEC
    digitalWrite(pompa_ref, LOW);       // e la TEC
    }
  }
  else                                  // se il circuito refrigerata e' escluso o se la TEC e' surriscaldata
  { 
    digitalWrite(tec, LOW);             // spegne la TEC 
    delay(50);                          // attende 5 secondi
    digitalWrite(vent_tec, LOW);        // spegne il ventilatore della TEC
    digitalWrite(pompa_ref, LOW);       // e la TEC
  }
  if (escludi_birra != HIGH && temp_birra > setpoint_birra){ // controlla se non e' escluso il circuito birra e che la temperatura della birra sia sopra soglia
    digitalWrite(pompa_birra, HIGH);                         // accende la pompa del circuito birra
    }
    else              
    { 
    digitalWrite(pompa_ref, LOW);       // altrimenti spegne la pompa del circuito birra  
  }
  lcd.cursorTo(1, 7);
  itoa (temp_birra,buffer,2);
  lcd.printIn(buffer);
  lcd.cursorTo(2, 7);
  itoa (temp_ref,buffer,1);
  lcd.printIn(buffer);
  lcd.cursorTo(1, 14);
  itoa (setpoint_birra,buffer,2);
  lcd.printIn(buffer);
  lcd.cursorTo(2, 14);
  itoa (setpoint_ref,buffer,2);
  lcd.printIn(buffer);
  
}

arkanoid:

Here's what I found. The original LCD4bit library required the use of pins 7, 8, 9, and 10 (due to self admitted 'lazy coding') for the four LCD data lines. It also required the use of pin 12 for RS, pin 11 for RW, and pin 2 for E.

The LCD keypad shield that you purchased is wired differently, with pins 4, 5, 6, 7 for the four LCD data lines, pin 8 for RS and pin 9 for E. Pin 11 is still used for RW. They therefore supplied a modified version of the library with changes appropriate to this wiring.

The LiquidCrystal library is completely configurable with respect to pin mapping. It is handled when you invoke the library. You would use the second example under syntax; "LiquidCrystal(rs, rw, enable, d4, d5, d6, d7)" - so you would initialize the library with something like: "LiquidCrystal lcd(8, 11, 9, 4, 5, 6, 7)"

As far as converting the format using the modified LCD4bit library I am sure it can be done, but I am not sure how to do it since I do almost no C programming myself.

Don

Thanks A LOT, I was in trouble exactly with that point, change the wiring in the lib. :wink:

Update:
I tried with the settings you suggested but it doesn’t work. Backlight is on, first row is fully “black” and second row is fully blank.
I read the datasheet, I found data lines on D4-D5-D6-D7 RS on D8, E on D9, but R/W is missing.
The only thing I found is R/W tag between RS and E in the datasheet, but the matching pin on the board is not written.

Update:

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

This is working

Update:

Problem. display is lit, but the first row is completely “black” and second row is completely white.
I converted the sketch to the new library, I also tried to change the last part putting letters in exchange of the variables, but no way. Did I do something wrong in the conversion?

#include <LiquidCrystal.h>

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

float sonda_refrigerata = 8;    // pin a cui e' collegata la sonda serbatoio refrigerata
float sonda_birra = 9;          // pin a cui e' collegata la sonda serbatoio birra
float sonda_tec = 10;          // pin a cui e' collegata la sonda TEC
int alza_refr = 22;      // pin per il bottone aumento setpoint refrigerata
int abbassa_refr = 23;   // pin per il bottone diminuzione setpoint refrigerata
int alza_birra = 24;     // pin per il bottone aumento setpoint birra
int abbassa_birra = 25;  // pin per il bottone diminuzione setpoint birra
int tec = 53;            // pin per il comando relais accensione TEC
int vent_tec = 52;       // pin per il comando relais ventilatore TEC (eventualmente libero il pin e collego il ventilatore al relais TEC)
int pompa_ref = 51;          // pin per il comando relais pompa circuito refrigerata (eventualmente libero il pin e collego la pompa al relais TEC)
int pompa_birra = 50;       // pin per il comando relais pompa circuito birra
int escludi_ref = 49;        // pin per l'interruttore esclusione circuito refrigerata (non essenziale, si puo' anche eliminare)
int escludi_birra = 48;      // pin per l'interruttore esclusione circuito birra
int setpoint_ref = 60;   // inizializza il setpoint dell'acqua refrigerata a 5 C 
int setpoint_birra = 60;// inizializza il setpoint della birra a 22 C
int incr_refr;      // inzializza la variabile associata ai bottoni di regolazione setpoint refrigerata
int incr_birra;     // inizializza una variabile associata ai bottoni di regolazione setpoint birra
int decr_refr;      // inzializza la variabile associata ai bottoni di regolazione setpoint refrigerata
int decr_birra;     // inizializza una variabile associata ai bottoni di regolazione setpoint birra
int lettura_birra;         // inizializza una variabile contenente la lettura della birra
int lettura_refrigerata;           // inizializza una variabile contenente la lettura della refrigerata
int lettura_tec;          // inizializza una variabile contenente la lettura della TEC
int temp_tec;       // inizializza una variabile contenente la temperatura della TEC
int temp_birra;     // inizializza una variabile contenente la temperatura della birra
int temp_ref;       // inizializza una variabile contenente la temperatura della refrigera


void setup() {                                  //dichiarazione degli ingressi come imput o output
  pinMode(sonda_refrigerata, INPUT);  
  pinMode(sonda_birra, INPUT);
  pinMode(sonda_tec, INPUT);
  pinMode(alza_refr, INPUT);
  pinMode(abbassa_refr, INPUT);  
  pinMode(alza_birra, INPUT);
  pinMode(abbassa_birra, INPUT);
  pinMode(tec, OUTPUT);
  pinMode(vent_tec, OUTPUT);
  pinMode(pompa_ref, OUTPUT);
  pinMode(pompa_birra, OUTPUT);
  pinMode(escludi_ref, INPUT);
  pinMode(escludi_birra, INPUT);

 lcd.begin(16,2);
  lcd.clear();
  lcd.setCursor(0, 0);
  lcd.print("Birra");
  lcd.setCursor(0, 1);
  lcd.print("Refr.");
  lcd.setCursor(9, 0);
  lcd.print("Set");
  lcd.setCursor(9, 1);
  lcd.print("Set");
  
}

void loop() {
  
  lettura_birra = analogRead(sonda_birra);                 // legge la sonda birra in valore sonda
  lettura_refrigerata = analogRead (sonda_refrigerata);    // legge la sonda refrigerata in valore sonda
  lettura_tec = analogRead (sonda_tec);                    // legge la sonda TEC in valore sonda
  temp_tec = (5.0 * lettura_tec * 100.0)/1024.0;           // interpreta la lettura della sonda TEC in gradi centigradi
  temp_birra = (5.0 * lettura_birra * 100.0)/1024.0;       // interpreta la lettura della sonda birra in gradi centigradi
  temp_ref = (5.0 * lettura_refrigerata * 100.0)/1024.0;   // interpreta la lettura della sonda refrigerata in gradi centigradi
  incr_birra = digitalRead (alza_birra);        // legge il bottone per alzare il setpoint birra
  delay(20);                                    // il delay serve per evitare che ciclando il programma la lettura venga effettuata piu' volte per una sola pressione
  decr_birra = digitalRead (abbassa_birra);     // legge il bottone per abbassare il setpoint birra
  delay(20);
  incr_refr = digitalRead (alza_refr);          // legge il bottone per alzare il setpoint refrigerata
  delay(20);
  decr_refr = digitalRead (abbassa_refr);       // legge il bottone per abbassare il setpoint refrigerata
  delay(20);

  if (incr_birra = HIGH){           // se ha rilevato pressione del bottone + birra incrementa
    setpoint_birra++;
  }
  if (decr_birra = HIGH){           // se ha rilevato pressione del bottone - birra decrementa
    setpoint_birra--;
  }
  if (incr_refr = HIGH){            // se ha rilevato pressione del bottone + refrigerata incrementa
    setpoint_ref++;
   }
  if (decr_refr = HIGH){            // se ha rilevato pressione del mottone - refrigerata decrementa
    setpoint_ref--;
  }

  if (escludi_ref != HIGH && temp_tec < 80){   // controlla se non e' escluso il circuito refrigerata e se la temperatura della TEC e' sotto soglia
    if (temp_ref > setpoint_ref){              // se il passaggio precedente e' validato, controlla se l'accumulo non e' in temperatura
    digitalWrite(pompa_ref, HIGH);             // se non e' in temperatura accende la pompa del circuito refrigerata
    delay(50);                          // attende un secondo
    digitalWrite(vent_tec, HIGH);       // accende il ventilatore della TEC
    delay(50);                          // attende un secondo
    digitalWrite(tec, HIGH);            // accende la TEC
    }
    else                                // se l'accumulo e' in temperatura 
    { 
    digitalWrite(tec, LOW);             // spegne la TEC
    delay(50);                          // attende 5 secondi
    digitalWrite(vent_tec, LOW);        // spegne il ventilatore della TEC
    digitalWrite(pompa_ref, LOW);       // e la TEC
    }
  }
  else                                  // se il circuito refrigerata e' escluso o se la TEC e' surriscaldata
  { 
    digitalWrite(tec, LOW);             // spegne la TEC 
    delay(50);                          // attende 5 secondi
    digitalWrite(vent_tec, LOW);        // spegne il ventilatore della TEC
    digitalWrite(pompa_ref, LOW);       // e la TEC
  }
  if (escludi_birra != HIGH && temp_birra > setpoint_birra){ // controlla se non e' escluso il circuito birra e che la temperatura della birra sia sopra soglia
    digitalWrite(pompa_birra, HIGH);                         // accende la pompa del circuito birra
    }
    else              
    { 
    digitalWrite(pompa_ref, LOW);       // altrimenti spegne la pompa del circuito birra  
  }
  lcd.setCursor(6, 0);
  lcd.print("t");
  lcd.setCursor(6, 1);
  lcd.print("t");
  lcd.setCursor(13, 1);
  lcd.print("s");
  lcd.setCursor(13, 0);
  lcd.print("s");
  
}

Update

I found a major problem, I used to assign AI to pin8 to 10 but I did wrong, pins are used by the display ;D I don't know how to identify analog inputs compared to digital ones.

now I see a strange behavior: if I try a simple example, as Button, led lights up only inserting a wire in a pin place on the board.....