#include <LiquidCrystal_I2C.h>
#define CLK 32
#define DT 35
#define SW 34
LiquidCrystal_I2C lcd(0x27,20,4);
void setup() {
Serial.begin(115200);
pinMode(CLK,INPUT_PULLUP);
pinMode(DT,INPUT_PULLUP);
pinMode(SW,INPUT_PULLUP);
attachInterrupt(digitalPinToInterrupt(DT),contador,FALLING);
lcd.init();
lcd.backlight();
lcd.setCursor(0,0);
lcd.print("Bienvenido");
Serial.print("Bienvenido");
delay(1000);
lcd.clear();
}
bool boton;
int cont=1;
void contador(){
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;
}
}
}
}
void loop(){
menu_main();
delay(500);
}
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(0);
}
void menu_main(){
lcd.setCursor(2,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);
lcd.clear();
if(cont==1){
menu1();
}
else if(cont==2){
menu2();
}
else if(cont==3){
menu3();
}
}
void menu1(){
lcd.setCursor(0,6);
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);
lcd.clear();
if(cont==1){
parametro1();
}
else if(cont==2){
parametro2();
}
else if(cont==3){
menu_main();
}
}
void menu2(){
lcd.setCursor(0,6);
lcd.print("Menu 2");
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);
lcd.clear();
if(cont==1){
parametro1();
}
else if(cont==2){
parametro2();
}
else if(cont==3){
menu_main();
}
}
void menu3(){
lcd.setCursor(0,6);
lcd.print("Menu 3");
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);
lcd.clear();
if(cont==1){
parametro1();
}
else if(cont==2){
parametro2();
}
else if(cont==3){
menu_main();
}
}
void parametro1(){
}
void parametro2(){
}