control infrarrojo con un LCD el reporte de recepción se hace usando un modulo LCD
Dependencies: Pulse1 TextLCD mbed
Fork of Tarea5 by
Revision 0:2306789ed6f5, committed 2013-11-16
- Comitter:
- avallejopo
- Date:
- Sat Nov 16 17:29:54 2013 +0000
- Commit message:
- Infrarojo
Changed in this revision
diff -r 000000000000 -r 2306789ed6f5 Pulse1.lib --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Pulse1.lib Sat Nov 16 17:29:54 2013 +0000 @@ -0,0 +1,1 @@ +http://mbed.org/users/tony63/code/Pulse1/#48651f86a80c
diff -r 000000000000 -r 2306789ed6f5 TextLCD.lib --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/TextLCD.lib Sat Nov 16 17:29:54 2013 +0000 @@ -0,0 +1,1 @@ +http://mbed.org/users/avallejopo/code/TextLCD/#aba8ab3dde9d
diff -r 000000000000 -r 2306789ed6f5 main.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/main.cpp Sat Nov 16 17:29:54 2013 +0000 @@ -0,0 +1,124 @@ +#include "mbed.h" +#include <Pulse1.h> +#include "TextLCD.h" + +TextLCD lcd(PTB10, PTB11, PTE2, PTE3, PTE4, PTE5); // rs, e, d4-d7 +PulseInOut irda(PTD5);// en este puerto se pone el sensor infrarrojo +Serial pc(USBTX, USBRX); +DigitalOut led(LED1); +DigitalOut led2(LED2); +DigitalOut led3(LED3); + +int header =0; //tiempo de cabecera pulso abajo +const int head_H = 10884; //+20% medida con osciloscopio en microsegundos +const int head_L = 7256;//-20% medida con osciloscopio +int i=0; +const int T_alto=1570;//ponga su tiempo de la prueba +const int T_bajo=467;//ponga su tiempo de la prueba +const int num_bits = 32;//ponga su numero de bits +int num[num_bits];//cadena para almacenar todos los tiempos que conforman los bits de datos +int sec[num_bits];//cadena para almacenar la cadena codificada en binario +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}; +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}; +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}; +int flag1,flag2,flag3; //Banderas de boton presionado +int dato; // tiempo de cada dato que se lee + +int main() +{ + led3=1; + led2=1; + led=1; + while(1) + { +ini1: + header=0; + header = irda.read_low_us(); //funcion para leer un pulso de caida o bajo + if (header > head_L && header < head_H) goto seguir;//verificar que este en la tolerancia +-20% + else goto ini1; + +seguir: + //leo los datos de la trama y se meten a un arreglo + wait_us(2000); + for(i=0; i<(num_bits-1); ++i) // POR OSCILOSCOPIO se determina que llegan (num_bits),datos + { + dato = irda.read_high_us(); //leer un bit de datos que es pulso arriba en este control + num[i]=dato; + wait_us(332); + } + //wait(0.5); //espero un poquito antes de leer todo el arreglo y ponerlo en pantalla + pc.printf(",%d",header); + for(i=0; i<num_bits; ++i) + { + pc.printf(",%d",num[i]); + } + //wait(0.1); //espero e imprimo en binario + pc.printf("\n\n"); + for(i=0; i<num_bits; ++i) + { + if(num[i] > ((T_alto+T_bajo)/2)) + { + pc.printf("1"); + sec[i]=1; // guardo la secuancia en binario + } + else + { + sec[i]=0; //guardo la secuencia en binario + pc.printf("0"); + } + } + + flag1=1; + flag2=1; + flag3=1; + for(i=0; i<32; ++i) + { + if(sec[i]!=boton1[i]) //en caso de que un bit no coincida se descarta el boton 1 + { + flag1=0; + } + if(sec[i]!=boton2[i]) //en caso de que un bit no coincida se descarta el boton 2 + { + flag2=0; + } + if(sec[i]!=boton3[i]) //en caso de que un bit no coincida se descarta el boton 3 + { + flag3=0; + } + } + if(flag1==1) + { + led3=1; + led2=1; + led=!led; + lcd.cls(); // Borrar Pantalla + lcd.locate(0,0); + lcd.printf("Presionaste 1"); //si coincidieron todos los bits del boton 1 + } + else if(flag2==1) + { + led3=1; + led=1; + led2=!led2; + lcd.cls(); // Borrar Pantalla + lcd.locate(0,0); + lcd.printf("Presionaste 2"); //si coincidieron todos los bits del boton 1 + } + else if(flag3==1) + { + led2=1; + led=1; + led3=!led3; + lcd.cls(); // Borrar Pantalla + lcd.locate(0,0); + lcd.printf("Presionaste 3"); //si coincidieron todos los bits del boton 1 + } + else + { + lcd.cls(); // Borrar Pantalla + lcd.locate(0,0); + lcd.printf("Presionaste otro boton"); //si coincidieron todos los bits del boton 1 + } + } +} +
diff -r 000000000000 -r 2306789ed6f5 mbed.bld --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mbed.bld Sat Nov 16 17:29:54 2013 +0000 @@ -0,0 +1,1 @@ +http://mbed.org/users/mbed_official/code/mbed/builds/a9913a65894f \ No newline at end of file