Adafruit_Learning_System_Gu.../STEMMA_IR_Transceiver_Examples/CircuitPython/code.py
Liz 21f1186eb1 adding examples for the stemma ir transceiver
Adding CP and Arduino examples for the IR transceiver guide
2024-07-09 11:30:35 -04:00

40 lines
1.6 KiB
Python

# SPDX-FileCopyrightText: 2024 Liz Clark for Adafruit Industries
# SPDX-License-Identifier: MIT
import time
import array
import pulseio
import board
import adafruit_irremote
# Create a 'PulseOut' to send infrared signals on the IR transmitter @ 38KHz
pulseout = pulseio.PulseOut(board.D6, frequency=38000, duty_cycle=2**15)
# Create an encoder that will take numbers and turn them into NEC IR pulses
encoder = adafruit_irremote.GenericTransmit(header=[9000, 4500],
one=[560, 1700],
zero=[560, 560],
trail=0)
# IR receiver setup
ir_receiver = pulseio.PulseIn(board.D5, maxlen=120, idle_state=True)
decoder = adafruit_irremote.GenericDecode()
while True:
pulses = decoder.read_pulses(ir_receiver)
try:
# Attempt to decode the received pulses
received_code = decoder.decode_bits(pulses)
if received_code:
hex_code = ''.join(["%02X" % x for x in received_code])
print(f"Received: {hex_code}")
# Convert pulses to an array of type 'H' (unsigned short)
pulse_array = array.array('H', pulses)
# send code back using original pulses
pulseout.send(pulse_array)
print(f"Sent: {pulse_array}")
except adafruit_irremote.IRNECRepeatException: # Signal was repeated, ignore
pass
except adafruit_irremote.IRDecodeException: # Failed to decode signal
print("Error decoding")
ir_receiver.clear() # Clear the receiver buffer
time.sleep(1) # Delay to allow the receiver to settle
print()