alarma configurable y se prende y apaga con control remoto

Dependencies:   Debounced Pulse1 QEI RTC-DS1307 TextLCD mbed

main.cpp

Committer:
slorm
Date:
2018-06-01
Revision:
0:31bb391d0545

File content as of revision 0:31bb391d0545:

#include "mbed.h"
#include "DebouncedIn.h"
#include "TextLCD.h"
#include "QEI.h"
#include "Rtc_Ds1307.h"
#include <Pulse1.h>
Serial pc(USBTX, USBRX);
PulseInOut irda(PTD5);
TextLCD lcd(PTB10, PTB11, PTE2, PTE3, PTE4, PTE5); // rs, e, d4-d7
Rtc_Ds1307 rtc(PTE0, PTE1);
QEI wheel (PTD7, PTD6, NC, 100);

DebouncedIn button_enco(PTC5);

DigitalOut led(LED1);

int C1=0x0C;
int m=0;
int Conf=0;  // 0: Alarma y 1:Reloj
int Lugar=0; // Definen el punto en el cual va el programa
int i;
int visual=1;
int ac=1;
int activ1=0;
int ac2=0;
int ac3=0;
int ac4=0;
int ac5=0;
int ac6=0;
int ac7=0;
int alarma1=0;
int alarma2=0;
int alarma3=0;
int alarma4=0;
int alarma5=0;
int alarma6=0;
int alarma7=0;
int selec=1;
int n=0;
int comp1=0;
int comp2=0;
int comp3=0;
int comp4=0;
int comp5=0;
int comp6=0;
int comp7=0;
int comp8=0;
int header=0;
int mode=1;
int j=0;
int k=0;
int numP[35];
int numP_nor[35];
int numb=32;
int boton1[32]= {0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,0,1,1,0,0,0,0,0,1,0,0,1,1,1,1,1};       //1
int boton2[32]= {0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,1,1,1,1,1};       //2
int boton3[32]= {0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,0,0,1,0,0,0,0,0,1,1,0,1,1,1,1};       //3
int boton4[32]= {0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,0,1,0,1,0,0,0,0,1,0,1,0,1,1,1,1};       //4
int boton5[32]= {0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,0,1,0,0,0,0,0,0,1,0,1,1,1,1};       //5
int boton6[32]= {0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,0,0,0,0,0,0,1,0,1,1,1,1,1,1,0,1};       //6
int boton7[32]= {0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,0,0,0,0,0,1,0,0,1,1,1,1,1,0,1};       //7
int boton8[32]= {0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,0,0,1,0,0,0,0,0,1,1,0,1,1,1,1,1};  

int main()
{
    Rtc_Ds1307::Time_rtc tm = {};
    Rtc_Ds1307::Time_rtc Alarm = {};
    Rtc_Ds1307::Time_rtc Alarm1 = {};
    Rtc_Ds1307::Time_rtc Alarm2 = {};
    Rtc_Ds1307::Time_rtc Alarm3 = {};
    Rtc_Ds1307::Time_rtc Alarm4 = {};
    Rtc_Ds1307::Time_rtc Alarm5 = {};
    Rtc_Ds1307::Time_rtc Alarm6 = {};
    lcd.cls();
    lcd.writeCommand(C1);//escribimos un comando segun el manual del modulo LCD
    
    lcd.locate(0,0);
    lcd.printf("--Alarma  --Hora");
    
    rtc.getTime(tm); //lee el tiempo del DS1307

    while(1)
    {
        switch (Lugar)
        {
            case 0:
                led= 1;
                m=wheel.getPulses();  // m son los datos del encoder
                if(m!=0 && Conf==0){
                    Conf=1;
                    wheel.reset();  
                    m=0;              
                }
                
                 if(m!=0 && Conf==1){
                    Conf=0;
                    wheel.reset();  
                    m=0;              
                }
                
                if(Conf==0){
                    
                    lcd.locate(11,0);
                    lcd.printf("-");                    
                    lcd.locate(1,0);
                    lcd.printf(">");
                    lcd.locate(0,1);                    
                    wait(0.1);
                    
                }
                
                 if(Conf==1){
                    
                    lcd.locate(1,0);
                    lcd.printf("-");                    
                    lcd.locate(11,0);
                    lcd.printf(">");
                    lcd.locate(0,1);                    
                    wait(0.1);
                }
                
                if (button_enco.falling()){  //si se pulsa boton encoder
                    Lugar=1;
                    m=0;       
                }
            
            break;
            
            case 1:
                switch(i)
                {
                    case 0:
                    
                                              
                        if(Conf==0)
                        {
                            lcd.cls();
                            lcd.locate(0,0);
                            lcd.printf("Config. Alarma ");
                            wait(1);
                            i++;
                            m=0;
                            lcd.cls();
                            lcd.locate(0,0);
                            lcd.printf("Dia: ");
                            tm.date=1;                             
                        }
                
                        if(Conf==1)
                        {
                            lcd.cls();
                            lcd.locate(0,0);
                            lcd.printf("Config. hora   ");
                            wait(1);
                            i++;
                            m=0;
                            lcd.cls();
                            lcd.locate(0,0);
                            lcd.printf("Dia: ");
                            
                        }    

                    break;
                    
                    case 1:
                        m=wheel.getPulses();        
                        if (m!=0) 
                        {
                            tm.date=tm.date+m;
                            if(tm.date>31)
                            {
                                tm.date=31;
                            }
                            if(tm.date<1)
                            {
                                tm.date=1;
                            }
                            
                            wheel.reset();  
                            m=0;
                        }
                        lcd.locate(5,0);
                        lcd.printf("%02d",tm.date);
                        
                        if (button_enco.falling())
                        {
                            i++;
                            m=0;
                            lcd.cls();
                            lcd.locate(0,0);
                            lcd.printf("Mes: ");
                            //tm.mon=1;
                        }
                    
                    break;
                    
                    case 2:
                        m=wheel.getPulses();        
                        if (m!=0) 
                        {
                            tm.mon=tm.mon+m;
                            if(tm.mon>12)
                            {
                                tm.mon=12;
                            }
                            if(tm.mon<1)
                            {
                                tm.mon=1;
                            }
                            
                            wheel.reset();  
                            m=0;
                        }
                        lcd.locate(5,0);
                        lcd.printf("%02d",tm.mon);
                        
                        if (button_enco.falling())
                        {
                            i++;
                            m=0;
                            lcd.cls();
                            lcd.locate(0,0);
                            lcd.printf("Year: ");
                            
                        }
                    
                    break;
                    
                    case 3:
                        m=wheel.getPulses();        
                        if (m!=0) 
                        {
                            tm.year=tm.year+m;
                            
                            if(tm.year<2000)
                            {
                                tm.year=2000;
                            }
                            
                            wheel.reset();  
                            m=0;
                        }
                        lcd.locate(6,0);
                        lcd.printf("%02d",tm.year);
                        
                        if (button_enco.falling())
                        {
                            i++;
                            m=0;
                            lcd.cls();
                            lcd.locate(0,0);
                            lcd.printf("Hora: ");
                            
                        }
                    
                    break;
                    
                     case 4:
                        m=wheel.getPulses();
                                
                        if (m!=0) 
                        {
                            tm.hour=tm.hour + m;
                            if(tm.hour>23)
                            {
                                tm.hour=23;
                            }
                            if(tm.hour<0)
                            {
                                tm.hour=0;
                            }
                            
                            wheel.reset();  
                            m=0;
                        }
                        lcd.locate(6,0);
                        lcd.printf("%02d",tm.hour);
                        
                        if (button_enco.falling())
                        {
                            i++;
                            m=0;
                            lcd.cls();
                            lcd.locate(0,0);
                            lcd.printf("Minuto: ");
                            //tm.min=0;
                        }
                    
                    break;
                    
                    case 5:
                        m=wheel.getPulses();        
                        if (m!=0) 
                        {
                            tm.min=tm.min+m;
                            if(tm.min>59)
                            {
                                tm.min=59;
                            }
                            if(tm.min<0)
                            {
                                tm.min=0;
                            }
                            
                            wheel.reset();  
                            m=0;
                        }
                        lcd.locate(8,0);
                        lcd.printf("%02d",tm.min);
                        
                        if (button_enco.falling())
                        {
                            i++;
                            m=0;
                            lcd.cls();
                            lcd.locate(0,0);
                            lcd.printf("Segundo: ");
                            //tm.sec=0;
                        }
                    
                    break;
                    
                    
                    case 6:
                        m=wheel.getPulses();        
                        if (m!=0) 
                        {
                            tm.sec=tm.sec+m;
                            if(tm.sec>59)
                            {
                                tm.sec=59;
                            }
                            if(tm.sec<0)
                            {
                                tm.sec=0;
                            }
                            
                            wheel.reset();  
                            m=0;
                        }
                        lcd.locate(9,0);
                        lcd.printf("%02d",tm.sec);
                        
                        if (button_enco.falling())
                        {
                            ///////////////////
                            if(Conf==0)
                            {
                                
                                lcd.cls();
                                lcd.locate(0,0);
                                lcd.printf("Alarma:");
                                i++;
                                m=0;
                                                          
                            }
                
                            if(Conf==1)
                            {
                                rtc.setTime(tm, false, false);
                                rtc.startClock();
                                lcd.cls();
                                lcd.locate(0,0);
                                lcd.printf("Hora Config.  ");
                                wait(1);
                                i=0;
                                m=0;
                                Lugar=0;
                                lcd.locate(0,0);
                                lcd.printf("--Alarma  --Hora");                                
                            } 
                           
                           ///////////////////
                        }
                    
                    break;
                    case 7:
                        m=wheel.getPulses();        
                        if (m!=0) 
                        {
                            selec=selec+m;
                            if(selec>7)
                            {
                                selec=7;
                            }
                            if(selec<1)
                            {
                                selec=1;
                            }
                            
                            wheel.reset();  
                            m=0;
                        }
                        lcd.locate(9,0);
                        lcd.printf("%02d",selec);
                        
                        if (button_enco.falling())
                        {
                            i++;
                            m=0;
                            lcd.cls();
                            lcd.locate(0,0);
                            lcd.printf("%02d seleccionada",selec);
                            //tm.sec=0;
                        }
                    break;
                    
                    case 8:
                       if (selec==1)
                       {
                            Alarm=tm;
                            lcd.cls();
                            lcd.locate(0,0);
                            i=0;
                            m=0;
                            Lugar++;
                       }
                        if (selec==2)
                         {
                               Alarm1=tm;
                               lcd.cls();
                               lcd.locate(0,0);
                               i=0;
                                m=0;
                                Lugar++;
                        }
                         if (selec==3)
                         {
                                Alarm2=tm;
                               lcd.cls();
                               lcd.locate(0,0);
                                i=0;
                                m=0;
                                Lugar++;
                         }
                            if (selec==4)
                            {
                                  Alarm3=tm;
                                 lcd.cls();
                                  lcd.locate(0,0);
                                 i=0;
                                  m=0;
                                  Lugar++;
                              }
                              if (selec==5)
                              {
                                 Alarm4=tm;
                                   lcd.cls();
                                  lcd.locate(0,0);
                                  i=0;
                                  m=0;
                                  Lugar++;
                               }
                               if (selec==6)
                              {
                                  Alarm5=tm;
                                  lcd.cls();
                                  lcd.locate(0,0);
                                  i=0;
                                  m=0;
                                  Lugar++;
                              }
                              if (selec==7)
                              {
                                 Alarm6=tm;
                                 lcd.cls();
                                 lcd.locate(0,0);
                                 i=0;
                                 m=0;
                                Lugar++;
                                }  
                        
                    break;
                   
                }            
            break;
            
            case 2:
                led=1;
                rtc.getTime(tm);
                m=wheel.getPulses();        
                        if (m!=0) 
                        {
                            visual=visual+m;
                            if(visual>10)
                            {
                                visual=1;
                            }
                            if(visual<1)
                            {
                                visual=10;
                            }
                            
                            wheel.reset();  
                            m=0;
                        }           
                if(visual==1)
                {
                    
                    lcd.locate(0,0);                        
                    lcd.printf("Hora:   ");
                    lcd.locate(8,0);    
                    lcd.printf("%02d:",tm.hour);
                    lcd.printf("%02d:",tm.min);
                    lcd.printf("%02d",tm.sec); 
                       
                    lcd.locate(0,1);
                    lcd.printf("%02d/",tm.mon);
                    lcd.printf("%02d/",tm.date);
                    lcd.printf("%02d",tm.year);
                    lcd.printf(",");
                    if(activ1==1)
                    {
                        lcd.printf("1");
                    }
                    
                    if(ac2==1)
                    {
                        lcd.printf("2");
                    }
                    if(ac3==1)
                    {
                        lcd.printf("3");
                    }
                    if(ac4==1)
                    {
                        lcd.printf("4");
                    }
                    if(ac5==1)
                    {
                        lcd.printf("5");
                    }
                    if(ac6==1)
                    {
                        lcd.printf("6");
                    }
                    if(ac7==1)
                    {
                        lcd.printf("7");
                    }
                    wait(0.1);
                    
                    //////
                
                }
                
                if(visual==2)
                {
                    lcd.locate(0,0);    
                    lcd.printf("Alarma1 ");
                    lcd.locate(8,0);    
                    lcd.printf("%02d:",Alarm.hour);
                    lcd.printf("%02d:",Alarm.min);
                    lcd.printf("%02d",Alarm.sec);
                    
                        
                    lcd.locate(0,1);
                    lcd.printf("%02d/",Alarm.mon);
                    lcd.printf("%02d/",Alarm.date);
                    lcd.printf("%02d",Alarm.year);
                    
                    if (activ1==0)
                    {
                        lcd.printf(" off");
                    }
                    if (activ1==1)
                    {
                        lcd.printf(" on");
                    }
                    wait(0.1);
                    lcd.cls();
                    
                }
                if(visual==3)
                {
                    lcd.locate(0,0);    
                    lcd.printf("Alarma2 ");
                    lcd.locate(8,0);    
                    lcd.printf("%02d:",Alarm1.hour);
                    lcd.printf("%02d:",Alarm1.min);
                    lcd.printf("%02d",Alarm1.sec);
                    
                        
                    lcd.locate(0,1);
                    lcd.printf("%02d/",Alarm1.mon);
                    lcd.printf("%02d/",Alarm1.date);
                    lcd.printf("%02d",Alarm1.year);
                    
                    if (ac2==0)
                    {
                        lcd.printf(" off");
                    }
                    if (ac2==1)
                    {
                        lcd.printf(" on");
                    }
                    wait(0.1);
                    lcd.cls();
                    
                }
                if(visual==4)
                {
                    lcd.locate(0,0);    
                    lcd.printf("Alarma3 ");
                    lcd.locate(8,0);    
                    lcd.printf("%02d:",Alarm2.hour);
                    lcd.printf("%02d:",Alarm2.min);
                    lcd.printf("%02d",Alarm2.sec);
                    
                        
                    lcd.locate(0,1);
                    lcd.printf("%02d/",Alarm2.mon);
                    lcd.printf("%02d/",Alarm2.date);
                    lcd.printf("%02d",Alarm2.year);
                    
                    if (ac3==0)
                    {
                        lcd.printf(" off");
                    }
                    if (ac3==1)
                    {
                        lcd.printf(" on");
                    }
                    wait(0.1);
                    lcd.cls();
                    
                }
                if(visual==5)
                {
                    lcd.locate(0,0);    
                    lcd.printf("Alarma4 ");
                    lcd.locate(8,0);    
                    lcd.printf("%02d:",Alarm3.hour);
                    lcd.printf("%02d:",Alarm3.min);
                    lcd.printf("%02d",Alarm3.sec);
                    
                        
                    lcd.locate(0,1);
                    lcd.printf("%02d/",Alarm3.mon);
                    lcd.printf("%02d/",Alarm3.date);
                    lcd.printf("%02d",Alarm3.year);
                    
                    if (ac4==0)
                    {
                        lcd.printf(" off");
                    }
                    if (ac4==1)
                    {
                        lcd.printf(" on");
                    }
                    wait(0.1);
                    lcd.cls();
                    
                }
                if(visual==6)
                {
                    lcd.locate(0,0);    
                    lcd.printf("Alarma5 ");
                    lcd.locate(8,0);    
                    lcd.printf("%02d:",Alarm4.hour);
                    lcd.printf("%02d:",Alarm4.min);
                    lcd.printf("%02d",Alarm4.sec);
                    
                        
                    lcd.locate(0,1);
                    lcd.printf("%02d/",Alarm4.mon);
                    lcd.printf("%02d/",Alarm4.date);
                    lcd.printf("%02d",Alarm4.year);
                
                    if (ac5==0)
                    {
                        lcd.printf(" off");
                    }
                    if (ac5==1)
                    {
                        lcd.printf(" on");
                    }
                    wait(0.1);
                    lcd.cls();
                    
                }
                if(visual==7)
                {
                    lcd.locate(0,0);    
                    lcd.printf("Alarma6 ");
                    lcd.locate(8,0);    
                    lcd.printf("%02d:",Alarm5.hour);
                    lcd.printf("%02d:",Alarm5.min);
                    lcd.printf("%02d",Alarm5.sec);
                    
                        
                    lcd.locate(0,1);
                    lcd.printf("%02d/",Alarm5.mon);
                    lcd.printf("%02d/",Alarm5.date);
                    lcd.printf("%02d",Alarm5.year);
                    if (ac6==0)
                    {
                        lcd.printf(" off");
                    }
                    if (ac6==1)
                    {
                        lcd.printf(" on");
                    }
                    wait(0.1);
                    lcd.cls();
                    
                }
                if(visual==8)
                {
                    lcd.locate(0,0);    
                    lcd.printf("Alarma7 ");
                    lcd.locate(8,0);    
                    lcd.printf("%02d:",Alarm6.hour);
                    lcd.printf("%02d:",Alarm6.min);
                    lcd.printf("%02d",Alarm6.sec);
                    
                        
                    lcd.locate(0,1);
                    lcd.printf("%02d/",Alarm6.mon);
                    lcd.printf("%02d/",Alarm6.date);
                    lcd.printf("%02d",Alarm6.year);
                    
                    if (ac7==0)
                    {
                        lcd.printf(" off");
                    }
                    if (ac7==1)
                    {
                        lcd.printf(" on");
                    }
                    wait(0.1);
                    lcd.cls();
                    
                }
                if (visual==9)
                {
                    lcd.locate(0,0);    
                    lcd.printf("Nueva alarma");
                    wait(0.1);
                    lcd.cls();
                if (button_enco.falling())
                {
                    Conf=0;
                    Lugar=1;
                    i=0;
                }
                }
                if(visual==10)
                {
                    lcd.locate(0,0);    
                    lcd.printf("guardar");
                    wait(0.1);
                    lcd.cls();
                    if (button_enco.falling())
                    {
                         lcd.cls();
                         Lugar=3;
                    }
                }
                if( (tm.date==Alarm.date)&&(tm.mon==Alarm.mon)&&(tm.year==Alarm.year)&&(tm.hour==Alarm.hour)&&(tm.min==Alarm.min)&&(tm.sec==Alarm.sec)&&(activ1==1) )
                {
                    Lugar=4;
                    alarma1=1;
                    lcd.cls();
                    lcd.locate(0,0);                        
                    lcd.printf("Alarma 1 Activa");
                    m=0;
                }
                if( (tm.date==Alarm1.date)&&(tm.mon==Alarm1.mon)&&(tm.year==Alarm1.year)&&(tm.hour==Alarm1.hour)&&(tm.min==Alarm1.min)&&(tm.sec==Alarm1.sec)&&(ac2==1) )
                {
                    Lugar=4;
                    alarma2=1;
                    lcd.cls();
                    lcd.locate(0,0);                        
                    lcd.printf("Alarma 2 Activa");
                    m=0;
                }
                if( (tm.date==Alarm2.date)&&(tm.mon==Alarm2.mon)&&(tm.year==Alarm2.year)&&(tm.hour==Alarm2.hour)&&(tm.min==Alarm2.min)&&(tm.sec==Alarm2.sec)&&(ac3==1) )
                {
                    Lugar=4;
                    alarma3=1;
                    lcd.cls();
                    lcd.locate(0,0);                        
                    lcd.printf("Alarma 3 Activa");
                    m=0;
                }
                if( (tm.date==Alarm3.date)&&(tm.mon==Alarm3.mon)&&(tm.year==Alarm3.year)&&(tm.hour==Alarm3.hour)&&(tm.min==Alarm3.min)&&(tm.sec==Alarm3.sec)&&(ac4==1))
                {
                    Lugar=4;
                    alarma4=1;
                    lcd.cls();
                    lcd.locate(0,0);                        
                    lcd.printf("Alarma 4 Activa");
                    m=0;
                }
                if( (tm.date==Alarm4.date)&&(tm.mon==Alarm4.mon)&&(tm.year==Alarm4.year)&&(tm.hour==Alarm4.hour)&&(tm.min==Alarm4.min)&&(tm.sec==Alarm4.sec)&&(ac5==1) )
                {
                    Lugar=4;
                    alarma5=1;
                    lcd.cls();
                    lcd.locate(0,0);                        
                    lcd.printf("Alarma 5 Activa");
                    m=0;
                }
                if( (tm.date==Alarm5.date)&&(tm.mon==Alarm5.mon)&&(tm.year==Alarm5.year)&&(tm.hour==Alarm5.hour)&&(tm.min==Alarm5.min)&&(tm.sec==Alarm5.sec)&&(ac6==1) )
                {
                    Lugar=4;
                    alarma6=1;
                    lcd.cls();
                    lcd.locate(0,0);                        
                    lcd.printf("Alarma 6 Activa");
                    m=0;
                }
                if( (tm.date==Alarm6.date)&&(tm.mon==Alarm6.mon)&&(tm.year==Alarm6.year)&&(tm.hour==Alarm6.hour)&&(tm.min==Alarm6.min)&&(tm.sec==Alarm6.sec)&&(ac7==1) )
                {
                    Lugar=4;
                    alarma7=1;
                    lcd.cls();
                    lcd.locate(0,0);                        
                    lcd.printf("Alarma 7 Activa");
                    m=0;
                }
                
                        
                break;
                case 3:
                   switch (ac){
                    case 1:
                        header = irda.read_high_us(); 
                        if(header>3500)
                        {
                            ac=2;
                        }
                        break;
                    case 2:
                        
                        for(j=0;j<numb;++j)
                        {
                             numP[j] = irda.read_high_us();    //funcion para leer un pulso alto
                        }
                        header=0;
                        for(j=0;j<numb;++j)
                        {
                            if(numP[j]<1000)
                            {
                                numP_nor[j]=0;
                            }
                            if(numP[j]>1000)
                            {
                                numP_nor[j]=1;
                            }
                            pc.printf("%d,",numP_nor[j]);
                        }
                        pc.printf("\n");
                        for (j=0;j<numb;++j)
                        {
                            if(numP_nor[j]==boton1[j])
                            {
                                 n=0;
                            }
                            else
                            {
                                n=1;
                            }
                            comp1=comp1+n;
                            n=0;
                        }
                
                        for (j=0;j<numb;++j)
                        {
                            if(numP_nor[j]==boton2[j])
                            {
                                n=0;
                            }
                            else
                            {
                                n=1;
                            }
                            comp2=comp2+n;
                            n=0;
                        }
                        for (j=0;j<numb;++j)
                        {
                            if(numP_nor[j]==boton3[j])
                            {
                                n=0;
                            }
                            else
                            {
                                n=1;
                            }
                            comp3=comp3+n;
                            n=0;
                        }
                        for (j=0;j<numb;++j)
                        {
                            if(numP_nor[j]==boton4[j])
                            {
                                n=0;
                            }
                            else
                            {
                                n=1;
                            }
                            comp4=comp4+n;
                            n=0;
                        }
                        for (j=0;j<numb;++j)
                        {
                            if(numP_nor[j]==boton5[j])
                            {
                                n=0;
                            }
                            else
                            {
                                n=1;
                            }
                            comp5=comp5+n;
                            n=0;
                        }
                        for (j=0;j<numb;++j)
                        {
                            if(numP_nor[j]==boton6[j])
                            {
                                n=0;
                            }
                            else
                            {
                                n=1;
                            }
                            comp6=comp6+n;
                            n=0;
                        }
                        for (j=0;j<numb;++j)
                        {
                            if(numP_nor[j]==boton7[j])
                            {
                                n=0;
                            }
                            else
                            {
                                n=1;
                            }
                            comp7=comp7+n;
                            n=0;
                        }
                        for (j=0;j<numb;++j)
                        {
                            if(numP_nor[j]==boton8[j])
                            {
                                n=0;
                            }
                            else
                            {
                                n=1;
                            }
                            comp8=comp8+n;
                            n=0;
                        }
                        if ((comp1==0))
                        {
                            pc.printf("Oprimio 1\n");
                            if(activ1==0)
                            {
                                activ1=1;
                                lcd.cls();
                                lcd.printf("Alarma 1: on");
                            }
                            else if(activ1==1)
                            {
                                activ1=0;
                                lcd.cls();
                                lcd.printf("Alarma 1: off");
                            }
                            
                        }
                        if ((comp2==0))
                        {
                             pc.printf("Oprimio 2\n");
                             if(ac2==0)
                            {
                                ac2=1;
                                lcd.cls();
                                lcd.printf("Alarma 2: on");
                            }
                            else if(ac2==1)
                            {
                                ac2=0;
                                lcd.cls();
                                lcd.printf("Alarma 2: off");
                            }

                        }
                        if ((comp3==0))
                        {
            
                                pc.printf("Oprimio 3\n");
                                if(ac3==0)
                            {
                                ac3=1;
                                lcd.cls();
                                lcd.printf("Alarma 3: on");
                            }
                            else if(ac3==1)
                            {
                                ac3=0;
                                lcd.cls();
                                lcd.printf("Alarma 3: off");
                            }
       
                        }
                        if ((comp4==0))
                        {
                              
                                pc.printf("Oprimio 4\n");
                                if(ac4==0)
                            {
                                ac4=1;
                                lcd.cls();
                                lcd.printf("Alarma 4: on");
                            }
                            else if(ac4==1)
                            {
                                ac4=0;
                                lcd.cls();
                                lcd.printf("Alarma 4: off");
                            }
                       
                        }
                        if ((comp5==0))
                        {
                                
                                pc.printf("Oprimio 5\n");
                                if(ac5==0)
                            {
                                ac5=1;
                                lcd.cls();
                                lcd.printf("Alarma 5: on");
                            }
                            else if(ac5==1)
                            {
                                ac5=0;
                                lcd.cls();
                                lcd.printf("Alarma 5: off");
                            }
                      
                        }
                        if ((comp6==0))
                        {
                          
                                pc.printf("Oprimio 6\n");
                            if(ac6==0)
                            {
                                ac6=1;
                                lcd.cls();
                                lcd.printf("Alarma 6: on");
                            }
                            else if(ac6==1)
                            {
                                ac6=0;
                                lcd.cls();
                                lcd.printf("Alarma 6: off");
                            }
                      
                        }
                        if ((comp7==0))
                        {
                     
                                pc.printf("Oprimio 7\n");
                            if(ac7==0)
                            {
                                ac7=1;
                                lcd.cls();
                                lcd.printf("Alarma 7: on");
                            }
                            else if(ac7==1)
                            {
                                ac7=0;
                                lcd.cls();
                                lcd.printf("Alarma 7: off");
                            }
                       
                        }
                        if ((comp8==0))
                        {
                            Lugar=2;
                            visual=1;
                        }
                        comp1=0;
                        comp2=0;
                        comp3=0;
                        comp4=0;
                        comp5=0;
                        comp6=0;
                        comp7=0;
                        comp8=0;
                        n=0;
                        ac=1;
                        }
                        break;
                        
            case 4:
                led=0;
                switch (mode){
                    case 1:
                        header = irda.read_high_us(); 
                        if(header>3500)
                        {
                            mode=2;
                        }
                        break;
                    case 2:
                        
                        for(j=0;j<numb;++j)
                        {
                             numP[j] = irda.read_high_us();    //funcion para leer un pulso alto
                        }
                        header=0;
                        for(j=0;j<numb;++j)
                        {
                            if(numP[j]<1000)
                            {
                                numP_nor[j]=0;
                            }
                            if(numP[j]>1000)
                            {
                                numP_nor[j]=1;
                            }
                            pc.printf("%d,",numP_nor[j]);
                        }
                        pc.printf("\n");
                        for (j=0;j<numb;++j)
                        {
                            if(numP_nor[j]==boton1[j])
                            {
                                 n=0;
                            }
                            else
                            {
                                n=1;
                            }
                            comp1=comp1+n;
                            n=0;
                        }
                
                        for (j=0;j<numb;++j)
                        {
                            if(numP_nor[j]==boton2[j])
                            {
                                n=0;
                            }
                            else
                            {
                                n=1;
                            }
                            comp2=comp2+n;
                            n=0;
                        }
                        for (j=0;j<numb;++j)
                        {
                            if(numP_nor[j]==boton3[j])
                            {
                                n=0;
                            }
                            else
                            {
                                n=1;
                            }
                            comp3=comp3+n;
                            n=0;
                        }
                        for (j=0;j<numb;++j)
                        {
                            if(numP_nor[j]==boton4[j])
                            {
                                n=0;
                            }
                            else
                            {
                                n=1;
                            }
                            comp4=comp4+n;
                            n=0;
                        }
                        for (j=0;j<numb;++j)
                        {
                            if(numP_nor[j]==boton5[j])
                            {
                                n=0;
                            }
                            else
                            {
                                n=1;
                            }
                            comp5=comp5+n;
                            n=0;
                        }
                        for (j=0;j<numb;++j)
                        {
                            if(numP_nor[j]==boton6[j])
                            {
                                n=0;
                            }
                            else
                            {
                                n=1;
                            }
                            comp6=comp6+n;
                            n=0;
                        }
                        for (j=0;j<numb;++j)
                        {
                            if(numP_nor[j]==boton7[j])
                            {
                                n=0;
                            }
                            else
                            {
                                n=1;
                            }
                            comp7=comp7+n;
                            n=0;
                        }
                        if ((comp1==0)&&(alarma1==1))
                        {
                            alarma1=0;
                            Lugar=2;
                            pc.printf("Oprimio 1\n");
                        lcd.cls();
                        lcd.printf("Alarma 1: off");
                        wait(2);
                        lcd.cls();
                    
                        }
                        if ((comp2==0)&&(alarma2==1))
                        {
                             alarma2=0;
                             Lugar=2;
                             pc.printf("Oprimio 2\n");
                        lcd.cls();
                        lcd.printf("Alarma 2: off");
                        wait(2);
                        lcd.cls();
                        }
                        if ((comp3==0)&&(alarma3==1))
                        {
                                alarma3=0;
                                Lugar=2;
                                pc.printf("Oprimio 3\n");
                        lcd.cls();
                        lcd.printf("Alarma 3: off");
                        wait(2);
                        lcd.cls();
                        }
                        if ((comp4==0)&&(alarma4==1))
                        {
                                alarma4=0;
                                Lugar=2;
                                pc.printf("Oprimio 4\n");
                        lcd.cls();
                        lcd.printf("Alarma 4: off");
                        wait(2);
                        lcd.cls();
                        }
                        if ((comp5==0)&&(alarma5==1))
                        {
                                alarma5=0;
                                Lugar=2;
                                pc.printf("Oprimio 5\n");
                        lcd.cls();
                        lcd.printf("Alarma 5: off");
                        wait(2);
                        lcd.cls();
                        }
                        if ((comp6==0)&&(alarma6==1))
                        {
                                alarma6=0;
                                Lugar=2;
                                pc.printf("Oprimio 6\n");
                        lcd.cls();
                        lcd.printf("Alarma 6: off");
                        wait(2);
                        lcd.cls();
                        }
                        if ((comp7==0)&&(alarma7==1))
                        {
                                alarma7=0;
                                Lugar=2;
                                pc.printf("Oprimio 7\n");
                        lcd.cls();
                        lcd.printf("Alarma 7: off");
                        wait(2);
                        lcd.cls();
                        }
                        comp1=0;
                        comp2=0;
                        comp3=0;
                        comp4=0;
                        comp5=0;
                        comp6=0;
                        comp7=0;
                        n=0;
                        mode=1;
                        }
                        
    }
}
}