#include <LiquidCrystal_I2C.h>
#include <LiquidMenu.h>
LiquidCrystal_I2C lcd(0x27, 20, 4);
//Parametros Encoder
const int outputA = 7; //CLK
const int outputB = 6; //DT
const int sw = 4; //SW
int aState;
int aLastState;
int valor1 = 0; //variable de valores
int valor2 = 0;
int valor3 = 0;
int incremento = 0;
int count = 0;
/*valor1 = analogRead(7)
valor2 = analogRead(6) //mover al loop
valor3 = analogRead(3)*/
int Med_seleccionada;
//PANTALLA UNO
//LiquidLine linea1(1, 0, " Bienvenido");
//LiquidLine linea2(1, 1, "Dispositivo de Med.");
//LiquidLine linea3(1, 2, " ");
//LiquidLine linea4(1, 3, " CH4, H2, CO2");
//LiquidScreen pantalla1(linea1,linea2,linea3,linea4);
//PANTALLA 2 (MENU)
LiquidLine linea1_2(1, 0, " Seleccionar Med.");
LiquidLine linea2_2(1, 1, " CH4");
LiquidLine linea3_2(1, 2, " H2");
LiquidLine linea4_2(1, 3, " CO2");
LiquidScreen pantalla2(linea1_2,linea2_2,linea3_2,linea4_2);
//PANTALLAS 3 (Y SUS VARIACIONES)
LiquidLine linea1_3(1, 0, " ");
LiquidLine linea2_3(1, 1, " CH4:", valor1, " ppm");
LiquidLine linea3_3(1, 2, " " );
LiquidLine linea4_3(1, 3, "Atras");
LiquidScreen pantalla3(linea1_3,linea2_3,linea3_3,linea4_3);
//PANTALLAS 3 (Y SUS VARIACIONES)
LiquidLine linea1_4(1, 0, " ");
LiquidLine linea2_4(1, 1, " H2:", valor2, " ppm");
LiquidLine linea3_4(1, 2, " " );
LiquidLine linea4_4(1, 3, "Atras");
LiquidScreen pantalla4(linea1_4,linea2_4,linea3_4,linea4_4);
//PANTALLAS 3 (Y SUS VARIACIONES)
LiquidLine linea1_5(1, 0, " ");
LiquidLine linea2_5(1, 1, " CO2:", valor3, " ppm");
LiquidLine linea3_5(1, 2, " " );
LiquidLine linea4_5(1, 3, "Atras");
LiquidScreen pantalla5(linea1_5,linea2_5,linea3_5,linea4_5);
LiquidMenu menu(lcd,pantalla2,pantalla3,pantalla4,pantalla5);
void setup(){
pinMode(outputA, INPUT);
pinMode(outputB, INPUT);
pinMode(sw,INPUT_PULLUP);
//lcd.init();
lcd.init();
lcd.backlight();
menu.init();
lcd.clear();
fn_creditos();
//linea1.set_focusPosition(Position::LEFT);
//linea2.set_focusPosition(Position::LEFT);
// linea3.set_focusPosition(Position::LEFT);
// linea4.set_focusPosition(Position::LEFT);
//linea1.attach_function(1, fn_vacio);
// linea2.attach_function(1, fn_vacio);
//linea3.attach_function(1, fn_vacio);
// linea4.attach_function(1, fn_vacio);
//menu.add_screen(pantalla1);
linea1_2.set_focusPosition(Position::LEFT);
linea2_2.set_focusPosition(Position::LEFT);
linea3_2.set_focusPosition(Position::LEFT);
linea4_2.set_focusPosition(Position::LEFT);
linea1_2.attach_function(1, fn_vacio);
linea2_2.attach_function(1, fn_sensor1);
linea3_2.attach_function(1, fn_sensor2);
linea4_2.attach_function(1, fn_sensor3);
menu.add_screen(pantalla2);
linea1_3.set_focusPosition(Position::LEFT);
linea2_3.set_focusPosition(Position::LEFT);
linea3_3.set_focusPosition(Position::LEFT);
linea4_3.set_focusPosition(Position::LEFT);
linea1_3.attach_function(1, fn_vacio);
linea2_3.attach_function(1, fn_vacio);
linea3_3.attach_function(1, fn_vacio);
linea4_3.attach_function(1, fn_atras);
menu.add_screen(pantalla3);
linea1_4.set_focusPosition(Position::LEFT);
linea2_4.set_focusPosition(Position::LEFT);
linea3_4.set_focusPosition(Position::LEFT);
linea4_4.set_focusPosition(Position::LEFT);
linea1_4.attach_function(1, fn_vacio);
linea2_4.attach_function(1, fn_vacio);
linea3_4.attach_function(1, fn_vacio);
linea4_4.attach_function(1, fn_atras);
menu.add_screen(pantalla4);
linea1_5.set_focusPosition(Position::LEFT);
linea2_5.set_focusPosition(Position::LEFT);
linea3_5.set_focusPosition(Position::LEFT);
linea4_5.set_focusPosition(Position::LEFT);
linea1_5.attach_function(1, fn_vacio);
linea2_5.attach_function(1, fn_vacio);
linea3_5.attach_function(1, fn_vacio);
linea4_5.attach_function(1, fn_atras);
menu.add_screen(pantalla5);
//pantalla1.set_displayLineCount(4);
pantalla2.set_displayLineCount(4);
pantalla3.set_displayLineCount(4);
pantalla4.set_displayLineCount(4);
pantalla5.set_displayLineCount(4);
menu.set_focusedLine(1);
menu.update();
}
void loop(){
selectOption();
aState = digitalRead(outputA);
if (aState != aLastState){
if (digitalRead(outputB) != aState){
incremento++;
if(incremento > 1){
incremento = 0;
menu.switch_focus(false);
}
}else{
incremento++;
if(incremento > 1){
incremento = 0;
menu.switch_focus(true);
}
}
menu.update();
aLastState = aState;
}
valor1++;
}
void selectOption(){
if(digitalRead(sw) == LOW){
menu.call_function(1);
delay(500);
}
}
void fn_sensor1(){
menu.change_screen(2);
menu.set_focusedLine(3);
Med_seleccionada = 1;
}
void fn_sensor2(){
menu.change_screen(3);
menu.set_focusedLine(3);
Med_seleccionada = 2;
}
void fn_sensor3(){
menu.change_screen(4);
menu.set_focusedLine(3);
Med_seleccionada = 3;
}
void fn_vacio(){
return;
}
void fn_creditos(){
lcd.setCursor(0, 0);
lcd.print(" Bienvenido");
lcd.setCursor(0, 1);
lcd.print("Dispositivo de Med.");
lcd.setCursor(0, 2);
lcd.print(" ");
lcd.setCursor(0, 3);
lcd.print(" CH4, H2, CO2");
delay(2000);
}
void fn_atras(){
menu.change_screen(1);
menu.set_focusedLine(1);
Med_seleccionada = 1;
}