Omar Torres
/
contrl
prog contrl
main.cpp
- Committer:
- omatorressan
- Date:
- 2014-12-05
- Revision:
- 1:2a7b4257ea32
- Parent:
- 0:1602c72a91eb
File content as of revision 1:2a7b4257ea32:
#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[]="100000001011111110000011011111001111100000001011111101001001101"; char b[]="100000001011111111001001001101101111100000001011111111001001001"; char c[]="100000001011111100110011110011001111100000001011111100110011110"; //10000000101111111000001101111100 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; } } } }