红外发射和接收求助
本帖最后由 knightsky 于 2014-10-14 16:49 编辑我想用arduino同时进行红外发射和接收,自发自收实验。发射头和接收头同时连接在板子上,用下面的程序。先进行红外发射,然后接收,点亮led。可是只能发射,不能进行接收。这时用外部的遥控器也不能被接收了。这是怎么回事?串口里只会显示发射信息。我该如何进行修改?请大家帮忙。
#include <IRremote.h>// 使用IRRemote函数库
const int irReceiverPin = 11;// 红外接收器的 OUTPUT 引脚接在 PIN2 接口 定义irReceiverPin变量为PIN2接口
int led=13;
IRrecv irrecv(irReceiverPin); // 设置irReceiverPin定义的端口为红外信号接收端口
IRsend irsend;
decode_results results; // 定义results变量为红外结果存放位置
void setup()
{
Serial.begin(9600); // 开启串口,波特率为9600
irrecv.enableIRIn(); // 启动红外解码
}
void loop()
{
Serial.println("SendIR: ");
irsend.sendNEC(0xC26BF044, 32);
delay(1000);
if (irrecv.decode(&results)) { // 解码成功,把数据放入results变量中
if (results.value==0xC26BF044){
digitalWrite(led, HIGH); // turn the LED on (HIGH is the voltage level)
delay(1000); // wait for a second
digitalWrite(led, LOW); // turn the LED off by making the voltage LOW
delay(1000);
}
// 把数据输入到串口
Serial.print("irCode: ");
Serial.print(results.value, HEX); // 显示红外编码
Serial.print(",bits: ");
Serial.println(results.bits); // 显示红外编码位数
irrecv.resume(); // 继续等待接收下一组信号
}
delay(600); //延时600毫秒
} 程序指令顺序执行的,即使没有 delay(1000)估计也收不到信号。 irsend 完序列之后光子早不知道飞哪里去了 贱客 发表于 2014-10-14 17:33 static/image/common/back.gif
程序指令顺序执行的,即使没有 delay(1000)估计也收不到信号。 irsend 完序列之后光子早不知道飞哪里去了
那请问,程序该怎么写可以实现呢? knightsky 发表于 2014-10-14 18:23 static/image/common/back.gif
那请问,程序该怎么写可以实现呢?
“同时”是做不到的,显然实现不了自发自收。
接收然后转发这是可以的。 贱客 发表于 2014-10-15 11:45 static/image/common/back.gif
“同时”是做不到的,显然实现不了自发自收。
接收然后转发这是可以的。
了解了,谢谢你
页:
[1]