This program read the values of a infrared signal taken from a TV remote and then this signal is entered in a PWM, which increasses and decreasses the dutty cycle with two buttons of the remote. Before we have characterizing the tv remote

Dependencies:   Pulse1 TextLCD mbed

Committer:
lcorralesc1
Date:
Sun Dec 15 15:53:26 2013 +0000
Revision:
0:c7067fa0279b
This program read the values of a infrared signal taken from a TV remote and then this signal is entered in a PWM, which increasses and decreasses  the dutty cycle with two buttons of the remote. Before we have characterizing the tv remote

Who changed what in which revision?

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