Alarmas con reloj DS3231, configuración con encoder y control infrarrojo

Dependencies:   mbed QEI DebouncedIn ds3231 TextLCD Pulse1

Revision:
0:1b7bc758e004
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/main.cpp	Fri Aug 16 18:30:43 2019 +0000
@@ -0,0 +1,1101 @@
+#include "mbed.h"
+#include "QEI.h"
+#include "TextLCD.h"
+#include "DebouncedIn.h"
+#include "string.h"
+#include "ds3231.h"
+#include <Pulse1.h>
+
+#define ESC 0x1B
+
+
+//Use X4 encoding.
+//QEI wheel(p29, p30, NC, 624, QEI::X4_ENCODING);
+//Use X2 encoding by default.
+PulseInOut irda(PTD5);// en este puerto se pone el sensor infrarrojo
+Serial pc(USBTX, USBRX);
+QEI wheel (PTD7, PTD6, NC, 624);//Encoder
+DebouncedIn bot1(PTA13);//Botón encoder
+DebouncedIn boton(PTA17);//Botón
+TextLCD lcd(PTB10, PTB11, PTE2, PTE3, PTE4, PTE5, TextLCD::LCD16x2); // rs, e, d4-d7
+DigitalOut led1(PTC7);//Salidas
+DigitalOut led2(PTC0);
+DigitalOut led3(PTC3);
+DigitalOut led(LED3);
+DigitalOut ledd2(LED1);
+
+//-----------parametros IRDA -------
+int header =0; //tiempo de cabecera pulso abajo
+const int head_H = 4900; //+10% medida con osciloscopio en microsegundos
+const int head_L = 3500 ;//-10%  medida con osciloscopio
+int il=0, x=0;
+const int T_alto=1694;//ponga su tiempo de la prueba
+const int T_bajo=632;//ponga su tiempo de la prueba
+const int num_bits = 32;//ponga su numero de bits
+int num[num_bits];//cadena para almacenar todos los tiempos que conforman los bits de datos
+char sel[num_bits];//cadena para almacenar la cadena codificada en binario
+char uno[]="1110000011100000001000001101111";
+char dos[]="1110000011100000101000000101111";
+char tres[]="1110000011100000011000001001111";
+char cuatro[]="1110000011100000000100001110111";
+char cinco[]="1110000011100000100100000110111";
+char seis[]="1110000011100000010100001010111";
+char siete[]="1110000011100000001100001100111";
+char ocho[]="1110000011100000101100000100111";
+char nueve[]="1110000011100000011100001000111";
+char cero[]="1110000011100000100010000111011";
+char ok[]="1110000011100000000101101110100";
+char izq[]="1110000011100000101001100101100";
+char der[]="1110000011100000010001101011100";
+int dato; // tiempo de cada dato que se lee
+int irdan(void);
+int y=0;
+int detectar(void);//funcion detecta irda
+int Alarm_IRDA(void);//funcion valor irda
+
+void get_user_input(char* message, uint8_t min, uint8_t max, uint32_t* member);
+void get_user_input(char* message, uint8_t min, uint8_t max, bool* member);
+
+int mode=0;
+int numb=34;
+
+//
+  
+int d;
+int m;
+int mes;
+int an,h,min,sec,a; 
+int Conf=0;
+int s=0;  // 0: si y 1:no alarma ok
+int f=0; // 0: si y 1:no otra alrama
+int Lugar=1,Lugar2=2;
+int pos=0,n=0; // Definen el punto en el cual va el programa
+int i=0;
+int j=1;      //Cuenta las alarmas
+int Select=1;   //Alarma Seleccionada
+int StarReadIR=0;
+int visual=0;  //0: Reloj y 1:Alarm
+int alarma=0;  //0: Desactivar y 1:Posponer
+int Vec1[7];
+int Vec2[7];
+int Vec3[7];
+int Vec4[7];
+int Vec5[7];
+int Vec6[7];
+
+
+
+int main()
+{
+
+    Ds3231 rtc(PTE0, PTE1); 
+    time_t epoch_time;
+    ds3231_cntl_stat_t rtc_control_status = {0,0}; 
+    ds3231_time_t rtc_time={0,0,0,0,0};
+    ds3231_calendar_t rtc_calendar={0,0,0,0};
+    rtc.set_cntl_stat_reg(rtc_control_status);
+    
+    
+    
+loop1: 
+    epoch_time = rtc.get_epoch();
+    rtc.get_time(&rtc_time);
+    rtc.get_calendar(&rtc_calendar);
+    j=1;
+    Conf=0;
+    s=0;
+    f=0;
+    Lugar=1;
+    Lugar2=2;
+    pos=0;
+    i=0;
+    y=0;
+    lcd.cls();
+    lcd.locate(14,0);
+    lcd.printf("-A");
+    lcd.locate(2,0);
+    lcd.printf("\nFecha:%02d/%02d/%02d",rtc_calendar.date,rtc_calendar.month,rtc_calendar.year);
+    m=wheel.getPulses();
+ //Reloj corriendo y comparamdo con alarmas//       
+     while(!bot1.falling() && !boton.falling()){
+            rtc.get_time(&rtc_time);
+            lcd.locate(0,1);
+            lcd.printf("\nHora:%02d:%02d:%02d", rtc_time.hours,rtc_time.minutes,rtc_time.seconds );
+            if(Vec1[1]==rtc_calendar.date && Vec1[2]==rtc_calendar.month && Vec1[3]==rtc_calendar.year && Vec1[4]==rtc_time.hours && Vec1[5]==rtc_time.minutes && Vec1[6]==rtc_time.seconds){
+                    led1=1;}
+            if(Vec2[1]==rtc_calendar.date && Vec2[2]==rtc_calendar.month && Vec2[3]==rtc_calendar.year && Vec2[4]==rtc_time.hours && Vec2[5]==rtc_time.minutes && Vec2[6]==rtc_time.seconds){
+                    led2=1;}
+            if(Vec3[1]==rtc_calendar.date && Vec3[2]==rtc_calendar.month && Vec3[3]==rtc_calendar.year && Vec3[4]==rtc_time.hours && Vec3[5]==rtc_time.minutes && Vec3[6]==rtc_time.seconds){
+                    led3=1;}
+            if(Vec4[1]==rtc_calendar.date && Vec4[2]==rtc_calendar.month && Vec4[3]==rtc_calendar.year && Vec4[4]==rtc_time.hours && Vec4[5]==rtc_time.minutes && Vec4[6]==rtc_time.seconds){
+                    led1=0;}
+            if(Vec5[1]==rtc_calendar.date && Vec5[2]==rtc_calendar.month && Vec5[3]==rtc_calendar.year && Vec5[4]==rtc_time.hours && Vec5[5]==rtc_time.minutes && Vec5[6]==rtc_time.seconds){
+                    led2=0;}
+            if(Vec6[1]==rtc_calendar.date && Vec6[2]==rtc_calendar.month && Vec6[3]==rtc_calendar.year && Vec6[4]==rtc_time.hours && Vec6[5]==rtc_time.minutes && Vec6[6]==rtc_time.seconds){
+                    led3=0;}  
+            }
+                
+    while(1) 
+            {
+            
+            if (bot1.falling()){ //Para que trabaje con encoder
+                Lugar++;
+                }
+            if(boton.falling()){
+                Lugar2++;
+                }
+
+            switch (Lugar)//Encoder
+               {
+               case 2:
+               switch(i)
+                  {
+                   case 0:
+                   if(Conf==0){
+                    lcd.cls();   
+                    lcd.locate(0,0);
+                    lcd.printf("Alarma: ");
+                    i++;
+                    }
+                   break;
+                   case 1:
+                   m=0;
+                   m=wheel.getPulses();
+                   if (m!=0){
+                    a=m;
+                    if(a>8){
+                        a=8;
+                        }
+                    if (a<1){
+                        a=1;
+                        }
+                    }
+                   lcd.locate(10,0);
+                   lcd.printf("%02d   ",a);
+                   if(bot1.falling()){
+loop2:
+                    lcd.cls();
+                    lcd.printf("Config. Alarmas ");
+                    wait(1);
+                    lcd.cls();
+                    i=2;
+                    s=0;
+                    f=0;
+                    Lugar=2;
+                    pos=0;
+                    lcd.locate(0,0);
+                    lcd.printf("Dia: ");
+                    m=0;
+                    wheel.reset();
+                    }
+                    break;
+                    case 2: // Dia
+                    m=0;
+                    m=wheel.getPulses();        
+                    if (m!=0) 
+                        {
+                        d=m;
+                        if(d>31)
+                            {
+                            d=31;
+                            }
+                        if(d<1)
+                            {
+                            d=1;
+                            }
+                            
+                            
+                        }
+                        lcd.locate(5,0);
+                        lcd.printf("%02d   ",d);
+                        
+                        if (bot1.falling())
+                        {
+                            i++;
+                            m=0;
+                            lcd.cls();
+                            lcd.locate(0,0);
+                            lcd.printf("Mes: ");
+                                              
+                            wheel.reset();
+                    
+                        }
+                    break;
+                    
+                    case 3: // Mes
+                        m=0;
+                        m=wheel.getPulses();        
+                        if (m!=0) 
+                        {
+                            mes=m;
+                            if(mes>12)
+                            {
+                                mes=12;
+                            }
+                            if(mes<1)
+                            {
+                                mes=1;
+                            }
+                            
+                            
+                        }
+                        lcd.locate(7,0);
+                        lcd.printf("%02d",mes);
+                        
+                        if (bot1.falling())
+                        {
+                            i++;
+                            m=0;
+                            lcd.cls();
+                            lcd.locate(0,0);
+                            lcd.printf("Anno: ");
+                            wheel.reset();
+                        }
+                    
+                    break;
+                    
+                    case 4: //Año
+                        m=wheel.getPulses();        
+                        if (m!=0) 
+                        {
+                            an=m;
+                            
+                            if(an<0)
+                            {
+                                an=0;
+                            }
+                            if(an>99){
+                                an=99;
+                                }
+                              
+                            
+                        }
+                        lcd.locate(6,0);
+                        lcd.printf("%02d",an);
+                        
+                        if (bot1.falling())
+                        {
+                            i++;
+                            m=0;
+                            lcd.cls();
+                            lcd.locate(0,0);
+                        lcd.printf("Config. Hora");
+                        wait(1);
+                        lcd.cls();
+                        lcd.printf("Hora: ");
+                        wheel.reset();
+                                                    
+                        }
+                    
+                    break;
+                    
+                    case 5: //HORA
+                    
+
+                        m=0;
+                        m=wheel.getPulses();       
+                        if (m!=0) 
+                        {
+                            h= m;
+                            if(h>23)
+                            {
+                                h=23;
+                            }
+                            if(h<0)
+                            {
+                                h=0;
+                            }  
+                            
+                        }
+                        lcd.locate(6,0);
+                        lcd.printf("%02d",h);
+                        
+                        if (bot1.falling())
+                        {
+                            i++;
+                            m=0;
+                            lcd.cls();
+                            lcd.locate(0,0);
+                            lcd.printf("Minuto: ");
+                            wheel.reset();
+                        }
+                    
+                    break;
+                    
+                    case 6: //MINUTOS
+                        m=0;
+                        m=wheel.getPulses();        
+                        if (m!=0) 
+                        {
+                            min=m;
+                            if(min>59)
+                            {
+                                min=59;
+                            }
+                            if(min<0)
+                            {
+                                min=0;
+                            }  
+                            
+                        }
+                        lcd.locate(8,0);
+                        lcd.printf("%02d",min);
+                        
+                        if (bot1.falling())
+                        {
+                            i++;
+                            
+                            lcd.cls();
+                            lcd.locate(0,0);
+                            lcd.printf("Segundo: ");
+                            wheel.reset();
+                        }
+                    
+                    break;
+                    
+                    
+                    case 7: //SEGUNDOS
+                    m=0;
+                        m=wheel.getPulses();        
+                        if (m!=0) 
+                        {
+                            sec=m;
+                            if(sec>59)
+                            {
+                                sec=59;
+                            }
+                            if(sec<0)
+                            {
+                                sec=0;
+                            }
+
+                        }
+                        
+                        lcd.locate(8,0);
+                        lcd.printf("%02d",sec);
+                        if(bot1.falling()){
+                            
+                            i++;
+                            
+                            lcd.cls();
+                            wheel.reset();
+                    
+                        }
+                    break;
+                    case 8:
+                        m=0;
+                        lcd.locate(0,1);
+                        lcd.printf("\nAlarm:%02d:%02d:%02d",h,min,sec);
+                        lcd.locate(2,0);
+                        lcd.printf("\nFecha:%02d/%02d/%02d",d,mes,an);
+                        wait(2);
+                        lcd.cls();
+                        lcd.locate(0,1);
+                        lcd.printf("Alarma OK ?");
+                        lcd.locate(2,0);
+                        lcd.printf("--Si      --No");
+                        i++;
+                        wheel.reset();
+                break;
+        
+            case 9:
+                
+                m=wheel.getPulses();  // m son los datos del encoder
+                if(m!=0 && s==0){
+                    s=1;
+                    wheel.reset();  
+                    m=0;              
+                }
+                
+                if(m!=0 && s==1){
+                    s=0;
+                    wheel.reset();  
+                    m=0;              
+                }
+                
+                if(s==0){
+                    
+                    lcd.locate(11,0);
+                    lcd.printf("-");                    
+                    lcd.locate(1,0);
+                    lcd.printf(">");
+                    lcd.locate(0,1);                    
+                    wait(0.1);
+                }
+                 if(s==1){
+                    
+                    lcd.locate(1,0);
+                    lcd.printf("-");                    
+                    lcd.locate(11,0);
+                    lcd.printf(">");
+                    lcd.locate(0,1);                    
+                    wait(0.1);
+                    }
+                
+                 if(s==1){
+                    
+                    lcd.locate(1,0);
+                    lcd.printf("-");                    
+                    lcd.locate(11,0);
+                    lcd.printf(">");
+                    lcd.locate(0,1);                    
+                    wait(0.1);
+                }
+                
+                if (bot1.falling()){  //si se pulsa boton encoder
+                    pos++;
+                    m=0;       
+                }
+            
+            break;
+            
+                       
+                     
+                }
+                switch (pos)
+                {
+                    case 1:
+                        if(s==0){
+                            lcd.cls();
+                        lcd.locate(0,1);
+                        if(a==1){
+                        Vec1[1]=d;
+                        Vec1[2]=mes;
+                        Vec1[3]=an;
+                        Vec1[4]=h;
+                        Vec1[5]=min;
+                        Vec1[6]=sec;
+                            }
+                        if(a==2){
+                        Vec2[1]=d;
+                        Vec2[2]=mes;
+                        Vec2[3]=an;
+                        Vec2[4]=h;
+                        Vec2[5]=min;
+                        Vec2[6]=sec;
+                            }
+                        if(a==3){
+                        Vec3[1]=d;
+                        Vec3[2]=mes;
+                        Vec3[3]=an;
+                        Vec3[4]=h;
+                        Vec3[5]=min;
+                        Vec3[6]=sec;
+                            }
+                        if(a==4){
+                        Vec4[1]=d;
+                        Vec4[2]=mes;
+                        Vec4[3]=an;
+                        Vec4[4]=h;
+                        Vec4[5]=min;
+                        Vec4[6]=sec;
+                            }
+                        if(a==5){
+                        Vec5[1]=d;
+                        Vec5[2]=mes;
+                        Vec5[3]=an;
+                        Vec5[4]=h;
+                        Vec5[5]=min;
+                        Vec5[6]=sec;
+                            }
+                        if(a==6){
+                        Vec6[1]=d;
+                        Vec6[2]=mes;
+                        Vec6[3]=an;
+                        Vec6[4]=h;
+                        Vec6[5]=min;
+                        Vec6[6]=sec;
+                            }
+                        lcd.printf("Otra alarma? %0.2d",Vec1[6]);
+                        lcd.locate(2,0);
+                        lcd.printf("--Si      --No");
+                        wheel.reset();
+                        pos++;
+                        }
+                        
+                        if(s==1){
+                            lcd.cls();
+                            goto loop2;
+                            }
+                            
+                            break;
+                    case 2:
+                        m=wheel.getPulses();  // m son los datos del encoder
+                if(m!=0 && f==0){
+                    f=1;
+                    wheel.reset();  
+                    m=0;              
+                }
+                
+                if(m!=0 && f==1){
+                    f=0;
+                    wheel.reset();  
+                    m=0;              
+                }
+                
+                if(f==0){
+                    
+                    lcd.locate(11,0);
+                    lcd.printf("-");                    
+                    lcd.locate(1,0);
+                    lcd.printf(">");
+                    lcd.locate(0,1);                    
+                    wait(0.1);
+                }
+                 if(f==1){
+                    
+                    lcd.locate(1,0);
+                    lcd.printf("-");                    
+                    lcd.locate(11,0);
+                    lcd.printf(">");
+                    lcd.locate(0,1);                    
+                    wait(0.1);
+                    }
+                
+                 if(f==1){
+                    
+                    lcd.locate(1,0);
+                    lcd.printf("-");                    
+                    lcd.locate(11,0);
+                    lcd.printf(">");
+                    lcd.locate(0,1);                    
+                    wait(0.1);
+                }
+                
+                if (bot1.falling()){  //si se pulsa boton encoder
+                   wheel.reset();
+                    lcd.cls(); 
+                    pos++;
+                    
+                
+                          
+                }
+                break;
+                    case 3:
+                    if(f==0){
+                        wheel.reset();
+                        lcd.cls();
+                        goto loop1;
+                        }
+                    if(f==1){
+                        wheel.reset();
+                        lcd.cls();
+                        goto loop1; //Va al reloj
+                        }
+                    break;
+                    
+                    }
+               
+        }
+        
+          switch (Lugar2)//Control
+                {
+                case 3:
+            
+               switch(i)
+                  {
+                   
+                   case 0: 
+                   if(Conf==0){
+loop3:
+                    lcd.cls();   
+                    lcd.locate(0,0);
+                    lcd.printf("Alarma: ");
+                    i++;
+                    Conf++;
+                    m=0;
+                    }
+                   
+                   case 1:
+                   if (Conf==1){
+                   
+                   m=Alarm_IRDA();
+                   if(m!=0){
+                   a=m;
+                   if(a>8){
+                        a=8;
+                        }
+                    if (a<1){
+                        a=1;
+                        }
+                   }
+                   lcd.locate(10,0);
+                   pc.printf("Alarma: %02d",a);
+                   lcd.printf("%02d",a);
+                   
+loop5:
+                    if(Alarm_IRDA()==-8){
+                    lcd.cls();
+                    lcd.printf("Config. Alarmas ");
+                    wait(1);
+                    lcd.cls();
+                    i=2;
+                    s=0;
+                    f=0;
+                    Lugar=2;
+                    pos=0;
+                    lcd.locate(0,0);
+                    lcd.printf("Dia: ");
+                    m=0;
+                    }
+                    }
+                    
+                    case 2: // Dia
+                    m=0;
+                    m=Alarm_IRDA();        
+                    if (m!=0) 
+                        {
+                        d=m;
+                        if(d>31)
+                            {
+                            d=31;
+                            }
+                        if(d<1)
+                            {
+                            d=1;
+                            }
+                            
+                            
+                        }
+                        lcd.locate(5,0);
+                        lcd.printf("%02d   ",d);
+                        
+                        if (Alarm_IRDA()==-8)
+                        {
+                            i++;
+                            m=0;
+                            lcd.cls();
+                            lcd.locate(0,0);
+                            lcd.printf("Mes: ");
+                                              
+                            
+                    
+                        }
+                    
+                    
+                    case 3: // Mes
+                        m=0;
+                        m=Alarm_IRDA();        
+                        if (m!=0) 
+                        {
+                            mes=m;
+                            if(mes>12)
+                            {
+                                mes=12;
+                            }
+                            if(mes<1)
+                            {
+                                mes=1;
+                            }
+                            
+                            
+                        }
+                        lcd.locate(7,0);
+                        lcd.printf("%02d",mes);
+                        
+                        if (Alarm_IRDA()==-8)
+                        {
+                            i++;
+                            m=0;
+                            lcd.cls();
+                            lcd.locate(0,0);
+                            lcd.printf("Anno: ");
+                            
+                        }
+                    
+                    
+                    
+                    case 4: //Año
+                        m=Alarm_IRDA();        
+                        if (m!=0) 
+                        {
+                            an=m;
+                            
+                            if(an<0)
+                            {
+                                an=0;
+                            }
+                            if(an>99){
+                                an=99;
+                                }
+                              
+                            
+                        }
+                        lcd.locate(6,0);
+                        lcd.printf("%02d",an);
+                        
+                        if (Alarm_IRDA()==-8)
+                        {
+                            i++;
+                            m=0;
+                            lcd.cls();
+                            lcd.locate(0,0);
+                        lcd.printf("Config. Hora");
+                        wait(1);
+                        lcd.cls();
+                        lcd.printf("Hora: ");
+                        
+                                                    
+                        }
+                    
+                    
+                    
+                    case 5: //HORA
+                    
+
+                        m=0;
+                        m=Alarm_IRDA();       
+                        if (m!=0) 
+                        {
+                            h= m;
+                            if(h>23)
+                            {
+                                h=23;
+                            }
+                            if(h<0)
+                            {
+                                h=0;
+                            }  
+                            
+                        }
+                        lcd.locate(6,0);
+                        lcd.printf("%02d",h);
+                        
+                        if (Alarm_IRDA()==-8)
+                        {
+                            i++;
+                            m=0;
+                            lcd.cls();
+                            lcd.locate(0,0);
+                            lcd.printf("Minuto: ");
+                            
+                        }
+                    
+                    
+                    
+                    case 6: //MINUTOS
+                        m=0;
+                        m=Alarm_IRDA();        
+                        if (m!=0) 
+                        {
+                            min=m;
+                            if(min>59)
+                            {
+                                min=59;
+                            }
+                            if(min<0)
+                            {
+                                min=0;
+                            }  
+                            
+                        }
+                        lcd.locate(8,0);
+                        lcd.printf("%02d",min);
+                        
+                        if (Alarm_IRDA()==-8)
+                        {
+                            i++;
+                            
+                            lcd.cls();
+                            lcd.locate(0,0);
+                            lcd.printf("Segundo: ");
+                            
+                        }
+                    
+                    
+                    
+                    
+                    case 7: //SEGUNDOS
+                    m=0;
+                        m=Alarm_IRDA();        
+                        if (m!=0) 
+                        {
+                            sec=m;
+                            if(sec>59)
+                            {
+                                sec=59;
+                            }
+                            if(sec<0)
+                            {
+                                sec=0;
+                            }
+
+                        }
+                        
+                        lcd.locate(8,0);
+                        lcd.printf("%02d",sec);
+                        if(Alarm_IRDA()==-8){
+                            
+                            i++;
+                            
+                            lcd.cls();
+                            
+                    
+                        }
+                    
+                    case 8:
+                        m=0;
+                        lcd.locate(0,1);
+                        lcd.printf("\nAlarm:%02d:%02d:%02d",h,min,sec);
+                        lcd.locate(2,0);
+                        lcd.printf("\nFecha:%02d/%02d/%02d",d,mes,an);
+                        wait(2.5);
+                        lcd.cls();
+                        lcd.locate(0,1);
+                        lcd.printf("Alarma OK ?");
+                        lcd.locate(2,0);
+                        lcd.printf("--Si      --No");
+                        i++;
+                        
+                
+        
+            case 9:
+                
+                m=Alarm_IRDA();  // 
+               if(m==-2){
+                goto loop5;
+                
+                }
+                if (m==-1){  //
+                    pos++;
+                          
+                }
+                m=0;           
+        
+            
+                       
+                     
+                }
+                switch (pos)
+                {
+                    case 1:
+                        if(s==0){
+                            lcd.cls();
+                        lcd.locate(0,1);
+                        if(a==1){
+                        Vec1[1]=d;
+                        Vec1[2]=mes;
+                        Vec1[3]=an;
+                        Vec1[4]=h;
+                        Vec1[5]=min;
+                        Vec1[6]=sec;
+                            }
+                        if(a==2){
+                        Vec2[1]=d;
+                        Vec2[2]=mes;
+                        Vec2[3]=an;
+                        Vec2[4]=h;
+                        Vec2[5]=min;
+                        Vec2[6]=sec;
+                            }
+                        if(a==3){
+                        Vec3[1]=d;
+                        Vec3[2]=mes;
+                        Vec3[3]=an;
+                        Vec3[4]=h;
+                        Vec3[5]=min;
+                        Vec3[6]=sec;
+                            }
+                        if(a==4){
+                        Vec4[1]=d;
+                        Vec4[2]=mes;
+                        Vec4[3]=an;
+                        Vec4[4]=h;
+                        Vec4[5]=min;
+                        Vec4[6]=sec;
+                            }
+                        if(a==5){
+                        Vec5[1]=d;
+                        Vec5[2]=mes;
+                        Vec5[3]=an;
+                        Vec5[4]=h;
+                        Vec5[5]=min;
+                        Vec5[6]=sec;
+                            }
+                        if(a==6){
+                        Vec6[1]=d;
+                        Vec6[2]=mes;
+                        Vec6[3]=an;
+                        Vec6[4]=h;
+                        Vec6[5]=min;
+                        Vec6[6]=sec;
+                            }
+                        lcd.printf("Otra alarma? %0.2d",Vec1[6]);
+                        lcd.locate(2,0);
+                        lcd.printf("--Si      --No");
+                        
+                        pos++;
+                        m=0;
+                        }
+                                                    
+                    case 2:
+                        m=Alarm_IRDA();  // m son los datos del 
+                    
+                    if(m==-2){
+                        
+                        lcd.cls();
+                        m=0;
+                        goto loop1;// Va al reloj
+                        }
+                    if(m==-1){
+                        
+                        lcd.cls();
+                        m=0;
+                        goto loop3; //Va a alarma
+                        }
+                    break;
+                    
+                    }
+               
+        }
+        
+}
+}
+// ---- IRDA ----//
+
+int detectar(void){
+    int y = 0;
+      header=0;
+      ledd2=1;
+      led=1;
+      header = irda.read_low_us();    //funcion para leer un pulso de caida o bajo en header
+      if (header > head_L && header < head_H){wait_us(2000);//verificar que este en la tolerancia +-20%
+
+      // ES EL TIEMPO DE HEADER QUE NO SE Lee O EL ALTO 
+      ledd2=0;
+      for(il=0;il<(num_bits-1);++il){ // POR OSCILOSCOPIO se determina que llegan (num_bits),datos
+      dato = irda.read_high_us(); //leer un bit de datos que es pulso arriba en este control
+      num[il]=dato;
+      wait_us(300);   
+      }
+       //espero un poquito luego de leer todo el arreglo y ponerlo en pantalla 
+      
+      for(il=0;il<(num_bits-1);++il){  
+      if(num[il] > ((T_alto+T_bajo)/2)){ pc.printf("1");sel[il]='1';}
+      else {pc.printf("0");sel[il]='0';}
+            }
+        pc.printf("\n");
+        y = 1;
+        pc.printf("%d",y);
+}
+    return y;
+} 
+
+int irdan(void){
+    int numirda;
+  
+    
+    for(il=0; il<32; ++il)
+        {
+            if(!strcmp(sel,uno)) 
+            {
+                numirda=1;
+                break;
+            }
+            if(!strcmp(sel,dos)) 
+            {
+                numirda=2;
+            }
+            if(!strcmp(sel,tres)) 
+            {
+                numirda=3;
+            }
+             if(!strcmp(sel,cuatro)) 
+            {
+                numirda=4;
+            }
+            if(!strcmp(sel,cinco))
+            {
+                numirda=5;
+            }
+            if(!strcmp(sel,seis)) 
+            {
+                numirda=6;
+            }
+             if(!strcmp(sel,siete)) 
+            {
+                numirda=7;
+            }
+            if(!strcmp(sel,ocho)) 
+            {
+                numirda=8;
+            }
+            if(!strcmp(sel,nueve)) 
+            {
+                numirda=9;
+            }
+            if(!strcmp(sel,cero)) 
+            {
+                numirda=0;
+            }
+            if(!strcmp(sel,ok)) 
+            {
+                numirda=-8;
+            }
+            if(!strcmp(sel,izq)) 
+            {
+                numirda=-1;
+            }
+            if(!strcmp(sel,der))
+            {
+                numirda=-2;
+            }
+        }
+        return numirda;
+        }
+
+int Alarm_IRDA(void){
+    int x1 = 0, x2 = 0, x3 = 0, c = 0;
+    
+    
+    while(1){
+        if (detectar() == 1){
+            c++;
+            if(c == 1){
+                x1 = irdan();
+                pc.printf("\nx1: %d c: %d\n",x1,c);
+                x = x1;
+                if(x1==-8){
+                    x=x1;
+                    break;
+                    }
+                pc.printf("\nx: %02d",x);
+                pc.printf("num: %032d",irdan());
+            }//c1
+            
+            if(c == 2){
+                x2 = irdan();
+                pc.printf("\nx2: %d c: %d\n",x2,c);
+                if( x2 == -8){
+                    x = x1;
+                    pc.printf("\nx: %02d",x);
+                     pc.printf("num: %032d",sel);
+                    break;
+                }
+                else{
+                     x = x1*10 + x2;
+                     pc.printf("\nx: %02d",x);
+                      pc.printf("num: %032d",sel);
+                
+                }
+                
+                
+            }//c2
+            if (c == 3){
+                x3 = irdan();
+                pc.printf("\nx3: %d c: %d\n",x3,c);
+                pc.printf("\nx: %02d",x);
+                pc.printf("num: %032d",sel);
+                if( x3 == -8){
+                    x = ((x1*10) + x2);
+                    pc.printf("\nx: %02d",x);
+                     pc.printf("num: %032d",sel);
+                    break;
+                } 
+            }  //c3
+        }//detectar
+        
+        }//while
+        return x; 
+          
+    }//funcion
\ No newline at end of file