#include <Wire.h> // incluye libreria para interfaz I2C
#include <RTClib.h> // incluye libreria para el manejo del modulo RTC
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd (0x27,16, 2);
RTC_DS3231 rtc; // crea objeto del tipo RTC_DS3231
bool evento_inicio = true; // variable de control para inicio de evento con valor true
bool evento_fin = true; // variable de control para finalizacion de evento con valor true
void setup () {
Serial.begin(9600); // inicializa comunicacion serie a 9600 bps
pinMode(9, OUTPUT); // pin 3 como salida
lcd.init();
lcd.backlight();
if (! rtc.begin()) { // si falla la inicializacion del modulo
Serial.println("Modulo RTC no encontrado !"); // muestra mensaje de error
while (1); // bucle infinito que detiene ejecucion del programa
}
}
void loop () {
DateTime fecha = rtc.now(); // funcion que devuelve fecha y horario en formato
// DateTime y asigna a variable fecha
if ( fecha.hour() == 10 && fecha.minute() == 7 && fecha.second()==0){ // si hora = 14 y minutos = 30
digitalWrite(9, HIGH);
delay(4000);
digitalWrite(9, LOW);
tone(10,400,2000);
delay(4000);
noTone(10);
Serial.println("TIMBRE ENCENDIDO");
}
if ( fecha.hour() == 10 && fecha.minute() ==8 && fecha.second()==0 ){ // si hora = 14 y minutos = 30
digitalWrite(9, HIGH);
delay(4000);
digitalWrite(9, LOW);
tone(10,400,2000);
delay(4000);
noTone(10);
Serial.println("TIMBRE ENCENDIDO");
}
if ( fecha.hour() == 10 && fecha.minute() == 9 && fecha.second()==0){ // si hora = 14 y minutos = 30
digitalWrite(9, HIGH);
delay(4000);
digitalWrite(9, LOW);
tone(10,400,2000);
delay(4000);
noTone(10);
Serial.println("TIMBRE ENCENDIDO");
}
Serial.print(fecha.day()); // funcion que obtiene el dia de la fecha completa
Serial.print("/"); // caracter barra como separador
Serial.print(fecha.month()); // funcion que obtiene el mes de la fecha completa
Serial.print("/"); // caracter barra como separador
Serial.print(fecha.year()); // funcion que obtiene el a�o de la fecha completa
Serial.print(fecha.year()); // funcion que obtiene el año de la fecha completa
Serial.print(" "); // caracter espacio en blanco como separador
Serial.print(fecha.hour()); // funcion que obtiene la hora de la fecha completa
Serial.print(":"); // caracter dos puntos como separador
Serial.print(fecha.minute()); // funcion que obtiene los minutos de la fecha completa
Serial.print(":"); // caracter dos puntos como separador
Serial.println(fecha.second()); // funcion que obtiene los segundos de la fecha completa
lcd.setCursor(0,0);
lcd.print("D:");
lcd.print(fecha.year());
lcd.print("/");
lcd.print(fecha.month());
lcd.print("/");
lcd.print(fecha.day());
lcd.print(" ");
lcd.setCursor(0,1);
lcd.print("T: ");
lcd.print(fecha.hour());
lcd.print(":");
lcd.print(fecha.minute());
lcd.print(":");
lcd.print(fecha.second());
delay(1000); // demora de 1 segundo
if ( fecha.hour() == 2 && fecha.minute() == 0 ){ // si hora = 2 y minutos = 0 restablece valores de
evento_inicio = true; // variables de control en verdadero
evento_fin = true;
}
}