Tarea con el módulo IRDA, que muestra el código hexadecimal de la tecla pulsada en un control remoto panasonic, también sus tiempos de modulación.

Dependencies:   DebouncedIn Pulse1 TextLCD mbed

Fork of irda_V_aula by Gustavo Ramirez

main.cpp

Committer:
Equipo2_2015_1
Date:
2015-04-29
Revision:
4:03c980c205f1
Parent:
3:82bebaf2a06a

File content as of revision 4:03c980c205f1:

// Juan Esteban Botero Holguin
// Juan Felipe Vanegas Vargas
//Daniel Barrios

#include "mbed.h"
#include <Pulse1.h>
#include "TextLCD.h"
#include "DebouncedIn.h"


TextLCD lcd(PTB10, PTB11, PTE2, PTE3, PTE4, PTE5); // rs, e, d4-d7
PulseInOut irda(PTD5);//sensor infrarrojo
DebouncedIn button1(PTC12);  
DigitalOut led(LED1);
DigitalOut led2(LED2);
DigitalOut led3(LED3);

int header =0; //tiempo de cabecera pulso abajo
const int head_H = 3530*1.2; //+20% medida con osciloscopio en microsegundos
const int head_L = 3530*0.8;//-20%  medida con osciloscopio en microsegundos
const int Tp=417;  //tiempo entre bits en microsegundos
int i=0;
const int T_alto=1330;//lo que dura un uno lógico en microsegudnos
const int T_bajo=450;//lo que dura un cero lógico en microsegundos
const int num_bits = 48;//numero de bits
int num[num_bits];//cadena para almacenar todos los tiempos que conforman los bits de datos

int Tecla=0;
const int power=499;//datos del control tecla power
const int mute=359;//datos del control tecla mute
const int ch1=361;//datos del control tecla aumentar canal
const int ch0=427;//datos del control tecla disminuir canal
const int vol1=209;//datos del control tecla aumentar volumen
const int video=269;//datos del control tecla video
const int N1=199;//datos del control tecla 1
const int N2=265;//datos del control tecla 2
const int N3=275;//datos del control tecla 3
const int N4=341;//datos del control tecla 4
const int N5=277;//datos del control tecla 5
const int N6=343;//datos del control tecla 6
const int N7=353;//datos del control tecla 7
const int N8=419;//datos del control tecla 8
const int N9=271;//datos del control tecla 9
const int N0=337;//datos del control tecla 0
const int rtune=503;//datos del control tecla rtune
const int recall=421;//datos del control tecla recall

int dato; // tiempo de cada dato que se lee
  
int main()
{
      
      led=1;  //leds apagados
      led2=1;
      led3=1;       
while(1)
    {
        
      
       
            lcd.cls();
            lcd.locate(0,0);
            lcd.printf("PRESIONE BOTON");
          
ini1: fflush( stdin );
      header=0;
      header = irda.read_low_us();    //funcion para leer un pulso de caida o bajo en header
      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(1700/2);// ES EL TIEMPO DE HEADER QUE NO SE Lee O EL ALTO 
      //led2=0;
      lcd.cls();
      Tecla=0;
      for(i=0;i<(num_bits);++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(Tp/2);   
      }
      wait(0.3); //espero un poco luego de leer todo el arreglo y ponerlo en pantalla 
 
      for(i=0;i<(num_bits);++i)
      {  
        
        if(num[i] > ((T_alto+T_bajo)/2))
            {
                    Tecla=Tecla+ (2^(i));  //creo el código de la tecla pulsada en forma decimal
            }
          
      }
      
      //IMPRIMO LOS PARÁMETROS DE CADA TECLA QUE SE PUEDE SELECCIONAR
      
            if(Tecla==power)
      {
            led3=1;
            led2=1;
            led=!led;
            lcd.cls();
            lcd.printf("TECLA POWER");
            lcd.locate(0,1);
            lcd.printf("HEX=1F3");
             lcd.locate(8,1);
            lcd.printf("Nb:48");
            wait(4);
            lcd.cls();
            lcd.locate(0,0);
            lcd.printf("HH:%d",header);
            lcd.locate(8,0);
            lcd.printf("1L:1331");
            lcd.locate(0,1);
            lcd.printf("HL:1716");
            lcd.locate(8,1);
            lcd.printf("0L:%d",num[5]);
            Tecla=0; 
            wait(4);    
            //led3=1;  
      }  
      
            if(Tecla==mute)
      {
            led3=1;
            led2=1;
            led=!led;
            lcd.cls();
            lcd.printf("TECLA MUTE");
            lcd.locate(0,1);
            lcd.printf("HEX=167");
            lcd.locate(8,1);
            lcd.printf("Nb:48");
            wait(4);
            lcd.cls();
            lcd.locate(0,0);
            lcd.printf("HH:%d",header);
            lcd.locate(8,0);
            lcd.printf("1L:1337");
            lcd.locate(0,1);
            lcd.printf("HL:1713");
            lcd.locate(8,1);
            lcd.printf("0L:%d",num[5]);
            Tecla=0; 
            wait(4);    
            //led3=1;  
      }  
      
            if(Tecla==ch1)
      {
            led3=1;
            led2=1;
            led=!led;
            lcd.cls();
            lcd.printf("TECLA CH+");
            lcd.locate(0,1);
            lcd.printf("HEX=169");
             lcd.locate(8,1);
            lcd.printf("Nb:48");
            wait(4);
            lcd.cls();
            lcd.locate(0,0);
            lcd.printf("HH:%d",header);
            lcd.locate(8,0);
            lcd.printf("1L:1333");
            lcd.locate(0,1);
            lcd.printf("HL:1714");
            lcd.locate(8,1);
            lcd.printf("0L:%d",num[5]);
            Tecla=0; 
            wait(4);    
            //led3=1;  
      }  
      
             if(Tecla==ch0)
      {
            led3=1;
            led2=1;
            led=!led;
            lcd.cls();
            lcd.printf("TECLA CH-");
            lcd.locate(0,1);
            lcd.printf("HEX=1AB");
            lcd.locate(8,1);
            lcd.printf("Nb:48");
            wait(4);
            lcd.cls();
            lcd.locate(0,0);
            lcd.printf("HH:%d",header);
            lcd.locate(8,0);
            lcd.printf("1L:1325");
            lcd.locate(0,1);
            lcd.printf("HL:1716");
            lcd.locate(8,1);
            lcd.printf("0L:%d",num[5]);
            Tecla=0; 
            wait(4);    
            //led3=1;  
      }  
      
      
      
                if(Tecla==vol1)
      {
            led3=1;
            led2=1;
            led=!led;
            lcd.cls();
            lcd.printf("TECLA VOL+");
            lcd.locate(0,1);
            lcd.printf("HEX=D1");
             lcd.locate(8,1);
            lcd.printf("Nb:48");
            wait(4);
            lcd.cls();
            lcd.locate(0,0);
            lcd.printf("HH:%d",header);
            lcd.locate(8,0);
            lcd.printf("1L:1338");
            lcd.locate(0,1);
            lcd.printf("HL:1701");
            lcd.locate(8,1);
            lcd.printf("0L:%d",num[5]);
            Tecla=0; 
            wait(4);    
            //led3=1;  
      }    
      
      
      
                 if(Tecla==video)
      {
            led3=1;
            led2=1;
            led=!led;
            lcd.cls();
            lcd.printf("TECLA VIDEO");
            lcd.locate(0,1);
            lcd.printf("HEX=10D");
            lcd.locate(8,1);
            lcd.printf("Nb:48");
            wait(4);
            lcd.cls();
            lcd.locate(0,0);
            lcd.printf("HH:%d",header);
            lcd.locate(8,0);
            lcd.printf("1L:1336");
            lcd.locate(0,1);
            lcd.printf("HL:1705");
            lcd.locate(8,1);
            lcd.printf("0L:%d",num[5]);
            Tecla=0; 
            wait(4);    
            //led3=1;  
      }    
      
              if(Tecla==N1)
      {
            led3=1;
            led2=1;
            led=!led;
            lcd.cls();
            lcd.printf("PRESIONO 1");
            lcd.locate(0,1);
            lcd.printf("HEX=C7");
            lcd.locate(8,1);
            lcd.printf("Nb:48");
            wait(4);
            lcd.cls();
            lcd.locate(0,0);
            lcd.printf("HH:%d",header);
            lcd.locate(8,0);
            lcd.printf("1L:1328");
            lcd.locate(0,1);
            lcd.printf("HL:1698");
            lcd.locate(8,1);
            lcd.printf("0L:%d",num[5]);
            Tecla=0; 
            wait(4);    
            //led3=1;  
      }        
      
      if(Tecla==N2)
      {
            led=1;
            led3=1;
            led2=!led2;
            lcd.cls();
          lcd.printf("PRESIONO 2");
            lcd.locate(0,1);
            lcd.printf("HEX=109");
            lcd.locate(8,1);
            lcd.printf("Nb:48");
            wait(4);
            lcd.cls();
            lcd.locate(0,0);
            lcd.printf("HH:%d",header);
            lcd.locate(8,0);
            lcd.printf("1L:1331");
            lcd.locate(0,1);
            lcd.printf("HL:1696");
            lcd.locate(8,1);
            lcd.printf("0L:%d",num[5]);
            Tecla=0; 
            wait(4);    
            //led3=1;  
      }      
      
      
      if(Tecla==N3)
      {
            led=1;
            led2=1;
            led3=!led3;
            lcd.cls();
          lcd.printf("PRESIONO 3");
            lcd.locate(0,1);
            lcd.printf("HEX=113");
            lcd.locate(8,1);
            lcd.printf("Nb:48");
            wait(4);
            lcd.cls();
            lcd.locate(0,0);
            lcd.printf("HH:%d",header);
            lcd.locate(8,0);
            lcd.printf("1L:1325");
            lcd.locate(0,1);
            lcd.printf("HL:1713");
            lcd.locate(8,1);
            lcd.printf("0L:%d",num[5]);
            Tecla=0; 
            wait(4);   
            //led3=1;  
      }
      if(Tecla==N4)
      {
            led=0;
            led2=0;
            led3=1;
            lcd.cls();
          lcd.printf("PRESIONO 4");
            lcd.locate(0,1);
            lcd.printf("HEX=155");
            lcd.locate(8,1);
            lcd.printf("Nb:48");
            wait(4);
            lcd.cls();
            lcd.locate(0,0);
            lcd.printf("HH:%d",header);
            lcd.locate(8,0);
            lcd.printf("1L:1338");
            lcd.locate(0,1);
            lcd.printf("HL:1704");
            lcd.locate(8,1);
            lcd.printf("0L:%d",num[5]);
            Tecla=0; 
            wait(4);   
             led=1;  
            led2=1;

      }
      
            if(Tecla==N5)
      {
            led=1;
            led2=0;
            led3=0;
            lcd.cls();
          lcd.printf("PRESIONO 5");
            lcd.locate(0,1);
            lcd.printf("HEX=115");
            lcd.locate(8,1);
            lcd.printf("Nb:48");
            wait(4);
            lcd.cls();
            lcd.locate(0,0);
            lcd.printf("HH:%d",header);
            lcd.locate(8,0);
            lcd.printf("1L:1338");
            lcd.locate(0,1);
            lcd.printf("HL:1694");
            lcd.locate(8,1);
            lcd.printf("0L:%d",num[5]);
            Tecla=0; 
            wait(4);   
            led2=1;    
            led3=1;  
      }
      if(Tecla==N6)
      {     led=0;
            led2=1;
            led3=0;
            lcd.cls();
           lcd.printf("PRESIONO 6");
            lcd.locate(0,1);
            lcd.printf("HEX=157");
             lcd.locate(8,1);
            lcd.printf("Nb:48");
            wait(4);
            lcd.cls();
            lcd.locate(0,0);
            lcd.printf("HH:%d",header);
            lcd.locate(8,0);
            lcd.printf("1L:1324");
            lcd.locate(0,1);
            lcd.printf("HL:1692");
            lcd.locate(8,1);
            lcd.printf("0L:%d",num[5]);
            Tecla=0; 
            wait(4);   
           led=1;
            led3=1;
      }
      if(Tecla==N7)
      {     led=0;
            led2=0;
            led3=0;
            lcd.cls();
          lcd.printf("PRESIONO 7");
            lcd.locate(0,1);
            lcd.printf("HEX=161");
            lcd.locate(8,1);
            lcd.printf("Nb:48");
            wait(4);
            lcd.cls();
            lcd.locate(0,0);
            lcd.printf("HH:%d",header);
            lcd.locate(8,0);
            lcd.printf("1L:1336");
            lcd.locate(0,1);
            lcd.printf("HL:1701");
            lcd.locate(8,1);
            lcd.printf("0L:%d",num[5]);
            Tecla=0; 
            wait(4);   
            led=1;
            led2=1;
            led3=1;
      }
       
             if(Tecla==N8)
      {     led=0;
            led2=0;
            led3=0;
            lcd.cls();
          lcd.printf("PRESIONO 8");
            lcd.locate(0,1);
            lcd.printf("HEX=1A3");
             lcd.locate(8,1);
            lcd.printf("Nb:48");
            wait(4);
            lcd.cls();
            lcd.locate(0,0);
            lcd.printf("HH:%d",header);
            lcd.locate(8,0);
            lcd.printf("1L:1324");
            lcd.locate(0,1);
            lcd.printf("HL:1710");
            lcd.locate(8,1);
            lcd.printf("0L:%d",num[5]);
            Tecla=0; 
            wait(4);   
            led=1;
            led2=1;
            led3=1;
      }
      
      
      
            if(Tecla==N9)
      {     led=0;
            led2=0;
            led3=0;
            lcd.cls();
          lcd.printf("PRESIONO 9");
            lcd.locate(0,1);
            lcd.printf("HEX=10F");
             lcd.locate(8,1);
            lcd.printf("Nb:48");
            wait(4);
            lcd.cls();
            lcd.locate(0,0);
            lcd.printf("HH:%d",header);
            lcd.locate(8,0);
            lcd.printf("1L:1328");
            lcd.locate(0,1);
            lcd.printf("HL:1702");
            lcd.locate(8,1);
            lcd.printf("0L:%d",num[5]);
            Tecla=0; 
            wait(4);   
            led=1;
            led2=1;
            led3=1;
      }
      
      
      
            if(Tecla==N0)
      {     led=0;
            led2=0;
            led3=0;
            lcd.cls();
          lcd.printf("PRESIONO 0");
            lcd.locate(0,1);
            lcd.printf("HEX=151");
            lcd.locate(8,1);
            lcd.printf("Nb:48");
            wait(4);
            lcd.cls();
            lcd.locate(0,0);
            lcd.printf("HH:%d",header);
            lcd.locate(8,0);
            lcd.printf("1L:1324");
            lcd.locate(0,1);
            lcd.printf("HL:1695");
            lcd.locate(8,1);
            lcd.printf("0L:%d",num[5]);
            Tecla=0; 
            wait(4);   
            led=1;
            led2=1;
            led3=1;
      }
      
      
      
            if(Tecla==rtune)
      {     led=0;
            led2=0;
            led3=0;
            lcd.cls();
          lcd.printf("TECLA RTUNE");
            lcd.locate(0,1);
            lcd.printf("HEX=1F7");
             lcd.locate(8,1);
            lcd.printf("Nb:48");
            wait(4);
            lcd.cls();
            lcd.locate(0,0);
            lcd.printf("HH:%d",header);
            lcd.locate(8,0);
            lcd.printf("1L:1336");
            lcd.locate(0,1);
            lcd.printf("HL:1712");
            lcd.locate(8,1);
            lcd.printf("0L:%d",num[5]);
            Tecla=0; 
            wait(4);   
            led=1;
            led2=1;
            led3=1;
      }
      
      
      
            if(Tecla==recall)
      {     led=0;
            led2=0;
            led3=0;
            lcd.cls();
          lcd.printf("TECLA RECALL");
            lcd.locate(0,1);
            lcd.printf("HEX=1A5");
            lcd.locate(8,1);
            lcd.printf("Nb:48");
            wait(4);
            lcd.cls();
            lcd.locate(0,0);
            lcd.printf("HH:%d",header);
            lcd.locate(8,0);
            lcd.printf("1L:1332");
            lcd.locate(0,1);
            lcd.printf("HL:1683");
            lcd.locate(8,1);
            lcd.printf("0L:%d",num[5]);
            Tecla=0; 
            wait(4);   
            led=1;
            led2=1;
            led3=1;
      }
       
       
    }
}