Arduino红外解码程序By乌龟.pdfVIP

  1. 1、本文档共4页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Arduino红外解码程序By乌龟.pdf

Arduino 红外解码程序 ——By 乌龟 我上网找过很多红外解码的程序,都看起来挺麻烦的。后来才发现原来早有 人编好了红外编码解码的函数库了。在此感谢极客工坊的弘毅大神,还有编写这 个库的那位大神。 详细资料在:/ 一个台湾人的blog,大陆 需翻墙才能看到,里面关于红外解码还有发射红外信号写的非常详细,还有相关 代码,有需要的可以翻墙看看,随便找个在线代理就可以了。 关于红外编码解码的原理网上太多了,我就不写在这了。直入正题! 首先,arduino IDE 本来就有红外线IRremote 的函数库,没有的可以去官网 下。但是arduino1.0 版本的不能直接用这个函数库(一开始还把我搞糊涂了,自 带的IRremote 里面的Example 都不能编译成功),需要改点东西。 首先进入arduino 文件夹,然后进入libraries 文件夹,然后进入IRremote 文 件夹,修改IRremoteInt.h 里面的这行: #include WProgram.h 改成这样子: #if ARDUINO = 100 #include Arduino.h #else #include WProgram.h #endif 改完之後,不管是 Arduino 1.0 或 Arduino-0023 甚至更早期的版本应该都可以 work 。 然后就是解码程序,我直接引用blog 里面的。 #include IRremote.h int RECV_PIN = 11; //红外线接收器OUTPUT 端接在pin 11 IRrecv irrecv(RECV_PIN); // 定义IRrecv 对象来接收红外线信号 decode_results results; //解码结果放在decode_results 构造的对象results 里 void setup() { Serial.begin(9600); irrecv.enableIRIn(); // 启动红外解码 } void loop() { if (irrecv.decode(results)) { // 解码成功,收到一组红外线信号 Serial.print(irCode: ); Serial.print(results.value, HEX); // 输出红外线解码结果 (十六进制) // results.value 是unsigned long 型,头文件有介绍 Serial.print(, bits: ); Serial.println(results.bits); // 红外线码元位数 irrecv.resume(); } } 原理介绍:irrecv.enableIRIn()启动红外解码后,这时候 IRrecv 对象会在后台接收 红外线信号。接着就可以利用 decode()函数持续检查,看看有没有解码成功。 irrecv.decode(results) 解码成功,这个函数会返回 true ,并把结果放在 results 里面,在解码一个红外线信号之后,要运行resume()函数,这样才会持续接收下 一组信号。 可以先利用这个程序解析出所使用遥控的编码,然后根据所得到的编码,修 改程序实现所需的功能。解析出的编码数值是unsigned long,注意一下,在判决 的时候用0xFFA25D 判定是否是某个按键。最后面附上我写的程序。 出现FFFFFFFF 应该是按键码之后出现的重复码,这个可以通过判断语句 if(results.value != (-1))去掉,也有的解码出来是0 ,或者其他的,这个就自己解决 吧。 最后附上本人写的程序 #include IRremote.h int RECV_PIN = 11; //红外线接收器OUTPUT 端接在pin 11 IRrecv irrecv(RECV_PIN); // 定义IRrecv 对象来接收红外线信号 decode_results results;

您可能关注的文档

文档评论(0)

phljianjian + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档