control infrarrojo con un LCD el reporte de recepción se hace usando un modulo LCD

Dependencies:   Pulse1 TextLCD mbed

Fork of Tarea5 by Alexander Vallejo

Files at this revision

API Documentation at this revision

Comitter:
avallejopo
Date:
Sat Nov 16 17:29:54 2013 +0000
Commit message:
Infrarojo

Changed in this revision

Pulse1.lib Show annotated file Show diff for this revision Revisions of this file
TextLCD.lib Show annotated file Show diff for this revision Revisions of this file
main.cpp Show annotated file Show diff for this revision Revisions of this file
mbed.bld Show annotated file Show diff for this revision Revisions of this file
--- /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
--- /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
--- /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
+        }
+    }
+}
+
--- /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