Está en la página 1de 3

1 #include <Wire.

h>
2 #include "RTClib.h"
3
4 RTC_DS1307 RTC;
5 DateTime future = 0; // Variable para calcular cuando se debe
6 desactivar la alarma
7
8 // CONFIGURACIÓN DE USUARIO
9 int seconds_alarm = 0; // Segundos alarma
10 int minutes_alarm = 57; // Minutos alarma
11 int hour_alarm = 18; // Horas alarma. Formato 24h
12 int day_alarm = 9; // Dia alarma
13 int month_alarm = 7; // Mes alarma
14 int year_alarm = 2014; // Año alarma
15 int weekday_alarm = 1; // Dia de la semana alarma. L(1), M(2),
16 MX(3), J(4), V(5), S(6), D(7)
17 int alarm_duration = 10; // Tiempo activo de la alarma. Debe ser
18 menor que la próxima alarma.
19
20 boolean all_seconds = false; // Alarma para todos los segundos
21 boolean all_minutes = true; // Alarma para todos los minutos
22 boolean all_hour = true; // Alarma para todas las horas
23 boolean all_weekday = true; // Alarma para todos los dias de la
24 semana
25 boolean all_day = true; // Alarma para todos los dias
26 boolean all_month = true; // Alarma para todos los meses
27 boolean all_year = true; // Alarma para todos los años
28
29 int LedPin = 13;
30 // -------------
31
32 void setup () {
33 Wire.begin(); // Inicia el puerto I2C
34 RTC.begin(); // Inicia la comunicación con el RTC
35 //RTC.adjust(DateTime(__DATE__, __TIME__)); // Establece la
36 fecha y hora (Comentar una vez establecida la hora)
37 pinMode(LedPin, OUTPUT); // Establece el pin LedPin como
38 salida
39 Serial.begin(9600); // Establece la velocidad de datos del puerto
40 serie
41 }
42
43 void loop(){
44 DateTime now = RTC.now(); // Obtiene la fecha y hora del RTC
45
46 Serial.print(now.year(), DEC); // Año
47 Serial.print('/');
48 Serial.print(now.month(), DEC); // Mes
49 Serial.print('/');
50 Serial.print(now.day(), DEC); // Dia
51 Serial.print(' ');
52 Serial.print(now.hour(), DEC); // Horas
53 Serial.print(':');
54 Serial.print(now.minute(), DEC); // Minutos
55 Serial.print(':');
56 Serial.print(now.second(), DEC); // Segundos
57 Serial.println();
58
59 if (year_alarm == now.year() || all_year ) {
60 if (month_alarm == now.month() || all_month) {
61 if (day_alarm == now.day() || all_day) {
62 if (weekday_alarm == now.dayOfWeek() || all_weekday) {
63 if (hour_alarm == now.hour() || all_hour) {
64 if (minutes_alarm == now.minute() || all_minutes) {
65 if (seconds_alarm == now.second() || all_seconds) {
66 digitalWrite(LedPin, HIGH);
67 future = now.unixtime() + alarm_duration;
68 Serial.println("------------");
69 Serial.println("ALARMA");
70 Serial.println("------------");
71 }
72 }
73 }
74 }
75 }
76 }
77 }
78
79 if (now.unixtime() >= future.unixtime() && digitalRead(LedPin)){
80 digitalWrite(LedPin, LOW);
Serial.println("------------");
Serial.println("RESET ALARMA");
Serial.println("------------");
}

delay(1000); // La información se actualiza cada 1 seg.


}

También podría gustarte