小组 > 嵌入式 > 《Arduino开发实战指南》书友会 > Arduino教程(提高篇)——红外遥控(接收篇)
?
?
小组信息
名称:《Arduino开发实战指南》书友会

管理员:

人数:265
小组积分:1692
简介:Arduino因为其易用性使全球关注他的人越来越多,虽然在硬件工程师的眼中他仅仅是一个简单的8位机最小系统,但对于更多的没有硬件背景的人来说(特别是软件工程师),Arduino为他们打开了一扇通向硬件领域的窗口,这扇窗连接的是一个叫做开源硬件的世界。这里不用去系统的学习硬件知识,只要会C语言,就能够制作出很有意思的硬件交互作品。希望这本国内首本Arduino著作能够帮助你走进开源硬件的世界。

小组公告

欢迎大家积极发表Arduino以及开源硬件相关的内容,希望能以Arduino为切入点,让大家进入开源硬件的世界,本小组每月给发帖最多成员送出一本《Arduino开发实战指南》,要求是必须是开源硬件的相关内容(不限于Arduino),同时当月发帖数要在18篇以上。

返回本小组首页

楼主??[转载]?

Arduino教程(提高篇)——红外遥控(接收篇)


作者:mcp2002
积分:5284分
总积分:10377分
:2554
发送信息
加为好友
发表于2013-01-03 09:33

此篇我们一起学习玩红外遥,作者将对红外遥控原理和例程进行简单的说明,若有不足或遗漏希望大家指出和修正。
一:红外遥控原理:
? ?? ?红外遥控是由红外发射和红外接收系统组成

1、红外接收:接收电路是一种集成红外线接收和放大一体 的一体化红外接收器模块,能够完成从红外线接收到输出与TTL电平信号兼容的所有工作,他适用于红外线遥控和红外线数据传输。接收器做成的红外接收模块只 有三个引脚,信号线,VCC,GND。与arduino和其他单片机连接通信非常方便。

这里我们使用的了OPEN JUMPER的红外接收套件,直接连接到传感器扩展板即可使用

2、红外发射:红外发射的遥控器发射的38K红外载波信号是由遥 控器里的编码芯片对其进行编码。下面用TC9012芯片了解下编码方式。它是以一段引导码,用户码,数据码,数据反码组成,利用脉冲的时间间隔来区别是0 还是1信号(高电平低电平之比约为1:1时被认为是信号0,),而编码就是由这些0 、1信号组成。同一个遥控器的用户码是不变的,用数据吗不同来分辨遥控器按的键不同。当按下遥控器按键时,遥控器发送出红外载波信号,红外接收器接收到信 号时程序对载波信号进行解码,通过数据码的不同来判断按下的是哪个键。单片机由接收到的01信号进行解码,由此判断遥控器按下的是什么键。


二、例程:用遥控器控制食人鱼LED灯的亮灭,并用串口输出LED当前状态。
? ???第一步:下载arduino红外遥控库安装在Libraries目录下。(提供的红外遥控库包含了各种遥控器的发射接收函数,只需调用其内部函数即可轻松使用遥控器进行各种制作)
? ???第二步:下载例程(作者使用arduino1.0.1版本)

#include <IRremote.h>
?
int RECV_PIN = 11;
?
IRrecv irrecv(RECV_PIN);
?
decode_results results;
?
void setup()
{
??Serial.begin(9600);
??irrecv.enableIRIn(); //初始化红外遥控
??pinMode(12,1);
}
?
void loop() {
??if (irrecv.decode(&results)) {
?if(results.value==16753245)????? //确认接收到的第一排按键1的编码,此码是预先读出来的按键编码。
??{
??digitalWrite(12,1);??????????????? //点亮LED
???Serial.println("turn on LED"); //串口显示开灯
??}
??else if(results.value==16736925)?? //确认接收到的第一排按键2的编码
??{
???digitalWrite(12,0);??????????? //熄灭LED
????Serial.println("turn off LED");??? //串口显示关灯
??}
????irrecv.resume(); // 接收下一个值
??}
}
第三步:按键操作,观察LED亮灭情况及串口显示器。


红外控制库发布地址:https://github.com/shirriff/Arduino-IRremote

mcp2002 编辑于2013-01-03 09:39
分享到:? 新浪微博?? qq空间??
投票数: ? 回复?? ? 引用??
点击登录,立即回复。
小组活跃用户