Saltar al contenido principal

IRRemoto

La clase IRRemote gestiona la recepción de señales infrarrojas emitidas por el control remoto de Eliobot.

Inicialización

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)

Señales disponibles

La clase expone un diccionario de clase signals con todos los botones del control remoto:

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

Acceso al diccionario:

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

Métodos

decode_signal()

Decodifica la señal infrarroja recibida y devuelve el código como una tupla, o None si no hay una señal válida.

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

Ejemplo completo: control remoto para controlar motores

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()