superlol:
forno:
Ok, ora faccio una ricerca 
Si, ci vorrebbe una bella libreria semplice semplice per gestire i menù 
il problema è che sarebbe pesantissima, io dichiaro una funzione per ogni menu/sottomenu. poi metto un loop fino alla pressione di enter o reset e avendo salvato l'ultimo valore sel pulsante so quale è stato schiacciato, salvo poi la "posizione del cursore" come fosse un id ed in base all'id chiamo un'altro menu.
del tipo:
int posizione = 1;
int ultimopulsante = 0;
void menu_uno() {
while(ultimopulsante != 5) { //mettiamo che il 5 sia l'ok
//mostri il menu
if(ultimopulsante == 3) posizione++; // mettiamo prema su
if(ultimopulsante == 2) posizione++; // mettiamo prema giù (da implementare un debounce è solo un esempio
}
passamenu(posizione);
}
void menu_due() {
while(ultimopulsante != 5) { //mettiamo che il 5 sia l'ok
//mostri il menu
if(ultimopulsante == 3) posizione++; // mettiamo prema su
if(ultimopulsante == 2) posizione++; // mettiamo prema giù (da implementare un debounce è solo un esempio
}
passamenu(posizione);
}
passamenu(int quale) {
switch(quale) {
case 1: // assegni ad ogni id una funzione del menu
menu_uno();
break;
case 2:
menu_due();
break;
//ecc...
}
}
e li fai tutti così
io almeno è come faccio
mi cito da solo.
come ho già spiegato assegni un id univoco ad ogni menu e sottomenu del tipo
principale 1
preheat 2
heat 3
solder 4.. ecc..
crei poi un void per ogni id.
avrai quindi
void principale() { }
void preheat() { }
void heat() { }
dentro le parentesi graffe di ogni menu crei una condizione di uscita, in pratica setti dei parametri iniziali quindi metti tutto in while(pulsante == HIGH) (qui leggiti i debounce) dove pulsante può essere il return od invio o quello che è in base alla tastiera che usi.
dentro il while metti il codice che identifica il menu, intendo se devi impostare la temperatura faì un qualcosa tipo
void heat() {
while(condizione di uscita vedi sopra) {
lcd.setCursor(0,1);
lcd.print("temp. ");
lcd.print(valoretemperatura);
// sopra in pratica mostra il valore poi puoi fare del tipo
if(destra == HIGH) valoretemperatura++; // se preme destra il valore della temperatura aumenta
if(sinistra == HIGH) valoretemperatura--; // il contrario di sopra
}
}
se poi devi impostare 2 valori devi fare un contatore di posizione che diventa 1 se premi su o 2 se premi giù, poi quando guardi se viene premuto destra o sinistra metti un if che se questo contatore è 1 allora agisce sulla temperatura, se è 2 agisce sul tempo.
per terminare avrai bisogno di una condizione di cambio:
necessiti come ho detto sopra per navigare tra i menu di un contatore che ti indichi quale hai selezionato, quando poi esci dal while tecnicamente torneresti al loop, ma noi non vogliamo che accada, quindi alla fine mettiamo una funzione del tipo passamenu (come sopra) a cui passiamo come argomento l'id del menu che vogliamo, poi con una serie di switch chiami il menu che ti interessa.
non è in effetti il modo più ottimizzato per fare menu lo ammetto, esistono modi migliori ma come primi menu credo sia un buon metodo