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:
Sat Mar 18 07:53:22 2017 +0000
Revision:
1:69f833c768c8
Parent:
0:86c0c1652dd4
Child:
2:d189b5862909
se agrego una rutina que transforma el binario en un c?digo decimal pero la cifra desborda esa es la causa de el valor negativo

Who changed what in which revision?

UserRevisionLine numberNew contents of line
tony63 0:86c0c1652dd4 1 #include "mbed.h"
tony63 0:86c0c1652dd4 2 #include <Pulse1.h>
tony63 0:86c0c1652dd4 3 PulseInOut irda(PTD5);// en este puerto se pone el sensor infrarrojo
tony63 0:86c0c1652dd4 4
tony63 0:86c0c1652dd4 5 Serial pc(USBTX, USBRX);
tony63 0:86c0c1652dd4 6 DigitalOut led(LED1);
tony63 0:86c0c1652dd4 7 DigitalOut led2(LED2);
tony63 0:86c0c1652dd4 8 DigitalIn mode(PTD0);
tony63 1:69f833c768c8 9 int numN[35];//cadena para almacenar todos los tiempos que conforman los bits de datos
tony63 1:69f833c768c8 10 int numP[35];//cadena para almacenar todos los tiempos que conforman los bits de datos
tony63 1:69f833c768c8 11 int bin[35];//cadena para almacenar todos los tiempos que conforman los bits de datos
tony63 0:86c0c1652dd4 12 int dato; // tiempo de cada dato que se lee
tony63 0:86c0c1652dd4 13 int pul_low;
tony63 0:86c0c1652dd4 14 int i,j,k,header,proL,proH;
tony63 1:69f833c768c8 15 int r;
tony63 1:69f833c768c8 16 int code;
tony63 0:86c0c1652dd4 17 int main(){
tony63 1:69f833c768c8 18
tony63 0:86c0c1652dd4 19 fflush( stdin );
tony63 0:86c0c1652dd4 20 lop1: header = irda.read_low_us();
tony63 0:86c0c1652dd4 21 if(header>8000) goto seguir;
tony63 0:86c0c1652dd4 22 goto lop1;
tony63 0:86c0c1652dd4 23 seguir:
tony63 0:86c0c1652dd4 24 for(i=0;i<35;++i){
tony63 0:86c0c1652dd4 25 if(mode){
tony63 0:86c0c1652dd4 26 numN[i] = irda.read_low_us(); //funcion para leer un pulso de caida o bajo en header
tony63 0:86c0c1652dd4 27 }
tony63 0:86c0c1652dd4 28 if(!mode){
tony63 0:86c0c1652dd4 29 numP[i] = irda.read_high_us(); //funcion para leer un pulso de caida o bajo en header
tony63 0:86c0c1652dd4 30 }
tony63 0:86c0c1652dd4 31 //funcion para leer un pulso de caida o bajo en header
tony63 0:86c0c1652dd4 32 }
tony63 0:86c0c1652dd4 33
tony63 0:86c0c1652dd4 34 pc.printf("Header=%d \n",header," uS");
tony63 0:86c0c1652dd4 35 for(i=0;i<36;++i){
tony63 0:86c0c1652dd4 36 pc.printf(",%d, %d, %d \n",numN[i],i,numP[i]);
tony63 0:86c0c1652dd4 37
tony63 0:86c0c1652dd4 38 if(numN[i]>8000){
tony63 0:86c0c1652dd4 39 pc.printf("\n");
tony63 0:86c0c1652dd4 40 pc.printf("espacios=%d\n",i);
tony63 0:86c0c1652dd4 41 k=i;
tony63 0:86c0c1652dd4 42 proL=0;
tony63 0:86c0c1652dd4 43 for(i=0;i<k;++i){
tony63 0:86c0c1652dd4 44 proL=proL+numN[i];
tony63 0:86c0c1652dd4 45 }
tony63 0:86c0c1652dd4 46 proL=proL/k;
tony63 0:86c0c1652dd4 47 pc.printf("promedio_E=%d\n",proL);
tony63 0:86c0c1652dd4 48 wait(3);
tony63 0:86c0c1652dd4 49 pc.printf("\n");
tony63 0:86c0c1652dd4 50
tony63 0:86c0c1652dd4 51 if(!mode){
tony63 0:86c0c1652dd4 52 for(i=0;i<k-1;++i){
tony63 0:86c0c1652dd4 53 if(numP[i]>(2*proL)){
tony63 1:69f833c768c8 54 bin[i]=1;
tony63 1:69f833c768c8 55 for(j=0;j<i+1;++j){bin[i]=bin[i]*2;}
tony63 1:69f833c768c8 56 //pc.printf("%d-",bin[i]);
tony63 0:86c0c1652dd4 57 }
tony63 0:86c0c1652dd4 58 if(numP[i]<(2*proL)){
tony63 1:69f833c768c8 59 bin[i]=0;
tony63 1:69f833c768c8 60 //pc.printf("%d-",bin[i]);
tony63 0:86c0c1652dd4 61 }
tony63 0:86c0c1652dd4 62 }
tony63 0:86c0c1652dd4 63 }
tony63 1:69f833c768c8 64 for(i=0;i<k-1;++i){code=code+bin[i];}
tony63 1:69f833c768c8 65 pc.printf("\n");
tony63 1:69f833c768c8 66 pc.printf("code=%d",code);
tony63 1:69f833c768c8 67 code=0;
tony63 0:86c0c1652dd4 68 goto lop1;
tony63 0:86c0c1652dd4 69
tony63 0:86c0c1652dd4 70 }
tony63 0:86c0c1652dd4 71 }
tony63 0:86c0c1652dd4 72 }
tony63 0:86c0c1652dd4 73
tony63 1:69f833c768c8 74 //for(j=0;j<i;++j)