es una versión mejorada que no requiere suiche y da mas informacion
Fork of CAPTURAS_IRDA by
main.cpp@4:e30f322c931d, 2019-03-14 (annotated)
- Committer:
- tony63
- Date:
- Thu Mar 14 04:58:24 2019 +0000
- Revision:
- 4:e30f322c931d
- Parent:
- 3:0e1e959c2f4f
captura de cadenas irda
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
tony63 | 3:0e1e959c2f4f | 1 | //este programa extrae vector de tiempos de una tecla pulsada a altos o bajos |
tony63 | 3:0e1e959c2f4f | 2 | //se debe disparar el control dos veces, segun lo indique el programa |
tony63 | 4:e30f322c931d | 3 | //para cualquier numero de bits de datos, pero limitamos el vector a 65 pulsos en esta version |
tony63 | 4:e30f322c931d | 4 | //entrega las dos cabeceras baja en un intento de disparo y una alta en el segundo disparo. para solo verificar |
tony63 | 4:e30f322c931d | 5 | //el programa no detecta tiempos de pulsos de forma automatica |
tony63 | 4:e30f322c931d | 6 | //ustede debe ingresar todos los tiempos del control a usar o no funciona |
tony63 | 4:e30f322c931d | 7 | //segun el fabricante los pulsos pueden ser altos(samsumg) o bajos(sony) |
tony63 | 4:e30f322c931d | 8 | //al terminar se debe dar reset a la FRDMKL25Z, recerde reconectar termite o programa de monitoreo serial |
tony63 | 4:e30f322c931d | 9 | //para el control loco usamos cadenas altas |
tony63 | 4:e30f322c931d | 10 | |
tony63 | 0:86c0c1652dd4 | 11 | #include "mbed.h" |
tony63 | 0:86c0c1652dd4 | 12 | #include <Pulse1.h> |
tony63 | 0:86c0c1652dd4 | 13 | PulseInOut irda(PTD5);// en este puerto se pone el sensor infrarrojo |
tony63 | 0:86c0c1652dd4 | 14 | |
tony63 | 0:86c0c1652dd4 | 15 | Serial pc(USBTX, USBRX); |
tony63 | 2:d189b5862909 | 16 | DigitalOut led1(LED1); |
tony63 | 0:86c0c1652dd4 | 17 | DigitalOut led2(LED2); |
tony63 | 3:0e1e959c2f4f | 18 | int numN[65];//cadena para almacenar todos los tiempos que conforman los bits de datos |
tony63 | 3:0e1e959c2f4f | 19 | int numP[65];//cadena para almacenar todos los tiempos que conforman los bits de datos |
tony63 | 3:0e1e959c2f4f | 20 | int bin[65];//cadena para almacenar todos los tiempos que conforman los bits de datos |
tony63 | 0:86c0c1652dd4 | 21 | int dato; // tiempo de cada dato que se lee |
tony63 | 0:86c0c1652dd4 | 22 | int pul_low; |
tony63 | 0:86c0c1652dd4 | 23 | int i,j,k,header,proL,proH; |
tony63 | 1:69f833c768c8 | 24 | int r; |
tony63 | 2:d189b5862909 | 25 | int mode=1; |
tony63 | 2:d189b5862909 | 26 | int code; |
tony63 | 3:0e1e959c2f4f | 27 | int numb=65; |
tony63 | 0:86c0c1652dd4 | 28 | int main(){ |
tony63 | 2:d189b5862909 | 29 | pc.printf("\n"); |
tony63 | 2:d189b5862909 | 30 | pc.printf("este codigo es para 32 bits de datos"); |
tony63 | 2:d189b5862909 | 31 | pc.printf("\n"); |
tony63 | 2:d189b5862909 | 32 | pc.printf("pise reset para otro codigo"); |
tony63 | 2:d189b5862909 | 33 | pc.printf("\n"); |
tony63 | 0:86c0c1652dd4 | 34 | fflush( stdin ); |
tony63 | 2:d189b5862909 | 35 | lop1: if(mode){ |
tony63 | 2:d189b5862909 | 36 | header = irda.read_low_us(); |
tony63 | 3:0e1e959c2f4f | 37 | if(header>3400) goto seguir1; //espera un header bajo de al menos 3,4mS |
tony63 | 0:86c0c1652dd4 | 38 | goto lop1; |
tony63 | 2:d189b5862909 | 39 | } |
tony63 | 2:d189b5862909 | 40 | |
tony63 | 2:d189b5862909 | 41 | lop2: if(!mode){ |
tony63 | 2:d189b5862909 | 42 | header = irda.read_high_us(); |
tony63 | 3:0e1e959c2f4f | 43 | if(header>1600) goto seguir2; // espera un header alto de 1,6mS |
tony63 | 2:d189b5862909 | 44 | goto lop2; |
tony63 | 2:d189b5862909 | 45 | } |
tony63 | 0:86c0c1652dd4 | 46 | |
tony63 | 2:d189b5862909 | 47 | seguir1: |
tony63 | 2:d189b5862909 | 48 | for(i=0;i<numb;++i){ |
tony63 | 2:d189b5862909 | 49 | numN[i] = irda.read_low_us(); //funcion para leer un pulso bajo |
tony63 | 2:d189b5862909 | 50 | } |
tony63 | 2:d189b5862909 | 51 | for(i=0;i<numb;++i){ |
tony63 | 2:d189b5862909 | 52 | pc.printf("%d,",numN[i]); |
tony63 | 2:d189b5862909 | 53 | } |
tony63 | 2:d189b5862909 | 54 | pc.printf("\n"); |
tony63 | 2:d189b5862909 | 55 | pc.printf("HeaderL=%d \n",header," uS"); |
tony63 | 2:d189b5862909 | 56 | header=0; |
tony63 | 2:d189b5862909 | 57 | for(i=0;i<numb;++i){ |
tony63 | 2:d189b5862909 | 58 | proL=numN[i]+proL; |
tony63 | 2:d189b5862909 | 59 | } |
tony63 | 2:d189b5862909 | 60 | pc.printf("\n"); |
tony63 | 2:d189b5862909 | 61 | pc.printf("prom_bajos=%d", proL/numb); |
tony63 | 2:d189b5862909 | 62 | pc.printf("\n"); |
tony63 | 2:d189b5862909 | 63 | pc.printf("Si el promedio bajos es mas grande de lo normal, baje en numb en el codigo y recompile"); |
tony63 | 2:d189b5862909 | 64 | |
tony63 | 2:d189b5862909 | 65 | wait(2); |
tony63 | 2:d189b5862909 | 66 | header=0; |
tony63 | 2:d189b5862909 | 67 | proL=0; |
tony63 | 2:d189b5862909 | 68 | pc.printf("\n"); |
tony63 | 2:d189b5862909 | 69 | pc.printf("dispare de nuevo para altos"); |
tony63 | 2:d189b5862909 | 70 | mode=!mode; |
tony63 | 2:d189b5862909 | 71 | pc.printf("\n"); |
tony63 | 2:d189b5862909 | 72 | goto lop1; |
tony63 | 2:d189b5862909 | 73 | seguir2: |
tony63 | 2:d189b5862909 | 74 | for(i=0;i<numb;++i){ |
tony63 | 2:d189b5862909 | 75 | numP[i] = irda.read_high_us(); //funcion para leer un pulso alto |
tony63 | 3:0e1e959c2f4f | 76 | if (numP[i]>10000){pc.printf("Final inesperado, nbits=%d....",i,"\n");}//cuenta efectivamente los bits |
tony63 | 2:d189b5862909 | 77 | } |
tony63 | 2:d189b5862909 | 78 | for(i=0;i<numb;++i){ |
tony63 | 2:d189b5862909 | 79 | pc.printf("%d,",numP[i]); |
tony63 | 2:d189b5862909 | 80 | } |
tony63 | 2:d189b5862909 | 81 | pc.printf("\n"); |
tony63 | 3:0e1e959c2f4f | 82 | pc.printf("copie esta cadena de arriba en su programa..omita el ultimo"); |
tony63 | 2:d189b5862909 | 83 | pc.printf("\n"); |
tony63 | 2:d189b5862909 | 84 | pc.printf("HeadeH=%d \n",header," uS"); |
tony63 | 2:d189b5862909 | 85 | header=0; |
tony63 | 2:d189b5862909 | 86 | wait(2); |
tony63 | 3:0e1e959c2f4f | 87 | |
tony63 | 2:d189b5862909 | 88 | goto lop1; |
tony63 | 2:d189b5862909 | 89 | } |