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:50:39 2019 +0000
Revision:
3:0e1e959c2f4f
Parent:
2:d189b5862909
Child:
4:e30f322c931d
captura 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 3:0e1e959c2f4f 3 //para cualquier numero de bits pero limitamos el vector a 65 pulsos
tony63 3:0e1e959c2f4f 4 //entrega las dos cabeceras baja en un intento de disparo y una alta en el segundo disparo
tony63 0:86c0c1652dd4 5 #include "mbed.h"
tony63 0:86c0c1652dd4 6 #include <Pulse1.h>
tony63 0:86c0c1652dd4 7 PulseInOut irda(PTD5);// en este puerto se pone el sensor infrarrojo
tony63 0:86c0c1652dd4 8
tony63 0:86c0c1652dd4 9 Serial pc(USBTX, USBRX);
tony63 2:d189b5862909 10 DigitalOut led1(LED1);
tony63 0:86c0c1652dd4 11 DigitalOut led2(LED2);
tony63 3:0e1e959c2f4f 12 int numN[65];//cadena para almacenar todos los tiempos que conforman los bits de datos
tony63 3:0e1e959c2f4f 13 int numP[65];//cadena para almacenar todos los tiempos que conforman los bits de datos
tony63 3:0e1e959c2f4f 14 int bin[65];//cadena para almacenar todos los tiempos que conforman los bits de datos
tony63 0:86c0c1652dd4 15 int dato; // tiempo de cada dato que se lee
tony63 0:86c0c1652dd4 16 int pul_low;
tony63 0:86c0c1652dd4 17 int i,j,k,header,proL,proH;
tony63 1:69f833c768c8 18 int r;
tony63 2:d189b5862909 19 int mode=1;
tony63 2:d189b5862909 20 int code;
tony63 3:0e1e959c2f4f 21 int numb=65;
tony63 0:86c0c1652dd4 22 int main(){
tony63 2:d189b5862909 23 pc.printf("\n");
tony63 2:d189b5862909 24 pc.printf("este codigo es para 32 bits de datos");
tony63 2:d189b5862909 25 pc.printf("\n");
tony63 2:d189b5862909 26 pc.printf("pise reset para otro codigo");
tony63 2:d189b5862909 27 pc.printf("\n");
tony63 0:86c0c1652dd4 28 fflush( stdin );
tony63 2:d189b5862909 29 lop1: if(mode){
tony63 2:d189b5862909 30 header = irda.read_low_us();
tony63 3:0e1e959c2f4f 31 if(header>3400) goto seguir1; //espera un header bajo de al menos 3,4mS
tony63 0:86c0c1652dd4 32 goto lop1;
tony63 2:d189b5862909 33 }
tony63 2:d189b5862909 34
tony63 2:d189b5862909 35 lop2: if(!mode){
tony63 2:d189b5862909 36 header = irda.read_high_us();
tony63 3:0e1e959c2f4f 37 if(header>1600) goto seguir2; // espera un header alto de 1,6mS
tony63 2:d189b5862909 38 goto lop2;
tony63 2:d189b5862909 39 }
tony63 0:86c0c1652dd4 40
tony63 2:d189b5862909 41 seguir1:
tony63 2:d189b5862909 42 for(i=0;i<numb;++i){
tony63 2:d189b5862909 43 numN[i] = irda.read_low_us(); //funcion para leer un pulso bajo
tony63 2:d189b5862909 44 }
tony63 2:d189b5862909 45 for(i=0;i<numb;++i){
tony63 2:d189b5862909 46 pc.printf("%d,",numN[i]);
tony63 2:d189b5862909 47 }
tony63 2:d189b5862909 48 pc.printf("\n");
tony63 2:d189b5862909 49 pc.printf("HeaderL=%d \n",header," uS");
tony63 2:d189b5862909 50 header=0;
tony63 2:d189b5862909 51 for(i=0;i<numb;++i){
tony63 2:d189b5862909 52 proL=numN[i]+proL;
tony63 2:d189b5862909 53 }
tony63 2:d189b5862909 54 pc.printf("\n");
tony63 2:d189b5862909 55 pc.printf("prom_bajos=%d", proL/numb);
tony63 2:d189b5862909 56 pc.printf("\n");
tony63 2:d189b5862909 57 pc.printf("Si el promedio bajos es mas grande de lo normal, baje en numb en el codigo y recompile");
tony63 2:d189b5862909 58
tony63 2:d189b5862909 59 wait(2);
tony63 2:d189b5862909 60 header=0;
tony63 2:d189b5862909 61 proL=0;
tony63 2:d189b5862909 62 pc.printf("\n");
tony63 2:d189b5862909 63 pc.printf("dispare de nuevo para altos");
tony63 2:d189b5862909 64 mode=!mode;
tony63 2:d189b5862909 65 pc.printf("\n");
tony63 2:d189b5862909 66 goto lop1;
tony63 2:d189b5862909 67 seguir2:
tony63 2:d189b5862909 68 for(i=0;i<numb;++i){
tony63 2:d189b5862909 69 numP[i] = irda.read_high_us(); //funcion para leer un pulso alto
tony63 3:0e1e959c2f4f 70 if (numP[i]>10000){pc.printf("Final inesperado, nbits=%d....",i,"\n");}//cuenta efectivamente los bits
tony63 2:d189b5862909 71 }
tony63 2:d189b5862909 72 for(i=0;i<numb;++i){
tony63 2:d189b5862909 73 pc.printf("%d,",numP[i]);
tony63 2:d189b5862909 74 }
tony63 2:d189b5862909 75 pc.printf("\n");
tony63 3:0e1e959c2f4f 76 pc.printf("copie esta cadena de arriba en su programa..omita el ultimo");
tony63 2:d189b5862909 77 pc.printf("\n");
tony63 2:d189b5862909 78 pc.printf("HeadeH=%d \n",header," uS");
tony63 2:d189b5862909 79 header=0;
tony63 2:d189b5862909 80 wait(2);
tony63 3:0e1e959c2f4f 81
tony63 2:d189b5862909 82 goto lop1;
tony63 2:d189b5862909 83 }