Skip to main content

IRRemote

The IRRemote class manages the reception of infrared signals emitted by Eliobot's remote control.

Initialization

import board
import pulseio
import adafruit_irremote
from elio import IRRemote

ir_pin = pulseio.PulseIn(board.IO9, maxlen=120, idle_state=True)
ir_receiver_hw = adafruit_irremote.GenericRemote()
ir = IRRemote(ir_pin)

Signals available

The class exposes a class dictionary signals with all the buttons on the remote:

CléBouton
signal_00
signal_11
signal_22
signal_33
signal_44
signal_55
signal_66
signal_77
signal_88
signal_99
signal_st*
signal_ht#
signal_upFlèche haut
signal_downFlèche bas
signal_leftFlèche gauche
signal_rightFlèche droite
signal_okOK

Access to the dictionary:

print(IRRemote.signals["signal_ok"])
# (0, 255, 56, 199)

Methods

decode_signal()

Decodes the received infrared signal and returns the code as a tuple, or None if no valid signal.

code = ir.decode_signal()
if code:
print("Signal reçu :", code)

Complete example — remote control to control motors

import board
import pwmio
import analogio
import pulseio
import adafruit_irremote
from elio import Motors, IRRemote

# Moteurs
AIN1 = pwmio.PWMOut(board.IO36)
AIN2 = pwmio.PWMOut(board.IO38)
BIN1 = pwmio.PWMOut(board.IO35)
BIN2 = pwmio.PWMOut(board.IO37)
vBatt_pin = analogio.AnalogIn(board.BATTERY)
motors = Motors(AIN1, AIN2, BIN1, BIN2, vBatt_pin)

# Télécommande IR
ir_pin = pulseio.PulseIn(board.IO9, maxlen=120, idle_state=True)
ir = IRRemote(ir_pin)

signals = IRRemote.signals

while True:
code = ir.decode_signal()

if code == list(signals["signal_up"]):
motors.move_forward(80)
elif code == list(signals["signal_down"]):
motors.move_backward(80)
elif code == list(signals["signal_left"]):
motors.turn_left(60)
elif code == list(signals["signal_right"]):
motors.turn_right(60)
elif code == list(signals["signal_ok"]):
motors.motor_stop()