请大家看看,我不太会用IR
#include <IRremote.h>int RECV_PIN = 11;
IRrecv irrecv(RECV_PIN);
decode_results results;
IRsend irsend;
void setup()
{
Serial.begin(9600);
irrecv.enableIRIn(); // start server
}
void loop() {
if(irrecv.decode(&results))
{
if(results.value == 0xB7D827){
irsend.sendNEC(0x12EE00FF, 32);
Serial.println('a');
irrecv.resume();
}
}
}
上面的是代码,遥控按下键,串口显示A,也发送了,但是就不能循环第二遍了,如果去掉这句irrecv.resume(); 就开始一直循环接收到A,不管遥控按不按,这个是怎么回事?? #include <IRremote.h>
int RECV_PIN = 11;
IRrecv irrecv(RECV_PIN);
decode_results results;
IRsend irsend;
void setup()
{
Serial.begin(9600);
irrecv.enableIRIn(); // start server
}
void loop() {
if(irrecv.decode(&results))
{
if(results.value == 0xB7D827){
irsend.sendNEC(0x12EE00FF, 32);
Serial.println('a');
}
irrecv.resume();
//将这行代码放到if(results.value == 0xB7D827) 括号之外试试
}
}
tom 发表于 2012-12-14 22:24 static/image/common/back.gif
#include
int RECV_PIN = 11;
还是不循环 只是执行一次A
irsend.sendNEC(0x12EE00FF, 32);
这个是发送
发送我另一个遥控器的代码
我想做个转发 如何能自动恢复默认的irrecv.decode(&results))的值这个是解决问题的关键,因为它是布尔型,并且无法释放
results.value irrecv.enableIRIn();
我加了这句
然后只能读一次 代码成功
#include <IRremote.h>
int RECV_PIN = 11;
IRrecv irrecv(RECV_PIN);
decode_results results;
IRsend irsend;
void setup()
{
Serial.begin(9600);
irrecv.enableIRIn(); // start server
}
void loop() {
if(irrecv.decode(&results))
{
if(results.value == 0xB7D827){
irsend.sendNEC(0x12EE00FF, 32);
irrecv.enableIRIn();//reset server
Serial.println('a');
}
irrecv.resume(); //read new results
}
}
前些天我也遇到了,受遥控的同时,加了另一组发送红外数据,,单独遥控没问题,但加上发送,发一次后遥控就没用了,但发送却正常 我用了你的 irrecv.enableIRIn();成功了!:Q:Q:Q:Q万分感谢啊!!! 有这个DallasTemperature库嘛?急求啊
页:
[1]