#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27, 16, 2);
#define EnA 6
#define EnB 5
#define Enboton 9
#define LedRed 13
int Encontador = 0;
int EnestadoOldA = 0;
int seleccion = 0;
int submenu = 0;
void setup() {
pinMode(LedRed, OUTPUT);
pinMode(EnA, INPUT_PULLUP);
pinMode(EnB, INPUT_PULLUP);
pinMode(Enboton, INPUT_PULLUP);
lcd.init();
lcd.backlight();
lcd.clear();
Serial.begin(9600);
EnestadoOldA = digitalRead(EnA);
}
void loop() {
encoderR();
lcd.setCursor(0, 0);
switch (seleccion) {
case 0:
Serial.println("Selec!!");
lcd.print("Selec!!");
if (Encontador == 1) {
seleccion = 1;
} else if (Encontador == -1){
seleccion = 4;
Encontador = 4;
} else if (digitalRead(Enboton) == 0){
lcd.clear();
submenuV ();
submenu = 0;
}
break;
lcd.clear();
case 1:
Serial.println("Largo");
lcd.print("Largo");
if (Encontador == 2) {
seleccion = 2;
} else if (Encontador == 0) {
seleccion = 0;
} else if (digitalRead(Enboton) == 0){
lcd.clear();
submenuV ();
submenu = 1;
}
break;
lcd.clear();
case 2:
Serial.println("Piezas");
lcd.print("Piezas");
if (Encontador == 3) {
seleccion = 3;
} else if (Encontador == 1){
seleccion = 1;
} else if (digitalRead(Enboton) == 0){
lcd.clear();
submenuV ();
submenu = 2;
}
break;
lcd.clear();
case 3:
Serial.println("Empezar");
lcd.print("Empezar");
if (Encontador == 4) {
seleccion = 4;
} else if (Encontador == 2){
seleccion = 2;
} else if (digitalRead(Enboton) == 0){
lcd.clear();
submenuV ();
submenu = 3;
}
break;
lcd.clear();
case 4:
Serial.println("Mierda");
lcd.print("Mierda");
if (Encontador == 5) {
seleccion = 0;
Encontador = 0;
} else if (Encontador == 3){
seleccion = 3;
} else if (digitalRead(Enboton) == 0){
lcd.clear();
submenuV ();
submenu = 4;
}
break;
lcd.clear();
default: break;
}
}
int encoderR() {
int EnestadoA = digitalRead(EnA);
int EnestadoB = digitalRead(EnB);
if (EnestadoOldA == 1 && EnestadoA == 0) {
if (EnestadoB == 0) {
Encontador++;
} else {
Encontador = Encontador - 1;
}
Serial.print("Posición: ");
Serial.println(Encontador);
}
EnestadoOldA = EnestadoA;
// Manejo del botón
if (digitalRead(Enboton) == 0) {
digitalWrite(LedRed, HIGH);
delay(500);
digitalWrite(LedRed, LOW);
}
}
int submenuV (){
switch (submenu) { lcd.clear();
case 0:
Serial.println("A");
lcd.setCursor(8, 0);
lcd.print("A");
break;
case 1:
Serial.println("B");
lcd.setCursor(8, 0);
lcd.print("B");
break;
case 2:
Serial.println("C");
lcd.setCursor(8, 0);
lcd.print("C");
break;
case 3:
Serial.println("D");
lcd.setCursor(8, 0);
lcd.print("D");
break;
case 4:
Serial.println("E");
lcd.setCursor(8, 0);
lcd.print("E");
break;
default: break;
}
}