es una versión mejorada que no requiere suiche y da mas informacion

Dependencies:   mbed Pulse1

Fork of CAPTURAS_IRDA by Gustavo Ramirez

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?

UserRevisionLine numberNew 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 }