lstcwd 发表于 2018-2-21 21:41:28

非常简单而又奇怪的红外收发问题,求诊断!

把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);

}

Ansifa 发表于 2018-2-21 22:11:15

试试,感觉行,没试过

#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:28:01

本帖最后由 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);
      }
}

lstcwd 发表于 2018-2-22 00:09:10

谢谢!
试了,还是不行啊 :Q
百度了一下,发现也有人碰到同样问题,就是没看到解决方案,
请版主空了研究下,谢谢!

shouzama 发表于 2018-2-22 09:00:25

單以程式碼來看的話,似乎是判讀有無接收信號,
無接收到信號就改發送信號?

我是怕判斷接收只有一瞬間,而大部時間都在
發送,是否應該在接收程式這邊加上延時迴圈
(比方 0.1 秒,可以測試一下用多少會比較穩定),
時間到之前持續判斷是否有接收到信號,時間
過了沒收到信號再發送信號

通幽境 发表于 2018-2-22 21:37:26

楼主应该用的是接收发射一体的管子吧,代码运行后一直在发送信号,所以收不到

maxims 发表于 2018-2-25 18:38:37

可以试试,用两个按键控制接收和发送程序。也就是一个按键按下就进入发射程序,否则就是接收程序。估计他们用了定时器之类的,产生了冲突。也有可能如6楼说的,外设有问题
页: [1]
查看完整版本: 非常简单而又奇怪的红外收发问题,求诊断!