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:
- 4:e30f322c931d
- Parent:
- 3:0e1e959c2f4f
File content as of revision 4:e30f322c931d:
//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 de datos, pero limitamos el vector a 65 pulsos en esta version //entrega las dos cabeceras baja en un intento de disparo y una alta en el segundo disparo. para solo verificar //el programa no detecta tiempos de pulsos de forma automatica //ustede debe ingresar todos los tiempos del control a usar o no funciona //segun el fabricante los pulsos pueden ser altos(samsumg) o bajos(sony) //al terminar se debe dar reset a la FRDMKL25Z, recerde reconectar termite o programa de monitoreo serial //para el control loco usamos cadenas altas #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; }