
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
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)
Generated on Tue Jul 26 2022 15:19:03 by
