//#include <LiquidCrystal_I2C.h>
#include <LiquidCrystal_I2C.h>
#include "RTClib.h"
LiquidCrystal_I2C lcd(0x27, 20, 4);
RTC_DS1307 rtc;
// int timbre = 2;
String Acto_Civ = "";
String Hora1 = "";
String Hora2 = "";
String Hora3 = "";
String Reseso = "";
String Hora4 = "";
String Hora5 = "";
String Comida = "";
String Hora6 = "";
String Hora7 = "";
String Hora8 = "";
String Salir = "";
int Hor = 7;
int Min = 15;
String reloj="";
int Valor = 0;
int Tipo = 0;
char daysOfTheWeek[7][12] = {"domingo", "lunes", "Martes", "miercoles", "jueves", "viernes", "sabado"};
int tipoHorario = 0;
String Horario="";
String formatoHora(int h, int m, int s) {
char buffer[9];
sprintf(buffer, "%d:%d:%d", h, m, s);
return String(buffer);
}
void setup() {
Serial.begin(115200);
lcd.init();
lcd.clear();
//pinMode(34, INPUT);
pinMode(23, INPUT_PULLUP);
pinMode(12, OUTPUT);
if (!rtc.begin()) {
Serial.println("RTC no conectada");
Serial.flush();
abort();
}
lcd.setCursor(0, 0);
lcd.print(" IPJDG");
}
void loop() {
DateTime now = rtc.now();
Valor = analogRead(19);
//Tipo = map(Valor,0,4095,0,4);
if (Tipo == 0) {
Horario = "Horario 8:00 a 4:00";
Acto_Civ = "7:50:0";
Hora1 = "8:0:0";
Hora2 = "8:50:0";
Hora3 = "9:40:0";
Reseso = "10:20:0";
Hora4 = "10:50:0";
Hora5 = "11:40:0";
Comida = "12:30:0";
Hora6 = "13:30:0";
Hora7 = "14:50:0";
Hora8 = "15:0:0";
Salir = "15:45:0";
}
if (Tipo == 1) { Horario = "Horario 8:00 a 3:10";
Horario = "Horario 8:00 a 4:00";
Acto_Civ = "7:50:0";
Hora1 = "8:0:0";
Hora2 = "8:40:0";
Hora3 = "9:20:0";
Reseso = "10:0:0";
Hora4 = "10:30:0";
Hora5 = "11:10:0";
Hora6 = "11:50:0";
Comida = "12:30:0";
Hora7 = "13:30:0";
Hora8 = "14:200:0";
Salir = "15:10:0";
}
if (Tipo == 2) { Horario = "Horario 8:00 a 12:00";}
Horario = "Horario 8:00 a 4:00";
Acto_Civ = "7:50:0";
Hora1 = "8:0:0";
Hora2 = "8:30:0";
Hora3 = "9:0:0";
Hora4 = "9:30:0";
Reseso = "10:0:0";
Hora5 = "10:300:0";
Hora6 = "11:0:0";
Hora7 = "11:30:0";
Hora8 = "12:0:0";
Salir = "12:30:0";
Comida = "12:30:00";
if (Tipo == 3) { Horario = "Horario de Prueba";
Horario = "Horario 8:00 a 4:00";
Acto_Civ = Hor + String(":") + Min + ":0" ;
Hora1 = (Hor)+String(":")+(Min+1)+":0";
Hora2 = (Hor)+String(":")+(Min+2)+":0";
Hora3 = (Hor)+String(":")+(Min+3)+":0";
Reseso = (Hor)+String(":")+(Min+4)+":0";
Hora4 = (Hor)+String(":")+(Min+5)+":0";
Hora5 = (Hor)+String(":")+(Min+6)+":0";
Comida = (Hor)+String(":")+(Min+7)+":0";
Hora6 = (Hor)+String(":")+(Min+8)+":0";
Hora7 = (Hor)+String(":")+(Min+9)+":0";
Hora8 = (Hor)+String(":")+(Min+10)+":0";
Salir = (Hor)+String(":")+(Min+11)+":0";
}
if (Tipo == 4) {
Horario = " Horario Manual";
if (digitalRead(23)==LOW){
digitalWrite(12, HIGH);}
else{digitalWrite(12, LOW);}
}
reloj = formatoHora(now.hour(), now.minute(), now.second());
String fecha = String(daysOfTheWeek[now.dayOfTheWeek()]) + " " + String(now.day()) + "/" + String(now.month()) + "/" + String(now.year());
Tinbre();
lcd.setCursor(0, 1);
lcd.print( Horario);
lcd.setCursor(1, 2);
lcd.print( fecha);
lcd.setCursor(0, 3);
lcd.print(reloj + " ");
Serial.println("Hora actual: " + reloj);
Serial.println(Acto_Civ+ String(" / ")+ Salir+ " / " + Tipo +" / " + Valor);
delay(1000);
}
void Tinbre(){
if (reloj == Acto_Civ||reloj ==Hora1||reloj ==Hora2||reloj ==Hora3||reloj ==Hora4||reloj ==Hora5||reloj ==Hora6||reloj ==Hora7||reloj ==Hora8||reloj ==Reseso||reloj ==Comida){
Tocar_Timbre();
}
else if (reloj == Salir){
Tocar_Timbre_Final ();
}
}
void Tocar_Timbre(){
digitalWrite(12, HIGH);
delay(5000);
digitalWrite(12, LOW);
}
void Tocar_Timbre_Final () {
digitalWrite(12, HIGH);
delay(5000);
digitalWrite(12, LOW);
delay(500);
digitalWrite(12, HIGH);
delay(5000);
digitalWrite(12, LOW);
}