IRremote Library, Send & Receive Infrared Remote Control - PJRC

IRremote Library IRremote, by Ken Shirriff, allows you to receive or transmit Infrared Remote Control codes. You can make your projects controlled by a remote, or make them control other devices like televisions and stereo components.

Download: Included with the Teensyduino Installer Latest Developments on Github

Hardware Requirements

For transmitting, a single Infrared LED and resistor are needed. For receiving, an IR receiver module with internal bandpass filter is needed.

TODO: Add part numbers of known-good infrared LEDs and receivers. The LED in this photo is Lumex OED-EL-8L (Digikey 67-1000-ND) and the receiver is probably Sharp GP1UD281YK0F (now discontinued, Digikey 425-1987-ND).

TODO: Test Vishay TSOP39338 receiver (Digikey 751-1390-5-ND). It's very likely to work. Update this photo. Maybe PJRC should sell a known-good LED & receiver pair?

For transmitting, you must connect the LED to a specific pin. The receiver output may be connected to any pin.

BoardReceivePinTransmitPinTimerUsedPWM PinsDisabled
Teensy 4.1 / 4.0Any8FlexPWM1.3None
Teensy 3.6 / 3.5Any5CMTNone
Teensy 3.2 / 3.1Any5CMTNone
Teensy 3.0Any5CMTNone
Teensy LCAny16FTM117
Teensy 2.0Any10412
Teensy 1.0Any17115, 18
Teensy++ 2.0Any120
Teensy++ 1.0Any120

Basic Usage

IRremote acts like 2 libraries, one for sending and one for receiving. Usually it's easiest to find the codes to transmit by first using the receiver.

Receiving

IRrecv irrecv(receivePin)

Create the receiver object, using a name of your choice.

irrecv.enableIRIn()

Begin the receiving process. This will enable the timer interrupt which consumes a small amount of CPU every 50 µs.

irrecv.decode(&results)

Attempt to receive a IR code. Returns true if a code was received, or false if nothing received yet. When a code is received, information is stored into "results".

results.decode_type: Will be one of the following: NEC, SONY, RC5, RC6, or UNKNOWN. results.value: The actual IR code (0 if type is UNKNOWN) results.bits: The number of bits used by this code results.rawbuf: An array of IR pulse times results.rawlen: The number of items stored in the array

Tag » Arduino Ir Remote Library Documentation