infrarojo

Dependencies:   Pulse1 TextLCD mbed

Fork of irda1 by Gustavo Ramirez

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?

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