martes, 15 de enero de 2013

Control remoto IR

Para enviar información IR necesitamos la siguiente librería  NECIRrcv.zip, descargar y descomprimir en libraries en mi caso /opt/arduino-1.5.1/libraries, esta librería nos retornara un código exadecimal por cada tecla presionada, recordemos que cada control remoto suele tener un código exadecimal diferente para cada tecla, o simplemente envie a el Serial.println(ircode); el voltaje y la distribución de los pines depende del sensor IR




#include <NECIRrcv.h>
#define IRPIN 10    // pin that IR detector is connected to

#define n1 0xEF10BF00
#define n2 0xEE11BF00
#define n3 0xED12BF00
#define n4 0xEB14BF00
#define n5 0xEA15BF00
#define n6 0xE916BF00
#define n7 0xE718BF00
#define n8 0xE619BF00
#define n9 0xE51ABF00

NECIRrcv ir(IRPIN) ;

void setup()
{
  Serial.begin(9600) ;
  Serial.println("NEC IR code reception") ;
  ir.begin() ;
}

void loop()
{
  unsigned long ircode ;

  while (ir.available()) {
    ircode = ir.read() ;
    //Serial.println(ircode);
    switch(ircode)
    {
        case n1:
        {
                Serial.println(1);
                break;
        }
        case n2:
        {
                Serial.println(2);
                break;
        }
        case n3:
        {
                Serial.println(3);
                break;
        }
        case n4:
        {
                Serial.println(4);
                break;
        }
        case n5:
        {
                Serial.println(5);
                break;
        }
        case n6:
        {
                Serial.println(6);
                break;
        }
        case n7:
        {
                Serial.println(7);
                break;
        }
        case n8:
        {
                Serial.println(8);
                break;
        }
        case n9:
        {
                Serial.println(9);
                break;
        }
    }    
  }
}

//--------------------------pruebas con otra libreria ------------
Para esto usare las librerias IRemote (descargar de aqui) que las he probado con control remoto philips,lg y samsung, con excelentes resultados, usamdo un IR 1838


#include <IRremote.h>

int RECV_PIN = 10;

IRrecv irrecv(RECV_PIN);

decode_results results;

void setup()
{
  Serial.begin(9600);
  irrecv.enableIRIn(); // Start the receiver
}

void loop() {
  if (irrecv.decode(&results)) {
    Serial.println(results.value, HEX);
    irrecv.resume(); // Receive the next value
  }
}

4 comentarios:

  1. Buenas,
    Existe alguna explicacion logica, para que funcione
    perfectamente con un uno, pero que no se pueda compilar con leonardo?

    ResponderEliminar
    Respuestas
    1. tienes razon cristian, no lo probe antes con leonardo, pero me salio error de librerias, lo cual es por q leonardo tiene un micro diferente al uno y al parecer esas librerias estan hechas excluisvamente para uno, e estado revisando el codigo de las librerias y encontre algunos detalles q ya los escribiré después, necesito hacer mas pruebas

      Eliminar
  2. Tambien tengo un arduino leonardo y tengo problemas de librerias

    ResponderEliminar
  3. Hola amigo disculpa las librerías ya no están disponibles podrías habilitarlas nuevamente gracias.

    ResponderEliminar