es una versión mejorada que no requiere suiche y da mas informacion
Fork of CAPTURAS_IRDA by
main.cpp
- Committer:
- tony63
- Date:
- 2019-03-14
- Revision:
- 3:0e1e959c2f4f
- Parent:
- 2:d189b5862909
- Child:
- 4:e30f322c931d
File content as of revision 3:0e1e959c2f4f:
//este programa extrae vector de tiempos de una tecla pulsada a altos o bajos //se debe disparar el control dos veces, segun lo indique el programa //para cualquier numero de bits pero limitamos el vector a 65 pulsos //entrega las dos cabeceras baja en un intento de disparo y una alta en el segundo disparo #include "mbed.h" #include <Pulse1.h> PulseInOut irda(PTD5);// en este puerto se pone el sensor infrarrojo Serial pc(USBTX, USBRX); DigitalOut led1(LED1); DigitalOut led2(LED2); int numN[65];//cadena para almacenar todos los tiempos que conforman los bits de datos int numP[65];//cadena para almacenar todos los tiempos que conforman los bits de datos int bin[65];//cadena para almacenar todos los tiempos que conforman los bits de datos int dato; // tiempo de cada dato que se lee int pul_low; int i,j,k,header,proL,proH; int r; int mode=1; int code; int numb=65; int main(){ pc.printf("\n"); pc.printf("este codigo es para 32 bits de datos"); pc.printf("\n"); pc.printf("pise reset para otro codigo"); pc.printf("\n"); fflush( stdin ); lop1: if(mode){ header = irda.read_low_us(); if(header>3400) goto seguir1; //espera un header bajo de al menos 3,4mS goto lop1; } lop2: if(!mode){ header = irda.read_high_us(); if(header>1600) goto seguir2; // espera un header alto de 1,6mS goto lop2; } seguir1: for(i=0;i<numb;++i){ numN[i] = irda.read_low_us(); //funcion para leer un pulso bajo } for(i=0;i<numb;++i){ pc.printf("%d,",numN[i]); } pc.printf("\n"); pc.printf("HeaderL=%d \n",header," uS"); header=0; for(i=0;i<numb;++i){ proL=numN[i]+proL; } pc.printf("\n"); pc.printf("prom_bajos=%d", proL/numb); pc.printf("\n"); pc.printf("Si el promedio bajos es mas grande de lo normal, baje en numb en el codigo y recompile"); wait(2); header=0; proL=0; pc.printf("\n"); pc.printf("dispare de nuevo para altos"); mode=!mode; pc.printf("\n"); goto lop1; seguir2: for(i=0;i<numb;++i){ numP[i] = irda.read_high_us(); //funcion para leer un pulso alto if (numP[i]>10000){pc.printf("Final inesperado, nbits=%d....",i,"\n");}//cuenta efectivamente los bits } for(i=0;i<numb;++i){ pc.printf("%d,",numP[i]); } pc.printf("\n"); pc.printf("copie esta cadena de arriba en su programa..omita el ultimo"); pc.printf("\n"); pc.printf("HeadeH=%d \n",header," uS"); header=0; wait(2); goto lop1; }