prog contrl

Dependencies:   Pulse1 mbed

Revision:
0:1602c72a91eb
Child:
1:2a7b4257ea32
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/main.cpp	Fri Dec 05 17:53:23 2014 +0000
@@ -0,0 +1,125 @@
+#include "mbed.h"
+#include <Pulse1.h>
+
+PulseInOut irda(PTD5);
+Serial pc(USBTX, USBRX);
+DigitalOut led1(LED1);
+DigitalOut led2(LED2);
+DigitalOut led3(LED3);
+
+int header =0;
+const int head_H = 9120; //+20% medida con osciloscopio en microsegundos
+const int head_L = 8939;//-20%  medida con osciloscopio
+int i=0;
+const int T_bajo=533;//tiempo de prueba
+const int T_alto=1630;//tiempo de prueba
+const int num_bits = 64;//ponga su numero de bits
+int num[num_bits];//cadena para almacenar todos los tiempos que conforman los bits de datos
+int dato; // tiempo de cada dato que se lee
+
+int azul=0;
+int rojo=0;
+int verde=0;
+
+int cont1=0;
+int cont2=0;
+int cont3=0;
+char serie[num_bits];
+
+char a[]="100000001011111101001001101101101111100000001011111101001001101";
+char b[]="100000001011111111001001001101101111100000001011111111001001001";
+char c[]="100000001011111100110011110011001111100000001011111100110011110";
+
+
+int main(){
+    
+led1=led2=led3=1;
+
+    while(1) {
+    ini1:
+        fflush( stdin );
+        header=0;
+        header = irda.read_low_us();    //lee los pulsos en bajo
+        if (header > head_L && header < head_H) goto seguir;//verifica que se cumpla el +-20%
+        else goto ini1;
+
+    seguir:
+        wait_us(200);
+
+        for(i=0; i<(num_bits-1); ++i) { 
+            dato = irda.read_high_us(); //lee los pulso en alto
+            num[i]=dato;
+            wait_us(400);
+                                       }
+
+
+
+
+        wait(0.1);  //se hace una espera y se imprime
+        pc.printf("\n\r");
+        for(i=0; i<(num_bits); ++i) {
+            if(num[i] > ((T_alto+T_bajo)/2)) {
+            serie[i]='1';
+            pc.printf("1");
+                                             }
+            else {
+            serie[i]='0';
+            pc.printf("0");
+                  }
+    
+    if(serie[i]==a[i]){
+    ++cont1;
+    pc.printf("%d", cont1);
+                       }
+    
+    if(serie[i]==b[i]){
+    ++cont2;
+    pc.printf("%d", cont2);
+                       }
+    
+    if(serie[i]==c[i]){
+    ++cont3;
+    pc.printf("%d", cont3);
+                       }
+     
+    
+    
+    if(cont1==num_bits-1){
+        
+    if(azul==0){
+    led1=0;
+    ++azul;}
+        else{
+        led1=1;
+        azul=0;}
+        
+        cont1=cont2=cont3=0;
+           }
+                 
+         if(cont2==num_bits-1){
+        
+        if(verde==0){
+        led2=0;
+        ++verde;}
+        else{
+        led2=1;
+        verde=0;}
+        
+        cont1=cont2=cont3=0;
+                               }
+        
+        if(cont3==num_bits-1){
+        
+        if(rojo==0){
+        led3=0;
+        ++rojo;}
+        else{
+        led3=1;
+        rojo=0;}    
+        
+        cont1=cont2=cont3=0;
+                              }
+        
+                                    } 
+}
+}
\ No newline at end of file