//biblioteca para el uso de las terminales SCL y SDA dela interfaz I2C
#include <Wire.h>
//biblioteca que nos permite utilizar los dispositvos RTC
#include "RTClib.h"
#include <Servo.h>
//Definimos que modelo de componente vamos a utilizar
RTC_DS1307 rtc;
Servo servo; // Create an instance of the Servo motor
//definimos variables en donde almacenaremos la fecha
int segundos,minutos,horas,dia,mes,diaDeLaSemana;
long anio;
//iniciamos una variable de tipo DateTime incluida en la biblioteca RTClib
DateTime HoraFecha;
//arreglos que nos serviran para el mostrar el nombre del dia de la semana y el nombre del mes
char Dias[7][12] = {"Domingo", "Lunes", "Martes", "Miercoles", "Jueves", "Viernes", "Sabado"};
char Meses[12][12] = {"Enero", "Febrero", "Marzo", "Abril", "Mayo", "Junio", "Julio","Agosto","Septiembre","Octubre","Noviembre","Diciembre"};
void setup () {
//iniciamos la interfaz serial para mostrar mensajes
Serial.begin(9600);
//iniciamos el rtc
rtc.begin();
Wire.begin();
if (!rtc.isrunning()) {
rtc.adjust(DateTime(F(__DATE__), F(__TIME__))); // Set the RTC to the current date and time (for initial setup)
}
servo.attach(9); // Attach the servo to digital pin 9
// Set the initial servo position (lid closed)
servo.write(0);
}
void loop () {
//obtenemos la hora y fecha actual
HoraFecha = rtc.now();
//la variable DateTime consta de 6 parametros para la fecha sin embargo no es posible imprimir
//esta variable en un solo mensaje, por lo que asignamos los parametros necesarios a cada
//una de las variables que definimos para alamacenar los componentes de la hora y fecha
segundos=HoraFecha.second();
minutos=HoraFecha.minute();
horas=HoraFecha.hour();
dia=HoraFecha.day();
mes=HoraFecha.month();
anio=HoraFecha.year();
//con la funcion dayOfTheWeek obtenemos un valor del 1 al 7 dependiendo del dia el cual nos
//ayudara para saber el nombre del dia utilizando el arreglo implementado previamente
diaDeLaSemana=HoraFecha.dayOfTheWeek();
//imprimos la fecha y hora mediante la interfaz serial
Serial.print(Dias[diaDeLaSemana]);
Serial.print(" ");
Serial.print(dia);
Serial.print(" de ");
Serial.print(Meses[mes-1]);
Serial.print(" del ");
Serial.print(anio);
Serial.print("//");
Serial.print(horas);
Serial.print(":");
Serial.print(minutos);
Serial.print(":");
Serial.print(segundos);
Serial.println();
delay(1000);
if ( HoraFecha.month()== 12 && HoraFecha.hour() == 23 && HoraFecha.minute() == 25 && HoraFecha.second() == 0) {
servo.write(229); // Open the lid
delay(1000); // Keep the lid open for 1 second
}
if ( HoraFecha.month()== 12 && HoraFecha.hour() == 23 && HoraFecha.minute() == 30 && HoraFecha.second() == 0) {
servo.write(0); // Open the lid
delay(1000); // Keep the lid open for 1 second
}
}