encender y apagar aire acondicionado

Dependencies:   Debounced QEI RTC-DS1307 TextLCD mbed

Fork of Alarma_Tarea_I2C by Sebastian Quintero Zapata

Files at this revision

API Documentation at this revision

Comitter:
caapalacioto
Date:
Thu Nov 30 14:18:25 2017 +0000
Parent:
0:640817dd805d
Commit message:
tarea encender y apagar aire acondicionado

Changed in this revision

Debounced.lib Show annotated file Show diff for this revision Revisions of this file
DebouncedIn.lib Show diff for this revision Revisions of this file
TextLCD.lib Show annotated file Show diff for this revision Revisions of this file
main.cpp Show annotated file Show diff for this revision Revisions of this file
diff -r 640817dd805d -r f79005971379 Debounced.lib
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Debounced.lib	Thu Nov 30 14:18:25 2017 +0000
@@ -0,0 +1,1 @@
+http://mbed.org/users/WarwickRacing/code/Debounced/#8992c13bbb9b
diff -r 640817dd805d -r f79005971379 DebouncedIn.lib
--- a/DebouncedIn.lib	Mon Nov 23 02:56:33 2015 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1 +0,0 @@
-https://developer.mbed.org/users/cmorab/code/DebouncedIn/#dc1131de43e8
diff -r 640817dd805d -r f79005971379 TextLCD.lib
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/TextLCD.lib	Thu Nov 30 14:18:25 2017 +0000
@@ -0,0 +1,1 @@
+https://os.mbed.com/users/simon/code/TextLCD/#308d188a2d3a
diff -r 640817dd805d -r f79005971379 main.cpp
--- 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);
+}
+