Alejandro Marin
/
Tarea5irda1
sensor irda + control remoto
Fork of irda1 by
main.cpp@3:56114a39ba7a, 2013-12-04 (annotated)
- Committer:
- amarincan
- Date:
- Wed Dec 04 03:25:22 2013 +0000
- Revision:
- 3:56114a39ba7a
- Parent:
- 2:6a15ab0305c8
sensor irda y control remoto
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
tony63 | 0:74d57f8ae247 | 1 | #include "mbed.h" |
amarincan | 3:56114a39ba7a | 2 | #include "Pulse1.h" |
amarincan | 3:56114a39ba7a | 3 | |
tony63 | 0:74d57f8ae247 | 4 | |
tony63 | 2:6a15ab0305c8 | 5 | PulseInOut irda(PTD5);// en este puerto se pone el sensor infrarrojo |
tony63 | 0:74d57f8ae247 | 6 | Serial pc(USBTX, USBRX); |
amarincan | 3:56114a39ba7a | 7 | DigitalOut led1(LED1); |
tony63 | 2:6a15ab0305c8 | 8 | DigitalOut led2(LED2); |
amarincan | 3:56114a39ba7a | 9 | DigitalOut led3(LED3); |
tony63 | 2:6a15ab0305c8 | 10 | int header =0; //tiempo de cabecera pulso abajo |
amarincan | 3:56114a39ba7a | 11 | const int head_H = 11100; //+20% medida con osciloscopio en microsegundos |
amarincan | 3:56114a39ba7a | 12 | const int head_L = 6400;//-20% medida con osciloscopio |
amarincan | 3:56114a39ba7a | 13 | int i=0,m,mb,mr; |
amarincan | 3:56114a39ba7a | 14 | //const int T_alto=1670;//ponga su tiempo de la prueba |
amarincan | 3:56114a39ba7a | 15 | //const int T_bajo=533;//ponga su tiempo de la prueba |
tony63 | 2:6a15ab0305c8 | 16 | const int num_bits = 32;//ponga su numero de bits |
tony63 | 2:6a15ab0305c8 | 17 | int num[num_bits];//cadena para almacenar todos los tiempos que conforman los bits de datos |
tony63 | 2:6a15ab0305c8 | 18 | int dato; // tiempo de cada dato que se lee |
amarincan | 3:56114a39ba7a | 19 | int cadena[num_bits]; |
amarincan | 3:56114a39ba7a | 20 | |
amarincan | 3:56114a39ba7a | 21 | int cadenar[num_bits]={1,1,0,0,0,0,0,0,0,0,1,1,1,1,0,1,1,1,0,0,1,0,0,0,0,0,1,1,0,1,1,1}; |
amarincan | 3:56114a39ba7a | 22 | |
amarincan | 3:56114a39ba7a | 23 | int cadenab[num_bits]={1,1,0,0,0,0,0,0,0,0,1,1,1,1,0,1,1,1,0,1,1,0,0,0,0,0,1,0,0,1,1,1}; |
amarincan | 3:56114a39ba7a | 24 | |
amarincan | 3:56114a39ba7a | 25 | int cadenag[num_bits]={1,1,0,0,0,0,0,0,0,0,1,1,1,1,0,1,1,1,1,0,1,0,0,0,0,0,0,1,0,1,1,1}; |
amarincan | 3:56114a39ba7a | 26 | |
tony63 | 0:74d57f8ae247 | 27 | int main(){ |
amarincan | 3:56114a39ba7a | 28 | led1=1; |
amarincan | 3:56114a39ba7a | 29 | led2=1; |
amarincan | 3:56114a39ba7a | 30 | led3=1; |
tony63 | 0:74d57f8ae247 | 31 | while(1){ |
tony63 | 2:6a15ab0305c8 | 32 | ini1: header=0; |
amarincan | 3:56114a39ba7a | 33 | //led2=1; |
amarincan | 3:56114a39ba7a | 34 | //led=1; |
tony63 | 2:6a15ab0305c8 | 35 | header = irda.read_low_us(); //funcion para leer un pulso de caida o bajo |
tony63 | 2:6a15ab0305c8 | 36 | if (header > head_L && header < head_H) goto seguir;//verificar que este en la tolerancia +-20% |
tony63 | 2:6a15ab0305c8 | 37 | else goto ini1; |
tony63 | 0:74d57f8ae247 | 38 | |
tony63 | 2:6a15ab0305c8 | 39 | seguir: |
tony63 | 2:6a15ab0305c8 | 40 | //leo los datos de la trama y se meten a un arreglo |
amarincan | 3:56114a39ba7a | 41 | // |
amarincan | 3:56114a39ba7a | 42 | //wait_us(5000); |
amarincan | 3:56114a39ba7a | 43 | //led2=0; |
amarincan | 3:56114a39ba7a | 44 | for(i=0;i<(num_bits);i++){ // POR OSCILOSCOPIO se determina que llegan (num_bits),datos |
tony63 | 2:6a15ab0305c8 | 45 | dato = irda.read_high_us(); //leer un bit de datos que es pulso arriba en este control |
amarincan | 3:56114a39ba7a | 46 | num[i]=dato; |
amarincan | 3:56114a39ba7a | 47 | } |
amarincan | 3:56114a39ba7a | 48 | //pc.printf("numero[0] %d",num[0]); |
amarincan | 3:56114a39ba7a | 49 | for(i=0;i<(num_bits);i++){ |
amarincan | 3:56114a39ba7a | 50 | //if(num[i] > ((T_alto+T_bajo)/2)) { |
amarincan | 3:56114a39ba7a | 51 | if(num[i] > (1000)) { |
amarincan | 3:56114a39ba7a | 52 | cadena[i]=1; |
amarincan | 3:56114a39ba7a | 53 | pc.printf("1"); |
amarincan | 3:56114a39ba7a | 54 | wait_us(100); |
amarincan | 3:56114a39ba7a | 55 | } |
amarincan | 3:56114a39ba7a | 56 | else |
amarincan | 3:56114a39ba7a | 57 | { |
amarincan | 3:56114a39ba7a | 58 | cadena[i]=0; |
amarincan | 3:56114a39ba7a | 59 | pc.printf("0"); |
amarincan | 3:56114a39ba7a | 60 | wait_us(100); |
tony63 | 2:6a15ab0305c8 | 61 | } |
amarincan | 3:56114a39ba7a | 62 | |
amarincan | 3:56114a39ba7a | 63 | } |
amarincan | 3:56114a39ba7a | 64 | // Compara dos cadenas |
amarincan | 3:56114a39ba7a | 65 | for(i=0;i<(num_bits);i++){ |
amarincan | 3:56114a39ba7a | 66 | if(cadena[i]!=cadenar[i]) |
amarincan | 3:56114a39ba7a | 67 | m=100; |
amarincan | 3:56114a39ba7a | 68 | } |
amarincan | 3:56114a39ba7a | 69 | if(m==32) { |
amarincan | 3:56114a39ba7a | 70 | pc.printf("rojo"); |
amarincan | 3:56114a39ba7a | 71 | led3=!led3; |
tony63 | 2:6a15ab0305c8 | 72 | } |
amarincan | 3:56114a39ba7a | 73 | m=32; |
amarincan | 3:56114a39ba7a | 74 | |
amarincan | 3:56114a39ba7a | 75 | for(i=0;i<(num_bits);++i){ |
amarincan | 3:56114a39ba7a | 76 | if(cadena[i]!=cadenag[i]) |
amarincan | 3:56114a39ba7a | 77 | mr=100; |
amarincan | 3:56114a39ba7a | 78 | } |
amarincan | 3:56114a39ba7a | 79 | if(mr==32) { |
amarincan | 3:56114a39ba7a | 80 | pc.printf("verde"); |
amarincan | 3:56114a39ba7a | 81 | led2=!led2; |
amarincan | 3:56114a39ba7a | 82 | } |
amarincan | 3:56114a39ba7a | 83 | mr=32; |
amarincan | 3:56114a39ba7a | 84 | |
amarincan | 3:56114a39ba7a | 85 | |
amarincan | 3:56114a39ba7a | 86 | for(i=0;i<(num_bits);++i){ |
amarincan | 3:56114a39ba7a | 87 | if(cadena[i]!=cadenab[i]) |
amarincan | 3:56114a39ba7a | 88 | mb=100; |
amarincan | 3:56114a39ba7a | 89 | } |
amarincan | 3:56114a39ba7a | 90 | if(mb==32) { |
amarincan | 3:56114a39ba7a | 91 | pc.printf("azul"); |
amarincan | 3:56114a39ba7a | 92 | led1=!led1; |
amarincan | 3:56114a39ba7a | 93 | } |
amarincan | 3:56114a39ba7a | 94 | mb=32; |
amarincan | 3:56114a39ba7a | 95 | |
amarincan | 3:56114a39ba7a | 96 | |
amarincan | 3:56114a39ba7a | 97 | |
tony63 | 2:6a15ab0305c8 | 98 | } |
tony63 | 2:6a15ab0305c8 | 99 | } |
amarincan | 3:56114a39ba7a | 100 |