IRDevice Class
IRDevice Class
Description
A class used for managing, sending, and receiving data using IR.
Syntax
class IRDevice
Members
Public Constructors | |
A public constructor should not be used as this class is intended to be a singleton class. Access member functions using the object instance named IR. |
Public Methods | |
IRDevice::getFreq | Get the current IR modulation frequency |
IRDevice::begin | Allocate resources and start the IR device with a custom frequency |
IRDevice::end | Stop the IR device operations and free up resources |
IRDevice::send | Send IR raw data |
IRDevice::beginNEC | Allocate resources and start the IR device with a frequency suitable for the NEC protocol |
IRDevice::sendNEC | Send data using the NEC protocol |
IRDevice::recvNEC | Receive data using the NEC protocol |
IRDevice::getFreq
Description
Get the current IR modulation frequency.
Syntax
uint32_t getFreq(void);
Parameters
The function requires no input parameter.
Returns
Currently set IR modulation frequency in Hertz.
Example Code
NA
Notes and Warnings
NA
IRDevice::begin
Description
Allocate resources and start the IR device with a custom frequency.
Syntax
void begin(uint8_t receivePin, uint8_t transmitPin, uint32_t irMode, uint32_t freq);
Parameters
receivePin: pin on which IR sensor is connected. Hardware IR receiver is available at pins 3, 8, 17.
transmitPin: pin on which IR LED is connected. Hardware IR transmitter is available at pins 6, 9, 16.
irMode: transmit or receive mode. Valid values: IR_MODE_TX, IR_MODE_RX
freq: IR modulation frequency in Hertz
Returns
The function returns nothing.
Example Code
NA
Notes and Warnings
IR device can only operate in either transmit or receive mode.
IRDevice::end
Description
Stop the IR device operations and free up resources.
Syntax
void end(void);
Parameters
The function requires no input parameter.
Returns
The function returns nothing.
Example Code
NA
Notes and Warnings
NA
IRDevice::send
Description
Send IR raw data.
Syntax
void send(const unsigned int buf[ ] , uint16_t len);
Parameters
buf[ ] : IR raw signals (in us) in an array form.
len: total length of the IR raw signal array.
Returns
The function returns nothing.
Example Code
#include "IRDevice.h" // User defined txPin, rxPin and carrier frequency #define IR_RX_PIN 8 #define IR_TX_PIN 9 #define CARRIER_FREQ 38000 unsigned int irRawSignal[] = { 9000, 4500, // starting bit 560, 560, 560, 560, 560, 1690, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, // address 00100000 : 4 560, 1690, 560, 1690, 560, 560, 560, 1690, 560, 1690, 560, 1690, 560, 1690, 560, 1690, // ~ address 11011111 560, 560, 560, 560, 560, 560, 560, 1690, 560, 560, 560, 560, 560, 560, 560, 560, // data 00010000 : 8 560, 1690, 560, 1690, 560, 1690, 560, 560, 560, 1690, 560, 1690, 560, 1690, 560, 1690, //~ data 11101111 560 // stoping bit }; int DataLen = sizeof(irRawSignal) / sizeof(irRawSignal[0]); // 284/ 4 = 71 void setup() { Serial.begin(115200); IR.begin(IR_RX_PIN, IR_TX_PIN, IR_MODE_TX, CARRIER_FREQ); } void loop() { IR.send(irRawSignal, DataLen); Serial.println("Finished Sending NEC Raw Data...."); delay(3000); }
Notes and Warnings
IR Raw Data array contains information in the form of consecutive microseconds (us). For more details, please refer to: http://www.righto.com/2009/08/multi-protocol-infrared-remote-library.html.
IRDevice::beginNEC
Description
Allocate resources and start the IR device with a frequency suitable for the NEC protocol.
Syntax
void beginNEC(uint8_t receivePin, uint8_t transmitPin, uint32_t irMode);
Parameters
receivePin: pin on which IR sensor is connected. Hardware IR receiver is available at pins 3, 8, 17.
transmitPin: pin on which IR LED is connected. Hardware IR transmitter is available at pins 6, 9, 16.
irMode: transmit or receive mode. Valid values: IR_MODE_TX, IR_MODE_RX
Returns
The function returns nothing.
Example Code
Example: IRRecvNEC
#include "IRDevice.h" uint8_t adr = 0; uint8_t cmd = 0; void setup() { //Initialize serial and wait for port to open: Serial.begin(115200); while (!Serial) { ; // wait for serial port to connect. Needed for native USB port only } IR.beginNEC(8, 9, IR_MODE_RX); // configure for NEC IR protocol } void loop() { if (IR.recvNEC(adr, cmd, 1000)) { Serial.print("Received "); Serial.print(adr); Serial.print(cmd); Serial.println(); } else { Serial.println("Received nothing, timed out"); } //IR.end(); }
Notes and Warnings
IR device can only operate in either transmit or receive mode. Refer to https://techdocs.altium.com/display/FPGA/NEC+Infrared+Transmission+Protocol for the NEC protocol.
IRDevice::sendNEC
Description
Send data using the NEC protocol.
Syntax
void sendNEC(uint8_t adr, uint8_t cmd);
Parameters
adr: 8-bit address to transmit
cmd: 8-bit command to transmit
Returns
The function returns nothing.
Example Code
Example: IRSendNEC
#include "IRDevice.h" uint8_t adr = 0; uint8_t cmd = 0; void setup() { //Initialize serial and wait for port to open: Serial.begin(115200); while (!Serial) { ; // wait for serial port to connect. Needed for native USB port only } IR.beginNEC(8, 9, IR_MODE_TX); // configure for NEC IR protocol } void loop() { if (cmd++ >=255) { adr++; } IR.sendNEC(adr, cmd); Serial.print("Sent "); Serial.print(adr); Serial.print(cmd); Serial.println(); //IR.end(); // Call this method to stop IR device and free up the pins for other uses }
Notes and Warnings
IR device can only operate in either transmit or receive mode. Refer to https://techdocs.altium.com/display/FPGA/NEC+Infrared+Transmission+Protocol for the NEC protocol.
IRDevice::recvNEC
Description
Receive data using the NEC protocol.
Syntax
void recvNEC(uint8_t& adr, uint8_t& cmd uint32_t timeout);
Parameters
adr: variable to store received NEC address
cmd: variable to store received NEC command
timeout: time duration to wait for an incoming transmission
Returns
The function returns “1” if data has been received, returns “0” if no data has been received.
Example Code
Example: IRRecvNEC
Details of the code can be found in the previous section of IRDevice::beginNEC.
Notes and Warnings
IR device can only operate in either transmit or receive mode. Refer to https://techdocs.altium.com/display/FPGA/NEC+Infrared+Transmission+Protocol for the NEC protocol.