encender y apagar aire acondicionado

Dependencies:   Debounced QEI RTC-DS1307 TextLCD mbed

Fork of Alarma_Tarea_I2C by Sebastian Quintero Zapata

Revision:
1:f79005971379
Parent:
0:640817dd805d
--- a/main.cpp	Mon Nov 23 02:56:33 2015 +0000
+++ b/main.cpp	Thu Nov 30 14:18:25 2017 +0000
@@ -1,317 +1,1588 @@
-// Sebastian Vergara-Sebastian Quintero-Eliana Mejía
 
-// A continuación definimos las librerias necesarias para la ejecución de este programa
 #include "mbed.h"
 #include "Rtc_Ds1307.h"
-#include "DebouncedIn.h" 
+#include "DebouncedIn.h"
 #include "QEI.h"
+#include "TextLCD.h"
 
 // Definimos las salidas digitales a usar en la freescale
-DigitalOut LedVerde(LED2);
-DigitalOut LedRojo(LED1);
-DigitalOut LedAzul(LED3);
-DigitalOut P(PTE20);
+DigitalOut led1(LED2);
+DigitalOut led2(LED1);
+DigitalOut led3(LED3);
 
-//RtcCls rtc(p28, p27, p29, true);
-Rtc_Ds1307 rtc(PTE0,PTE1);
- 
+Rtc_Ds1307 rtc(PTE0, PTE1);
+
 Serial pc(USBTX, USBRX, "pc");
- 
-//Aquí se configuran los puertos del encoder
-QEI wheel (PTD5, PTD0, NC, 100);
- 
-//Se programan los botones 
-DebouncedIn BotonENC(PTA16); // botón propio del encoder 
-DebouncedIn Boton2(PTE21);   // boton utilizado para confirmar
- 
-//Salidas digitales para el uso de leds (verificar funcionamiento de alarma)
-DigitalOut myled(PTE20);
-DigitalOut myled2(PTE5);
+TextLCD lcd(PTB10, PTB11, PTE2, PTE3, PTE4, PTE5); // rs, e, d4-d7
+
+//Aquí se configuran los puertos del encoder***********************************
+QEI  wheel(PTA13, PTD5, NC, 100);
+
+//Se programan los botones
+DebouncedIn botonENC(PTC16); // botón propio del encoder
+DebouncedIn boton2(PTC17);   // boton utilizado para confirmar
 
 //Se inicializan las variables
-int dia=0,mes=0,ano=2015,hh=0,mm=0,ss=0;
+int dia=0,mes=0,ano=2017,hora=0,minutos=0,segundos=0;
 char buffer[128];
 int readptr = 0;
-int start=0;
-int Config;
- 
-int main() {
-    char c;
+int start=0, tiempoen=0;
+int Config, pos=1,phora=1,palarma=1,palarma1=1, palarma2=1,palarma3=1, palarma4=1,palarma5=1,palarma6=1, p=1;
+
+DigitalOut led(PTE31);//al transistor del led infrarrojo pin
+DigitalIn button3(PTC17);//power
+int i,j;
+int t;
+
+//*********************TIEMPO PARA TELEVISOR LG****************************************
+int cabeceraL=8932;
+int cabeceraH=4427;
+int Tdescanso=574;
+int Tlow=570;
+int Thigh=1645;
+int duracion; //duracion de un pulso bajo
+int numb = 33;
+void pwr();
+void repeat();
+int sendcode(int numb, int *code, int cabeceraL, int cabeceraH, int Tdescanso, int Tlow, int Thigh);
+int code[65];
+int dato[65];
+int descanso(int duracion);
+Timer r;
+
+const unsigned pwrc[]= {533,533,1643,536,536,538,538,539,1648,1650,532,1641,1643,1644,1645,
+                        1646,539,541,541,1651,532,534,534,535,1644,1646,1647,540,1650,1640,1641,1644
+                       };
+
+int main()
+{
+
+//defino reloj y alamra
     Rtc_Ds1307::Time_rtc tm = {};
-    
+    Rtc_Ds1307::Time_rtc alarma = {};
+    Rtc_Ds1307::Time_rtc alarma1 = {};
+    Rtc_Ds1307::Time_rtc alarma2 = {};
+    Rtc_Ds1307::Time_rtc alarma3 = {};
+    Rtc_Ds1307::Time_rtc alarma4 = {};
+    Rtc_Ds1307::Time_rtc alarma5 = {};
+    Rtc_Ds1307::Time_rtc alarma6 = {};
+
+//menu inicio muestra la hora y las opcinoes para configrar las alarmas y la
+// hora, para cambiar de opcioon boton del encoder y para seleccionar boton2
+
+reloj:
+
+    lcd.locate(0,1);
+    lcd.printf("->hora    tiempo");
+
+
     while(1) {
-        // Se despliega el set de comandos que se usan en Movil-On para habilitar el reloj
-        set_reloj:
-       
-        pc.printf("*************************************\n");
-        pc.printf("* Menu for RTC Test :               *\n");
-        pc.printf("* read  - reads the clock           *\n");
-        pc.printf("* start - start the clock           *\n");
-        pc.printf("* stop  - stop the clock            *\n");
-        pc.printf("* write - write the clock           *\n");
-        pc.printf("* ena   - enable Square wave output *\n");
-        pc.printf("* dis   - disable square wave outp. *\n");
-        pc.printf("*************************************\n");
-        
-        while( (c = pc.getc()) != '\n') {
-            buffer[readptr++] = c;
-        }
-        buffer[readptr++] = 0;
-        if (strncmp(buffer, "read", 4) == 0) {
-            //  perform read
-            pc.printf("Performing read operation\n");
-            if (rtc.getTime(tm) ) {
-                pc.printf("El tiempo actual es : %02d:%02d:%02d\n", tm.hour, tm.min, tm.sec);
-                pc.printf("La fecha actual es : %s, %02d/%02d/%04d\n", rtc.weekdayToString(tm.wday), tm.mon, tm.date, tm.year);
+
+        rtc.startClock();
+        rtc.getTime(tm);
+        lcd.locate(0,0);
+        lcd.printf("%02d:%02d:%02d\n", tm.hour, tm.min, tm.sec);
+        if (botonENC.falling()) { //cambia la posicion de ingreso de parametros
+            if(pos==2) {
+                pos=1;
+                lcd.locate(0,1);
+                lcd.printf("->");
+                lcd.locate(8,1);
+                lcd.printf("  ");
+            } else if (pos==1) {
+                pos=2;
+                lcd.locate(8,1);
+                lcd.printf("->");
+                lcd.locate(0,1);
+                lcd.printf("  ");
             }
-            
+            wait(1);
         }
-        else if (strncmp(buffer, "write", 5) == 0) {
-            // Se despliega el siguiente menú para configurar fecha y hora actual
-            pc.printf("Ingrese el dia (fecha 0..31)");// Se pide ingresar un número del 0 al 31 equivalente al día del mes
-            pc.scanf("%d", &tm.date);
-            pc.printf("Ingrese el mes (mes 1..12)");  // se pide ingresar un valor entre 1 y 12 que representa el mes  
-            pc.scanf("%d", &tm.mon);
-            pc.printf("Ingrese el ano (ano)");        // a continuación se ingresa el valor del año
-            pc.scanf("%d", &tm.year);
-            pc.printf("Ingrese la hora (horas 0..23)");// Luego se ingresa la hora en formato 24 horas
-            pc.scanf("%d", &tm.hour);
-            pc.printf("Ingrese los minutos (minutos 0..59)");// Se ingresa los minutos
-            pc.scanf("%d", &tm.min);
-            pc.printf("Ingrese los segundos (segundos 0..59)"); //Y por último los segundos (cualquier valor, ya que es díficil su precisión)
-            pc.scanf("%d", &tm.sec);
-            pc.printf("Realizando la operacion... Por favor espere\n"); // Se espera la configuración de esos valores
-            
-            while(pc.readable()) 
-                pc.getc();
-            rtc.setTime(tm, false, false);
-        }
-        else if (strncmp(buffer, "start", 5) == 0) {
-            //  start
-            readptr = 0;
-            pc.printf("Dispositivo Iniciado\n");
-            rtc.startClock();
-            goto set_prev;
-            
-            
-        }
-        else if (strncmp(buffer, "stop", 4) == 0) {
-            //  stop
-            pc.printf("Performing stop operation\n");
-            rtc.stopClock();
-        }
-        else if (strncmp(buffer, "ena", 3) == 0) {
-            int rs;
-            pc.printf("Please specify the frequency : [0 = 1Hz, 1 = 4.096kHz, 2 = 8.192kHz, 3 = 32.768kHz] ");
-            scanf("%d", &rs);
-            pc.printf("Enabling the output with %d option\n", rs);
-            rtc.setSquareWaveOutput(true, (Rtc_Ds1307::SqwRateSelect_t)rs);
-        }
-        else if (strncmp(buffer, "dis", 3) == 0) {
-            pc.printf("Disableing square wave output\n");
-            rtc.setSquareWaveOutput(false, Rtc_Ds1307::RS1Hz);
-        }
-        else {
-            pc.printf("syntax error\n");
-        }
-        readptr = 0;
+        if(boton2.falling()) {
+            if(pos==1) {
+                goto hora;
+            }
+            if(pos==2) {
+                goto alarm;
+            }
         }
 
-        set_prev:
-        pc.printf("Es correcto?  ---- 1 = Si   2 = No\n"); // se habilita esta opción para que el usuario 
-        pc.scanf("%d", &Config);                           // verifique si la configuración ingresada es correcta o no
-        
-        if (Config ==2){                // Si se presiona 2, hubo errores en la configuración
-            readptr = 0;
-            goto set_reloj;             // se regresa a la función set_reloj para volver a configurar
-            }
-        
-                  
-        else if (Config ==1){           // se si presiona 1, la configuración fue correcta
-             
-             pc.printf("Dispositivo Configurado Correctamente  Espere ....\n"); // se espera un tiempo
-             wait(5);
-             goto set_alarma;           // y se va a la función correspondiente a la alarma
+//Revisar si hay alguna alarma que debe activarse*******************************************************************************
+        if( (tm.date==alarma.date)&&(tm.mon==alarma.mon)&&(tm.year==alarma.year)&&(tm.hour==alarma.hour)&&(tm.min==alarma.min)&&(tm.sec==alarma.sec) ) {
+            pwr();
+            r.start();
+            led1=1;
+            wait(0.5);
+            led1=0;
+        }
+        if( (tm.date==alarma1.date)&&(tm.mon==alarma1.mon)&&(tm.year==alarma1.year)&&(tm.hour==alarma1.hour)&&(tm.min==alarma1.min)&&(tm.sec==alarma1.sec) ) {
+            pwr();
+            r.start();
+            led1=1;
+            wait(0.5);
+            led1=0;
+        }
+        if( (tm.date==alarma2.date)&&(tm.mon==alarma2.mon)&&(tm.year==alarma2.year)&&(tm.hour==alarma2.hour)&&(tm.min==alarma2.min)&&(tm.sec==alarma2.sec) ) {
+            pwr();
+            r.start();
+            led1=1;
+            wait(0.5);
+            led1=0;
+        }
+        if( (tm.date==alarma3.date)&&(tm.mon==alarma3.mon)&&(tm.year==alarma3.year)&&(tm.hour==alarma3.hour)&&(tm.min==alarma3.min)&&(tm.sec==alarma3.sec) ) {
+            pwr();
+            r.start();
+            led1=1;
+            wait(0.5);
+            led1=0;
         }
-        else {
-            pc.printf("syntax error\n");
-            goto set_prev;
+        if( (tm.date==alarma4.date)&&(tm.mon==alarma4.mon)&&(tm.year==alarma4.year)&&(tm.hour==alarma4.hour)&&(tm.min==alarma4.min)&&(tm.sec==alarma4.sec) ) {
+            pwr();
+            r.start();
+            led1=1;
+            wait(0.5);
+            led1=0;
+        }
+        if( (tm.date==alarma5.date)&&(tm.mon==alarma5.mon)&&(tm.year==alarma5.year)&&(tm.hour==alarma5.hour)&&(tm.min==alarma5.min)&&(tm.sec==alarma5.sec) ) {
+            pwr();
+            r.start();
+            led1=1;
+            wait(0.5);
+            led1=0;
+        }
+        if( (tm.date==alarma6.date)&&(tm.mon==alarma6.mon)&&(tm.year==alarma6.year)&&(tm.hour==alarma6.hour)&&(tm.min==alarma6.min)&&(tm.sec==alarma6.sec) ) {
+            pwr();
+            r.start();
+            led1=1;
+            wait(0.5);
+            led1=0;
+        }
+        if((r.read()*10000)>tiempoen*60*10000) { //comparo el tiempo de encendido con el del timer se multiplica por 10000 para evitar aproximaciones
+            pwr();
+            r.reset();
+            r.stop();
+            led2=1;
+            wait(0.5);
+            led2=0;
         }
 
-        // Aquí se encuentra la función ALARMA, en la cual se configura los valores para la activación de esta
-        set_alarma:             
-        pc.printf("******* Configuracion Alarma *******\n");
-        
-        
-        set_dia:
-        while(1){
-         
-            dia=dia+wheel.getPulses();
-            wheel.reset();
-     
-            if(dia>=31){        //En este if, se garantiza que los días esten entre 0 y 31
-                dia=31;
+    }
+
+//configuro la hora y la fecha**************************************************
+hora:
+    lcd.cls();
+    if (pos==1) {
+        while(phora==1) {
+            dia=wheel.getPulses();
+            lcd.locate(0,0);
+            lcd.printf("dia(fecha 0..31)");// Se pide ingresar un número del 0
+            // al 31 equivalente al día del mess
+            if(dia>31) {
+                dia=0;
+                wheel.reset();
+            }
+            if(dia<0) {
+                dia=0;
+                wheel.reset();
+            }
+            lcd.locate(5,1);
+            lcd.printf(" ");
+            lcd.locate(0,1);
+            lcd.printf("dia=%d",dia);
+
+            if(boton2.falling()) {
+                phora=2;
+                tm.date=dia;
+                wheel.reset();
+                lcd.cls();
+            }
+            wait(0.5);
+        }
+        while(phora==2) {
+            mes=wheel.getPulses();
+            lcd.locate(0,0);
+            lcd.printf("mes (1...,12");// Se pide ingresar un número del 1 al 12
+            if(mes<0) {
+                mes=0;
+                wheel.reset();
             }
-            else if (dia<=0){
-             dia=0;
+            if(mes>12) {
+                mes=0;
+                wheel.reset();
+            }
+            lcd.locate(5,1);
+            lcd.printf(" ");
+            lcd.locate(0,1);
+            lcd.printf("mes=%d",mes);
+
+            if(boton2.falling()) {
+                phora=3;
+                tm.mon=mes;
+                wheel.reset();
+                lcd.cls();
+            }
+            wait(0.5);
+        }
+        while(phora==3) {
+            ano=2017+wheel.getPulses();
+            lcd.locate(0,0);
+            lcd.printf("año");// Se pide ingresar un número del 2017 al ....
+            lcd.locate(0,1);
+            lcd.printf("año=%d",ano);
+            if(ano<2017) {
+                ano=2017;
+                wheel.reset();
+            }
+            if(boton2.falling()) {
+                phora=4;
+                tm.year=ano;
+                wheel.reset();
+                lcd.cls();
+            }
+        }
+        while(phora==4) {
+            hora=wheel.getPulses();
+            lcd.locate(0,0);
+            lcd.printf("hora formato 24");// Se pide ingresar la hora en formato 24 horas
+            if(hora<0) {
+                hora=0;
+                wheel.reset();
             }
-     pc.printf(">Dia=%d    Mes=%d    Ano=%d    Hora=%d    Min=%d    Seg=%d\n ",dia,mes,ano,hh,mm,ss);
-    
-    // A continuación se programan los botones del encoder para configurar con este las diferentes necesidades de la alarma
-    if(BotonENC.falling()){
-        goto set_mes;
+            if(hora>23) {
+                hora=0;
+                wheel.reset();
+            }
+            lcd.locate(6,1);
+            lcd.printf("  ");
+            lcd.locate(0,1);
+            lcd.printf("hora=%d",hora);
+
+            if(boton2.falling()) {
+                phora=5;
+                tm.hour=hora;
+                wheel.reset();
+                lcd.cls();
+            }
+            wait(1);
         }
-    if(Boton2.falling()){
-        goto set_comp;
+        while(phora==5) {
+            minutos=wheel.getPulses();
+            lcd.locate(0,0);
+            lcd.printf("minutos");// Se pide ingresar los minutos
+            if(minutos<0) {
+                hora=0;
+                wheel.reset();
+            }
+            if(minutos>59) {
+                minutos=0;
+                wheel.reset();
+            }
+            lcd.locate(9,1);
+            lcd.printf(" ");
+            lcd.locate(0,1);
+            lcd.printf("minutos=%d",minutos);
+
+            if(boton2.falling()) {
+                phora=6;
+                tm.min=minutos;
+                wheel.reset();
+                lcd.cls();
+            }
+            wait(1);
+        }
+        while(phora==6) {
+            segundos=wheel.getPulses();
+            lcd.locate(0,0);
+            lcd.printf("segundos");// Se pide ingresar los minutos
+            if(segundos<0) {
+                segundos=0;
+                wheel.reset();
+            }
+            if(segundos>59) {
+                segundos=0;
+                wheel.reset();
+            }
+            lcd.locate(9,1);
+            lcd.printf(" ");
+            lcd.locate(0,1);
+            lcd.printf("segundos=%d",segundos);
+
+            if(boton2.falling()) {
+                tm.sec=segundos;
+                wheel.reset();
+                lcd.cls();
+                pos=1;
+                phora=1;
+                rtc.setTime(tm, false, false); ////////////////////////////////
+                //////////////////////////////////////////////
+                goto reloj;
+            }
+            wait(1);
+        }
     }
-           
-            
-    }
-        
-        set_mes:
-        while(1){
-         
-            mes=mes+wheel.getPulses();
-            wheel.reset();
-     
-            if(mes>=12){                // Se garantiza que el valor del mes se encuentre entre los valores 0 y 12
-                mes=12;
+
+// se configuran las alarmas ***************************************************
+alarm:
+    while(1) {
+        lcd.cls();
+        while(p==1) {
+            lcd.locate(0,0);
+            lcd.printf("P1:%02d:%02d:%02d\n ", alarma.hour, alarma.min, alarma.sec);
+            lcd.locate(0,1);
+            lcd.printf("ENC-conf B2-sig"); //boton 1 (enconcoder) para configurar la
+            // alarama y boton 2 para ver siguiente alarma
+            if (botonENC.falling()) {
+                goto alarmac;
             }
-            else if (mes<=0){
-             mes=0;
+            if (boton2.falling()) {
+                p++;
+            }
+            wait(0.5);
+        }
+        while(p==2) {
+            lcd.locate(0,0);
+            lcd.printf("P2:%02d:%02d:%02d\n ", alarma1.hour, alarma1.min, alarma1.sec);
+            lcd.locate(0,1);
+            lcd.printf("ENC-conf B2-sig"); //boton 1 (enconcoder) para configurar la
+            // alarama y boton 2 para ver siguiente alarma
+            if (botonENC.falling()) {
+                goto alarma1c;
+            }
+            if (boton2.falling()) {
+                p++;
+            }
+            wait(0.5);
+        }
+        while(p==3) {
+            lcd.locate(0,0);
+            lcd.printf("P3:%02d:%02d:%02d\n",alarma2.hour, alarma2.min, alarma2.sec);
+            lcd.locate(0,1);
+            lcd.printf("ENC-conf B2-sig"); //boton 1 (enconcoder) para configurar la
+            // alarama y boton 2 para ver siguiente alarma
+            if (botonENC.falling()) {
+                goto alarma2c;
+            }
+            if (boton2.falling()) {
+                p++;
+            }
+            wait(0.5);
+        }
+        while(p==4) {
+            lcd.locate(0,0);
+            lcd.printf("P4:%02d:%02d:%02d\n", alarma3.hour, alarma3.min, alarma3.sec);
+            lcd.locate(0,1);
+            lcd.printf("ENC-conf B2-sig"); //boton 1 (enconcoder) para configurar la
+            // alarama y boton 2 para ver siguiente alarma
+            if (botonENC.falling()) {
+                goto alarma3c;
+            }
+            if (boton2.falling()) {
+                p++;
             }
-     pc.printf(" Dia=%d   >Mes=%d    Ano=%d    Hora=%d    Min=%d    Seg=%d\n ",dia,mes,ano,hh,mm,ss);
-    
-    
-    if(BotonENC.falling()){
-        goto set_ano;
+            wait(0.5);
+        }
+        while(p==5) {
+            lcd.locate(0,0);;
+            lcd.printf("P5:%02d:%02d:%02d\n", alarma4.hour, alarma4.min, alarma4.sec);
+            lcd.locate(0,1);
+            lcd.printf("ENC-conf B2-sig"); //boton 1 (enconcoder) para configurar la
+            // alarama y boton 2 para ver siguiente alarma
+            if (botonENC.falling()) {
+                goto alarma4c;
+            }
+            if (boton2.falling()) {
+                p++;
+            }
+            wait(0.5);
+        }
+        while(p==6) {
+            lcd.locate(0,0);;
+            lcd.printf("P6:%02d:%02d:%02d\n", alarma5.hour, alarma5.min, alarma5.sec);
+            lcd.locate(0,1);
+            lcd.printf("ENC-conf B2-sig"); //boton 1 (enconcoder) para configurar la
+            // alarama y boton 2 para ver siguiente alarma
+            if (botonENC.falling()) {
+                goto alarma5c;
+            }
+            if (boton2.falling()) {
+                p++;
+            }
+            wait(0.5);
+        }
+        while(p==7) {
+            lcd.locate(0,0);
+            lcd.printf("P7:%02d:%02d:%02d\n", alarma6.hour, alarma6.min, alarma6.sec);
+            lcd.locate(0,1);
+            lcd.printf("ENC-conf B2-sig"); //boton 1 (enconcoder) para configurar la
+            // alarama y boton 2 para ver siguiente alarma
+            if (botonENC.falling()) {
+                goto alarma6c;
+            }
+            if (boton2.falling()) {
+                p=1;
+                lcd.cls();
+                goto reloj;
+            }
+            wait(0.5);
+        }
     }
-    if(Boton2.falling()){
-        goto set_comp;
-    }
-           
-            
-    }
-     set_ano:
-        while(1){
-         
-            ano=ano+wheel.getPulses();
+
+alarmac:
+    lcd.cls();
+    while(palarma==1) {
+        alarma.date=wheel.getPulses();
+        lcd.locate(0,0);
+        lcd.printf("dia P1");// Se pide ingresar un número del 0 al 31 equivalente al día del mess
+        if(alarma.date>31) {
+            alarma.date=0;
             wheel.reset();
-     
-            if(ano>=2030){              //Se programan alarmas para los próximos 15 años (entre los años 2015 y 2030)
-                ano=2030;
-            }
-            else if (ano<=2015){
-             ano=2015;
-            }
-     pc.printf(" Dia=%d    Mes=%d   >Ano=%d    Hora=%d    Min=%d    Seg=%d\n ",dia,mes,ano,hh,mm,ss);
-    
-    
-    if(BotonENC.falling()){
-        goto set_hh;
+        }
+        if(alarma.date<0) {
+            alarma.date=0;
+            wheel.reset();
+        }
+        lcd.locate(5,1);
+        lcd.printf(" ");
+        lcd.locate(0,1);
+        lcd.printf("dia=%d",alarma.date);
+
+        if(boton2.falling()) {
+            palarma=2;
+            wheel.reset();
+            lcd.cls();
+        }
+        wait(0.5);
     }
-    if(Boton2.falling()){
-        goto set_comp;
-    }       
-            
+    while(palarma==2) {
+        alarma.mon=wheel.getPulses();
+        lcd.locate(0,0);
+        lcd.printf("mes P1");// Se pide ingresar un número del 1 al 12
+        if(alarma.mon<0) {
+            alarma.mon=0;
+            wheel.reset();
+        }
+        if(alarma.mon>12) {
+            alarma.mon=0;
+            wheel.reset();
+        }
+        lcd.locate(5,1);
+        lcd.printf(" ");
+        lcd.locate(0,1);
+        lcd.printf("mes=%d",alarma.mon);
+
+        if(boton2.falling()) {
+            palarma=3;
+            wheel.reset();
+            lcd.cls();
+        }
+        wait(0.5);
     }
-    set_hh:
-        while(1){
-         
-            hh=hh+wheel.getPulses();
+    while(palarma==3) {
+        alarma.year=2017+wheel.getPulses();
+        lcd.locate(0,0);
+        lcd.printf("año P1");// Se pide ingresar un número del 2017 al ....
+        lcd.locate(0,1);
+        lcd.printf("año=%d",alarma.year);
+        if(alarma.year<2017) {
+            alarma.year=2017;
+            wheel.reset();
+        }
+        if(boton2.falling()) {
+            palarma=4;
+            wheel.reset();
+            lcd.cls();
+        }
+        wait(0.5);
+    }
+    while(palarma==4) {
+        alarma.hour=wheel.getPulses();
+        lcd.locate(0,0);
+        lcd.printf("hora P1");// Se pide ingresar la hora en formato 24 horas
+        if(alarma.hour<0) {
+            alarma.hour=0;
+            wheel.reset();
+        }
+        if(alarma.hour>23) {
+            alarma.hour=0;
             wheel.reset();
-     
-            if(hh>=23){         // Las horas deben encontrarse siempre en el rango de 0 a 23 (La hora 24 = La hora 0)
-                hh=23;
-            }
-            else if (hh<=0){
-             hh=0;
-            }
-     pc.printf(" Dia=%d    Mes=%d    Ano=%d   >Hora=%d    Min=%d    Seg=%d\n ",dia,mes,ano,hh,mm,ss);
-    
-    
-    if(BotonENC.falling()){
-        goto set_mm;
+        }
+        lcd.locate(6,1);
+        lcd.printf("  ");
+        lcd.locate(0,1);
+        lcd.printf("hora=%d",alarma.hour);
+
+        if(boton2.falling()) {
+            palarma=5;
+            wheel.reset();
+            lcd.cls();
+        }
+        wait(0.5);
+    }
+    while(palarma==5) {
+        alarma.min=wheel.getPulses();
+        lcd.locate(0,0);
+        lcd.printf("minutos P1");// Se pide ingresar los minutos
+        if(alarma.min<0) {
+            alarma.min=0;
+            wheel.reset();
+        }
+        if(alarma.min>59) {
+            alarma.min=0;
+            wheel.reset();
+        }
+        lcd.locate(9,1);
+        lcd.printf(" ");
+        lcd.locate(0,1);
+        lcd.printf("minutos=%d",alarma.min);
+
+        if(boton2.falling()) {
+            palarma=6;
+            wheel.reset();
+            lcd.cls();
+        }
+        wait(0.5);
     }
-    if(Boton2.falling()){
-        goto set_comp;
+    while(palarma==6) {
+        alarma.sec=wheel.getPulses();
+        lcd.locate(0,0);
+        lcd.printf("segundos P1");// Se pide ingresar los minutos
+        if(alarma.sec<0) {
+            alarma.sec=0;
+            wheel.reset();
+        }
+        if(alarma.sec>59) {
+            alarma.sec=0;
+            wheel.reset();
+        }
+        lcd.locate(9,1);
+        lcd.printf(" ");
+        lcd.locate(0,1);
+        lcd.printf("segundos=%d",alarma.sec);
+
+        if(boton2.falling()) {
+            wheel.reset();
+            palarma=7;
+            lcd.cls();
+        }
+        wait(0.5);
     }
-           
-            
+    while(palarma==7) {
+        tiempoen=wheel.getPulses();
+        if (tiempoen<0) {
+            tiempoen=0;
+        }
+        lcd.locate(0,0);
+        lcd.printf("tiempo encendido (minutos)");
+        lcd.locate(0,1);
+        lcd.printf("%i minutos",tiempoen);
+
+        if(boton2.falling()) {
+            wheel.reset();
+            lcd.cls();
+            palarma=1;
+            goto alarm;
+        }
+        wait(0.5);
     }
-     set_mm:
-        while(1){
-         
-            mm=mm+wheel.getPulses();
+
+alarma1c:
+    lcd.cls();
+    while(palarma1==1) {
+        alarma1.date=wheel.getPulses();
+        lcd.locate(0,0);
+        lcd.printf("dia P2");// Se pide ingresar un número del 0 al 31 equivalente al día del mess
+        if(alarma1.date>31) {
+            alarma1.date=0;
+            wheel.reset();
+        }
+        if(alarma1.date<0) {
+            alarma1.date=0;
+            wheel.reset();
+        }
+        lcd.locate(5,1);
+        lcd.printf(" ");
+        lcd.locate(0,1);
+        lcd.printf("dia=%d",alarma1.date);
+
+        if(boton2.falling()) {
+            palarma1=2;
+            wheel.reset();
+            lcd.cls();
+        }
+        wait(0.5);
+    }
+    while(palarma1==2) {
+        alarma1.mon=wheel.getPulses();
+        lcd.locate(0,0);
+        lcd.printf("mes P2");// Se pide ingresar un número del 1 al 12
+        if(alarma1.mon<0) {
+            alarma1.mon=0;
+            wheel.reset();
+        }
+        if(alarma1.mon>12) {
+            alarma1.mon=0;
             wheel.reset();
-     
-            if(mm>=59){         //Minutos siempre positivos entre 0 y 59 (El minuto 60 es igual al 0)
-                mm=59;
-            }
-            else if (mm<=0){
-             mm=0;
-            }
-     pc.printf(" Dia=%d    Mes=%d    Ano=%d    Hora=%d   >Min=%d    Seg=%d\n ",dia,mes,ano,hh,mm,ss);
-    
-    
-    if(BotonENC.falling()){
-        goto set_ss;
+        }
+        lcd.locate(5,1);
+        lcd.printf(" ");
+        lcd.locate(0,1);
+        lcd.printf("mes=%d",alarma1.mon);
+
+        if(boton2.falling()) {
+            palarma1=3;
+            wheel.reset();
+            lcd.cls();
+        }
+        wait(0.5);
     }
-    if(Boton2.falling()){
-        goto set_comp;
+    while(palarma1==3) {
+        alarma1.year=2017+wheel.getPulses();
+        lcd.locate(0,0);
+        lcd.printf("año P2");// Se pide ingresar un número del 2017 al ....
+        lcd.locate(0,1);
+        lcd.printf("año=%d",alarma1.year);
+        if(alarma1.year<2017) {
+            alarma1.year=2017;
+            wheel.reset();
+        }
+        if(boton2.falling()) {
+            palarma1=4;
+            wheel.reset();
+            lcd.cls();
+        }
+        wait(0.5);
     }
-           
-            
+    while(palarma1==4) {
+        alarma1.hour=wheel.getPulses();
+        lcd.locate(0,0);
+        lcd.printf("hora P2");// Se pide ingresar la hora en formato 24 horas
+        if(alarma1.hour<0) {
+            alarma1.hour=0;
+            wheel.reset();
+        }
+        if(alarma1.hour>23) {
+            alarma1.hour=0;
+            wheel.reset();
+        }
+        lcd.locate(6,1);
+        lcd.printf("  ");
+        lcd.locate(0,1);
+        lcd.printf("hora=%d",alarma1.hour);
+
+        if(boton2.falling()) {
+            palarma1=5;
+            wheel.reset();
+            lcd.cls();
+        }
+        wait(0.5);
     }
-    
-    set_ss:
-        while(1){
-         
-            ss=ss+wheel.getPulses();
+    while(palarma1==5) {
+        alarma1.min=wheel.getPulses();
+        lcd.locate(0,0);
+        lcd.printf("minutos P2");// Se pide ingresar los minutos
+        if(alarma1.min<0) {
+            alarma1.min=0;
+            wheel.reset();
+        }
+        if(alarma1.min>59) {
+            alarma1.min=0;
+            wheel.reset();
+        }
+        lcd.locate(9,1);
+        lcd.printf(" ");
+        lcd.locate(0,1);
+        lcd.printf("minutos=%d",alarma1.min);
+
+        if(boton2.falling()) {
+            palarma1=6;
+            wheel.reset();
+            lcd.cls();
+        }
+        wait(0.5);
+    }
+    while(palarma1==6) {
+        alarma1.sec=wheel.getPulses();
+        lcd.locate(0,0);
+        lcd.printf("segundos P2");// Se pide ingresar los minutos
+        if(alarma1.sec<0) {
+            alarma1.sec=0;
             wheel.reset();
-            
-            if(ss>=59){         //De nuevo, en un minuto hay 60 segundos ( partiendo del 0 al 59)
-                ss=59;
-            }
-            else if (ss<=0){
-             ss=0;
-            }
-     pc.printf(" Dia=%d    Mes=%d    Ano=%d    Hora=%d    Min=%d   >Seg=%d\n ",dia,mes,ano,hh,mm,ss);
-    
-    
-    if(BotonENC.falling()){
-        goto set_dia;
+        }
+        if(alarma1.sec>59) {
+            alarma1.sec=0;
+            wheel.reset();
+        }
+        lcd.locate(9,1);
+        lcd.printf(" ");
+        lcd.locate(0,1);
+        lcd.printf("segundos=%d",alarma1.sec);
+
+        if(boton2.falling()) {
+            wheel.reset();
+            lcd.cls();
+            palarma1=7;
+        }
+        wait(0.5);
     }
-    if(Boton2.falling()){
-        goto set_comp;
+    while(palarma1==7) {
+        tiempoen=wheel.getPulses();
+        lcd.locate(0,0);
+        lcd.printf("tiempo encendido (minutos)");
+        lcd.locate(0,1);
+        lcd.printf("%i minutos",tiempoen);
+
+        if(boton2.falling()) {
+            wheel.reset();
+            lcd.cls();
+            palarma1=1;
+            goto alarm;
+        }
+        wait(0.5);
     }
-           
-            
+alarma2c:
+    lcd.cls();
+    while(palarma2==1) {
+        alarma2.date=wheel.getPulses();
+        lcd.locate(0,0);
+        lcd.printf("dia P3");// Se pide ingresar un número del 0 al 31 equivalente al día del mess
+        if(alarma2.date>31) {
+            alarma2.date=0;
+            wheel.reset();
+        }
+        if(alarma2.date<0) {
+            alarma2.date=0;
+            wheel.reset();
+        }
+        lcd.locate(5,1);
+        lcd.printf(" ");
+        lcd.locate(0,1);
+        lcd.printf("dia=%d",alarma2.date);
+
+        if(boton2.falling()) {
+            palarma2=2;
+            wheel.reset();
+            lcd.cls();
+        }
+        wait(0.5);
+    }
+    while(palarma2==2) {
+        alarma1.mon=wheel.getPulses();
+        lcd.locate(0,0);
+        lcd.printf("mes P3");// Se pide ingresar un número del 1 al 12
+        if(alarma2.mon<0) {
+            alarma2.mon=0;
+            wheel.reset();
+        }
+        if(alarma2.mon>12) {
+            alarma2.mon=0;
+            wheel.reset();
+        }
+        lcd.locate(5,1);
+        lcd.printf(" ");
+        lcd.locate(0,1);
+        lcd.printf("mes=%d",alarma2.mon);
+
+        if(boton2.falling()) {
+            palarma2=3;
+            wheel.reset();
+            lcd.cls();
+        }
+        wait(0.5);
     }
-    
-    // Luego de tener totalmente ingresador los datos de la alarma, se ingresa a la sección donde se compara
-    // la fecha y hora actual con la fecha y hora de la alarma programada
-    set_comp:
-    
-    pc.printf("***Datos ingresados para alarma****\n");
-    pc.printf(" Dia=%d    Mes=%d    Ano=%d    Hora=%d    Min=%d    Seg=%d\n ",dia,mes,ano,hh,mm,ss);
-    
-    while(1){
-       rtc.getTime(tm);
-       pc.printf("El tiempo actual es : %02d:%02d:%02d\n", tm.hour, tm.min, tm.sec);
-       pc.printf("La fecha actual es %s, %02d/%02d/%04d\n", rtc.weekdayToString(tm.wday), tm.mon, tm.date, tm.year);
-    if(tm.hour>=hh && tm.min>=mm &&tm.sec>=ss && tm.mon>=mes && tm.date>=dia && tm.year>=ano){
-        myled=0;        // En estas líneas de código se busca mostrar el funcionamiento de la alarma cuando 
-        myled2=1;       // esta es encendida mediante el encendido y apagado alternado de dos diodos leds.
-        wait(0.5);      // con un pequeño tiempo de diferencia para lograr dicho efecto.
-        myled=1;
-        myled2=0;
+    while(palarma2==3) {
+        alarma2.year=2017+wheel.getPulses();
+        lcd.locate(0,0);
+        lcd.printf("año P3");// Se pide ingresar un número del 2017 al ....
+        lcd.locate(0,1);
+        lcd.printf("año=%d",alarma2.year);
+        if(alarma2.year<2017) {
+            alarma2.year=2017;
+            wheel.reset();
+        }
+        if(boton2.falling()) {
+            palarma2=4;
+            wheel.reset();
+            lcd.cls();
+        }
+        wait(0.5);
+    }
+    while(palarma2==4) {
+        alarma2.hour=wheel.getPulses();
+        lcd.locate(0,0);
+        lcd.printf("hora P3");// Se pide ingresar la hora en formato 24 horas
+        if(alarma2.hour<0) {
+            alarma2.hour=0;
+            wheel.reset();
+        }
+        if(alarma2.hour>23) {
+            alarma2.hour=0;
+            wheel.reset();
+        }
+        lcd.locate(6,1);
+        lcd.printf("  ");
+        lcd.locate(0,1);
+        lcd.printf("hora=%d",alarma2.hour);
+
+        if(boton2.falling()) {
+            palarma2=5;
+            wheel.reset();
+            lcd.cls();
+        }
+        wait(0.5);
+    }
+    while(palarma2==5) {
+        alarma2.min=wheel.getPulses();
+        lcd.locate(0,0);
+        lcd.printf("minutos P3");// Se pide ingresar los minutos
+        if(alarma2.min<0) {
+            alarma2.min=0;
+            wheel.reset();
+        }
+        if(alarma2.min>59) {
+            alarma2.min=0;
+            wheel.reset();
+        }
+        lcd.locate(9,1);
+        lcd.printf(" ");
+        lcd.locate(0,1);
+        lcd.printf("minutos=%d",alarma2.min);
+
+        if(boton2.falling()) {
+            palarma2=6;
+            wheel.reset();
+            lcd.cls();
+        }
         wait(0.5);
     }
-    else {
-        myled=1;
+    while(palarma2==6) {
+        alarma2.sec=wheel.getPulses();
+        lcd.locate(0,0);
+        lcd.printf("segundos P3");// Se pide ingresar los minutos
+        if(alarma2.sec<0) {
+            alarma2.sec=0;
+            wheel.reset();
+        }
+        if(alarma2.sec>59) {
+            alarma2.sec=0;
+            wheel.reset();
+        }
+        lcd.locate(9,1);
+        lcd.printf(" ");
+        lcd.locate(0,1);
+        lcd.printf("segundos=%d",alarma2.sec);
+
+        if(boton2.falling()) {
+            tm.sec=segundos;
+            wheel.reset();
+            lcd.cls();
+            palarma2=7;
+        }
+        wait(0.5);
+    }
+    while(palarma2==7) {
+        tiempoen=wheel.getPulses();
+        if (tiempoen<0) {
+            tiempoen=0;
+            wheel.reset();
+        }
+        lcd.locate(0,0);
+        lcd.printf("tiempo encendido (minutos)");
+        lcd.locate(0,1);
+        lcd.printf("%i minutos",tiempoen);
+
+        if(boton2.falling()) {
+            wheel.reset();
+            lcd.cls();
+            palarma2=1;
+            goto alarm;
+        }
+        wait(0.5);
+    }
+alarma3c:
+    lcd.cls();
+    while(palarma3==1) {
+        alarma3.date=wheel.getPulses();
+        lcd.locate(0,0);
+        lcd.printf("dia P4");// Se pide ingresar un número del 0 al 31 equivalente al día del mess
+        if(alarma3.date>31) {
+            alarma3.date=0;
+            wheel.reset();
+        }
+        if(alarma3.date<0) {
+            alarma3.date=0;
+            wheel.reset();
+        }
+        lcd.locate(5,1);
+        lcd.printf(" ");
+        lcd.locate(0,1);
+        lcd.printf("dia=%d",alarma3.date);
+
+        if(boton2.falling()) {
+            palarma3=2;
+            wheel.reset();
+            lcd.cls();
+        }
+        wait(0.5);
+    }
+    while(palarma3==2) {
+        alarma3.mon=wheel.getPulses();
+        lcd.locate(0,0);
+        lcd.printf("mes P4");// Se pide ingresar un número del 1 al 12
+        if(alarma3.mon<0) {
+            alarma3.mon=0;
+            wheel.reset();
+        }
+        if(alarma3.mon>12) {
+            alarma3.mon=0;
+            wheel.reset();
+        }
+        lcd.locate(5,1);
+        lcd.printf(" ");
+        lcd.locate(0,1);
+        lcd.printf("mes=%d",alarma3.mon);
+
+        if(boton2.falling()) {
+            palarma3=3;
+            wheel.reset();
+            lcd.cls();
+        }
+        wait(0.5);
+    }
+    while(palarma3==3) {
+        alarma3.year=2017+wheel.getPulses();
+        lcd.locate(0,0);
+        lcd.printf("año P4");// Se pide ingresar un número del 2017 al ....
+        lcd.locate(0,1);
+        lcd.printf("año=%d",alarma3.year);
+        if(alarma3.year<2017) {
+            alarma3.year=2017;
+            wheel.reset();
+        }
+        if(boton2.falling()) {
+            palarma3=4;
+            wheel.reset();
+            lcd.cls();
+        }
+        wait(0.5);
+    }
+    while(palarma3==4) {
+        alarma3.hour=wheel.getPulses();
+        lcd.locate(0,0);
+        lcd.printf("hora P4");// Se pide ingresar la hora en formato 24 horas
+        if(alarma3.hour<0) {
+            alarma3.hour=0;
+            wheel.reset();
+        }
+        if(alarma3.hour>23) {
+            alarma3.hour=0;
+            wheel.reset();
+        }
+        lcd.locate(6,1);
+        lcd.printf("  ");
+        lcd.locate(0,1);
+        lcd.printf("hora=%d",alarma3.hour);
+
+        if(boton2.falling()) {
+            palarma3=5;
+            wheel.reset();
+            lcd.cls();
+        }
+        wait(0.5);
+    }
+    while(palarma3==5) {
+        alarma3.min=wheel.getPulses();
+        lcd.locate(0,0);
+        lcd.printf("minutos P4");// Se pide ingresar los minutos
+        if(alarma3.min<0) {
+            alarma3.min=0;
+            wheel.reset();
+        }
+        if(alarma3.min>59) {
+            alarma3.min=0;
+            wheel.reset();
+        }
+        lcd.locate(9,1);
+        lcd.printf(" ");
+        lcd.locate(0,1);
+        lcd.printf("minutos=%d",alarma3.min);
+
+        if(boton2.falling()) {
+            palarma3=6;
+            wheel.reset();
+            lcd.cls();
+        }
+        wait(0.5);
+    }
+    while(palarma3==6) {
+        alarma3.sec=wheel.getPulses();
+        lcd.locate(0,0);
+        lcd.printf("segundos P4");// Se pide ingresar los minutos
+        if(alarma3.sec<0) {
+            alarma3.sec=0;
+            wheel.reset();
+        }
+        if(alarma3.sec>59) {
+            alarma3.sec=0;
+            wheel.reset();
+        }
+        lcd.locate(9,1);
+        lcd.printf(" ");
+        lcd.locate(0,1);
+        lcd.printf("segundos=%d",alarma3.sec);
+
+        if(boton2.falling()) {
+            tm.sec=segundos;
+            wheel.reset();
+            lcd.cls();
+            palarma3=7;
+        }
+        wait(0.5);
+    }
+    while(palarma3==7) {
+        tiempoen=wheel.getPulses();
+        if (tiempoen<0) {
+            tiempoen=0;
+            wheel.reset();
+        }
+        lcd.locate(0,0);
+        lcd.printf("tiempo encendido (minutos)");
+        lcd.locate(0,1);
+        lcd.printf("%i minutos",tiempoen);
+
+        if(boton2.falling()) {
+            wheel.reset();
+            lcd.cls();
+            palarma3=1;
+            goto alarm;
+        }
+        wait(0.5);
+    }
+alarma4c:
+    lcd.cls();
+    while(palarma4==1) {
+        alarma4.date=wheel.getPulses();
+        lcd.locate(0,0);
+        lcd.printf("dia P5");// Se pide ingresar un número del 0 al 31 equivalente al día del mess
+        if(alarma4.date>31) {
+            alarma4.date=0;
+            wheel.reset();
+        }
+        if(alarma4.date<0) {
+            alarma4.date=0;
+            wheel.reset();
+        }
+        lcd.locate(5,1);
+        lcd.printf(" ");
+        lcd.locate(0,1);
+        lcd.printf("dia=%d",alarma4.date);
+
+        if(boton2.falling()) {
+            palarma4=2;
+            wheel.reset();
+            lcd.cls();
+        }
+        wait(0.5);
+    }
+    while(palarma4==2) {
+        alarma4.mon=wheel.getPulses();
+        lcd.locate(0,0);
+        lcd.printf("mes P5");// Se pide ingresar un número del 1 al 12
+        if(alarma4.mon<0) {
+            alarma4.mon=0;
+            wheel.reset();
+        }
+        if(alarma4.mon>12) {
+            alarma4.mon=0;
+            wheel.reset();
+        }
+        lcd.locate(5,1);
+        lcd.printf(" ");
+        lcd.locate(0,1);
+        lcd.printf("mes=%d",alarma4.mon);
+
+        if(boton2.falling()) {
+            palarma4=3;
+            wheel.reset();
+            lcd.cls();
+        }
+        wait(0.5);
+    }
+    while(palarma4==3) {
+        alarma4.year=2017+wheel.getPulses();
+        lcd.locate(0,0);
+        lcd.printf("año P5");// Se pide ingresar un número del 2017 al ....
+        lcd.locate(0,1);
+        lcd.printf("año=%d",alarma4.year);
+        if(alarma4.year<2017) {
+            alarma4.year=2017;
+            wheel.reset();
+        }
+        if(boton2.falling()) {
+            palarma4=4;
+            wheel.reset();
+            lcd.cls();
+        }
+        wait(0.5);
+    }
+    while(palarma4==4) {
+        alarma4.hour=wheel.getPulses();
+        lcd.locate(0,0);
+        lcd.printf("hora P5");// Se pide ingresar la hora en formato 24 horas
+        if(alarma4.hour<0) {
+            alarma4.hour=0;
+            wheel.reset();
+        }
+        if(alarma4.hour>23) {
+            alarma4.hour=0;
+            wheel.reset();
+        }
+        lcd.locate(6,1);
+        lcd.printf("  ");
+        lcd.locate(0,1);
+        lcd.printf("hora=%d",alarma4.hour);
+
+        if(boton2.falling()) {
+            palarma4=5;
+            wheel.reset();
+            lcd.cls();
+        }
+        wait(0.5);
+    }
+    while(palarma4==5) {
+        alarma4.min=wheel.getPulses();
+        lcd.locate(0,0);
+        lcd.printf("minutos P5");// Se pide ingresar los minutos
+        if(alarma4.min<0) {
+            alarma4.min=0;
+            wheel.reset();
+        }
+        if(alarma4.min>59) {
+            alarma4.min=0;
+            wheel.reset();
+        }
+        lcd.locate(9,1);
+        lcd.printf(" ");
+        lcd.locate(0,1);
+        lcd.printf("minutos=%d",alarma4.min);
+
+        if(boton2.falling()) {
+            palarma4=6;
+            wheel.reset();
+            lcd.cls();
+        }
+        wait(0.5);
+    }
+    while(palarma4==6) {
+        alarma4.sec=wheel.getPulses();
+        lcd.locate(0,0);
+        lcd.printf("segundos P5");// Se pide ingresar los minutos
+        if(alarma1.sec<0) {
+            alarma1.sec=0;
+            wheel.reset();
+        }
+        if(alarma4.sec>59) {
+            alarma4.sec=0;
+            wheel.reset();
+        }
+        lcd.locate(9,1);
+        lcd.printf(" ");
+        lcd.locate(0,1);
+        lcd.printf("segundos=%d",alarma4.sec);
+
+        if(boton2.falling()) {
+            wheel.reset();
+            lcd.cls();
+            palarma4=7;
+        }
+    }
+    while(palarma4==7) {
+        tiempoen=wheel.getPulses();
+        if (tiempoen<0) {
+            tiempoen=0;
+            wheel.reset();
+        }
+        lcd.locate(0,0);
+        lcd.printf("tiempo encendido (minutos)");
+        lcd.locate(0,1);
+        lcd.printf("%i minutos",tiempoen);
+
+        if(boton2.falling()) {
+            wheel.reset();
+            lcd.cls();
+            palarma4=1;
+            goto alarm;
+        }
+        wait(0.5);
+    }
+alarma5c:
+    lcd.cls();
+    while(palarma5==1) {
+        alarma5.date=wheel.getPulses();
+        lcd.locate(0,0);
+        lcd.printf("dia P6");// Se pide ingresar un número del 0 al 31 equivalente al día del mess
+        if(alarma5.date>31) {
+            alarma5.date=0;
+            wheel.reset();
+        }
+        if(alarma5.date<0) {
+            alarma5.date=0;
+            wheel.reset();
+        }
+        lcd.locate(5,1);
+        lcd.printf(" ");
+        lcd.locate(0,1);
+        lcd.printf("dia=%d",alarma5.date);
+
+        if(boton2.falling()) {
+            palarma5=2;
+            wheel.reset();
+            lcd.cls();
+        }
+        wait(0.5);
+    }
+    while(palarma5==2) {
+        alarma5.mon=wheel.getPulses();
+        lcd.locate(0,0);
+        lcd.printf("mes P6");// Se pide ingresar un número del 1 al 12
+        if(alarma5.mon<0) {
+            alarma5.mon=0;
+            wheel.reset();
+        }
+        if(alarma5.mon>12) {
+            alarma5.mon=0;
+            wheel.reset();
+        }
+        lcd.locate(5,1);
+        lcd.printf(" ");
+        lcd.locate(0,1);
+        lcd.printf("mes=%d",alarma5.mon);
+
+        if(boton2.falling()) {
+            palarma5=3;
+            wheel.reset();
+            lcd.cls();
+        }
+        wait(0.5);
+    }
+    while(palarma5==3) {
+        alarma5.year=2017+wheel.getPulses();
+        lcd.locate(0,0);
+        lcd.printf("año P6");// Se pide ingresar un número del 2017 al ....
+        lcd.locate(0,1);
+        lcd.printf("año=%d",alarma5.year);
+        if(alarma5.year<2017) {
+            alarma5.year=2017;
+            wheel.reset();
+        }
+        if(boton2.falling()) {
+            palarma5=4;
+            wheel.reset();
+            lcd.cls();
+        }
+        wait(0.5);
+    }
+    while(palarma5==4) {
+        alarma5.hour=wheel.getPulses();
+        lcd.locate(0,0);
+        lcd.printf("hora P6");// Se pide ingresar la hora en formato 24 horas
+        if(alarma5.hour<0) {
+            alarma5.hour=0;
+            wheel.reset();
+        }
+        if(alarma5.hour>23) {
+            alarma5.hour=0;
+            wheel.reset();
+        }
+        lcd.locate(6,1);
+        lcd.printf("  ");
+        lcd.locate(0,1);
+        lcd.printf("hora=%d",alarma5.hour);
+
+        if(boton2.falling()) {
+            palarma5=5;
+            wheel.reset();
+            lcd.cls();
+        }
+        wait(0.5);
+    }
+    while(palarma5==5) {
+        alarma5.min=wheel.getPulses();
+        lcd.locate(0,0);
+        lcd.printf("minutos P6");// Se pide ingresar los minutos
+        if(alarma5.min<0) {
+            alarma5.min=0;
+            wheel.reset();
+        }
+        if(alarma5.min>59) {
+            alarma5.min=0;
+            wheel.reset();
+        }
+        lcd.locate(9,1);
+        lcd.printf(" ");
+        lcd.locate(0,1);
+        lcd.printf("minutos=%d",alarma5.min);
+
+        if(boton2.falling()) {
+            palarma5=6;
+            wheel.reset();
+            lcd.cls();
+        }
+        wait(0.5);
+    }
+    while(palarma5==6) {
+        alarma5.sec=wheel.getPulses();
+        lcd.locate(0,0);
+        lcd.printf("segundos P6");// Se pide ingresar los minutos
+        if(alarma5.sec<0) {
+            alarma5.sec=0;
+            wheel.reset();
+        }
+        if(alarma5.sec>59) {
+            alarma5.sec=0;
+            wheel.reset();
+        }
+        lcd.locate(9,1);
+        lcd.printf(" ");
+        lcd.locate(0,1);
+        lcd.printf("segundos=%d",alarma5.sec);
+
+        if(boton2.falling())
+            wheel.reset();
+        lcd.cls();
+        palarma5=7;
+    }
+
+    while(palarma5==7) {
+        tiempoen=wheel.getPulses();
+        if (tiempoen<0) {
+            tiempoen=0;
+            wheel.reset();
+        }
+        lcd.locate(0,0);
+        lcd.printf("tiempo encendido (minutos)");
+        lcd.locate(0,1);
+        lcd.printf("%i minutos",tiempoen);
+
+        if(boton2.falling()) {
+            wheel.reset();
+            lcd.cls();
+            palarma5=1;
+            goto alarm;
+        }
+        wait(0.5);
+    }
+
+alarma6c:
+    lcd.cls();
+    while(palarma6==1) {
+        alarma5.date=wheel.getPulses();
+        lcd.locate(0,0);
+        lcd.printf("dia P7");// Se pide ingresar un número del 0 al 31 equivalente al día del mess
+        if(alarma6.date>31) {
+            alarma6.date=0;
+            wheel.reset();
+        }
+        if(alarma6.date<0) {
+            alarma6.date=0;
+            wheel.reset();
+        }
+        lcd.locate(5,1);
+        lcd.printf(" ");
+        lcd.locate(0,1);
+        lcd.printf("dia=%d",alarma6.date);
+
+        if(boton2.falling()) {
+            palarma6=2;
+            wheel.reset();
+            lcd.cls();
+        }
+        wait(0.5);
+    }
+    while(palarma6==2) {
+        alarma6.mon=wheel.getPulses();
+        lcd.locate(0,0);
+        lcd.printf("mes P7");// Se pide ingresar un número del 1 al 12
+        if(alarma6.mon<0) {
+            alarma6.mon=0;
+            wheel.reset();
+        }
+        if(alarma6.mon>12) {
+            alarma6.mon=0;
+            wheel.reset();
+        }
+        lcd.locate(5,1);
+        lcd.printf(" ");
+        lcd.locate(0,1);
+        lcd.printf("mes=%d",alarma6.mon);
+
+        if(boton2.falling()) {
+            palarma6=3;
+            wheel.reset();
+            lcd.cls();
+        }
+        wait(0.5);
+    }
+    while(palarma6==3) {
+        alarma6.year=2017+wheel.getPulses();
+        lcd.locate(0,0);
+        lcd.printf("año P7");// Se pide ingresar un número del 2017 al ....
+        lcd.locate(0,1);
+        lcd.printf("año=%d",alarma6.year);
+        if(alarma6.year<2017) {
+            alarma6.year=2017;
+            wheel.reset();
+        }
+        if(boton2.falling()) {
+            palarma6=4;
+            wheel.reset();
+            lcd.cls();
+        }
+        wait(0.5);
+    }
+    while(palarma6==4) {
+        alarma6.hour=wheel.getPulses();
+        lcd.locate(0,0);
+        lcd.printf("hora P7");// Se pide ingresar la hora en formato 24 horas
+        if(alarma6.hour<0) {
+            alarma6.hour=0;
+            wheel.reset();
+        }
+        if(alarma6.hour>23) {
+            alarma6.hour=0;
+            wheel.reset();
+        }
+        lcd.locate(6,1);
+        lcd.printf("  ");
+        lcd.locate(0,1);
+        lcd.printf("hora=%d",alarma6.hour);
+
+        if(boton2.falling()) {
+            palarma6=5;
+            wheel.reset();
+            lcd.cls();
+        }
+        wait(0.5);
+    }
+    while(palarma6==5) {
+        alarma5.min=wheel.getPulses();
+        lcd.locate(0,0);
+        lcd.printf("minutos P7");// Se pide ingresar los minutos
+        if(alarma6.min<0) {
+            alarma6.min=0;
+            wheel.reset();
+        }
+        if(alarma6.min>59) {
+            alarma6.min=0;
+            wheel.reset();
+        }
+        lcd.locate(9,1);
+        lcd.printf(" ");
+        lcd.locate(0,1);
+        lcd.printf("minutos=%d",alarma6.min);
+
+        if(boton2.falling()) {
+            palarma6=6;
+            wheel.reset();
+            lcd.cls();
+        }
+        wait(0.5);
+    }
+    while(palarma6==6) {
+        alarma6.sec=wheel.getPulses();
+        lcd.locate(0,0);
+        lcd.printf("segundos P7");// Se pide ingresar los minutos
+        if(alarma6.sec<0) {
+            alarma6.sec=0;
+            wheel.reset();
+        }
+        if(alarma6.sec>59) {
+            alarma6.sec=0;
+            wheel.reset();
+        }
+        lcd.locate(9,1);
+        lcd.printf(" ");
+        lcd.locate(0,1);
+        lcd.printf("segundos=%d",alarma6.sec);
+
+        if(boton2.falling()) {
+            wheel.reset();
+            lcd.cls();
+            palarma6=7;
         }
         wait(1);
-    } 
-     
-    }
\ No newline at end of file
+    }
+    while(palarma6==7) {
+        tiempoen=wheel.getPulses();
+        if (tiempoen<0) {
+            tiempoen=0;
+            wheel.reset();
+        }
+        lcd.locate(0,0);
+        lcd.printf("tiempo encendido (minutos)");
+        lcd.locate(0,1);
+        lcd.printf("%i minutos",tiempoen);
+        if(boton2.falling()) {
+            wheel.reset();
+            lcd.cls();
+            palarma6=1;
+            goto alarm;
+        }
+        wait(0.5);
+    }
+}
+
+
+/*********************************************************Funciones *******************************************************************/
+int descanso(int duracion)
+{
+    Timer t;
+    t.reset();
+    t.start();
+    while(1) {
+        led=1;
+        wait_us(8);
+        led=0;
+        led=0;
+        wait_us(9);
+        if(t.read_us() > duracion) {
+            return 0;
+        }
+
+    }
+}
+
+int sendcode(int numb, int *code, int cabeceraL, int cabeceraH, int Tdescanso, int Tlow, int Thigh)
+{
+    led=0;
+    wait_ms(100);
+    descanso(cabeceraL);
+    wait_us(cabeceraH);
+
+    for(i=0; i<numb; i++) {
+        if (code[i]>1000) {
+            descanso(Tdescanso);
+            wait_us(Thigh);
+        }
+        if (code[i]<1000) {
+            descanso(Tdescanso);
+            wait_us(Tlow);
+        }
+    }
+    descanso(Tdescanso);
+    return 0;
+}
+void pwr()
+{
+    for(i=0; i<numb; i++) {
+        code[i]=pwrc[i];
+    }
+    sendcode(numb,code,cabeceraL, cabeceraH, Tdescanso, Tlow, Thigh);
+}
+void repeat()
+{
+    wait_ms(42);
+    descanso(8800);
+    wait_us(2240);
+    descanso(560);
+}
+