Omar Torres
/
contrl
prog contrl
Diff: main.cpp
- 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