#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;
void setup() {
pinMode(LedRed, OUTPUT);
pinMode (EnA,INPUT_PULLUP);
pinMode (EnB,INPUT_PULLUP);
pinMode (Enboton, INPUT_PULLUP);
lcd.init();
lcd.backlight();
Serial.begin (9600);
EnestadoOldA = digitalRead(EnA);
}
void loop()
{
//lcd.clear();
encoderR();
lcd.setCursor(0,0);
switch (seleccion) {
case 0:
if (Encontador == 0 && Encontador <= 2)
lcd.print("Selec!!");
if (Encontador == 3) {
seleccion = 1;
}
break;
case 1:
if (Encontador == 3 && Encontador <= 5)
lcd.print("Largo");
if (Encontador == 6) {
seleccion = 2;
}
break;
case 2:
if (Encontador == 6 && Encontador <= 8)
lcd.print("Piezas");
if (Encontador == 9) {
seleccion = 3;
}
break;
case 3:
if (Encontador == 9 && Encontador <= 11)
lcd.print("Empezar");
if (Encontador == 12) {
seleccion = 4;
}
break;
case 4:
if (Encontador == 12 && Encontador <= 14)
lcd.print("MIerda");
if (Encontador == 16) {
seleccion = 0;
Encontador = 0;
}
break;
default: break;
delay(20);
}
}
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
bool Enbtn = digitalRead(Enboton);
if (!Enbtn) {
digitalWrite(LedRed, HIGH);
delay(500);
digitalWrite(LedRed, LOW);
Serial.println("Boton pulsado: Contador a 0");
lcd.clear(); // Puedes ajustar esto si deseas limpiar el LCD completamente
lcd.setCursor(0, 0);
lcd.print("Contador a 0");
Encontador = 0;
delay(300);
lcd.clear();
seleccion = 0;
}
}