2013-2-26 15:49:36 [显示全部楼层]
7145浏览
查看: 7145|回复: 0

[入门] Arduino红外遥控系列教程2013

[复制链接]
教程一:红外接收教程
本教程共四步操作,将教大家如何收集电视红外遥控器的编码
Arduino红外遥控系列教程2013图1



第一步:电路连接,非常简单[本图摘自IRremote作者BLOG]
Arduino红外遥控系列教程2013图2
Arduino红外遥控系列教程2013图3
Arduino红外遥控系列教程2013图4
这里额外说两点,其一红外发射二极管的型号无所谓,常见的是3MM和5MM。但接收管不是全部好用的
部分已知红外接收型号如下:
HS0038B(4.5V-5.5V)
PC838(2.5v-5.5v)
IRM_3638

其二,有的红外接收集成了三极管,所以并不需要为了增加功率额外再接一个三极管。详见Datesheet
Arduino红外遥控系列教程2013图5

第二步:安装IRremote库
请直接参考 Arduino入门教程--第二十课--红外遥控器介绍[链接]

第三步:复制代码并下载程序

  1. //本例来自于红外接收模块的IRremote自带范例
  2. /*
  3. * IRremote: IRrecvDemo - demonstrates receiving IR codes with IRrecv
  4. * An IR detector/demodulator must be connected to the input RECV_PIN.
  5. * Version 0.1 July, 2009
  6. * Copyright 2009 Ken Shirriff
  7. * <a href="http://arcfn.com" target="_blank">http://arcfn.com</a>
  8. */
  9. #include <IRremote.h>
  10. int RECV_PIN = 11;//定义红外接收器的引脚为11
  11. IRrecv irrecv(RECV_PIN);
  12. decode_results results;
  13. void setup()
  14. {
  15.   Serial.begin(9600);
  16.   irrecv.enableIRIn(); // 初始化红外接收器
  17. }
  18. void loop() {
  19.   if (irrecv.decode(&results)) {
  20.     Serial.println(results.value, HEX);//以16进制换行输出接收代码
  21.     Serial.println();//为了便于观看输出结果增加一个空行
  22.     irrecv.resume(); // 接收下一个值
  23.   }
  24. }
复制代码

第四步:记录红外编码
打开AccessPort串口助手软件并启用监控,手持电视遥控器,依序按键,记录红外编码
Arduino红外遥控系列教程2013图6


教程二:红外发射教程
教程二的操作请参考教程一中的视频,电路图也在教程一已示。本教程就不做过多描述,只说几点注意
1. 安全起见,限流电阻是必须要用的!
2. 红外光是不可见的,需要用手机摄像模式才能看到,详见视频。

第一步:修改代码并下载
根据教程一所记录的红外编码任选其一,例如本例选择频道增加按键
大家根据自己的情况修改程序中红外编码的部分

  1. /*
  2. * 发射红外线信号
  3. * 注意! 红外线发射器(IR LED)必须接到 pin 3, 不能接其它脚位
  4. Hisense 机顶盒 SD-16127 tested
  5. */
  6. //By Leo 2013.02.19
  7. //http://weibo.com/leolite
  8. //Update: Pin 3 IR LED test function
  9. #include <IRremote.h>                  // 引用 IRRemote 函式库
  10. IRsend irsend;                          // 定义 IRsend 物件来发射红外线讯号
  11. void setup()
  12. {
  13.   pinMode(3, OUTPUT);   
  14.   digitalWrite(3, HIGH);   // 点亮LED测试(需通过手机摄像模式观察)
  15.   delay(3000);             // 等待3秒
  16.   digitalWrite(3, LOW);    // 结束测试
  17. }
  18. void loop()
  19. {
  20.   Serial.print("SendIR: ");
  21.   irsend.sendNEC(0x807F18E7, 32);   // 记得换成你遥控器的红外线编码
  22.   delay(3000);             // 等待3秒
  23. }
复制代码

下一篇
Arduino红外遥控系列教程2013——红外转码[链接]


参考资料
TOM的系列教程
Arduino 红外遥控接收篇之一[链接]
红外发射实验之一红外发射模块自制[链接]
红外遥控接收之二发光二极管闪烁[链接]
红外遥控接收之三红外遥控接收LED与蜂鸣器[链接]

扩展阅读
【扫盲贴】浅谈38K红外发射接受编码[链接]
Randy版大写的,详细讲解了些红外有关知识,推荐下!

[IRremote库官方BLOG]A Multi-Protocol Infrared Remote Library for the Arduino[链接]
详细介绍了库的使用,原理及注意事项。非常推荐通读的文章。

[Github]Arduino-IRremote[链接]
库版本管理,最新版请到此下载

[IBM developerWorks]构建基于 Arduino 的激光游戏[链接]
非常好的系列教程,还包括实用的算法,推荐!

Cooper Maa的红外系列教程[链接]
非常好的红外系列教程,需要一些技术手段才能阅读。作者还有很多精彩的系列教程
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

为本项目制作心愿单
购买心愿单
心愿单 编辑
[[wsData.name]]

硬件清单

  • [[d.name]]
btnicon
我也要做!
点击进入购买页面
上海智位机器人股份有限公司 沪ICP备09038501号-4

© 2013-2024 Comsenz Inc. Powered by Discuz! X3.4 Licensed

mail