Ciao a tutti,
da alcuni giorni sto cercando di creare un piccolo menù nidificato da gestire con Arduino UNO su un banale LCD 20X4. Il menù lo sto gestendo come i moderni telefonini in cui ci sono 3 tasti generici la cui funzione cambia in base alla schermata. Per gestire questo menù sto utilizzando un ciclo switch - case.
In pratica il default del ciclo è la schermata di partenza e alla pressione di un tasto esso passa alla schermata successiva, modificando un contatore che individua il "case" e quindi la schermata.
Questo è il codice e per il momento sembra funzionare.
#include <LiquidCrystal.h>
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
void setup()
{
Serial.begin (9600);
lcd.begin(20, 4);
pinMode (8, INPUT);
pinMode (9, INPUT);
pinMode (10, INPUT);
}
void loop()
{
int push1 = digitalRead (8);
int push2 = digitalRead (9);
int push3 = digitalRead (10);
int menuIndex = (push1 + (push2*2) + (push3*3));
Serial.println (menuIndex);
switch (menuIndex)
{
case 1:
menuIndex = 1;
switch (menuIndex)
{
case 11:
menuIndex = 1;
break;
case 12:
menuIndex = 2;
lcd.clear ();
lcd.print("2");
break;
case 13:
menuIndex = 3;
lcd.clear ();
lcd.print("3");
break;
case 1:
lcd.clear ();
lcd.setCursor(1, 0);
lcd.print("Intervallo di log");
lcd.setCursor(1, 4);
lcd.print("ESC");
lcd.setCursor(9, 4);
lcd.print("OK");
lcd.setCursor(16, 4);
lcd.print(">");
delay (10000);
break;
}
case 2:
menuIndex = 2;
lcd.clear ();
lcd.print("2");
break;
case 3:
menuIndex = 3;
lcd.clear ();
lcd.print("3");
break;
default:
lcd.clear();
lcd.setCursor(1, 0);
lcd.print("pH : 7.01");
lcd.setCursor(1, 4);
lcd.print("LOG");
lcd.setCursor(7, 4);
lcd.print("MENU");
lcd.setCursor(14, 4);
lcd.print("PRINT");
delay (1000);
}
}
Scusate se non è commentato ma è ancora una bozza. Volevo chiedervi se per voi sono sulla strada giusta oppure se il case per vari motivi, sia impossibile da nidificare.
Tra l'altro, non volendo, ho fatto una cosa carina, nel senso che se su una sotto-schermata non si preme nulla per alcuni secondi, esso torna alla schermata iniziale.
Sono curioso di sapere il vostro parere,
grazie!