//Incluir bibliotecas
#include <LiquidCrystal.h>
#include <LiquidMenu.h>
//Instanciar Pantalla
LiquidCrystal lcd(22,23,5,18,19,21);
//ENCODER
#define EncoderA 35
#define EncoderB 32
#define EncoderSW 34
int aState;
int aLastState;
int incremento;
//SENSOR VOLTAJE
//MENU - MENU
LiquidLine Linea1_Menu(1,0, "Iniciar");
LiquidLine Linea2_Menu(1,1, "Camara");
LiquidLine Linea3_Menu(1,0, "Motor");
LiquidLine Linea4_Menu(1,1, "Bateria");
LiquidLine Linea5_Menu(1,0, "Ajustes");
LiquidScreen Pantalla1;
//MENU - CAMARA
LiquidLine Linea1_Camara(1,0, "T Foto");
LiquidLine Linea2_Camara(1,1, "Num Fotos");
LiquidLine Linea3_Camara(1,0, "Intervalo");
LiquidLine Linea4_Camara(1,1, "Atras");
LiquidScreen Pantalla2(Linea1_Camara,Linea2_Camara,Linea3_Camara,Linea4_Camara);
//MENU - MOTOR
LiquidLine Linea1_Motor(1,0, "Angulo Giro");
LiquidLine Linea2_Motor(1,1, "Direccion");
LiquidLine Linea3_Motor(1,0, "Atras");
LiquidScreen Pantalla3(Linea1_Motor,Linea2_Motor,Linea3_Motor);
//MENU - MOTOR
LiquidLine Linea1_Bateria(1,0, "bateria");
LiquidLine Linea2_Bateria(1,1, "Atras");
LiquidScreen Pantalla4(Linea1_Bateria,Linea2_Bateria);
LiquidMenu menu(lcd,Pantalla1,Pantalla2,Pantalla3,Pantalla4);
//-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
void setup() {
//Añadir Lineas a la Pantalla
Pantalla1.add_line(Linea1_Menu);
Pantalla1.add_line(Linea2_Menu);
Pantalla1.add_line(Linea3_Menu);
Pantalla1.add_line(Linea4_Menu);
Pantalla1.add_line(Linea5_Menu);
//ASIGNAR ENTRADAS Y SALIDAS
pinMode (EncoderSW,INPUT_PULLUP);
//ENCENDER PANTALLA
lcd.begin(16, 2);
//elejir donde mostrar flecha
Linea1_Menu.set_focusPosition(Position::LEFT);
Linea2_Menu.set_focusPosition(Position::LEFT);
Linea3_Menu.set_focusPosition(Position::LEFT);
Linea4_Menu.set_focusPosition(Position::LEFT);
Linea5_Menu.set_focusPosition(Position::LEFT);
//Dar funcion a cada texto
Linea1_Menu.attach_function(1, fn_Iniciar);
Linea2_Menu.attach_function(1, fn_Camara);
Linea3_Menu.attach_function(1, fn_Motor);
Linea4_Menu.attach_function(1, fn_Bateria);
Linea5_Menu.attach_function(1, fn_Ajustes);
//Añadir Pantalla
menu.add_screen(Pantalla1);
Linea1_Camara.set_focusPosition(Position::LEFT);
Linea2_Camara.set_focusPosition(Position::LEFT);
Linea3_Camara.set_focusPosition(Position::LEFT);
Linea4_Camara.set_focusPosition(Position::LEFT);
Linea1_Camara.attach_function(1, fn_TFoto);
Linea2_Camara.attach_function(1, fn_NumFotos);
Linea3_Camara.attach_function(1, fn_Intervalo);
Linea4_Camara.attach_function(1, fn_AtrasMenu);
menu.add_screen(Pantalla2);
Linea1_Motor.set_focusPosition(Position::LEFT);
Linea2_Motor.set_focusPosition(Position::LEFT);
Linea3_Motor.set_focusPosition(Position::LEFT);
Linea1_Motor.attach_function(1, fn_ang_giro);
Linea2_Motor.attach_function(1, fn_Direccion);
Linea3_Motor.attach_function(1, fn_AtrasMenu);
menu.add_screen(Pantalla3);
Linea1_Bateria.set_focusPosition(Position::LEFT);
Linea2_Bateria.set_focusPosition(Position::LEFT);
Linea1_Bateria.attach_function(1, fn_nada);
Linea2_Bateria.attach_function(1, fn_AtrasMenu);
menu.add_screen(Pantalla4);
Pantalla1.set_displayLineCount(2);
Pantalla2.set_displayLineCount(2);
Pantalla3.set_displayLineCount(2);
menu.set_focusedLine(0);
menu.update();
}
//--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
void loop() {
selectOption();
aState = digitalRead(EncoderA);
if (aState != aLastState){
if (digitalRead(EncoderB) != aState) {
incremento++;
if(incremento>1){
incremento = 0;
menu.switch_focus(false);
delay(500);
}
} else {
incremento++;
if(incremento>1){
incremento = 0;
menu.switch_focus(true);
delay(500);
}
}
menu.update();
aLastState = aState;
}
}
//-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
void selectOption(){
if(digitalRead(EncoderSW) == LOW){
menu.call_function(1);
delay(500);
}
}
void fn_AtrasMenu(){
menu.change_screen(1);
menu.set_focusedLine(0);
}
//--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
void fn_Camara(){
menu.change_screen(2);
menu.set_focusedLine(0);
}
void fn_Motor(){
menu.change_screen(3);
menu.set_focusedLine(0);
}
void fn_Bateria(){
menu.change_screen(3);
menu.set_focusedLine(0);
}
void fn_Ajustes(){
menu.change_screen(5);
menu.set_focusedLine(0);
}
void fn_Iniciar(){
menu.change_screen(6);
menu.set_focusedLine(0);
}
//-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
void fn_TFoto(){
menu.change_screen(7);
menu.set_focusedLine(0);
}
void fn_NumFotos(){
menu.change_screen(8);
menu.set_focusedLine(0);
}
void fn_Intervalo(){
menu.change_screen(9);
menu.set_focusedLine(0);
}
//------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
void fn_ang_giro(){
menu.change_screen(10);
menu.set_focusedLine(0);
}
void fn_Direccion(){
menu.change_screen(11);
menu.set_focusedLine(0);
}
void fn_nada(){
}