prog contrl

Dependencies:   Pulse1 mbed

Committer:
omatorressan
Date:
Fri Dec 05 18:01:52 2014 +0000
Revision:
1:2a7b4257ea32
Parent:
0:1602c72a91eb
ctrl

Who changed what in which revision?

UserRevisionLine numberNew 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 }