#include <LiquidCrystal.h>
#define RS 22
#define E 4
#define D4 21
#define D5 19
#define D6 18
#define D7 5
LiquidCrystal lcd(RS,E,D4,D5,D6,D7);
#define Down 32
#define Up 33
#define Ok 25
int cursor=0;
int estadoDown=0;
int estadoUp=0;
int estadoOk=0;
int Estado=0;
#define LED1 23
void lecturaPulsadores(){
estadoDown=digitalRead(Down);
estadoUp=digitalRead(Up);
estadoOk=digitalRead(Ok);
}
void menu1(){
lcd.setCursor(0,0);
lcd.print("PISO 1:");
lcd.setCursor(1,1);
lcd.print("PISO 2:");
lcd.setCursor(2,2);
lcd.print("PISO 3:");
}
void menugeneral(){
lcd.setCursor(0,0);
lcd.print("ON:");
lcd.setCursor(1,1);
lcd.print("OFF:");
lcd.setCursor(2,2);
lcd.print("RETURN:");
}
void menuuno(){
lcd.setCursor(0,0);
lcd.print("LED ROJO:");
lcd.setCursor(1,1);
lcd.print("LED VERDE:");
}
void menudos(){
lcd.setCursor(0,0);
lcd.print("LED AMARILLO:");
lcd.setCursor(1,1);
lcd.print("LED MORADO:");
}
void menutres(){
lcd.setCursor(0,0);
lcd.print("LED ROSADO:");
lcd.setCursor(1,1);
lcd.print("LED NARANJA:");
}
void ECursor(){
if(estadoDown==1){
delay(200);
lcd.setCursor(10,cursor);
lcd.print(" ");
cursor=cursor-1;
}
if(estadoUp==1){
delay(200);
lcd.setCursor(10,cursor);
lcd.print(" ");
cursor=cursor+1;
}
if (cursor>2){
cursor=2;
}
if(cursor<0){
cursor=0;
}
}
void ECursoruno(){
if(estadoDown==1){
delay(200);
lcd.setCursor(10,cursor);
lcd.print(" ");
cursor=cursor-1;
}
if(estadoUp==1){
delay(200);
lcd.setCursor(10,cursor);
lcd.print(" ");
cursor=cursor+1;
}
if (cursor>1){
cursor=1;
}
if(cursor<0){
cursor=0;
}
}
void PrintCursor()
{
lcd.setCursor(10,cursor);
lcd.print("<");
}
void setup() {
lcd.begin(20,4);
lcd.clear();
lcd.setCursor(3,10);
lcd.print("BUENAS :3");
pinMode(LED1,OUTPUT);
Serial.begin(115200);
Serial.println("Hello, ESP32!");
}
void loop() {
if(Estado==0)
{
menu1();
lecturaPulsadores();
ECursor();
PrintCursor();
if(estadoOk==0){
switch(cursor){
case 0:
Estado=1;
break;
case 1:
Estado=2;
break;
case 2:
Estado=3;
break;
}
}
}
if(Estado==1)
{
menuuno();
lecturaPulsadores();
ECursoruno();
PrintCursor();
if(estadoOk==0){
switch(cursor){
case 0:
Estado=4;
break;
case 1:
Estado=5;
break;
}
}
}
if(Estado==4)
{
menugeneral();
lecturaPulsadores();
ECursor();
PrintCursor();
if(estadoOk==0){
switch(cursor){
case 0:
digitalWrite(LED1,HIGH);
break;
case 1:
digitalWrite(LED1,LOW);
break;
case 2:
Estado=0;
break;
}
}
}
}