An Arduino Library for
Encoding and Decoding
IR Remote Control Signals
In February 2013 I released to the public a library of code for Arduino style microcontrollers that helps you encode and decode infrared remote control signals such as those used by TV, DVD, and other consumer electronics. It is a major rewrite of a previous library called IRremote which was published by Ken Shirriff in his blog at http://www.righto.com/2009/08/multi-protocol-infrared-remote-library.html. His original code was available on github.com at https://github.com/shirriff/Arduino-IRremote and is copyright 2009 by him and published under the GNU LESSER GENERAL PUBLIC LICENSE. My rewritten library is also covered under this license.
IRLib1.x Superseded by Major Restructuring in IRLib2
In September 2016 we have released a major new update to this library that completely restructures the code and makes it simpler than ever to add new protocols and to only include the exact grouping of protocols you want to use in your application. There is also a new auto resume feature which ensures that you don’t miss a second frame of data while you are processing the first one. Unfortunately these changes are not backwards compatible with the previous version but it should be relatively simple to update your programs to use this new library. We will keep the original IRLib1 available on GitHub but we highly recommend you update to the library. Because it is named IRLib2 it is possible to have both the old and the new libraries available to the Arduino IDE at the same time.
You can download the library on GitHub at https://github.com/cyborg5/IRLib2.
Included in the repository is a newly revised user’s manual that is over 110 pages. Because of the difficulty of converting it to webpages for this blog, we will no longer maintain an HTML version online however we provide the manual in the GitHub repository in Microsoft Word, Adobe PDF, and EPUB formats. The manual is in three major sections.
- Complete reference of all classes methods and variables
- Tutorial describing all of the example programs included
- Long awaited tutorial on how to implement new protocols
Also check out Appendix A which explains how the code has been restructured as well as our rationale for the changes.
On this page I will put links to various blog posts I’m going to create that are related to this library.
A complete user’s manual is currently a work in progress and is available here and on the menu at the top of the page.
You can still download the original IRLib 1.x from github at:
https://github.com/cyborg5/IRLib/
Software related posts
- Announcing a New Infrared Remote Control Library for Arduino – 02/16/2013
- IRLib Tutorial part 1: Hardware set up – 03/14/2013
- IRLib Tutorial part 2: Controlling a Servo Using an IR Remote – 03/14/2013
- IRLib Tutorial part 3a: Sending IR Codes – 04/22/2013
- IRLib Tutorial part 3b: Creating a Virtual Remote Using Python – 05/04/2013
- IRLib Tutorial part 3c: Python, PySerial and PyGame Installation on Windows – 05/30/2013
- IRLib Tutorial part 4: IR Remote Mouse – 06/10/2013
Posts about hardware projects using library
- Show-and-Tell Isn’t Just for Grade School Showing off my remote-control remote-control – 12/30/2012
- Another Show-and-Tell Project Demonstrating an IR-based keyboard and mouse emulator using Arduino Leonardo – 2/28/2013
- Yet Another Show-And-Tell Showing off a preliminary look at a circuit board for transmitting and receiving IR signals – 3/10/2013
- My Second PCB Board Showing off a revised version of a circuit board for transmitting and receiving IR signals – 04/07/2013
- A Modern-Day Carnac the Magnificent: Bob the Robot Although this post isn’t primarily about my IRLib, I did show off my tutorial parts 3a and 3b in this May 4 edition of Adafruit Show-and-Tell – 05/04/2013