README.txt 4.1 KB
Newer Older
Chris Young's avatar
Chris Young committed
IRLib – an Arduino library for infrared encoding and decoding
Chris Young's avatar
Chris Young committed
2 3
Version 1.3 January 2014
Copyright 2013, 2014 by Chris Young
Chris Young's avatar
Chris Young committed
4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45
This library is a major rewrite of IRemote by Ken Shirriff which was covered 
by GNU LESSER GENERAL PUBLIC LICENSE which as I read it allows me to make 
modified versions. That same license applies to this modified version. See 
his original copyright below. 

The latest Ken Shirriff code can be found at

My purpose was to reorganize the code to make it easier to add or remove 
protocols. As a result I have separated the act of receiving a set of raw timing 
codes from the act of decoding them by making them separate classes. That way 
the receiving aspect can be more black box and implementers of decoders and 
senders can just deal with the decoding of protocols.

Also added provisions to make the classes base classes that could be extended 
with new protocols which would not require recompiling of the original library nor 
understanding of its detailed contents. Some of the changes were made to reduce 
code size such as unnecessary use of long versus bool. Some changes were just my 
weird programming style. Also extended debugging information added.

Version 0.1 July, 2009
Copyright 2009 Ken Shirriff
For details, see

Interrupt code based on NECIRrcv by Joe Knapp
Also influenced by

The package contains:
IRLib.cpp	Code for the library written in object C++
IRLib.h		Header file which you will include in your sketch
IRLibMatch.h	Match macros used internally. Need not include this unless you implement
		your own protocols
iRLibTimer.h	Attempts to detect type of Arduino board and allows you to modify which 
		interrupt timer you will use. Defaults to timer 2 as did the original KS 
		library. Alternate board and timer information based on a fork of the 
		original KS library. That for can be found here.
Chris Young's avatar
Chris Young committed
46 47
IRLibRData.h	Moved irparams structure and related data to this header to facilitate
		user created extensions to IRrecvBase.
Chris Young's avatar
Chris Young committed
48 49 50 51 52

Note: there is no "IRremoteInt.h" header as in the original library. Those values were 
	moved elsewhere.

The examples directory contains:
Chris Young's avatar
Chris Young committed
53 54 55
IRanalyze		Dumps detailed information about a recent signal. Useful for analyzing
		unknown protocols
IRfreq		Reports modulation frequency of IR signal. Requires TSMP58000 IR learner
Chris Young's avatar
Chris Young committed
IRhashdecode	Demonstrates hash decoder.
Chris Young's avatar
Chris Young committed
IRrecord		Recording incoming signal and play it back when a character is sent 
Chris Young's avatar
Chris Young committed
58 59 60 61 62 63
		through the serial console. By using the console you no longer need 
		to wire up a pushbutton to run this code.
IRrecvDump	Receives a code, attempts to decode it, produces well formatted 
		output of the results using the new "dump" method.
IRsendDemo	Simplistic demo to send a Sony DVD power signal every time a 
		character is received from the serial monitor.
Chris Young's avatar
Chris Young committed
IRsendJVC		Demonstrates sending a code using JVC protocol which is tricky.
Chris Young's avatar
Chris Young committed
65 66 67
IRservo		Demonstrates controlling a servo motor using an IR remote
IRserial_remote	Demonstrates a Python application that runs on your PC and sends
		serial data to Arduino which in turn sends IR remote signals.
Chris Young's avatar
Chris Young committed
68 69 70 71
Samsung36	Demonstrates how to expand the library without recompiling it. 
		Also demonstrates how to handle codes that are longer than 32 bits.
DirecTV		Demonstrates additional protocol for DirecTV
GIcable		Demonstrates additional protocol for GIcable used by Motorola cable boxes
Chris Young's avatar
Chris Young committed
72 73 74 75 76 77
Note: I did not port any of the other demo sketches although I may add IRTest later.
The library handles the following protocols:
NEC, Sony, RC5, RC6, Raw all of which were supported in the KS version.
Additionally added Panasonic_Old, JVC, NECx.
Also added KS hash code routines which he released separately.
Chris Young's avatar
Chris Young committed
Example code included but not in the library: Samsung36, DirecTV, GIcable.