非常简单而又奇怪的红外收发问题,求诊断!
把IDE自带的红外收发例程功能整合到一个程序里面。开发板是ARDUINO UNO
就是下面的代码:
如果不加最后一句发射语句,则可以正常接收,通过IDE串口窗口可以看到接收数据;
如果加上最后那句发射语句,则收不到数据。
反复尝试,不管把那句发射语句放到loop内什么地方,只要是加上就不能接收数据。
希望了解底层工作的大神给个指示,谢谢!
#include <IRremote.h>
int RECV_PIN = 11;
IRsend irsend;
IRrecv irrecv(RECV_PIN);
decode_results results;
void setup() {
Serial.begin(9600);
irrecv.enableIRIn(); // Start the receiver
}
void loop(){
if (irrecv.decode(&results)) {
Serial.println(results.value, HEX);
irrecv.resume(); // Receive the next value
}
//irsend.sendNEC(0x807F18E7,32);
} 试试,感觉行,没试过
#include <IRremote.h>
int RECV_PIN = 11;
IRsend irsend;
IRrecv irrecv(RECV_PIN);
decode_results results;
void setup()
{
Serial.begin(9600);
irrecv.enableIRIn(); // Start the receiver
}
void loop()
{
if (irrecv.decode(&results))
{
Serial.println(results.value, HEX);
irrecv.resume(); // Receive the next value
}
if (millis() % 2000 == 0) //Send every 2000ms
{
irsend.sendNEC(0x807F18E7, 32);
}
} 本帖最后由 lstcwd 于 2018-2-21 22:31 编辑
Ansifa 发表于 2018-2-21 22:11
试试,感觉行,没试过
#include
谢谢!
试了,不行,还是收不到。:(
同样的,屏蔽掉发射就可以收到,如下:
void loop()
{
if (irrecv.decode(&results))
{
Serial.println(results.value, HEX);
irrecv.resume(); // Receive the next value
}
if (millis() % 2000 == 0) //Send every 2000ms
{
//irsend.sendNEC(0x807F18E7, 32);
}
}
谢谢!
试了,还是不行啊 :Q
百度了一下,发现也有人碰到同样问题,就是没看到解决方案,
请版主空了研究下,谢谢! 單以程式碼來看的話,似乎是判讀有無接收信號,
無接收到信號就改發送信號?
我是怕判斷接收只有一瞬間,而大部時間都在
發送,是否應該在接收程式這邊加上延時迴圈
(比方 0.1 秒,可以測試一下用多少會比較穩定),
時間到之前持續判斷是否有接收到信號,時間
過了沒收到信號再發送信號 楼主应该用的是接收发射一体的管子吧,代码运行后一直在发送信号,所以收不到 可以试试,用两个按键控制接收和发送程序。也就是一个按键按下就进入发射程序,否则就是接收程序。估计他们用了定时器之类的,产生了冲突。也有可能如6楼说的,外设有问题
页:
[1]