![](/media/cache/profiles/88620f53e8130fe210652d43137a905b.jpg.50x50_q85.jpg)
Procesadores, 2016 - II. Tarea #2. Oswaldo Andrés Giraldo Giraldo, Héctor Andrés Hoyos Ceballos, Jose Fernando Montoya Vargas, María Fernanda Villa Tamayo. Programa para establecer alarmas con ayuda del reloj DS1307 por comunicación I2C.
Dependencies: Debounced QEI RTC-DS1307 TextLCD mbed
Fork of Reloj_alarma by
Revision 2:cb1f588caed7, committed 2016-11-16
- Comitter:
- joshema216
- Date:
- Wed Nov 16 02:22:17 2016 +0000
- Parent:
- 1:0639f31dd59f
- Commit message:
- Version 1.
Changed in this revision
main.cpp | Show annotated file Show diff for this revision Revisions of this file |
diff -r 0639f31dd59f -r cb1f588caed7 main.cpp --- a/main.cpp Wed Sep 28 06:48:39 2016 +0000 +++ b/main.cpp Wed Nov 16 02:22:17 2016 +0000 @@ -1,508 +1,817 @@ +// Programa para configurar 4 alarmas con el reloj DS1307 por comunicación I2C. Se configurarán los tiempos de +// encendido y apagado de cada una de las alarmas y la acción de las mismas se verá representada por el estado +// de un LED para cada una (cuando se active una alarma se deberá encender, cuando se desactive se deberá de +// apagar), por lo que las alarmas son independientes. Luego, se deberá estar comparando constantemente el +// tiempo actual con cada una de las alarmas por a parte. + +// Oswaldo Andrés Giraldo Giraldo - C.C.: 1152458465 +// Héctor Andrés Hoyos Ceballos - C.C.: 1039466317 +// Jose Fernando Montoya Vargas - C.C.: 1039468676 +// María Fernanda Villa Tamayo - C.C.: 1152457490 + #include "mbed.h" -#include "DebouncedIn.h" +#include "DebouncedIn.h" // Librería para los botones. #include "TextLCD.h" #include "QEI.h" #include "Rtc_Ds1307.h" -TextLCD lcd(PTB10, PTB11, PTE2, PTE3, PTE4, PTE5); // rs, e, d4-d7 -Rtc_Ds1307 rtc(PTE0, PTE1); -QEI wheel (PTA16, PTA17, NC, 48); +TextLCD lcd(PTB10, PTB11, PTE2, PTE3, PTE4, PTE5); // RS, E, D4 - D7 +Rtc_Ds1307 rtc(PTE0, PTE1); // Configura el reloj. +QEI wheel (PTA13, PTD5, NC, 48); // Configura el encoder. +DebouncedIn button_enco(PTC16); // Configura el botón del encoder. + +DigitalOut ALED1(PTA5);// Salida del LED de la alarma 1. +DigitalOut ALED2(PTA4);// Salida del LED de la alarma 2. +DigitalOut ALED3(PTA12);// Salida del LED de la alarma 3. +DigitalOut ALED4(PTD4);// Salida del LED de la alarma 4. -DebouncedIn button_enco(PTC5); +Serial pc(USBTX, USBRX); // TX, RX. -PwmOut Sonido(PTA5); +int C1 = 0x0C; +int m; +int Conf = 0; // 0: Reloj, 1: Alarmas. +int Lugar = 0; // Definen el punto en el cual va el programa. +int i = 0, ala = 1, a1 = 0, a2 = 0, a3 = 0, a4 = 0, cont = 0; +int visual = 0; +int alarma = 0; -float periodo; -float Frecuencia=4000; -int C1=0x0C; -int m; -int Conf=0; // 0: Alarma y 1:Reloj -int Lugar=0; // Definen el punto en el cual va el programa -int i=0; -int visual=0; -int alarma=0; +int main(){ + Rtc_Ds1307::Time_rtc tm = {}; // Inicializa el reloj. + Rtc_Ds1307::Time_rtc A1on = {}; // Inicializa el tiempo de encendido de la alarma 1. + Rtc_Ds1307::Time_rtc A2on = {}; // Inicializa el tiempo de encendido de la alarma 2. + Rtc_Ds1307::Time_rtc A3on = {}; // Inicializa el tiempo de encendido de la alarma 3. + Rtc_Ds1307::Time_rtc A4on = {}; // Inicializa el tiempo de encendido de la alarma 4. + Rtc_Ds1307::Time_rtc A1off = {}; // Inicializa el tiempo de apagado de la alarma 1. + Rtc_Ds1307::Time_rtc A2off = {}; // Inicializa el tiempo de apagado de la alarma 2. + Rtc_Ds1307::Time_rtc A3off = {}; // Inicializa el tiempo de apagado de la alarma 3. + Rtc_Ds1307::Time_rtc A4off = {}; // Inicializa el tiempo de apagado de la alarma 4. + + lcd.cls(); // Borra la pantalla. + lcd.writeCommand(C1); // Escribimos un comando segun el manual del modulo LCD. + lcd.locate(0,0); + lcd.printf("** Reloj de"); + lcd.locate(0,1); + lcd.printf(" 4 alarmas **"); + wait(2); + lcd.cls(); + lcd.locate(0,0); + lcd.printf("--Reloj"); // Sin flechas. + lcd.locate(0,1); + lcd.printf("--Alarmas"); + + rtc.getTime(tm); // Lee el tiempo del DS1307. Leyó todo el hijuemadre reloj de un golpe, hora, min, seg y lo mete en tm + + while(1){ -int main() -{ - Rtc_Ds1307::Time_rtc tm = {}; - Rtc_Ds1307::Time_rtc Alarm = {}; - lcd.cls(); - lcd.writeCommand(C1);//escribimos un comando segun el manual del modulo LCD - - lcd.locate(0,0); - lcd.printf("--Alarma --Hora"); - - periodo=(1/Frecuencia); - Sonido.period(periodo); - - rtc.getTime(tm); //lee el tiempo del DS1307 - - while(1) - { - switch (Lugar) - { - case 0: - m=wheel.getPulses(); // m son los datos del encoder - if(m!=0 && Conf==0){ - Conf=1; - wheel.reset(); - m=0; + // Etapa de menú. + if (Lugar == 0){ // Varía entre reloj y alarma. Por el boton del encoder incrementa una variable que se llama lugar. + m = wheel.getPulses(); // m son los datos del encoder. + if(m!=0 && Conf == 0){// Si se movió el encoder y está en Reloj. + Conf = 1; // Lo cambia a Alarmas. + wheel.reset(); // Si está en un estado inferior, la resetea. + m=0; + ala++; + pc.printf("%d", ala, "\n"); + } + + if(m!=0 && Conf == 1){ // Si se movió el encoder y está en Alarmas. + Conf = 0; // Lo pone en Reloj. + wheel.reset(); // Resetea. + m=0; + ala = 1; + pc.printf("%d", ala, "\n"); + } + + if(Conf == 0){ // Si la configuración cambia pone la flechita en Reloj. + + lcd.locate(1,1); + lcd.printf("-"); + lcd.locate(1,0); + lcd.printf(">"); + lcd.locate(16,1); + wait(0.1); + + } + + if(Conf == 1){ // Poner la flechita en Alarmas. + lcd.locate(1,0); + lcd.printf("-"); + lcd.locate(1,1); // Tira la flechita para abajo. + lcd.printf(">"); + lcd.locate(16,1); + wait(0.1); + } + + if (button_enco.falling()){ // Si se pulsa botón del encoder. + Lugar++; //aumenta lugar + m = 0; + pc.printf("%d", Conf, "\n"); + pc.printf("%d", ala, "\n"); + } + } + + // Etapa de llenado de variables (Reloj y Alarmas). + else if (Lugar == 1){ + if (i == 0){ + if(Conf == 0){ // Empieza a configurar el Reloj. + lcd.cls(); + lcd.locate(0,0); + lcd.printf("Configurar reloj"); + wait(1.5); + lcd.cls(); + i++; + m = 0; + } + + if(Conf == 1 && ala == 2){ // Empieza a configurar inicialmente la alarma 1 encendido. + lcd.cls(); + lcd.locate(0,0); + lcd.printf("Config. Alarma 1"); + lcd.locate(0,1); + lcd.printf("encendido"); + wait(1.5); + lcd.cls(); + i++; + m=0; + } + + if(Conf == 1 && ala == 3){ // Configurar alarma 1 apagado. + lcd.cls(); + lcd.locate(0,0); + lcd.printf("Config. Alarma 1"); + lcd.locate(0,1); + lcd.printf("apagado"); + wait(1.5); + lcd.cls(); + i++; + m=0; } - if(m!=0 && Conf==1){ - Conf=0; - wheel.reset(); - m=0; + if(Conf == 1 && ala == 4){ // Configurar alarma 3 encendido. + lcd.cls(); + lcd.locate(0,0); + lcd.printf("Config. Alarma 2"); + lcd.locate(0,1); + lcd.printf("encendido"); + wait(1.5); + lcd.cls(); + i++; + m=0; + } + + if(Conf == 1 && ala == 5){ // Configurar alarma 2 apagado. + lcd.cls(); + lcd.locate(0,0); + lcd.printf("Config. Alarma 2"); + lcd.locate(0,1); + lcd.printf("apagado"); + wait(1.5); + lcd.cls(); + i++; + m=0; } - if(Conf==0){ - - lcd.locate(11,0); - lcd.printf("-"); - lcd.locate(1,0); - lcd.printf(">"); - lcd.locate(0,1); - wait(0.1); - + if(Conf == 1 && ala == 6){ // Configurar alarma 3 encendido. + lcd.cls(); + lcd.locate(0,0); + lcd.printf("Config. Alarma 3"); + lcd.locate(0,1); + lcd.printf("encendido"); + wait(1.5); + lcd.cls(); + i++; + m=0; } - if(Conf==1){ - - lcd.locate(1,0); - lcd.printf("-"); - lcd.locate(11,0); - lcd.printf(">"); - lcd.locate(0,1); - wait(0.1); + if(Conf == 1 && ala == 7){ // Configurar alarma 3 apagado. + lcd.cls(); + lcd.locate(0,0); + lcd.printf("Config. Alarma 3"); + lcd.locate(0,1); + lcd.printf("apagado"); + wait(1.5); + lcd.cls(); + i++; + m=0; + } + if(Conf == 1 && ala == 8){ // Configurar alarma 4 encendido. + lcd.cls(); + lcd.locate(0,0); + lcd.printf("Config. Alarma 4"); + lcd.locate(0,1); + lcd.printf("encendido"); + wait(1.5); + lcd.cls(); + i++; + m=0; } - if (button_enco.falling()){ //si se pulsa boton encoder - Lugar++; - m=0; + if(Conf == 1 && ala == 9){ // Configurar alarma 4 apagado. + lcd.cls(); + lcd.locate(0,0); + lcd.printf("Config. Alarma 4"); + lcd.locate(0,1); + lcd.printf("apagado"); + wait(1.5); + lcd.cls(); + i++; + m=0; } - - break; + } - case 1: - switch(i) - { - case 0: - - - if(Conf==0) - { - lcd.cls(); - lcd.locate(0,0); - lcd.printf("Config. Alarma "); - wait(1); - i++; - m=0; - lcd.cls(); - lcd.locate(0,0); - lcd.printf("Dia: "); - tm.date=1; - } - - if(Conf==1) - { - lcd.cls(); - lcd.locate(0,0); - lcd.printf("Config. hora "); - wait(1); - i++; - m=0; - lcd.cls(); - lcd.locate(0,0); - lcd.printf("Dia: "); - - } - - break; - - case 1: - m=wheel.getPulses(); - if (m!=0) - { - tm.date=tm.date+m; - if(tm.date>31) - { - tm.date=31; - } - if(tm.date<1) - { - tm.date=1; - } - - wheel.reset(); - m=0; - } - lcd.locate(5,0); - lcd.printf("%02d",tm.date); + if (i == 1){ // Modificar Día. + //pc.printf("Estoy en el llenado.\n"); + m = wheel.getPulses(); + if (m!=0) { + tm.date = tm.date+m; // modifica el dia, maximo en 31 y min en 1 + if(tm.date > 31){ + tm.date=1; + } + if(tm.date<1){ + tm.date=1; + } + wheel.reset(); + m = 0; + } + lcd.locate(0,0); + lcd.printf("Dia: "); + lcd.locate(5,0); + lcd.printf("%02d",tm.date); + if (button_enco.falling()){ + i++; + m=0; + } + } + + else if (i == 2){ // Modificar Mes. + m = wheel.getPulses(); + if (m!=0) { + tm.mon=tm.mon+m; + if(tm.mon>12){ + tm.mon=1; + } + if(tm.mon<1){ + tm.mon=1; + } + wheel.reset(); + m=0; + } + lcd.locate(0,0); + lcd.printf("Mes: "); + lcd.locate(5,0); + lcd.printf("%02d",tm.mon); + if (button_enco.falling()){ + i++; + m=0; + } + } + + else if (i == 3){ // Modificar Año. + m = wheel.getPulses(); + if (m!=0){ + tm.year=tm.year+m; + if(tm.year>2032){ + tm.year=2016; + } + if(tm.year<2000){ + tm.year=2000; + } + wheel.reset(); + m=0; + } + lcd.locate(0,0); + lcd.printf("Year: "); + lcd.locate(6,0); + lcd.printf("%02d",tm.year); + if (button_enco.falling()){ + i++; + m = 0; + } + } - if (button_enco.falling()) - { - i++; - m=0; - lcd.cls(); - lcd.locate(0,0); - lcd.printf("Mes: "); - //tm.mon=1; - } - - break; - - case 2: - m=wheel.getPulses(); - if (m!=0) - { - tm.mon=tm.mon+m; - if(tm.mon>12) - { - tm.mon=12; - } - if(tm.mon<1) - { - tm.mon=1; - } + else if (i == 4){ // Modificar Hora. + m = wheel.getPulses(); + if (m!=0){ + tm.hour=tm.hour + m; + if(tm.hour>23){ + tm.hour=0; + } + if(tm.hour<0){ + tm.hour=0; + } + wheel.reset(); + m=0; + } + lcd.locate(0,0); + lcd.printf("Hora: "); + lcd.locate(6,0); + lcd.printf("%02d",tm.hour); + lcd.locate(8,0); + lcd.printf(" "); + if (button_enco.falling()){ + i++; + m = 0; + } + } - wheel.reset(); - m=0; - } - lcd.locate(5,0); - lcd.printf("%02d",tm.mon); + else if (i == 5){ // Modificar Minuto. + m = wheel.getPulses(); + + if (m!=0){ + tm.min=tm.min+m; + if(tm.min>59){ + tm.min=0; + } + if(tm.min<0){ + tm.min=0; + } + wheel.reset(); + m = 0; + } + lcd.locate(0,0); + lcd.printf("Minuto: "); + lcd.locate(8,0); + lcd.printf("%02d",tm.min); + if (button_enco.falling()){ + i++; + m = 0; + } + } - if (button_enco.falling()) - { - i++; - m=0; - lcd.cls(); - lcd.locate(0,0); - lcd.printf("Year: "); - - } - - break; - - case 3: - m=wheel.getPulses(); - if (m!=0) - { - tm.year=tm.year+m; - - if(tm.year<2000) - { - tm.year=2000; - } - - wheel.reset(); - m=0; - } - lcd.locate(6,0); - lcd.printf("%02d",tm.year); - - if (button_enco.falling()) - { - i++; - m=0; - lcd.cls(); - lcd.locate(0,0); - lcd.printf("Hora: "); - - } - - break; + else if (i == 6){ // Modificar Segundo. + m = wheel.getPulses(); + if (m!=0){ + tm.sec=tm.sec+m; + if(tm.sec>59){ + tm.sec=0; + } + if(tm.sec<0){ + tm.sec=0; + } + wheel.reset(); + m = 0; + } + lcd.locate(0,0); + lcd.printf("Segundo: "); + lcd.locate(9,0); + lcd.printf("%02d",tm.sec); + + if (button_enco.falling()){ // Empieza a asignar los datos del Reloj o las Alarmas. + if(Conf == 0){ // Asignar datos del Reloj. + rtc.setTime(tm, false, false); + pc.printf("Actualice el Reloj.\n"); + rtc.startClock(); + lcd.cls(); + lcd.locate(0,0); + lcd.printf("Reloj"); + lcd.locate(0,1); + lcd.printf("configurado"); + wait(1.5); + i=0; + m=0; + Lugar = 0; + lcd.cls(); + lcd.locate(0,0); + lcd.printf("--Reloj"); + lcd.locate(0,1); + lcd.printf("--Alarmas"); + ala = 0; + } - case 4: - m=wheel.getPulses(); - - if (m!=0) - { - tm.hour=tm.hour + m; - if(tm.hour>23) - { - tm.hour=23; - } - if(tm.hour<0) - { - tm.hour=0; - } - - wheel.reset(); - m=0; - } - lcd.locate(6,0); - lcd.printf("%02d",tm.hour); - - if (button_enco.falling()) - { - i++; - m=0; - lcd.cls(); - lcd.locate(0,0); - lcd.printf("Minuto: "); - //tm.min=0; - } - - break; + if(Conf == 1 && ala == 2){ // Asignar datos de la Alarma 1 encendido. + A1on = tm; // A la alarma le pone todo eso. + pc.printf("Actualice Alarma 1 on.\n"); + lcd.cls(); + lcd.locate(0,0); + lcd.printf("Alarma 1 (on)"); + lcd.locate(0,1); + lcd.printf("configurada"); + wait(1.5); + i=0; + m=0; + lcd.cls(); + } - case 5: - m=wheel.getPulses(); - if (m!=0) - { - tm.min=tm.min+m; - if(tm.min>59) - { - tm.min=59; - } - if(tm.min<0) - { - tm.min=0; - } - - wheel.reset(); - m=0; - } - lcd.locate(8,0); - lcd.printf("%02d",tm.min); - - if (button_enco.falling()) - { - i++; - m=0; - lcd.cls(); - lcd.locate(0,0); - lcd.printf("Segundo: "); - //tm.sec=0; - } + if(Conf == 1 && ala == 3){ // Asignar datos de la Alarma 1 apagado. + A1off = tm; // A la alarma le pone todo eso. + pc.printf("Actualice Alarma 1 off.\n"); + lcd.cls(); + lcd.locate(0,0); + lcd.printf("Alarma 1 (off)"); + lcd.locate(0,1); + lcd.printf("configurada"); + wait(1.5); + i=0; + m=0; + lcd.cls(); + } - break; - + if(Conf == 1 && ala == 4){ // Asignar datos de la Alarma 2 encendido. + A2on = tm; // A la alarma le pone todo eso. + pc.printf("Actualice Alarma 2 on.\n"); + lcd.cls(); + lcd.locate(0,0); + lcd.printf("Alarma 2 (on)"); + lcd.locate(0,1); + lcd.printf("configurada"); + wait(1.5); + i=0; + m=0; + lcd.cls(); + } - case 6: - m=wheel.getPulses(); - if (m!=0) - { - tm.sec=tm.sec+m; - if(tm.sec>59) - { - tm.sec=59; - } - if(tm.sec<0) - { - tm.sec=0; - } - - wheel.reset(); - m=0; - } - lcd.locate(9,0); - lcd.printf("%02d",tm.sec); - - if (button_enco.falling()) - { - /////////////////// - if(Conf==0) - { - Alarm=tm; - lcd.cls(); - lcd.locate(0,0); - lcd.printf("Alarma config. "); - wait(1); - i=0; - m=0; - Lugar++; - lcd.cls(); - - } - - if(Conf==1) - { - rtc.setTime(tm, false, false); - rtc.startClock(); - lcd.cls(); - lcd.locate(0,0); - lcd.printf("Hora Config. "); - wait(1); - i=0; - m=0; - Lugar=0; - lcd.locate(0,0); - lcd.printf("--Alarma --Hora"); - } - - /////////////////// - } + if(Conf == 1 && ala == 5){ // Asignar datos de la Alarma 2 apagado. + A2off = tm; // A la alarma le pone todo eso. + pc.printf("Actualice Alarma 2 off.\n"); + lcd.cls(); + lcd.locate(0,0); + lcd.printf("Alarma 2 (off)"); + lcd.locate(0,1); + lcd.printf("configurada"); + wait(1.5); + i=0; + m=0; + lcd.cls(); + } - break; - - } - break; - - case 2: - - rtc.getTime(tm); - - if(visual==0) - { + if(Conf == 1 && ala == 6){ // Asignar datos de la Alarma 3 encendido. + A3on = tm; // A la alarma le pone todo eso. + pc.printf("Actualice Alarma 3 on.\n"); + lcd.cls(); + lcd.locate(0,0); + lcd.printf("Alarma 3 (on)"); + lcd.locate(0,1); + lcd.printf("configurada"); + wait(1.5); + i=0; + m=0; + lcd.cls(); + } - lcd.locate(0,0); - lcd.printf("Hora: "); - lcd.locate(8,0); - lcd.printf("%02d:",tm.hour); - lcd.printf("%02d:",tm.min); - lcd.printf("%02d",tm.sec); - - lcd.locate(0,1); - lcd.printf("%02d/",tm.mon); - lcd.printf("%02d/",tm.date); - lcd.printf("%02d",tm.year); - wait(0.1); - ////////// - m=wheel.getPulses(); - if(m!=0) - { - visual=1; - wheel.reset(); + if(Conf == 1 && ala == 7){ // Asignar datos de la Alarma 3 apagado. + A3off = tm; // A la alarma le pone todo eso. + pc.printf("Actualice Alarma 3 off.\n"); + lcd.cls(); + lcd.locate(0,0); + lcd.printf("Alarma 3 (off)"); + lcd.locate(0,1); + lcd.printf("configurada"); + wait(1.5); + i=0; m=0; + lcd.cls(); + } + + if(Conf == 1 && ala == 8){ // Asignar datos de la Alarma 4 encendido. + A4on = tm; // A la alarma le pone todo eso. + pc.printf("Actualice Alarma 4 on.\n"); + lcd.cls(); + lcd.locate(0,0); + lcd.printf("Alarma 4 (on)"); + lcd.locate(0,1); + lcd.printf("configurada"); + wait(1.5); + i=0; + m=0; + lcd.cls(); } - ////// - - } - - if(visual==1) - { - lcd.locate(0,0); - lcd.printf("Alarma: "); - lcd.locate(8,0); - lcd.printf("%02d:",Alarm.hour); - lcd.printf("%02d:",Alarm.min); - lcd.printf("%02d",Alarm.sec); - - - lcd.locate(0,1); - lcd.printf("%02d/",Alarm.mon); - lcd.printf("%02d/",Alarm.date); - lcd.printf("%02d",Alarm.year); - wait(0.1); - //// - m=wheel.getPulses(); - if(m!=0) - { - visual=0; - wheel.reset(); - m=0; - } - - //// - } - - if( (tm.date==Alarm.date)&&(tm.mon==Alarm.mon)&&(tm.year==Alarm.year)&&(tm.hour==Alarm.hour)&&(tm.min==Alarm.min)&&(tm.sec==Alarm.sec) ) - { - Lugar++; - lcd.cls(); - lcd.locate(0,0); - lcd.printf("Alarma Activa!!!"); - wait(1); - lcd.locate(0,0); - lcd.printf("->Desactivar "); - lcd.locate(0,1); - lcd.printf("--Aplazar "); - m=0; - } - - break; - - case 3: - - if(alarma==0) - { - Sonido.write(0.5); - wait(0.2); - Sonido.write(0); - wait(0.2); - Sonido.write(0.5); - wait(0.2); - Sonido.write(0); - wait(0.2); - - m=wheel.getPulses(); - if(m!=0) - { - alarma=1; - m=0; - wheel.reset(); - - lcd.locate(1,0); - lcd.printf("-"); - lcd.locate(1,1); - lcd.printf(">"); - } - } - - /////////////////// - - if(alarma==1) - { - Sonido.write(0.5); - wait(0.2); - Sonido.write(0); - wait(0.2); - Sonido.write(0.5); - wait(0.2); - Sonido.write(0); - wait(0.2); - - m=wheel.getPulses(); - if(m!=0) - { - alarma=0; - m=0; - wheel.reset(); - - lcd.locate(1,0); - lcd.printf(">"); - lcd.locate(1,1); - lcd.printf("-"); - } - } - - if (button_enco.falling()) - { - if(alarma==0) - { - Lugar=0; - wheel.reset(); - m=0; - Sonido.write(0); + if(Conf == 1 && ala == 9){ // Asignar datos de la Alarma 4 apagado. + A4off = tm; // A la alarma le pone todo eso. + pc.printf("Actualice Alarma 4 off.\n"); lcd.cls(); lcd.locate(0,0); - lcd.printf("--Alarma --Hora"); - + lcd.printf("Alarma 4 (off)"); + lcd.locate(0,1); + lcd.printf("configurada"); + wait(1.5); + i=0; + m=0; + lcd.cls(); + Lugar++; } - if(alarma==1) - { - Lugar=2; - rtc.getTime(tm); - if(tm.min!=58) - { - Alarm.min=tm.min+1; - } - if(tm.min==59) - { - Alarm.min=0; - Alarm.hour=tm.hour+1; - } - Alarm.sec=tm.sec; - lcd.cls(); - alarma=0; - - } - + ala++; + } // Cierre de if de mensaje de configuración. + } // Cierre de if de i == 6 + } // Cierre de if de Lugar == 1 + + // Etapa de comparación e impresión. + else if (Lugar == 2){ // La visualización del los tiempos de las alarmas y el reloj varían si se manipula en encoder. + rtc.getTime(tm); + if(visual == 0){ // Imprime el Reloj. + lcd.locate(0,0); + lcd.printf("Hora: "); + lcd.locate(8,0); + lcd.printf("%02d:",tm.hour); + lcd.printf("%02d:",tm.min); + lcd.printf("%02d",tm.sec); + lcd.locate(0,1); + lcd.printf("%02d/",tm.mon); + lcd.printf("%02d/",tm.date); + lcd.printf("%02d",tm.year); + wait(0.1); + m = wheel.getPulses(); + if(m!=0){ + visual++; + wheel.reset(); + m = 0; + } + } + + if(visual == 1){ // Imprime la alarma 1 encendido. + lcd.locate(0,0); + lcd.printf("A1 on: "); + lcd.locate(8,0); + lcd.printf("%02d:",A1on.hour); + lcd.printf("%02d:",A1on.min); + lcd.printf("%02d",A1on.sec); + lcd.locate(0,1); + lcd.printf("%02d/",A1on.mon); + lcd.printf("%02d/",A1on.date); + lcd.printf("%02d",A1on.year); + wait(0.1); + m = wheel.getPulses(); + if(m!=0){ + visual++; + wheel.reset(); + m=0; + } + } + + if(visual == 2){ // Imprime la alarma 1 apagado. + lcd.locate(0,0); + lcd.printf("A1 off: "); + lcd.locate(8,0); + lcd.printf("%02d:",A1off.hour); + lcd.printf("%02d:",A1off.min); + lcd.printf("%02d",A1off.sec); + lcd.locate(0,1); + lcd.printf("%02d/",A1off.mon); + lcd.printf("%02d/",A1off.date); + lcd.printf("%02d",A1off.year); + wait(0.1); + m = wheel.getPulses(); + if(m!=0){ + visual++; + wheel.reset(); + m=0; + } + } + + if(visual == 3){ // Imprime la alarma 2 encendido. + lcd.locate(0,0); + lcd.printf("A2 on: "); + lcd.locate(8,0); + lcd.printf("%02d:",A2on.hour); + lcd.printf("%02d:",A2on.min); + lcd.printf("%02d",A2on.sec); + lcd.locate(0,1); + lcd.printf("%02d/",A2on.mon); + lcd.printf("%02d/",A2on.date); + lcd.printf("%02d",A2on.year); + wait(0.1); + m = wheel.getPulses(); + if(m!=0){ + visual++; + wheel.reset(); + m=0; + } + } + + if(visual == 4){ // Imprime la alarma 2 apagado. + lcd.locate(0,0); + lcd.printf("A2 off: "); + lcd.locate(8,0); + lcd.printf("%02d:",A2off.hour); + lcd.printf("%02d:",A2off.min); + lcd.printf("%02d",A2off.sec); + lcd.locate(0,1); + lcd.printf("%02d/",A2off.mon); + lcd.printf("%02d/",A2off.date); + lcd.printf("%02d",A2off.year); + wait(0.1); + m = wheel.getPulses(); + if(m!=0){ + visual++; + wheel.reset(); + m=0; + } + } + + if(visual == 5){ // Imprime la alarma 3 encendido. + lcd.locate(0,0); + lcd.printf("A3 on: "); + lcd.locate(8,0); + lcd.printf("%02d:",A3on.hour); + lcd.printf("%02d:",A3on.min); + lcd.printf("%02d",A3on.sec); + lcd.locate(0,1); + lcd.printf("%02d/",A3on.mon); + lcd.printf("%02d/",A3on.date); + lcd.printf("%02d",A3on.year); + wait(0.1); + m = wheel.getPulses(); + if(m!=0){ + visual++; + wheel.reset(); + m=0; + } + } + + if(visual == 6){ // Imprime la alarma 3 apagado. + lcd.locate(0,0); + lcd.printf("A3 off: "); + lcd.locate(8,0); + lcd.printf("%02d:",A3off.hour); + lcd.printf("%02d:",A3off.min); + lcd.printf("%02d",A3off.sec); + lcd.locate(0,1); + lcd.printf("%02d/",A3off.mon); + lcd.printf("%02d/",A3off.date); + lcd.printf("%02d",A3off.year); + wait(0.1); + m = wheel.getPulses(); + if(m!=0){ + visual++; + wheel.reset(); + m=0; } - + } + + if(visual == 7){ // Imprime la alarma 4 encendido. + lcd.locate(0,0); + lcd.printf("A4 on: "); + lcd.locate(8,0); + lcd.printf("%02d:",A4on.hour); + lcd.printf("%02d:",A4on.min); + lcd.printf("%02d",A4on.sec); + lcd.locate(0,1); + lcd.printf("%02d/",A4on.mon); + lcd.printf("%02d/",A4on.date); + lcd.printf("%02d",A4on.year); + wait(0.1); + m = wheel.getPulses(); + if(m!=0){ + visual++; + wheel.reset(); + m=0; + } + } + + if(visual == 8){ // Imprime la alarma 4 apagado. + lcd.locate(0,0); + lcd.printf("A4 off: "); + lcd.locate(8,0); + lcd.printf("%02d:",A4off.hour); + lcd.printf("%02d:",A4off.min); + lcd.printf("%02d",A4off.sec); + lcd.locate(0,1); + lcd.printf("%02d/",A4off.mon); + lcd.printf("%02d/",A4off.date); + lcd.printf("%02d",A4off.year); + wait(0.1); + m = wheel.getPulses(); + if(m!=0){ + visual = 0; + wheel.reset(); + m=0; + } + } + + // Compara el Reloj con la alarma 1 encendido. + if( (tm.date==A1on.date)&&(tm.mon==A1on.mon)&&(tm.year==A1on.year)&&(tm.hour==A1on.hour)&&(tm.min==A1on.min)&&(tm.sec==A1on.sec) ){ + ALED1 = 1; // Prende el LED 1. + a1 = 1; + lcd.cls(); + lcd.locate(0,0); + lcd.printf("Alarma 1"); + lcd.locate(0,1); + lcd.printf("activada!"); + wait(2); + lcd.cls(); + visual = 0; + m = 0; + } + + // Compara el Reloj con la alarma 1 apagado. + if( (tm.date == A1off.date)&&(tm.mon == A1off.mon)&&(tm.year == A1off.year)&&(tm.hour == A1off.hour)&&(tm.min == A1off.min)&&(tm.sec == A1off.sec)&&(a1 == 1)){ + ALED1 = 0; // Apaga el LED 1. + a1 = 0; + //Lugar++; + lcd.cls(); + lcd.locate(0,0); + lcd.printf("Alarma 1"); + lcd.locate(0,1); + lcd.printf("desactivada"); + wait(2); + lcd.cls(); + visual = 0; + m = 0; + cont++; + } + + // Compara el Reloj con la alarma 2 encendido. + if( (tm.date == A2on.date)&&(tm.mon == A2on.mon)&&(tm.year == A2on.year)&&(tm.hour == A2on.hour)&&(tm.min == A2on.min)&&(tm.sec == A2on.sec)){ + ALED2= 2; // Prende el LED 2. + a2 = 1; + lcd.cls(); + lcd.locate(0,0); + lcd.printf("Alarma 2"); + lcd.locate(0,1); + lcd.printf("activada!"); + wait(2); + lcd.cls(); + visual = 0; + m = 0; + } - break; - } - } -} \ No newline at end of file + // Compara el Reloj con la alarma 2 apagado. + if( (tm.date == A2off.date)&&(tm.mon == A2off.mon)&&(tm.year == A2off.year)&&(tm.hour == A2off.hour)&&(tm.min == A2off.min)&&(tm.sec == A2off.sec)&&(a2 == 1)){ + ALED2 = 0; // Apaga el LED 2. + a2 = 0; + lcd.cls(); + lcd.locate(0,0); + lcd.printf("Alarma 2"); + lcd.locate(0,1); + lcd.printf("desactivada"); + wait(2); + lcd.cls(); + visual = 0; + m = 0; + cont++; + } + + // Compara el Reloj con la alarma 3 encendido. + if( (tm.date == A3on.date)&&(tm.mon == A3on.mon)&&(tm.year == A3on.year)&&(tm.hour == A3on.hour)&&(tm.min == A3on.min)&&(tm.sec == A3on.sec)){ + ALED3 = 1; // Prende el LED 3. + a3 = 1; + lcd.cls(); + lcd.locate(0,0); + lcd.printf("Alarma 3"); + lcd.locate(0,1); + lcd.printf("activada!"); + wait(2); + lcd.cls(); + visual = 0; + m = 0; + } + + // Compara el Reloj con la alarma 3 apagado. + if( (tm.date == A3off.date)&&(tm.mon == A3off.mon)&&(tm.year == A3off.year)&&(tm.hour == A3off.hour)&&(tm.min == A3off.min)&&(tm.sec == A3off.sec)&&(a3 == 1)){ + ALED3 = 0; // Apaga el LED 3. + a3 = 0; + lcd.cls(); + lcd.locate(0,0); + lcd.printf("Alarma 3"); + lcd.locate(0,1); + lcd.printf("desactivada"); + wait(2); + lcd.cls(); + visual = 0; + m = 0; + cont++; + } + + // Compara el Reloj con la alarma 4 encendido. + if( (tm.date == A4on.date)&&(tm.mon == A4on.mon)&&(tm.year == A4on.year)&&(tm.hour == A4on.hour)&&(tm.min == A4on.min)&&(tm.sec == A4on.sec)){ + ALED4 = 1; // Prende el LED 4. + a4 = 1; + lcd.cls(); + lcd.locate(0,0); + lcd.printf("Alarma 4"); + lcd.locate(0,1); + lcd.printf("activada!"); + wait(2); + lcd.cls(); + visual = 0; + m = 0; + } + + // Compara el Reloj con la alarma 4 apagado. + if( (tm.date == A4off.date)&&(tm.mon == A4off.mon)&&(tm.year == A4off.year)&&(tm.hour == A4off.hour)&&(tm.min == A4off.min)&&(tm.sec == A4off.sec)&&(a4 == 1)){ + ALED4 = 0; // Apaga el LED 4. + a4 = 0; + lcd.cls(); + lcd.locate(0,0); + lcd.printf("Alarma 4"); + lcd.locate(0,1); + lcd.printf("desactivada"); + wait(2); + lcd.cls(); + visual = 0; + m = 0; + cont++; + } + + if(cont == 4){ // Cuando se cumplen todas las Alarmas se regresa al menú principal. + Lugar = 0; + lcd.cls(); + lcd.locate(0,0); + lcd.printf("--Reloj"); // Sin flechitas. + lcd.locate(0,1); + lcd.printf("--Alarmas"); + m = 0; + } + } + } +} \ No newline at end of file