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

Dependencies:   mbed Pulse1

Fork of CAPTURAS_IRDA by Gustavo Ramirez

Revision:
2:d189b5862909
Parent:
1:69f833c768c8
Child:
3:0e1e959c2f4f
--- a/main.cpp	Sat Mar 18 07:53:22 2017 +0000
+++ b/main.cpp	Fri Mar 24 08:29:48 2017 +0000
@@ -1,11 +1,13 @@
+//ESTA VERSION PROPORCIONA EL VECTOR DE LA TECLA PULSADA EN EL SEGUNDO MODO O CON EL SUICHE EN BAJO
+//PARA MANDOS DE 31 BITS  QUe EN CASO DE SER INCOSTISTENTES SE PUEDEN MODIFICAR
+//entrega las dos cabeceras alta y baja segun el modo
 #include "mbed.h"
 #include <Pulse1.h>
 PulseInOut irda(PTD5);// en este puerto se pone el sensor infrarrojo
 
 Serial pc(USBTX, USBRX);
-DigitalOut led(LED1);
+DigitalOut led1(LED1);
 DigitalOut led2(LED2);
-DigitalIn  mode(PTD0);
 int numN[35];//cadena para almacenar todos los tiempos que conforman los bits de datos
 int numP[35];//cadena para almacenar todos los tiempos que conforman los bits de datos
 int bin[35];//cadena para almacenar todos los tiempos que conforman los bits de datos
@@ -13,62 +15,66 @@
 int pul_low;
 int i,j,k,header,proL,proH; 
 int r; 
-int code;      
+int mode=1;
+int code;
+int numb=32;
 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: header = irda.read_low_us(); 
-       if(header>8000) goto seguir;
+lop1:  if(mode){
+       header = irda.read_low_us();
+       if(header>8000) goto seguir1;
        goto lop1;
-seguir:
-      for(i=0;i<35;++i){
-      if(mode){
-      numN[i] = irda.read_low_us();    //funcion para leer un pulso de caida o bajo en header
-      }
-      if(!mode){
-      numP[i] = irda.read_high_us();    //funcion para leer un pulso de caida o bajo en header
-      }
-        //funcion para leer un pulso de caida o bajo en header
-                       }
-
-       pc.printf("Header=%d \n",header," uS");
-       for(i=0;i<36;++i){
-       pc.printf(",%d, %d, %d \n",numN[i],i,numP[i]);
+       }
+       
+lop2:  if(!mode){
+       header = irda.read_high_us(); 
+       if(header>3500) goto seguir2;
+       goto lop2;
+       }
        
-           if(numN[i]>8000){
-           pc.printf("\n");
-           pc.printf("espacios=%d\n",i);
-           k=i;
-           proL=0;
-           for(i=0;i<k;++i){
-               proL=proL+numN[i];
-               }
-           proL=proL/k; 
-           pc.printf("promedio_E=%d\n",proL);   
-           wait(3);
-           pc.printf("\n");   
-           
-             if(!mode){
-               for(i=0;i<k-1;++i){
-               if(numP[i]>(2*proL)){
-                   bin[i]=1;
-                   for(j=0;j<i+1;++j){bin[i]=bin[i]*2;}
-                   //pc.printf("%d-",bin[i]);
-                                   }   
-               if(numP[i]<(2*proL)){
-                   bin[i]=0;
-                   //pc.printf("%d-",bin[i]);                    
-                                   }
-               }
-               }                
-           for(i=0;i<k-1;++i){code=code+bin[i];}
-           pc.printf("\n");
-           pc.printf("code=%d",code);
-           code=0;                  
-           goto lop1;
-           
-           }
-       }   
- }     
- 
- //for(j=0;j<i;++j)      
\ No newline at end of file
+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
+                       }
+      for(i=0;i<numb;++i){
+      pc.printf("%d,",numP[i]);
+                       }
+      pc.printf("\n");
+      pc.printf("copie esta cadena de arriba en su programa");
+      pc.printf("\n");
+      pc.printf("HeadeH=%d \n",header," uS");
+      header=0;
+      wait(2);
+      goto lop1;                 
+}