//Variables
int currentOption = 0;
int maxOptions = 3;
//Variables para seleccionar hora, minutos
int horain = 0;
int minin = 0;
//LIbrerias para el LCD
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27,16,2);
//librerias para el RTC
#include <RTClib.h>
RTC_DS1307 rtc;
void setup()
{
lcd.init();
lcd.backlight();
//lcd.print("Hora y Fecha");
rtc.begin();
//Configurando pines de seleccion
// Configurar los pines de entrada
pinMode(13, INPUT); // Arriba
pinMode(12, INPUT); // Abajo
pinMode(11, INPUT); // Seleccionar
//Ver Menu de Selección
displayMenu();
//Monitor seria de variables
Serial.begin(9600);
}
void loop()
{
// DateTime time=rtc.now();
// lcd.setCursor(0,1);
// lcd.print(time.timestamp(DateTime::TIMESTAMP_TIME));
// delay(1000);
//lcd.clear();
// Comprobar si se ha pulsado algún botón
if (digitalRead(13) == LOW) { // Arriba
currentOption = (currentOption - 1 + maxOptions) % maxOptions;
displayMenu();
delay(200);
} else if (digitalRead(12) == LOW) { // Abajo
currentOption = (currentOption + 1) % maxOptions;
displayMenu();
delay(200);
} else if (digitalRead(11) == LOW) { // Seleccionar
executeOption(currentOption);
delay(200);
}
}
void displayMenu()
{
lcd.clear();
switch (currentOption)
{
case 0:
lcd.print("> Hora inicial");
lcd.setCursor(0, 1);
lcd.print(" Hora final");
break;
case 1:
lcd.print("> Hora final");
lcd.setCursor(0, 1);
lcd.print(" Ejecutar");
break;
case 2:
lcd.print("> Ejecutar");
lcd.setCursor(0, 1);
lcd.print(" Hora Inicial");
break;
}
}
void executeOption(int option)
{
lcd.clear();
switch (option)
{
case 0:
//lcd.print("Hora inicial");
delay(20);
hin();
mnin();
break;
case 1:
lcd.print("Hora final");
break;
case 2:
lcd.print("Ejecutar");
break;
} delay(2000);
}
void hin()
{
delay(50);
//lcd.print("registrar");
do
{
if (digitalRead(13) == LOW)
{
horain=horain+1;
delay(50); // Retardo para evitar rebotes
if (horain>24)
{
horain=0;
}
}
if (digitalRead(12) == LOW)
{
horain=horain-1;
delay(50); // Retardo para evitar rebotes
if (horain < 0)
{
horain=24;
}
}
lcd.setCursor(0,0);
lcd.print(" ");
lcd.setCursor(0,0);
lcd.print(horain);
delay(200);
} while (digitalRead(11) == HIGH);
lcd.setCursor(0,0);
lcd.print("Hora In: ");
lcd.setCursor(0,1);
lcd.print(horain);
}
void mnin()
{
delay(200);
//lcd.print("registrar");
do
{
if (digitalRead(13) == LOW)
{
minin=minin+1;
delay(200); // Retardo para evitar rebotes
if (minin>59)
{
minin=0;
}
}
if (digitalRead(12) == LOW)
{
minin=minin-1;
delay(200); // Retardo para evitar rebotes
if (minin < 0)
{
minin=59;
}
}
lcd.setCursor(0,0);
lcd.print(" ");
lcd.setCursor(0,0);
lcd.print(minin);
delay(200);
} while (digitalRead(11) == HIGH);
lcd.setCursor(0,0);
lcd.print("hrs In: ");
lcd.setCursor(9,0);
lcd.print(horain);
lcd.setCursor(0,1);
lcd.print("Min In: ");
lcd.setCursor(9,1);
lcd.print(minin);
}
void ver()
{
Serial.print(digitalRead(13));
Serial.print(digitalRead(12));
Serial.print(digitalRead(11));
}