#include <LiquidCrystal.h>
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
bool m=true; //Mostrar el menu de inicio
bool tm=false; //mostrar el primer menu de temperatura
bool dm=false; //mostrar el segundo menu de desinfeccion
int menu=0; //contador Menu de Inicio
int menuTemp=0; //contador Menu de Temperatura
String confir="No"; //contador para el menu de desinfeccion, si el contador esta en 0 muestra NO, si esta en 1 muestra SI
int subir = 27; //boton para subir en el menu
int bajar = 29; //boton para bajar en el menu
int selec = 25; //boton de set del menu
int temp=40; //temperatura
String hora = "10:25 Temp: "; //Hora
//funciones
void bajarMenu(int &menu){
if(menu<2){
menu++;
limpiarFila();
delay(200);
}
return menu;
}
void subirMenu(int &menu){
if(menu>0){
menu--;
limpiarFila();
delay(200);
}
}
void limpiarFila(){
lcd.setCursor(0,1);
lcd.print(" ");
}
void setup() {
lcd.begin(16, 2); //inicia la pantalla
//se establecen los botones como dispositivos de entrada
pinMode(subir, INPUT);
pinMode(bajar, INPUT);
pinMode(selec, INPUT);
hora.concat(temp); // concateno la variable hora con la temperatura para mostrarlo en la pantalla todo junto
lcd.setCursor(0,0);
lcd.print(hora);//muestro en pantalla la hora y temperatura
}
void loop() {
//ifs para moverse entre el menu de inicio
if(m==true){
if(digitalRead(bajar)==HIGH){
bajarMenu(menu);
}
if(digitalRead(subir)==HIGH){
subirMenu(menu);
}
}
//termina el codigo para moverse entre el menu de inicio
lcd.setCursor(0,1);
//If para determinar lo que muestra en pantalla dependiendo del valor de menu
if(menu==0){
//si m es igual a true, el menu se muestra
if(m==true){
lcd.print("1. Temperatura");
}
//si selecciono el boton de set, oculto el menu de inicio y establesco en true el menu de temperatura
if(digitalRead(selec)==HIGH){
delay(300);
m = false; //oculto el menu de inicio
tm=true; //muestro el menu de temperatura
limpiarFila();
//menu Temperatura
//Ifs para moverse entre el menu de temperatura
if(digitalRead(bajar)==HIGH){
bajarMenu(menuTemp);
}
if(digitalRead(subir)==HIGH){
subirMenu(menuTemp);
}
//Termina el if donde establezco la opcion del menu de temperatura
lcd.setCursor(0,1);
//Establezco que se muestra en el menu de temperatura dependiendo del valor de menuTemp
if(menuTemp==0){
String mT = "Temp: ";
if(tm==true){
lcd.print(mT + temp);
}
}
//Fin menu Temperatura
}
}else if(menu==1){
if(m==true){
lcd.print("2. Desinfeccion");
}
if(digitalRead(selec)==HIGH){
delay(300);
m = false;
limpiarFila();
dm=true;//Muestro en pantalla el menu de desinfeccion
//uso un if para moverme dentro del menu de desinfeccion, tenes la opcion de activar o no la desinfeccion
if(dm==true){
//muestro la variable
lcd.setCursor(0,1);
lcd.print("Activar? " + confir);
//cambio el valor del contador con los botones de subir y bajar
if(digitalRead(bajar)==HIGH){
confir = "No";
}
if(digitalRead(subir)==HIGH){
confir = "Si";
}
if(digitalRead(selec)==HIGH){
if(confir=="No"){
dm==false;
m==true;
}
}
}
}
}else{
//opcion 3
if(m==true){
lcd.print("3. Ajustes");
}
}
}