#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C LCD = LiquidCrystal_I2C(0x27, 20, 4);
#define pin_btnBLUE 34
#define pin_btnYELLOW 35
#define pin_btnGREEN 32
#define PIN_TRIG 33
#define PIN_ECHO 25
enum{
MENUPPL,
MENU_LLENADO,
MENU_USUARIO
};
int opCurrentMenu=MENUPPL, opSel=1;
int lvl;
void menuPPAL();
void menuLLENADO();
void menuUSUARIO();
int getLvl();
void setup() {
// put your setup code here, to run once:
Serial.begin(115200);
Serial.println("Hello, ESP32!");
//Configuracion de los BTN
pinMode(pin_btnBLUE, INPUT);
pinMode(pin_btnYELLOW, INPUT);
pinMode(pin_btnGREEN, INPUT);
//CONFIGURAMOS LA LCD
LCD.init();
LCD.setBacklight(HIGH);
LCD.clear();
//CONFIGURAMOS SENSOR ULTRASONIDO
pinMode(PIN_TRIG, OUTPUT);
pinMode(PIN_ECHO, INPUT);
}
void loop() {
if( opCurrentMenu == MENUPPL ){
menuPPAL();
}
else if( opCurrentMenu == MENU_LLENADO ){
menuLLENADO();
}
else if( opCurrentMenu == MENU_USUARIO ){
menuUSUARIO();
}
lvl = getLvl();
Serial.print("lvl: ");
Serial.print(lvl);
Serial.println(" cm");
delay(100); // this speeds up the simulation
}
// Aqui programamos las funciones del menu de usuario
void menuPPAL(){
LCD.setCursor(0,0); LCD.print(" MENU PPAL ");
LCD.setCursor(0,1); LCD.print("1.MENU USUARIO ");
LCD.setCursor(0,2); LCD.print("2.MENU LLENADO ");
LCD.setCursor(0,3); LCD.print("OP: ");
LCD.setCursor(3,3); LCD.print(opSel);
if( digitalRead(pin_btnBLUE) == 1){
while(digitalRead(pin_btnBLUE) == 1);
opSel++;
if(opSel > 2){
opSel=1;
}
}
if( digitalRead(pin_btnYELLOW) == 1){
while(digitalRead(pin_btnYELLOW) == 1);
opSel--;
if(opSel < 1 ){
opSel=2;
}
}
if(opSel == 1){
LCD.setCursor(15,1);LCD.print("<");
LCD.setCursor(15,2);LCD.print(" ");
}
if(opSel == 2){
LCD.setCursor(15,1);LCD.print(" ");
LCD.setCursor(15,2);LCD.print("<");
}
if( digitalRead(pin_btnGREEN) == 1){
while(digitalRead(pin_btnGREEN) == 1);
if(opSel == 1){
opCurrentMenu = MENU_USUARIO;
opSel=1;
}
else{
opCurrentMenu = MENU_LLENADO;
opSel=1;
}
LCD.clear();
}
}
void menuLLENADO(){
LCD.setCursor(4,0);
LCD.print("MENU LLENADO");
}
void menuUSUARIO(){
LCD.setCursor(4,0);
LCD.print("MENU USUARIO");
}
//Metodo para programar el sensor HC-SR04
int getLvl(){
// Start a new measurement:
digitalWrite(PIN_TRIG, HIGH);
delayMicroseconds(10);
digitalWrite(PIN_TRIG, LOW);
// Read the result:
int duration = pulseIn(PIN_ECHO, HIGH);
return duration/48;
}