adafruit_irremote
¶
Demo code for Circuit Playground Express:
# Circuit Playground Express Demo Code
# Adjust the pulseio 'board.PIN' if using something else
import pulseio
import board
import adafruit_irremote
pulsein = pulseio.PulseIn(board.REMOTEIN, maxlen=120, idle_state=True)
decoder = adafruit_irremote.GenericDecode()
while True:
pulses = decoder.read_pulses(pulsein)
print("Heard", len(pulses), "Pulses:", pulses)
try:
code = decoder.decode_bits(pulses)
print("Decoded:", code)
except adafruit_irremote.IRNECRepeatException: # unusual short code!
print("NEC repeat!")
except adafruit_irremote.IRDecodeException as e: # failed to decode
print("Failed to decode: ", e.args)
print("----------------------------")
Author(s): Scott Shawcroft
Implementation Notes¶
Hardware:
Software and Dependencies:
Adafruit CircuitPython firmware for the ESP8622 and M0-based boards: https://github.com/adafruit/circuitpython/releases
- exception adafruit_irremote.FailedToDecode[source]¶
Raised by decode_bits. Error argument is UnparseableIRMessage
- class adafruit_irremote.GenericDecode[source]¶
Generic decoding of infrared signals
- read_pulses(input_pulses, *, max_pulse=10000, blocking=True, pulse_window=0.1, blocking_delay=0.1)[source]¶
Read out a burst of pulses until pulses stop for a specified period (pulse_window), pruning pulses after a pulse longer than
max_pulse
.- Parameters
input_pulses (PulseIn) – Object to read pulses from
max_pulse (int) – Pulse duration to end a burst
blocking (bool) – If True, will block until pulses found. If False, will return None if no pulses. Defaults to True for backwards compatibility
pulse_window (float) – pulses are collected for this period of time
blocking_delay (float) – delay between pulse checks when blocking
- class adafruit_irremote.GenericTransmit(header, one, zero, trail, *, debug=False)[source]¶
Generic infrared transmit class that handles encoding.
- Parameters
- transmit(pulseout, data, *, repeat=0, delay=0, nbits=None)[source]¶
Transmit the
data
using thepulseout
.- Parameters
pulseout (pulseio.PulseOut) – PulseOut to transmit on
data (bytearray) – Data to transmit
repeat (int) – Number of additional retransmissions of the data, default 0
delay (float) – Delay between any retransmissions, default 0
nbits (int) – Optional number of bits to send, useful to send fewer bits than in the data bytes
- class adafruit_irremote.IRMessage(pulses, code)¶
Pulses and the code they were parsed into
- code¶
Alias for field number 1
- pulses¶
Alias for field number 0
- class adafruit_irremote.NECRepeatIRMessage(pulses)¶
Pulses interpreted as an NEC repeat code
- pulses¶
Alias for field number 0
- class adafruit_irremote.NonblockingGenericDecode(pulses, max_pulse=10000)[source]¶
Decode pulses into bytes in a non-blocking fashion.
- Parameters
>>> pulses = PulseIn(...) >>> decoder = NonblockingGenericDecoder(pulses) >>> for message in decoder.read(): ... if isinstace(message, IRMessage): ... message.code # TA-DA! Do something with this in your application. ... else: ... # message is either NECRepeatIRMessage or ... # UnparseableIRMessage. You may decide to ignore it, raise ... # an error, or log the issue to a file. If you raise or log, ... # it may be helpful to include message.pulses in the error message. ... ...
- adafruit_irremote.UnparseableIRMessage¶
Pulses and the reason that they could not be parsed into a code