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::getFreqGet the current IR modulation frequency
IRDevice::beginAllocate resources and start the IR device with a custom frequency
IRDevice::endStop the IR device operations and free up resources
IRDevice::sendSend IR raw data
IRDevice::beginNECAllocate resources and start the IR device with a frequency suitable for the NEC protocol
IRDevice::sendNECSend data using the NEC protocol
IRDevice::recvNECReceive 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.

请先确认已安装QQ通讯软体