adding examples for the stemma ir transceiver
Adding CP and Arduino examples for the IR transceiver guide
This commit is contained in:
parent
cd779f7f80
commit
21f1186eb1
3 changed files with 104 additions and 0 deletions
|
|
@ -0,0 +1,64 @@
|
|||
// SPDX-FileCopyrightText: 2024 Liz Clark for Adafruit Industries
|
||||
//
|
||||
// SPDX-License-Identifier: MIT
|
||||
|
||||
/*
|
||||
* Based on the SimpleReceiver.cpp and SimpleSender.cpp from the
|
||||
* Arduino-IRremote https://github.com/Arduino-IRremote/Arduino-IRremote.
|
||||
* by Armin Joachimsmeyer
|
||||
************************************************************************************
|
||||
* MIT License
|
||||
*
|
||||
* Copyright (c) 2020-2023 Armin Joachimsmeyer
|
||||
*
|
||||
*/
|
||||
|
||||
#include <Arduino.h>
|
||||
|
||||
#include <IRremote.hpp> // include the library
|
||||
#define IR_RECEIVE_PIN 5
|
||||
#define IR_SEND_PIN 6
|
||||
|
||||
void setup() {
|
||||
Serial.begin(115200);
|
||||
while (!Serial)
|
||||
;
|
||||
Serial.println("Adafruit STEMMA IR Transceiver Demo");
|
||||
IrReceiver.begin(IR_RECEIVE_PIN);
|
||||
IrSender.begin(IR_SEND_PIN); // Start with IR_SEND_PIN -which is defined in PinDefinitionsAndMore.h- as send pin and enable feedback LED at default feedback LED pin
|
||||
Serial.print("IRin on pin ");
|
||||
Serial.print(IR_RECEIVE_PIN);
|
||||
Serial.print(", IRout on pin ");
|
||||
Serial.println(IR_SEND_PIN);
|
||||
}
|
||||
|
||||
uint8_t sCommand = 0x34;
|
||||
uint8_t sRepeats = 0;
|
||||
|
||||
void loop() {
|
||||
/*
|
||||
* Check if received data is available and if yes, try to decode it.
|
||||
* Decoded result is in the IrReceiver.decodedIRData structure.
|
||||
*
|
||||
* E.g. command is in IrReceiver.decodedIRData.command
|
||||
* address is in command is in IrReceiver.decodedIRData.address
|
||||
* and up to 32 bit raw data in IrReceiver.decodedIRData.decodedRawData
|
||||
*/
|
||||
if (IrReceiver.decode()) {
|
||||
if (IrReceiver.decodedIRData.protocol == UNKNOWN) {
|
||||
IrReceiver.printIRResultRawFormatted(&Serial, true);
|
||||
IrReceiver.resume();
|
||||
} else {
|
||||
IrReceiver.resume();
|
||||
IrReceiver.printIRResultShort(&Serial);
|
||||
IrReceiver.printIRSendUsage(&Serial);
|
||||
delay(1000);
|
||||
Serial.println("Sending received command..");
|
||||
IrSender.sendNEC(IrReceiver.lastDecodedProtocol, IrReceiver.lastDecodedCommand, IrReceiver.repeatCount);
|
||||
delay(1000);
|
||||
Serial.print("Sent!");
|
||||
//Serial.println(IrReceiver.lastDecodedProtocol, IrReceiver.lastDecodedCommand, IrReceiver.repeatCount);
|
||||
}
|
||||
Serial.println();
|
||||
}
|
||||
}
|
||||
40
STEMMA_IR_Transceiver_Examples/CircuitPython/code.py
Normal file
40
STEMMA_IR_Transceiver_Examples/CircuitPython/code.py
Normal file
|
|
@ -0,0 +1,40 @@
|
|||
# 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()
|
||||
Loading…
Reference in a new issue