#include <LiquidCrystal_I2C.h>
#define CLK 32
#define DT 35
#define SW 34
LiquidCrystal_I2C lcd(0x27,20,4);
void setup() {
pinMode(CLK, INPUT_PULLUP);
pinMode(DT, INPUT_PULLUP);
pinMode(SW, INPUT_PULLUP);
attachInterrupt(digitalPinToInterrupt(DT),up,FALLING);
/*attachInterrupt(digitalPinToInterrupt(DT),down,FALLING);*/
lcd.init();//iniciamos la lcd
lcd.backlight();//encendemos la retroiluminacion
lcd.setCursor(5,0);//posicion
Serial.begin(115200);
lcd.print("Bienvenido");
delay(1000);
lcd.clear();
}
bool boton;
int cont=1;
void up(){
//Serial.println("up");
static unsigned long tiempo_anterior=0;
unsigned long tiempo=millis();
if(tiempo-tiempo_anterior>=50){
if(digitalRead(CLK)==LOW){
cont++;
if (cont>=3){
cont=3;
}
}
else {
cont--;
if (cont<=1){
cont=1;
}
}
tiempo_anterior=tiempo;
}
}
/*void down(){
static unsigned long tiempo_anterior=0;
unsigned long tiempo=millis();
if(tiempo-tiempo_anterior>=50){
if(digitalRead(DT)==LOW && digitalRead(CLK)==HIGH){//izquierda
cont--;
}
tiempo_anterior=tiempo;
}
}*/
void loop() {
menu_principal();
delay(100);
}
void selector(){
lcd.setCursor(0,1);
lcd.print(" ");
lcd.setCursor(0,2);
lcd.print(" ");
lcd.setCursor(0,3);
lcd.print(" ");
lcd.setCursor(0,cont);
lcd.print(">");
delay(10);
}
void menu_principal(){
lcd.setCursor(3,0);
lcd.print("Menu principal");
do{
selector();
boton=digitalRead(SW);
lcd.setCursor(1,1);
lcd.print(" Menu 1");
lcd.setCursor(1,2);
lcd.print(" Menu 2");
lcd.setCursor(1,3);
lcd.print(" Menu 3");
}while(boton!=LOW);
delay(250);
lcd.clear();
if(cont==1){
menu1();
}
else if(cont==2){
menu2();
}
if(cont==3){
menu3();
}
}
void menu1(){
cont=1;
lcd.setCursor(6,0);
lcd.print("Menu 1");
do{
selector();
boton=digitalRead(SW);
lcd.setCursor(1,1);
lcd.print(" Parametro 1");
lcd.setCursor(1,2);
lcd.print(" Parametro 2");
lcd.setCursor(1,3);
lcd.print(" Volver");
}while(boton!=LOW);
delay(250);
lcd.clear();
if(cont==1){
parametro1();
}
else if(cont==2){
parametro2();
}
if(cont==3){
menu_principal();
}
}
void menu2(){
cont=1;
lcd.setCursor(6,0);
lcd.print("Menu 1");
do{
selector();
boton=digitalRead(SW);
lcd.setCursor(1,1);
lcd.print(" Parametro 1");
lcd.setCursor(1,2);
lcd.print(" Parametro 2");
lcd.setCursor(1,3);
lcd.print(" Volver");
}while(boton!=LOW);
delay(250);
lcd.clear();
if(cont==1){
parametro1();
}
else if(cont==2){
parametro2();
}
if(cont==3){
menu_principal();
}
}
void menu3(){
cont=1;
lcd.setCursor(6,0);
lcd.print("Menu 1");
do{
selector();
boton=digitalRead(SW);
lcd.setCursor(1,1);
lcd.print(" Parametro 1");
lcd.setCursor(1,2);
lcd.print(" Parametro 2");
lcd.setCursor(1,3);
lcd.print(" Volver");
}while(boton!=LOW);
delay(250);
lcd.clear();
if(cont==1){
parametro1();
}
else if(cont==2){
parametro2();
}
if(cont==3){
menu_principal();
}
}
void parametro1(){
}
void parametro2(){
}