极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 17177|回复: 6

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

[复制链接]
发表于 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);
  
}
回复

使用道具 举报

发表于 2018-2-21 22:11:15 | 显示全部楼层
试试,感觉行,没试过

[kenrobot_code]#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);
        }
}[/kenrobot_code]
回复 支持 1 反对 0

使用道具 举报

 楼主| 发表于 2018-2-21 22:28:01 | 显示全部楼层
本帖最后由 lstcwd 于 2018-2-21 22:31 编辑
Ansifa 发表于 2018-2-21 22:11
试试,感觉行,没试过

[kenrobot_code]#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);
        }
}
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-2-22 00:09:10 | 显示全部楼层
谢谢!
试了,还是不行啊
百度了一下,发现也有人碰到同样问题,就是没看到解决方案,
请版主空了研究下,谢谢!
回复 支持 反对

使用道具 举报

发表于 2018-2-22 09:00:25 | 显示全部楼层
單以程式碼來看的話,似乎是判讀有無接收信號,
無接收到信號就改發送信號?

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

使用道具 举报

发表于 2018-2-22 21:37:26 | 显示全部楼层
楼主应该用的是接收发射一体的管子吧,代码运行后一直在发送信号,所以收不到
回复 支持 反对

使用道具 举报

发表于 2018-2-25 18:38:37 | 显示全部楼层
可以试试,用两个按键控制接收和发送程序。也就是一个按键按下就进入发射程序,否则就是接收程序。估计他们用了定时器之类的,产生了冲突。也有可能如6楼说的,外设有问题
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则 需要先绑定手机号

Archiver|联系我们|极客工坊

GMT+8, 2024-4-24 09:12 , Processed in 0.043662 second(s), 23 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表