A furia di sbattere la testa con gli switch case ho risolto così....
Posto parte del codice in modo tale che possa essere di aiuto ad altri utenti
void setup()
{
pinMode(ENTER, INPUT);
pinMode(ESC, INPUT);
pinMode(PIU, INPUT);
pinMode(MENO, INPUT);
pinMode(CONTRAST, OUTPUT);
lcd.clear();
} // setup()...
// =========================================BLOCO HOME PAGE===================================
void menu1 ()
{
//analogWrite(CONTRAST, cntr);
//======================BLOCO ORA==================
lcd.setCursor(0,0);
if(h < 10) //Quando il numero è ad una sola cifra devo aggiungere uno spazio per mantenere il testo che viene dopo nella stessa posizione
lcd.print("0");
lcd.print(h);
lcd.setCursor(2,0); //Scrivo la temperatura che sto impostando
lcd.print(":");
lcd.setCursor(3,0); //Scrivo la temperatura che sto impostando
if(m < 10) //Quando il numero è ad una sola cifra devo aggiungere uno spazio per mantenere il testo che viene dopo nella stessa posizione
lcd.print("0");
lcd.print(m);
lcd.setCursor(5,0);
lcd.print(" ");
//======================BLOCO DATA==================
lcd.setCursor(6,0);
if(giorno < 10) //Quando il numero è ad una sola cifra devo aggiungere uno spazio per mantenere il testo che viene dopo nella stessa posizione
lcd.print("0");
lcd.print(giorno);
lcd.setCursor(8,0);
lcd.print("/");
lcd.setCursor(9,0); //Scrivo la temperatura che sto impostando
if(mese < 10) //Quando il numero è ad una sola cifra devo aggiungere uno spazio per mantenere il testo che viene dopo nella stessa posizione
lcd.print("0");
lcd.print(mese);
lcd.setCursor(11,0);
lcd.print("/");
lcd.setCursor(12,0);
lcd.print(anno);
//===================================================
lcd.setCursor(-4,2);
lcd.print("TEMP1:");
sensors.requestTemperatures(); // Invia il comando di lettura delle temperatura
lcd.setCursor(2, 2);
lcd.print (sensors.getTempCByIndex(0));
}
//============================BLOCCO GESTIONE ORA=====================================
void menu2 ()
{
lcd.setCursor(0,0);
lcd.print(" OROLOGIO ");
lcd.setCursor(5,1);
if(h < 10) //Quando il numero è ad una sola cifra devo aggiungere uno spazio per mantenere il testo che viene dopo nella stessa posizione
lcd.print("0");
lcd.print(h);
lcd.setCursor(0,1); //Scrivo la temperatura che sto impostando
lcd.print(" ");
lcd.setCursor(7,1); //Scrivo la temperatura che sto impostando
lcd.print(":");
lcd.setCursor(8,1); //Scrivo la temperatura che sto impostando
if(m < 10) //Quando il numero è ad una sola cifra devo aggiungere uno spazio per mantenere il testo che viene dopo nella stessa posizione
lcd.print("0");
lcd.print(m);
lcd.setCursor(-4,2);
lcd.print(" ");
lcd.setCursor(-4,3);
lcd.print(" SET ");
if(enter == HIGH && millis() - tempo_btn > debounce)
{
tempo_btn = millis();
lcd.clear();
cont_pag = 21;
}
}
void menu21 ()
{
lcd.setCursor(0,0);
lcd.print("ORE:");
lcd.setCursor(4,0);
if(h < 10) //Quando il numero è ad una sola cifra devo aggiungere uno spazio per mantenere il testo che viene dopo nella stessa posizione
lcd.print("0");
lcd.print(h);
lcd.setCursor(0,1);
lcd.print(" ");
lcd.setCursor(-4,2);
lcd.print(" ");
lcd.setCursor(-4,3);
lcd.print(" SET ");
//Abilita l'ingresso in modalita' configurazione
n_piu = 0;
n_meno = 0;
//Abilita i tasti "piu" e "meno" in modalita' incremento/decremento
piu_set = digitalRead(PIU);
meno_set = digitalRead(MENO);
if(piu_set == HIGH && millis() - tempo_btn > debounce) //Incremento "variabile" se premo tasto "piu"
{
tempo_btn = millis();
n_piu++;
piu_set = !piu_set;
if( h < 24 )
h++;
}
if(meno_set == HIGH && millis() - tempo_btn > debounce) //Decremento "variabile" se premo tasto "meno"
{
tempo_btn = millis();
n_meno++;
meno_set = !meno_set;
if( h > 0 )
h--;
}
if(enter == HIGH && millis() - tempo_btn > debounce)
{
tempo_btn = millis();
lcd.clear();
cont_pag = 22;
}
}
void menu22 ()
{
lcd.setCursor(0,0);
lcd.print("MINUTI:");
lcd.setCursor(7,0);
if(m < 10) //Quando il numero è ad una sola cifra devo aggiungere uno spazio per mantenere il testo che viene dopo nella stessa posizione
lcd.print("0");
lcd.print(m);
lcd.setCursor(0,1);
lcd.print(" ");
lcd.setCursor(-4,2);
lcd.print(" ");
lcd.setCursor(-4,3);
lcd.print(" SET ");
//Abilita l'ingresso in modalita' configurazione
n_piu = 0;
n_meno = 0;
//Abilita i tasti "piu" e "meno" in modalita' incremento/decremento
piu_set = digitalRead(PIU);
meno_set = digitalRead(MENO);
if(piu_set == HIGH && millis() - tempo_btn > debounce) //Incremento "variabile" se premo tasto "piu"
{
tempo_btn = millis();
n_piu++;
piu_set = !piu_set;
if( m < 60 )
m++;
}
if(meno_set == HIGH && millis() - tempo_btn > debounce) //Decremento "variabile" se premo tasto "meno"
{
tempo_btn = millis();
n_meno++;
meno_set = !meno_set;
if( m > 0 )
m--;
}
if(enter == HIGH && millis() - tempo_btn > debounce)
{
tempo_btn = millis();
lcd.clear();
lcd.setCursor(5,1);
if(h < 10) //Quando il numero è ad una sola cifra devo aggiungere uno spazio per mantenere il testo che viene dopo nella stessa posizione
lcd.print("0");
lcd.print(h);
lcd.setCursor(0,1); //Scrivo la temperatura che sto impostando
lcd.print(" ");
lcd.setCursor(7,1); //Scrivo la temperatura che sto impostando
lcd.print(":");
lcd.setCursor(8,1); //Scrivo la temperatura che sto impostando
if(m < 10) //Quando il numero è ad una sola cifra devo aggiungere uno spazio per mantenere il testo che viene dopo nella stessa posizione
lcd.print("0");
lcd.print(m);
delay(1500);
lcd.clear();
cont_pag = 0;
}
}