IRDA

Dependencies:   Pulse1 TextLCD mbed

Revision:
1:a9968ce1a119
Parent:
0:6cd0d67e814d
Child:
2:a2ec9f68d387
--- a/main.cpp	Wed Apr 29 04:44:19 2015 +0000
+++ b/main.cpp	Wed Apr 29 13:40:09 2015 +0000
@@ -26,6 +26,8 @@
 int dato; // tiempo de cada dato que se lee
 int bin[num_bits];
 int p;
+int b;
+int a;
 int C1=0x0F;
 int C4=0x0C; // quito cursor bajo
   
@@ -39,6 +41,7 @@
       headerH=0;
       led2=1;
       led=0;
+     
     
          headerL = irda.read_low_us();    //funcion para leer un pulso de caida o bajo en header
          pc.printf("Header bajo dura %d us\n",  headerL);
@@ -48,14 +51,9 @@
          wait(0.1);
           headerH= irda.read_high_us(); 
          pc.printf("Header alto dura %d us\n",  headerH); 
-          lcd.locate(0,1);
+         lcd.locate(0,1);
          lcd.printf("HH=%d us", headerH); 
-         wait(0.5);
-         lcd.cls();
-        lcd.locate(0,0);
-        lcd.printf("T_bits= %d us", 600);
-        lcd.locate(0,1);
-        lcd.printf("Modulado = unos");
+         wait(0.3);
          led=1;
       
       if (headerL > head_L && headerL < head_H) goto seguir;//verificar que este en la tolerancia +-1,8%
@@ -67,28 +65,60 @@
       lcd.writeCommand(C4);//escribimos un comando segun el manual del modulo LCD para quitar cursor bajo
       wait_us(600);
       led2=0;
-      for(i=0;i<(num_bits-1);++i){ // POR OSCILOSCOPIO se determina que llegan (num_bits),datos
+      for(i=0;i<(num_bits);++i){ // POR OSCILOSCOPIO se determina que llegan (num_bits),datos
       dato = irda.read_high_us(); //leer un bit de datos que es pulso arriba en este control
       num[i]=dato;   
-      }
-      wait(0.5); //espero un poquito luego de leer todo el arreglo y ponerlo en pantalla 
-      pc.printf(",BAJA = %d",headerL);
+       }
+
+      
+      wait(0.5);//espero un poquito luego de leer todo el arreglo y ponerlo en pantalla 
       for(i=0;i<(num_bits);++i){  
       pc.printf(",%d",num[i]);
       }
      
       wait(0.1);  //espero e imprimo en binario 
       pc.printf("\n\n");
+       b=0;
+      a=0;
+      int c=0;
+      int d=0;
       for(i=0;i<(num_bits);++i){  
         if(num[i] > ((T_alto+T_bajo)/2)) {
+            b = num[i]+b;
             bin[i]=1;  
                  pc.printf("%d",bin[i]);
+                 a = a+1;
              }
         if(num[i] < ((T_alto+T_bajo)/2)) {
+               c = num[i]+c;
               bin[i]=0;
                 pc.printf("%d",bin[i]);
+                d = d+1;
           }
       }
+     pc.printf("\n\n"); 
+      int h1 = b/a;
+      int h0 = c/d;
+      pc.printf(" tide unos1 =%d",b);
+      pc.printf(", can1 =%d",a);
+      pc.printf(" tide unoso =%d",c);
+      pc.printf(", can0 =%d",d);
+    
+     pc.printf("\n\n");
+      wait (0.3);
+    pc.printf(" t_unos =%d",h1);
+      pc.printf(", t_ceros =%d",h0);
+    
+    
+    lcd.cls();
+      lcd.locate(0,0);
+      lcd.printf("N_bits = %d",i); 
+    
+     lcd.cls();
+      lcd.locate(0,0);
+      lcd.printf("t_unos = %d",h1); 
+      lcd.locate(0,1);
+      lcd.printf("t_ceros = %d",h0);
     pc.printf("\n\n");
            lcd.cls();
            lcd.printf("N_HEX=");