CAPTURAS DE CÓDIGOS IRDA SIN OSCILOSCOPIO, MIDE LA CANTIDAD DE ESPACIOS EN MODO NORMAL LA DURACIÓN Y EL PROMEDIO DE ELLOS. CON LA AYUDA DE PULSAR BAJO UN BOTÓN DEVUELVE EL CODIGO COMPLETO

Dependencies:   Pulse1 mbed

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers main.cpp Source File

main.cpp

00001 #include "mbed.h"
00002 #include <Pulse1.h>
00003 PulseInOut irda(PTD5);// en este puerto se pone el sensor infrarrojo
00004 
00005 Serial pc(USBTX, USBRX);
00006 DigitalOut led(LED1);
00007 DigitalOut led2(LED2);
00008 DigitalIn  mode(PTD0);
00009 int numN[35];//cadena para almacenar todos los tiempos que conforman los bits de datos
00010 int numP[35];//cadena para almacenar todos los tiempos que conforman los bits de datos
00011 int bin[35];//cadena para almacenar todos los tiempos que conforman los bits de datos
00012 int dato; // tiempo de cada dato que se lee
00013 int pul_low;
00014 int i,j,k,header,proL,proH; 
00015 int r; 
00016 int code;      
00017 int main(){
00018 
00019 fflush( stdin );
00020 lop1: header = irda.read_low_us(); 
00021        if(header>8000) goto seguir;
00022        goto lop1;
00023 seguir:
00024       for(i=0;i<35;++i){
00025       if(mode){
00026       numN[i] = irda.read_low_us();    //funcion para leer un pulso de caida o bajo en header
00027       }
00028       if(!mode){
00029       numP[i] = irda.read_high_us();    //funcion para leer un pulso de caida o bajo en header
00030       }
00031         //funcion para leer un pulso de caida o bajo en header
00032                        }
00033 
00034        pc.printf("Header=%d \n",header," uS");
00035        for(i=0;i<36;++i){
00036        pc.printf(",%d, %d, %d \n",numN[i],i,numP[i]);
00037        
00038            if(numN[i]>8000){
00039            pc.printf("\n");
00040            pc.printf("espacios=%d\n",i);
00041            k=i;
00042            proL=0;
00043            for(i=0;i<k;++i){
00044                proL=proL+numN[i];
00045                }
00046            proL=proL/k; 
00047            pc.printf("promedio_E=%d\n",proL);   
00048            wait(3);
00049            pc.printf("\n");   
00050            
00051              if(!mode){
00052                for(i=0;i<k-1;++i){
00053                if(numP[i]>(2*proL)){
00054                    bin[i]=1;
00055                    for(j=0;j<i+1;++j){bin[i]=bin[i]*2;}
00056                    //pc.printf("%d-",bin[i]);
00057                                    }   
00058                if(numP[i]<(2*proL)){
00059                    bin[i]=0;
00060                    //pc.printf("%d-",bin[i]);                    
00061                                    }
00062                }
00063                }                
00064            for(i=0;i<k-1;++i){code=code+bin[i];}
00065            pc.printf("\n");
00066            pc.printf("code=%d",code);
00067            code=0;                  
00068            goto lop1;
00069            
00070            }
00071        }   
00072  }     
00073  
00074  //for(j=0;j<i;++j)