Récepteur infrarouge et module pulseio - Niveau intermédiaire

La carte cpx est équipée d'un récepteur et d'un émetteur infrarouge. CircuitPython offre des modules permettant le décodage des informations reçues. Le code permettant d'exploiter les signaux reçus d'une télécommande est donc très simple comme on peut le voir dans l'exemple ci-dessous, tiré de la page Adafruit :

https://learn.adafruit.com/infrared-ir-receive-transmit-circuit-playground-express-circuit-python/ir-test-with-remote

MéthodeDécodage d'un signal infrarouge

1
import pulseio
2
import board
3
import adafruit_irremote
4
5
# Crée une entrée pulseio pour écouter les signaux reçus par le récepteur IR.
6
pulsein = pulseio.PulseIn(board.IR_RX, maxlen=120, idle_state=True)
7
# Crée un decodeur qui va récupérer les impulsions pulsein et les transformer en codes
8
decoder = adafruit_irremote.GenericDecode()
9
10
while True:
11
    pulses = decoder.read_pulses(pulsein)
12
    try:
13
        # Essaye de décoder les signaux reçus
14
        received_code = decoder.decode_bits(pulses, debug=False)
15
    except adafruit_irremote.IRNECRepeatException:
16
        # We got an unusual short code, probably a 'repeat' signal
17
        # print("NEC repeat!")
18
        continue
19
    except adafruit_irremote.IRDecodeException as e:
20
        # Something got distorted or maybe its not an NEC-type remote?
21
        # print("Failed to decode: ", e.args)
22
        continue
23
24
    print("Code NEC reçu: ", received_code)
25
    if received_code == [255, 2, 255, 0]:
26
        print("Reçu NEC Vol-")
27
    if received_code == [255, 2, 127, 128]:
28
        print("Reçu NEC Play/Pause")
29
    if received_code == [255, 2, 191, 64]:
30
        print("Reçu NEC Vol+")
31

Exemple

Voici un exemple d'affichage dans la console suite à l'appui sur des touches d'une télécommande infrarouge. On peut donc voir qu'il est très facile d'exploiter ces informations pour exécuter des actions.