infrarojo
Dependencies: Pulse1 TextLCD mbed
Fork of irda1 by
main.cpp@3:b06b82e4a8c1, 2013-12-03 (annotated)
- Committer:
- salvarear
- Date:
- Tue Dec 03 19:52:05 2013 +0000
- Revision:
- 3:b06b82e4a8c1
- Parent:
- 2:6a15ab0305c8
Programa para realizar la lectura a travez de un infrarrojo
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
tony63 | 0:74d57f8ae247 | 1 | #include "mbed.h" |
tony63 | 0:74d57f8ae247 | 2 | #include <Pulse1.h> |
salvarear | 3:b06b82e4a8c1 | 3 | #include "TextLCD.h" |
tony63 | 0:74d57f8ae247 | 4 | |
salvarear | 3:b06b82e4a8c1 | 5 | |
salvarear | 3:b06b82e4a8c1 | 6 | TextLCD lcd(PTB10, PTB11, PTE2, PTE3, PTE4, PTE5); // rs, e, d4-d7 |
salvarear | 3:b06b82e4a8c1 | 7 | PulseInOut irda(PTD5); |
tony63 | 0:74d57f8ae247 | 8 | Serial pc(USBTX, USBRX); |
salvarear | 3:b06b82e4a8c1 | 9 | DigitalOut led1(LED1); |
tony63 | 2:6a15ab0305c8 | 10 | DigitalOut led2(LED2); |
salvarear | 3:b06b82e4a8c1 | 11 | DigitalOut led3(LED3); |
salvarear | 3:b06b82e4a8c1 | 12 | |
salvarear | 3:b06b82e4a8c1 | 13 | int header =0; |
salvarear | 3:b06b82e4a8c1 | 14 | const int head_H = 10884; //+20% medida con osciloscopio en microsegundos (cabecera) |
salvarear | 3:b06b82e4a8c1 | 15 | const int head_L = 7256;//-20% medida con osciloscopio |
tony63 | 2:6a15ab0305c8 | 16 | int i=0; |
salvarear | 3:b06b82e4a8c1 | 17 | const int T_alto=1670;//ponga su tiempo de la prueba |
salvarear | 3:b06b82e4a8c1 | 18 | const int T_bajo=533;//ponga su tiempo de la prueba |
tony63 | 2:6a15ab0305c8 | 19 | const int num_bits = 32;//ponga su numero de bits |
tony63 | 2:6a15ab0305c8 | 20 | int num[num_bits];//cadena para almacenar todos los tiempos que conforman los bits de datos |
tony63 | 2:6a15ab0305c8 | 21 | int dato; // tiempo de cada dato que se lee |
salvarear | 3:b06b82e4a8c1 | 22 | int n1[32],n2[32],n3[32]; |
salvarear | 3:b06b82e4a8c1 | 23 | int cont1,cont2,cont3; |
tony63 | 0:74d57f8ae247 | 24 | int main(){ |
salvarear | 3:b06b82e4a8c1 | 25 | //tecla1 |
salvarear | 3:b06b82e4a8c1 | 26 | n1[0]=n1[5]=n1[6]=n1[9]=n1[10]=n1[12]=n1[14]=n1[15]=n1[18]=n1[24]=n1[25]=n1[27]=n1[28]=n1[29]=n1[30]=1; |
salvarear | 3:b06b82e4a8c1 | 27 | n1[1]=n1[2]=n1[3]=n1[4]=n1[7]=n1[8]=n1[11]=n1[13]=n1[16]=n1[17]=n1[19]=n1[20]=n1[21]=n1[22]=n1[23]=n1[26]=0;n1[31]=0; |
salvarear | 3:b06b82e4a8c1 | 28 | n2[0]=n2[5]=n2[6]=n2[9]=n2[10]=n2[12]=n2[14]=n2[15]=n2[17]=n2[24]=n2[26]=n2[27]=n2[28]=n2[29]=n2[30]=1; |
salvarear | 3:b06b82e4a8c1 | 29 | n2[1]=n2[2]=n2[3]=n2[4]=n2[7]=n2[8]=n2[11]=n2[13]=n2[16]=n2[18]=n2[19]=n2[20]=n2[21]=n2[22]=n2[23]=n2[25]=0;n2[31]=0; |
salvarear | 3:b06b82e4a8c1 | 30 | n3[0]=n3[5]=n3[6]=n3[9]=n3[10]=n3[12]=n3[14]=n3[15]=n3[16]=n3[18]=n3[25]=n3[27]=n3[28]=n3[29]=n3[30]=1; |
salvarear | 3:b06b82e4a8c1 | 31 | n3[1]=n3[2]=n3[3]=n3[4]=n3[7]=n3[8]=n3[11]=n3[13]=n3[17]=n3[19]=n3[20]=n3[21]=n3[22]=n3[23]=n3[24]=n3[26]=0;n3[31]=0; |
salvarear | 3:b06b82e4a8c1 | 32 | |
salvarear | 3:b06b82e4a8c1 | 33 | cont1=cont2=cont3=0; |
salvarear | 3:b06b82e4a8c1 | 34 | led1=1; |
salvarear | 3:b06b82e4a8c1 | 35 | led2=1; |
salvarear | 3:b06b82e4a8c1 | 36 | led3=1; |
salvarear | 3:b06b82e4a8c1 | 37 | |
salvarear | 3:b06b82e4a8c1 | 38 | while(1){ |
salvarear | 3:b06b82e4a8c1 | 39 | ini1: header=0; |
salvarear | 3:b06b82e4a8c1 | 40 | header = irda.read_low_us(); //funcion para leer un pulso de caida o bajo |
salvarear | 3:b06b82e4a8c1 | 41 | if (header > head_L && header < head_H) goto seguir;//verificar que este en la tolerancia +-20% |
salvarear | 3:b06b82e4a8c1 | 42 | else goto ini1; |
tony63 | 0:74d57f8ae247 | 43 | |
salvarear | 3:b06b82e4a8c1 | 44 | seguir: |
salvarear | 3:b06b82e4a8c1 | 45 | wait_us(2000); |
salvarear | 3:b06b82e4a8c1 | 46 | |
salvarear | 3:b06b82e4a8c1 | 47 | for(i=0;i<(num_bits-1);++i){ // POR OSCILOSCOPIO se determina que llegan (num_bits),datos |
salvarear | 3:b06b82e4a8c1 | 48 | dato = irda.read_low_us(); //leer un bit de datos que es pulso arriba en este control |
salvarear | 3:b06b82e4a8c1 | 49 | num[i]=dato; |
salvarear | 3:b06b82e4a8c1 | 50 | wait_us(633); |
salvarear | 3:b06b82e4a8c1 | 51 | } |
salvarear | 3:b06b82e4a8c1 | 52 | |
salvarear | 3:b06b82e4a8c1 | 53 | wait(0.5);//spero un poquito antes de leer todo el arreglo y ponerlo en pantalla |
salvarear | 3:b06b82e4a8c1 | 54 | |
salvarear | 3:b06b82e4a8c1 | 55 | for(i=0;i<(num_bits-1);++i){ |
salvarear | 3:b06b82e4a8c1 | 56 | if(num[i] > ((T_alto+T_bajo)/2)) { |
salvarear | 3:b06b82e4a8c1 | 57 | num[i]=1; |
salvarear | 3:b06b82e4a8c1 | 58 | //led1=0; |
salvarear | 3:b06b82e4a8c1 | 59 | } |
salvarear | 3:b06b82e4a8c1 | 60 | else num[i]=0; |
salvarear | 3:b06b82e4a8c1 | 61 | //led1=0; |
salvarear | 3:b06b82e4a8c1 | 62 | } |
salvarear | 3:b06b82e4a8c1 | 63 | for(i=0;i<(num_bits-1);++i){ |
salvarear | 3:b06b82e4a8c1 | 64 | if(num[i]==n1[i]){ |
salvarear | 3:b06b82e4a8c1 | 65 | cont1++; |
salvarear | 3:b06b82e4a8c1 | 66 | led2=0; |
salvarear | 3:b06b82e4a8c1 | 67 | } |
salvarear | 3:b06b82e4a8c1 | 68 | } |
salvarear | 3:b06b82e4a8c1 | 69 | led2=1; |
salvarear | 3:b06b82e4a8c1 | 70 | if(cont1==31){ |
salvarear | 3:b06b82e4a8c1 | 71 | led1=0; |
salvarear | 3:b06b82e4a8c1 | 72 | lcd.cls(); // Borrar Pantalla |
salvarear | 3:b06b82e4a8c1 | 73 | lcd.locate(0,0); |
salvarear | 3:b06b82e4a8c1 | 74 | lcd.printf("Ha presionado el boton 1 "); //si coincidieron todos los bits del boton 1 |
salvarear | 3:b06b82e4a8c1 | 75 | } |
salvarear | 3:b06b82e4a8c1 | 76 | |
salvarear | 3:b06b82e4a8c1 | 77 | |
salvarear | 3:b06b82e4a8c1 | 78 | for(i=0;i<(num_bits-1);++i){ |
salvarear | 3:b06b82e4a8c1 | 79 | if(num[i]==n2[i]){ |
salvarear | 3:b06b82e4a8c1 | 80 | cont2++; |
salvarear | 3:b06b82e4a8c1 | 81 | led2=1; |
salvarear | 3:b06b82e4a8c1 | 82 | } |
salvarear | 3:b06b82e4a8c1 | 83 | } |
salvarear | 3:b06b82e4a8c1 | 84 | |
salvarear | 3:b06b82e4a8c1 | 85 | if(cont2==10){ |
salvarear | 3:b06b82e4a8c1 | 86 | led2=!led2; |
salvarear | 3:b06b82e4a8c1 | 87 | lcd.cls(); // Borrar Pantalla |
salvarear | 3:b06b82e4a8c1 | 88 | lcd.locate(0,0); |
salvarear | 3:b06b82e4a8c1 | 89 | lcd.printf("Ha presionado el boton 3 "); //si coincidieron todos los bits del boton 1 |
salvarear | 3:b06b82e4a8c1 | 90 | |
salvarear | 3:b06b82e4a8c1 | 91 | } |
salvarear | 3:b06b82e4a8c1 | 92 | for(i=0;i<(num_bits-1);++i){ |
salvarear | 3:b06b82e4a8c1 | 93 | if(num[i]==n3[i]) |
salvarear | 3:b06b82e4a8c1 | 94 | cont3++; |
salvarear | 3:b06b82e4a8c1 | 95 | led3=0; |
salvarear | 3:b06b82e4a8c1 | 96 | } |
salvarear | 3:b06b82e4a8c1 | 97 | |
salvarear | 3:b06b82e4a8c1 | 98 | if(cont3==10){ |
salvarear | 3:b06b82e4a8c1 | 99 | led3=!led3; |
salvarear | 3:b06b82e4a8c1 | 100 | lcd.cls(); // Borrar Pantalla |
salvarear | 3:b06b82e4a8c1 | 101 | lcd.locate(0,0); |
salvarear | 3:b06b82e4a8c1 | 102 | lcd.printf("Ha presionado el boton 5"); //si coincidieron todos los bits del boton 1 |
salvarear | 3:b06b82e4a8c1 | 103 | } |
salvarear | 3:b06b82e4a8c1 | 104 | |
salvarear | 3:b06b82e4a8c1 | 105 | cont1=0; |
salvarear | 3:b06b82e4a8c1 | 106 | cont2=0; |
salvarear | 3:b06b82e4a8c1 | 107 | cont3=0; |
tony63 | 2:6a15ab0305c8 | 108 | } |
salvarear | 3:b06b82e4a8c1 | 109 | } |