Omar Torres
/
contrl
prog contrl
main.cpp@1:2a7b4257ea32, 2014-12-05 (annotated)
- Committer:
- omatorressan
- Date:
- Fri Dec 05 18:01:52 2014 +0000
- Revision:
- 1:2a7b4257ea32
- Parent:
- 0:1602c72a91eb
ctrl
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
omatorressan | 0:1602c72a91eb | 1 | #include "mbed.h" |
omatorressan | 0:1602c72a91eb | 2 | #include <Pulse1.h> |
omatorressan | 0:1602c72a91eb | 3 | |
omatorressan | 0:1602c72a91eb | 4 | PulseInOut irda(PTD5); |
omatorressan | 0:1602c72a91eb | 5 | Serial pc(USBTX, USBRX); |
omatorressan | 0:1602c72a91eb | 6 | DigitalOut led1(LED1); |
omatorressan | 0:1602c72a91eb | 7 | DigitalOut led2(LED2); |
omatorressan | 0:1602c72a91eb | 8 | DigitalOut led3(LED3); |
omatorressan | 0:1602c72a91eb | 9 | |
omatorressan | 0:1602c72a91eb | 10 | int header =0; |
omatorressan | 0:1602c72a91eb | 11 | const int head_H = 9120; //+20% medida con osciloscopio en microsegundos |
omatorressan | 0:1602c72a91eb | 12 | const int head_L = 8939;//-20% medida con osciloscopio |
omatorressan | 0:1602c72a91eb | 13 | int i=0; |
omatorressan | 0:1602c72a91eb | 14 | const int T_bajo=533;//tiempo de prueba |
omatorressan | 0:1602c72a91eb | 15 | const int T_alto=1630;//tiempo de prueba |
omatorressan | 0:1602c72a91eb | 16 | const int num_bits = 64;//ponga su numero de bits |
omatorressan | 0:1602c72a91eb | 17 | int num[num_bits];//cadena para almacenar todos los tiempos que conforman los bits de datos |
omatorressan | 0:1602c72a91eb | 18 | int dato; // tiempo de cada dato que se lee |
omatorressan | 0:1602c72a91eb | 19 | |
omatorressan | 0:1602c72a91eb | 20 | int azul=0; |
omatorressan | 0:1602c72a91eb | 21 | int rojo=0; |
omatorressan | 0:1602c72a91eb | 22 | int verde=0; |
omatorressan | 0:1602c72a91eb | 23 | |
omatorressan | 0:1602c72a91eb | 24 | int cont1=0; |
omatorressan | 0:1602c72a91eb | 25 | int cont2=0; |
omatorressan | 0:1602c72a91eb | 26 | int cont3=0; |
omatorressan | 0:1602c72a91eb | 27 | char serie[num_bits]; |
omatorressan | 0:1602c72a91eb | 28 | |
omatorressan | 1:2a7b4257ea32 | 29 | char a[]="100000001011111110000011011111001111100000001011111101001001101"; |
omatorressan | 0:1602c72a91eb | 30 | char b[]="100000001011111111001001001101101111100000001011111111001001001"; |
omatorressan | 0:1602c72a91eb | 31 | char c[]="100000001011111100110011110011001111100000001011111100110011110"; |
omatorressan | 1:2a7b4257ea32 | 32 | |
omatorressan | 1:2a7b4257ea32 | 33 | //10000000101111111000001101111100 |
omatorressan | 0:1602c72a91eb | 34 | int main(){ |
omatorressan | 0:1602c72a91eb | 35 | |
omatorressan | 0:1602c72a91eb | 36 | led1=led2=led3=1; |
omatorressan | 0:1602c72a91eb | 37 | |
omatorressan | 0:1602c72a91eb | 38 | while(1) { |
omatorressan | 0:1602c72a91eb | 39 | ini1: |
omatorressan | 0:1602c72a91eb | 40 | fflush( stdin ); |
omatorressan | 0:1602c72a91eb | 41 | header=0; |
omatorressan | 0:1602c72a91eb | 42 | header = irda.read_low_us(); //lee los pulsos en bajo |
omatorressan | 0:1602c72a91eb | 43 | if (header > head_L && header < head_H) goto seguir;//verifica que se cumpla el +-20% |
omatorressan | 0:1602c72a91eb | 44 | else goto ini1; |
omatorressan | 0:1602c72a91eb | 45 | |
omatorressan | 0:1602c72a91eb | 46 | seguir: |
omatorressan | 0:1602c72a91eb | 47 | wait_us(200); |
omatorressan | 0:1602c72a91eb | 48 | |
omatorressan | 0:1602c72a91eb | 49 | for(i=0; i<(num_bits-1); ++i) { |
omatorressan | 0:1602c72a91eb | 50 | dato = irda.read_high_us(); //lee los pulso en alto |
omatorressan | 0:1602c72a91eb | 51 | num[i]=dato; |
omatorressan | 0:1602c72a91eb | 52 | wait_us(400); |
omatorressan | 0:1602c72a91eb | 53 | } |
omatorressan | 0:1602c72a91eb | 54 | |
omatorressan | 0:1602c72a91eb | 55 | |
omatorressan | 0:1602c72a91eb | 56 | |
omatorressan | 0:1602c72a91eb | 57 | |
omatorressan | 0:1602c72a91eb | 58 | wait(0.1); //se hace una espera y se imprime |
omatorressan | 0:1602c72a91eb | 59 | pc.printf("\n\r"); |
omatorressan | 0:1602c72a91eb | 60 | for(i=0; i<(num_bits); ++i) { |
omatorressan | 0:1602c72a91eb | 61 | if(num[i] > ((T_alto+T_bajo)/2)) { |
omatorressan | 0:1602c72a91eb | 62 | serie[i]='1'; |
omatorressan | 0:1602c72a91eb | 63 | pc.printf("1"); |
omatorressan | 0:1602c72a91eb | 64 | } |
omatorressan | 0:1602c72a91eb | 65 | else { |
omatorressan | 0:1602c72a91eb | 66 | serie[i]='0'; |
omatorressan | 0:1602c72a91eb | 67 | pc.printf("0"); |
omatorressan | 0:1602c72a91eb | 68 | } |
omatorressan | 0:1602c72a91eb | 69 | |
omatorressan | 0:1602c72a91eb | 70 | if(serie[i]==a[i]){ |
omatorressan | 0:1602c72a91eb | 71 | ++cont1; |
omatorressan | 0:1602c72a91eb | 72 | pc.printf("%d", cont1); |
omatorressan | 0:1602c72a91eb | 73 | } |
omatorressan | 0:1602c72a91eb | 74 | |
omatorressan | 0:1602c72a91eb | 75 | if(serie[i]==b[i]){ |
omatorressan | 0:1602c72a91eb | 76 | ++cont2; |
omatorressan | 0:1602c72a91eb | 77 | pc.printf("%d", cont2); |
omatorressan | 0:1602c72a91eb | 78 | } |
omatorressan | 0:1602c72a91eb | 79 | |
omatorressan | 0:1602c72a91eb | 80 | if(serie[i]==c[i]){ |
omatorressan | 0:1602c72a91eb | 81 | ++cont3; |
omatorressan | 0:1602c72a91eb | 82 | pc.printf("%d", cont3); |
omatorressan | 0:1602c72a91eb | 83 | } |
omatorressan | 0:1602c72a91eb | 84 | |
omatorressan | 0:1602c72a91eb | 85 | |
omatorressan | 0:1602c72a91eb | 86 | |
omatorressan | 0:1602c72a91eb | 87 | if(cont1==num_bits-1){ |
omatorressan | 0:1602c72a91eb | 88 | |
omatorressan | 0:1602c72a91eb | 89 | if(azul==0){ |
omatorressan | 0:1602c72a91eb | 90 | led1=0; |
omatorressan | 0:1602c72a91eb | 91 | ++azul;} |
omatorressan | 0:1602c72a91eb | 92 | else{ |
omatorressan | 0:1602c72a91eb | 93 | led1=1; |
omatorressan | 0:1602c72a91eb | 94 | azul=0;} |
omatorressan | 0:1602c72a91eb | 95 | |
omatorressan | 0:1602c72a91eb | 96 | cont1=cont2=cont3=0; |
omatorressan | 0:1602c72a91eb | 97 | } |
omatorressan | 0:1602c72a91eb | 98 | |
omatorressan | 0:1602c72a91eb | 99 | if(cont2==num_bits-1){ |
omatorressan | 0:1602c72a91eb | 100 | |
omatorressan | 0:1602c72a91eb | 101 | if(verde==0){ |
omatorressan | 0:1602c72a91eb | 102 | led2=0; |
omatorressan | 0:1602c72a91eb | 103 | ++verde;} |
omatorressan | 0:1602c72a91eb | 104 | else{ |
omatorressan | 0:1602c72a91eb | 105 | led2=1; |
omatorressan | 0:1602c72a91eb | 106 | verde=0;} |
omatorressan | 0:1602c72a91eb | 107 | |
omatorressan | 0:1602c72a91eb | 108 | cont1=cont2=cont3=0; |
omatorressan | 0:1602c72a91eb | 109 | } |
omatorressan | 0:1602c72a91eb | 110 | |
omatorressan | 0:1602c72a91eb | 111 | if(cont3==num_bits-1){ |
omatorressan | 0:1602c72a91eb | 112 | |
omatorressan | 0:1602c72a91eb | 113 | if(rojo==0){ |
omatorressan | 0:1602c72a91eb | 114 | led3=0; |
omatorressan | 0:1602c72a91eb | 115 | ++rojo;} |
omatorressan | 0:1602c72a91eb | 116 | else{ |
omatorressan | 0:1602c72a91eb | 117 | led3=1; |
omatorressan | 0:1602c72a91eb | 118 | rojo=0;} |
omatorressan | 0:1602c72a91eb | 119 | |
omatorressan | 0:1602c72a91eb | 120 | cont1=cont2=cont3=0; |
omatorressan | 0:1602c72a91eb | 121 | } |
omatorressan | 0:1602c72a91eb | 122 | |
omatorressan | 0:1602c72a91eb | 123 | } |
omatorressan | 0:1602c72a91eb | 124 | } |
omatorressan | 0:1602c72a91eb | 125 | } |