#include <Wire.h>
#include <LiquidCrystal.h>
#include <LiquidMenu.h>
LiquidCrystal lcd(12, 11, 10, 9, 8, 7);
#define Arriba 0
#define Abajo 1
#define Seleccionar 2
#define Atras 3
const int Pot = A0;
const int DIS = 4;
const int CONVENCIONAL = 5;
LiquidLine linea1(1, 0, "DIS");
LiquidLine linea2(1, 1, "CONVENCIONAL");
LiquidScreen pantalla1(linea1, linea2);
LiquidMenu menu(lcd, pantalla1);
void setup() {
pinMode(Arriba, INPUT_PULLUP);
pinMode(Abajo, INPUT_PULLUP);
pinMode(Seleccionar, INPUT_PULLUP);
pinMode(Atras, INPUT_PULLUP);
pinMode(DIS, OUTPUT);
pinMode(CONVENCIONAL, OUTPUT);
lcd.begin(16, 2);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("PROBADOR DE ");
lcd.setCursor(0, 1);
lcd.print("BOBINAS");
delay(2000);
linea1.set_focusPosition(Position::LEFT);
linea2.set_focusPosition(Position::LEFT);
linea1.attach_function(1, fn_DIS);
linea2.attach_function(1, fn_CONVENCIONAL);
menu.add_screen(pantalla1);
pantalla1.set_displayLineCount(2);
menu.set_focusedLine(0);
menu.update();
}
void loop() {
if (digitalRead(Arriba) == LOW) {
menu.switch_focus(false);
delay(200);
}
if (digitalRead(Abajo) == LOW) {
menu.switch_focus(true);
delay(200);
}
if (digitalRead(Seleccionar) == LOW) {
menu.call_function(1);
delay(500);
}
if (digitalRead(Atras) == LOW) {
menu.change_screen(1);
menu.set_focusedLine(0);
delay(500);
}
}
void fn_DIS() {
ejecutarFuncion(DIS);
}
void fn_CONVENCIONAL() {
ejecutarFuncion(CONVENCIONAL);
}
void ejecutarFuncion(int pin) {
lcd.clear();
bool regresar = false;
while (!regresar) {
if (digitalRead(Atras) == LOW) {
regresar = true;
} else {
int duracion = analogRead(Pot);
int delayled = map(duracion, 0, 1023, 10, 1000);
digitalWrite(pin, HIGH);
delay(10);
digitalWrite(pin, LOW);
delay(delayled);
long T = 10 + duracion;
long RPM = 60000 / T;
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("REV DEL MOTOR");
lcd.setCursor(0, 1);
lcd.print(RPM);
lcd.print(" RPM");
delay(100);}
}
}