开始的时候会出现 0,0
后面会出现 FFFFFFFF,0
按TEST的时候也会出现 FFFFFFFF,0
按一次键,键值会不停循环出现,如何解决?
#include <IRremote.h>
const int irReceivePin = 2;
IRrecv irrecv(irReceivePin);
decode_results results;
void setup() {
Serial.begin(9600);
irrecv.enableIRIn();
}
void loop() {
if (irrecv.decode(&results));
{
if (0!=results.bits)
{
Serial.print(results.value, HEX);
Serial.print(",");
Serial.println(results.bits);
}
irrecv.resume();
}
delay(500);
}
而且延迟很大,delay改成50的话,又没有反应了。
666666666666666666666666
这个好,硬件、软件、PC端工具配合,高效有趣。
代码上传成功了,电路也接了很多次,为什么串口监视器是空白的,没有数字显示?
输入端口改 pwm 的即可 const int irReceiverPin = 3;(3,5,6,9,11试过可用)板子型号:ardunio Uno R3 V1.0
按照楼上们的代码自己试了试,能控制多个LED,还能控制减速电机。做一个遥控小车没问题了。
#include <IRremote.h>// 使用IRRemote函数库
const int irReceiverPin = 11;// 红外接收器的 OUTPUT 引脚接在 PIN2 接口 定义irReceiverPin变量为PIN2接口
IRrecv irrecv(irReceiverPin); // 设置irReceiverPin定义的端口为红外信号接收端口
decode_results results; // 定义results变量为红外结果存放位置
void setup()
{
Serial.begin(9600);
irrecv.enableIRIn(); //初始化红外遥控
pinMode(12,OUTPUT);
pinMode(13,OUTPUT);
}
void loop() {
if (irrecv.decode(&results))
{
switch (results.value)
{
case 0xFD00FF://按键1,红灯
{
digitalWrite(12,HIGH);
break;
}
case 0xFD807F://按键2,绿灯
{
digitalWrite(13,HIGH);
break;
}
case 0xFD40BF: //按键3 熄灭
{
digitalWrite(12,LOW);
digitalWrite(13,LOW);
}
break;
}
irrecv.resume(); // 接收下一个值
}
}
最开始不能编译,改名字后就没问题了,后来用3.3V感觉不好用,改用5V就好了,要是有红外发射程序就好了
博学笃行 发表于 2013-1-20 23:49 static/image/common/back.gif
我想在原程序基础上改进实现按下的“1”键,就点亮1口的LED。
读出“1”的编码为“FF609F ”
加了一条 ...
特地验证了来回答这个问题,我知道你已经解决了。为后面的小伙伴回答的。
在收到的码前面加上0X
例如:if( results.value == 0xFFA25D)
正常使用。。。
谢谢分享
libraries\Arduino_IRremote_master\IRremote.cpp.o: In function `MATCH(int, int)':
C:\Users\Andyma\Documents\Arduino\libraries\Arduino_IRremote_master/IRremoteInt.h:176: multiple definition of `MATCH(int, int)'
sketch\Irtest.ino.cpp.o:C:\Users\Andyma\Documents\Arduino\libraries\Arduino_IRremote_master/IRremoteInt.h:176: first defined here
libraries\Arduino_IRremote_master\IRremote.cpp.o: In function `MATCH(int, int)':
C:\Users\Andyma\Documents\Arduino\libraries\Arduino_IRremote_master/IRremoteInt.h:176: multiple definition of `MATCH_MARK(int, int)'
sketch\Irtest.ino.cpp.o:C:\Users\Andyma\Documents\Arduino\libraries\Arduino_IRremote_master/IRremoteInt.h:176: first defined here
libraries\Arduino_IRremote_master\IRremote.cpp.o: In function `MATCH(int, int)':
C:\Users\Andyma\Documents\Arduino\libraries\Arduino_IRremote_master/IRremoteInt.h:176: multiple definition of `MATCH_SPACE(int, int)'
sketch\Irtest.ino.cpp.o:C:\Users\Andyma\Documents\Arduino\libraries\Arduino_IRremote_master/IRremoteInt.h:176: first defined here
collect2.exe: error: ld returned 1 exit status
exit status 1
编译有误。
Arduino:1.6.5 (Windows 8.1), 板:"Arduino Uno"
C:\Users\lenovo\Desktop\开发板应用\arduino-1.6.5\libraries\RobotIRremote\src\IRremoteTools.cpp:5:16: error: 'TKD2' was not declared in this scope
int RECV_PIN = TKD2; // the pin the IR receiver is connected to
^
Multiple libraries were found for "IRremote.h"
Used: C:\Users\lenovo\Desktop\开发板应用\arduino-1.6.5\libraries\RobotIRremote
Not used: C:\Users\lenovo\Desktop\开发板应用\arduino-1.6.5\libraries\Arduino_IRremote_master
编译有误。
报告将会包含更多的信息
"在编译时,输出详细信息"
在 文件>首选项 中启用
我怀疑是没有加载到这个库。。。。:'(:'(:'(:'(
学习学习支持支持
楼主,好厉害。
我学着做了一遍。
为什么都是 bits 32.
我也是按两下的,为什么。