本帖最后由 tpsdm 于 2023-7-2 11:48 编辑
#include <IRremoteESP8266.h>#include <IRrecv.h>
#include <IRsend.h>
#include <RCSwitch.h>
#define IR_RECEIVE_PIN 2 // 红外接收器连接的引脚
#define RF_TRANSMIT_PIN 0 // 射频发射模块连接的引脚
#define IR_CODE_A 0x44bba15e // 红外码A
#define IR_CODE_B 0x44bb619e // 红外码B
#define IR_CODE_C 1153153860 // 红外码C
#define IR_CODE_D 1153118670 // 红外码D
#define IR_CODE_E 1153124790 // 红外码E
#define RF_CODE_A 5605901 // 射频信号A
#define RF_CODE_B 5605890 // 射频信号B
#define RF_CODE_C 8269452 // 射频信号
CIRrecv irrecv(IR_RECEIVE_PIN);
IRsend irsend;RCSwitch rfSwitch;
void setup() {
Serial.begin(115200);
irrecv.enableIRIn();
rfSwitch.enableTransmit(RF_TRANSMIT_PIN);
rfSwitch.setProtocol(1);}
void loop() {
if (irrecv.decode()) {
unsigned long irCode = irrecv.decodedIRData.decodedRawData;
if (irCode == IR_CODE_A) {
A();
} else if (irCode == IR_CODE_B) {
B(); }
irrecv.resume();
}}void A() {
Serial.println("Executing A()");
if (irrecv.decode())
{
unsigned long irCode = irrecv.decodedIRData.decodedRawData;
if (irCode == IR_CODE_C)
{
transmitRFSignal(RF_CODE_A);
}
else if (irCode == IR_CODE_D)
{
transmitRFSignal(RF_CODE_B);
}
else if (irCode == IR_CODE_E)
{
transmitRFSignal(RF_CODE_C);
}
}
}
void B() {
Serial.println("Executing B()");
if (irrecv.decode())
{
unsigned long irCode = irrecv.decodedIRData.decodedRawData;
if (irCode == IR_CODE_C)
{
transmitRFSignal(RF_CODE_B);
}
else if (irCode == IR_CODE_D)
{
transmitRFSignal(RF_CODE_C);
}
else if (irCode == IR_CODE_E)
{
transmitRFSignal(RF_CODE_A);
}
}
}void transmitRFSignal(unsigned long rfCode)
{
rfSwitch.send(rfCode, 24);
}
外外A 0x44bba15e 红外B 0x44bb619e
红外C 1153153860
红外D 1153118670
红外D 1153124790
射频A 5605901
射频B 5605890
射频B 8269452 红外接收器引脚 2
射频发射引脚 0 8266红外转433程序,但接收到红外A就运行A()函数,但接收到红外B就运行B()函数。
A()函数:(但接收到红外C就转发射频A的信号,但接收到红外D就转发射频B的信号,但接收到红外E就转发射频C的信号,)
B()函数:(但接收到红外C就转发射频B的信号,但接收到红外D就转发射频C的信号,但接收到红外E就转发射频A的信号,)
这个代码有问题码?怎么编译出错?请老师指教!!!
|