Observar los pulsos de un control remoto por medio de un infrarojo

Dependencies:   Pulse1 TextLCD mbed

Committer:
ikortegag
Date:
Wed Dec 11 23:06:57 2013 +0000
Revision:
1:42cbd69d91dd
Parent:
0:1fff1a3dbf16
Observar los pulsos de un control remoto por medio de un infrarojo

Who changed what in which revision?

UserRevisionLine numberNew contents of line
ikortegag 0:1fff1a3dbf16 1 #include "mbed.h"
ikortegag 0:1fff1a3dbf16 2 #include <Pulse1.h>
ikortegag 0:1fff1a3dbf16 3 #include "TextLCD.h"
ikortegag 0:1fff1a3dbf16 4
ikortegag 0:1fff1a3dbf16 5 TextLCD lcd(PTB10, PTB11, PTE2, PTE3, PTE4, PTE5); // rs, e, d4-d7
ikortegag 0:1fff1a3dbf16 6 PulseInOut irda(PTD5);// en este puerto se pone el sensor infrarrojo
ikortegag 0:1fff1a3dbf16 7 Serial pc(USBTX, USBRX);
ikortegag 0:1fff1a3dbf16 8 DigitalOut led(LED1);
ikortegag 0:1fff1a3dbf16 9 DigitalOut led2(LED2);
ikortegag 0:1fff1a3dbf16 10 DigitalOut led3(LED3);
ikortegag 0:1fff1a3dbf16 11
ikortegag 0:1fff1a3dbf16 12 int header =0; //tiempo de cabecera pulso abajo
ikortegag 0:1fff1a3dbf16 13 const int head_H = 11004; //+20% medida con osciloscopio en microsegundos
ikortegag 0:1fff1a3dbf16 14 const int head_L = 7336;//-20% medida con osciloscopio
ikortegag 0:1fff1a3dbf16 15 int i=0;
ikortegag 0:1fff1a3dbf16 16 const int T_alto=1630;//ponga su tiempo de la prueba
ikortegag 0:1fff1a3dbf16 17 const int T_bajo=433;//ponga su tiempo de la prueba
ikortegag 0:1fff1a3dbf16 18 const int num_bits = 32;//ponga su numero de bits
ikortegag 0:1fff1a3dbf16 19 int num[num_bits];//cadena para almacenar todos los tiempos que conforman los bits de datos
ikortegag 0:1fff1a3dbf16 20 int sec[num_bits];//cadena para almacenar la cadena codificada en binario
ikortegag 0:1fff1a3dbf16 21
ikortegag 0:1fff1a3dbf16 22 int boton1[]= {0,0,1,0,0,0,0,0,1,1,0,1,1,1,1,1,1,0,0,0,1,0,0,0,0,1,1,1,0,1,1,0};
ikortegag 0:1fff1a3dbf16 23 int boton2[]= {0,0,1,0,0,0,0,0,1,1,0,1,1,1,1,1,0,1,0,0,1,0,0,0,1,0,1,1,0,1,1,0};
ikortegag 0:1fff1a3dbf16 24 int boton3[]= {0,0,1,0,0,0,0,0,1,1,0,1,1,1,1,1,1,1,0,0,1,0,0,0,0,0,1,1,0,1,1,0};
ikortegag 0:1fff1a3dbf16 25
ikortegag 0:1fff1a3dbf16 26 int flag1,flag2,flag3; //Banderas de boton presionado
ikortegag 0:1fff1a3dbf16 27 int dato; // tiempo de cada dato que se lee
ikortegag 0:1fff1a3dbf16 28
ikortegag 0:1fff1a3dbf16 29 int main()
ikortegag 0:1fff1a3dbf16 30 {
ikortegag 0:1fff1a3dbf16 31 led3=1;
ikortegag 0:1fff1a3dbf16 32 led2=1;
ikortegag 0:1fff1a3dbf16 33 led=1;
ikortegag 0:1fff1a3dbf16 34 while(1)
ikortegag 0:1fff1a3dbf16 35 {
ikortegag 0:1fff1a3dbf16 36 ini1:
ikortegag 0:1fff1a3dbf16 37 header=0;
ikortegag 0:1fff1a3dbf16 38 header = irda.read_low_us(); //funcion para leer un pulso de caida o bajo
ikortegag 0:1fff1a3dbf16 39 if (header > head_L && header < head_H) goto seguir;//verificar que este en la tolerancia +-20%
ikortegag 0:1fff1a3dbf16 40 else goto ini1;
ikortegag 0:1fff1a3dbf16 41
ikortegag 0:1fff1a3dbf16 42 seguir:
ikortegag 0:1fff1a3dbf16 43 //leo los datos de la trama y se meten a un arreglo
ikortegag 0:1fff1a3dbf16 44 wait_us(2000);
ikortegag 0:1fff1a3dbf16 45 for(i=0; i<(num_bits-1); ++i) // POR OSCILOSCOPIO se determina que llegan (num_bits),datos
ikortegag 0:1fff1a3dbf16 46 {
ikortegag 0:1fff1a3dbf16 47 num[i] = irda.read_high_us(); //leer un bit de datos que es pulso arriba en este control
ikortegag 0:1fff1a3dbf16 48 wait_us(667);
ikortegag 0:1fff1a3dbf16 49 }
ikortegag 0:1fff1a3dbf16 50 //wait(0.5); //espero un poquito antes de leer todo el arreglo y ponerlo en pantalla
ikortegag 0:1fff1a3dbf16 51 pc.printf(",%d",header);
ikortegag 0:1fff1a3dbf16 52 for(i=0; i<num_bits; ++i)
ikortegag 0:1fff1a3dbf16 53 {
ikortegag 0:1fff1a3dbf16 54 pc.printf(",%d",num[i]);
ikortegag 0:1fff1a3dbf16 55 }
ikortegag 0:1fff1a3dbf16 56 //wait(0.1); //espero e imprimo en binario
ikortegag 0:1fff1a3dbf16 57 pc.printf("\n\n");
ikortegag 0:1fff1a3dbf16 58
ikortegag 0:1fff1a3dbf16 59 for(i=0; i<num_bits; ++i)
ikortegag 0:1fff1a3dbf16 60 {
ikortegag 0:1fff1a3dbf16 61 if(num[i] > ((T_alto+T_bajo)/2))
ikortegag 0:1fff1a3dbf16 62 {
ikortegag 0:1fff1a3dbf16 63 pc.printf("1");
ikortegag 0:1fff1a3dbf16 64 sec[i]=1; // guardo la secuancia en binario
ikortegag 0:1fff1a3dbf16 65 }
ikortegag 0:1fff1a3dbf16 66 else
ikortegag 0:1fff1a3dbf16 67 {
ikortegag 0:1fff1a3dbf16 68 sec[i]=0; //guardo la secuencia en binario
ikortegag 0:1fff1a3dbf16 69 pc.printf("0");
ikortegag 0:1fff1a3dbf16 70 }
ikortegag 0:1fff1a3dbf16 71 }
ikortegag 0:1fff1a3dbf16 72
ikortegag 0:1fff1a3dbf16 73 flag1=1;
ikortegag 0:1fff1a3dbf16 74 flag2=1;
ikortegag 0:1fff1a3dbf16 75 flag3=1;
ikortegag 0:1fff1a3dbf16 76
ikortegag 0:1fff1a3dbf16 77 for(i=0; i<32; ++i)
ikortegag 0:1fff1a3dbf16 78 {
ikortegag 0:1fff1a3dbf16 79 if(sec[i]!=boton1[i]) //en caso de que un bit no coincida se descarta el boton 1
ikortegag 0:1fff1a3dbf16 80 {
ikortegag 0:1fff1a3dbf16 81 flag1=0;
ikortegag 0:1fff1a3dbf16 82 }
ikortegag 0:1fff1a3dbf16 83 if(sec[i]!=boton2[i]) //en caso de que un bit no coincida se descarta el boton 2
ikortegag 0:1fff1a3dbf16 84 {
ikortegag 0:1fff1a3dbf16 85 flag2=0;
ikortegag 0:1fff1a3dbf16 86 }
ikortegag 0:1fff1a3dbf16 87 if(sec[i]!=boton3[i]) //en caso de que un bit no coincida se descarta el boton 3
ikortegag 0:1fff1a3dbf16 88 {
ikortegag 0:1fff1a3dbf16 89 flag3=0;
ikortegag 0:1fff1a3dbf16 90 }
ikortegag 0:1fff1a3dbf16 91 }
ikortegag 0:1fff1a3dbf16 92 if(flag1==1)
ikortegag 0:1fff1a3dbf16 93 {
ikortegag 0:1fff1a3dbf16 94 led3=1;
ikortegag 0:1fff1a3dbf16 95 led2=1;
ikortegag 0:1fff1a3dbf16 96 led=!led;
ikortegag 0:1fff1a3dbf16 97 lcd.cls(); // Borrar Pantalla
ikortegag 0:1fff1a3dbf16 98 lcd.locate(0,0);
ikortegag 0:1fff1a3dbf16 99 lcd.printf("Presionaste 1"); //si coincidieron todos los bits del boton 1
ikortegag 0:1fff1a3dbf16 100 }
ikortegag 0:1fff1a3dbf16 101 else if(flag2==1)
ikortegag 0:1fff1a3dbf16 102 {
ikortegag 0:1fff1a3dbf16 103 led3=1;
ikortegag 0:1fff1a3dbf16 104 led=1;
ikortegag 0:1fff1a3dbf16 105 led2=!led2;
ikortegag 0:1fff1a3dbf16 106 lcd.cls(); // Borrar Pantalla
ikortegag 0:1fff1a3dbf16 107 lcd.locate(0,0);
ikortegag 0:1fff1a3dbf16 108 lcd.printf("Presionaste 2"); //si coincidieron todos los bits del boton 1
ikortegag 0:1fff1a3dbf16 109 }
ikortegag 0:1fff1a3dbf16 110 else if(flag3==1)
ikortegag 0:1fff1a3dbf16 111 {
ikortegag 0:1fff1a3dbf16 112 led2=1;
ikortegag 0:1fff1a3dbf16 113 led=1;
ikortegag 0:1fff1a3dbf16 114 led3=!led3;
ikortegag 0:1fff1a3dbf16 115 lcd.cls(); // Borrar Pantalla
ikortegag 0:1fff1a3dbf16 116 lcd.locate(0,0);
ikortegag 0:1fff1a3dbf16 117 lcd.printf("Presionaste 3"); //si coincidieron todos los bits del boton 1
ikortegag 0:1fff1a3dbf16 118 }
ikortegag 0:1fff1a3dbf16 119 else
ikortegag 0:1fff1a3dbf16 120 {
ikortegag 0:1fff1a3dbf16 121 lcd.cls(); // Borrar Pantalla
ikortegag 0:1fff1a3dbf16 122 lcd.locate(0,0);
ikortegag 0:1fff1a3dbf16 123 lcd.printf("Presionaste otro boton"); //si coincidieron todos los bits del boton 1
ikortegag 0:1fff1a3dbf16 124 }
ikortegag 0:1fff1a3dbf16 125 }
ikortegag 0:1fff1a3dbf16 126 }