Paso 1: Obtener los códigos para los botones (I)
En primer lugar, tenemos que para obtener los códigos para cada botón de nuestro mando.
Por lo tanto, construir el circuito en el protoboard como se muestra en la figura.
El receptor Ir TSOP 1738 tiene tres pernos.
La primera es la salida, conectada al pin 11 de Arduino.
El segundo va a Gnd y el tercero a que está conectado + 5V.
Descargar la librería IrRemote escrito por Ken Shirriff. Esta librería nos permite tanto enviar y recibir códigos control remotos Ir en múltiples protocolos como Nec, Philips RC5, RC6 de Philips y crudo.
tenemos que conectar un sensor de infrarrojos como el osp1738 con cualquier conector de entrada digital.
Descarga desde aquí el bosquejo
#include
int RECV_PIN = 11;
Irrecv(RECV_PIN) de IRrecv;
resultados de la decode_results;
void setup() {}
Serial.Begin(9600);
irrecv.enableIRIn(); Inicio del receptor
}
Volcados hacia fuera de la estructura decode_results.
Llamar a esto después de IRrecv::decode()
void * para solucionar problema de compilador
void dump(void *v)
{/ / decode_results * resultados = (decode_results *) v
void dump(decode_results *results)
{int count = resultados -> rawlen;
Si (resultados -> decode_type == desconocido)
{Serial.print ("codificación desconocido:");
}
else if (resultados -> decode_type == NEC)
{Serial.print ("Decoded NEC:");
} else if (resultados -> decode_type == SONY)
{Serial.print ("Decoded SONY:");
}
else if (resultados -> decode_type == RC5)
{Serial.print ("Decoded RC5:");}
else if (resultados -> decode_type == RC6)
{Serial.print ("Decoded RC6:");}
else if (resultados -> decode_type == PANASONIC)
{Serial.print ("Decoded PANASONIC – dirección:");
Serial.Print (resultados -> panasonicAddress, hexagonal);
Serial.Print ("valor:");}
else if (resultados -> decode_type == JVC)
{Serial.print ("Decoded JVC:");}
Serial.Print (resultados -> valor, hexagonal);
Serial.Print ("('');
Serial.Print (resultados -> bits, DEC);
Serial.println ("bits)");
Serial.Print ("Raw ('');
Serial.Print (cuenta, DEC);
Serial.Print("):");
para (int i = 0; i < cuenta; i ++)
{Si ((i % 2) == 1)
{Serial.print (resultados -> rawbuf [i] * USECPERTICK, DEC);}
otra cosa
{Serial.print (-resultados (int) -> rawbuf [i] * USECPERTICK, DEC);}
Serial.Print("");}
Serial.println("");}
void loop()
{
Si (irrecv.decode (y resultados))
{
Serial.println (results.value, hexagonal);
descarga (y resultados);
irrecv.resume(); Recibir el siguiente valor
}
}