《Arduino技术及应用》课件-第17章红外遥控_第1页
《Arduino技术及应用》课件-第17章红外遥控_第2页
《Arduino技术及应用》课件-第17章红外遥控_第3页
《Arduino技术及应用》课件-第17章红外遥控_第4页
《Arduino技术及应用》课件-第17章红外遥控_第5页
已阅读5页,还剩13页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、Arduino技术及应用第17章 红外遥控Arduino技术及应用第17章 红外遥控目录IRremote类库成员函数红外接收红外发射17.2 17.117.3目录IRremote类库成员函数红外接收红外发射17.2 1红外遥控总述Arduino可以使用的无线模块很多,驱动方式各有不同。本章将要介绍一种最常用、成本最低的无线通信方式红外通信。红外通信是一种利用红外光编码进行数据传输的无线通信方式,是目前使用最广泛的一种通信和遥控手段。由于红外线遥控装置具有体积小、功耗低、成本低等特点,因而被广泛应用于各个领域。生活中常见的电视机遥控器和空调遥控器,均使用红外线遥控。红外遥控总述Arduino可以

2、使用的无线模块很多,驱动方式各17.1 IRremote类库成员函数1. IRrecv 类IRrecv类可用于接收红外信号并对其解码。在使用该类之前,需要实例化一个该类的对象。其成员函数如下。(1)IRrecv( )功能:IRrecv类的构造函数。可用于指定红外一体化接收头的连接引脚。语法:IRrecvobject(recvpin)参数:object,用户自定义的对象名。recvpin,连接到红外一体化接收头的Arduino引脚编号。17.1 IRremote类库成员函数1. IRrecv 类17.1 IRremote类库成员函数(2)enableIRIn( )功能:初始化红外解码。语法:IR

3、recv. enableIRIn( )参数:IRrecv,个IRrecv类的对象。返回值:无。(3)decode( )功能:检查是否接收到编码。语法:IRrecv. decode(&results)参数:IRrecv,一个IRrecv类的对象。results,一个decode_results类的对象。返回值:int型值,为0表示接收到编码; 为1表示没有接收到编码。17.1 IRremote类库成员函数(2)enableI17.1 IRremote类库成员函数(4)resume( )功能:接收下一个编码。语法:IRrecv.resume( )参数:IRrecv,个IRrecv类的对象。返回值:

4、无。2.IRsend 类IRsend类可以对红外信号编码并发送。17.1 IRremote类库成员函数(4)resume(17.1 IRremote类库成员函数(1)IRsend( )功能:IRSend类的构造函数。语法:IRsendobject( )参数:object,一个IRsend类的对象。(2)sendNEC( )功能:以NEC编码格式发送指定值。语法:IRsend. sendNEC(data,nbits)参数:IRsend,一个IRsend类的对象。data,发送的编码值。nbits,编码位数。返回值:无。17.1 IRremote类库成员函数(1)IRsend(17.1 IRrem

5、ote类库成员函数(3)sendSony( )功能:以Sony编码格式发送指定值。语法:Irsend.sendSony(data,nbits)参数:IRsend,一个IRsend类的对象。data,发送的编码值。nbits,编码位数。返回值:无。(4)sendRaw( )功能:发送原始红外编码信号。语法:IRsend. sendRaw(buf,len,hz)参数:IRsend,一个IRsend类的对象。buf,存储原始编码的数组。len,数组长度。hz,红外发射频率。返回值:无。17.1 IRremote类库成员函数(3)sendSon17.1 IRremote类库成员函数除此之外还有如下函数

6、,用于其他常见协议的红外信号发送:sendRC5( );sendRC6( );sendDISH( );sendSharp( );sendPanasonic( );sendJVC( );在红外通信中的两端,一端进行红外信号的编码并发送,另一端接收红外信号并解码。以下示例中将使用红外遥控器作为红外信号的发送端,使用Arduino和一体化接收头作为红外信号的接收端。17.1 IRremote类库成员函数除此之外还有如下函数,17.2红外接收要想使用遥控器来控制Arduino,首先需了解遥控器各按键对应的编码,不同的遥控器,不同的按键,不同的协议,都对应着不同的编码。可通过IRremote的示例程序来

7、获取遥控器发送信号的编码。红外信号接收端的制作只需将红外一体化接收头按图17-1连人Arduino即可,示例中将红外一体化接收头的输出脚连接到Arduino的11号引脚。17.2红外接收要想使用遥控器来控制Arduino,首先需了17.2红外接收这里使用以下程序对红外信号进行解码,可以通过选择“文件”“示例”IRremoteIRrecvDemo菜单项找到该程序。下载好该示例程序后,使用遥控器向红外一体化接收头发送信号,并在串口监视器中査看,则会看到如图17-2所示的信息。17.2红外接收这里使用以下程序对红外信号进行解码,可以通过17.2红外接收遥控器的每个按键都对应了不同的编码,不同的遥控器

8、使用的编码方式也不相同。之所以出现“FFFFFFFF”编码,是因为使用的是NEC协议的遥控器,当按住某按键不放开时,其会发送重复编码“FFFFFFFF”。对于其他协议的遥控器,则会重复发送其对应的编码。在以上示例中,通过语句int RECV_PIN = 11;IRrecvirrecv;实例化了一个IRrecv类的红外接收对象irreev,并将红外接收头引脚连接到了Arduino的11号引脚上;接着在setup( )中使用enableIRIn( )函数初始化红外解码功能。在loop( )中使用decode( )函数检査是否收到编码,并将结果存储到decode_ results类的results对

9、象中。解码后的结果会保存在results. value中;最后通过 resume( )函数开始接收下一个编码。17.2红外接收遥控器的每个按键都对应了不同的编码,不同的遥17.2红外接收如果要使用红外遥控器来控制Arduino上连接的设备,则只需将解码后的结果results.value与设定功能的编码进行比对,如果一致,便执行相应的功能,如在以上程序中添加如下语句:switch case 0 xFFA25D:break ; /按键对应的动作 case 0 xFFE21D:break;/按键对应的动作 case 0 xFF9867:break;/按键对应的动作.17.2红外接收如果要使用红外遥控

10、器来控制Arduino上连17.3红外发射除了使用红外遥控器发射红外信号外,也可以使用Arduino来发送经过编码的红外信号。如图17-3所示,只需将红外发射管与Arduino连接即可,连接方式与普通LED类似,只要串联一个限流电阻即可。另外,IRremote库只能使用3号引脚作为红外信号输出脚。 17.3红外发射除了使用红外遥控器发射红外信号外,也可以使用17.3红外发射可以通过选择“文件”“示例”IRremoteIRrecvDemo菜单项找到该示例程序。#includeIRsend irsend;void setup( ) Serial. begin(9600); /初始化串口通信 voi

11、d loop( ) if (Serial. read( ) ! = -1) for (int i = 0; i3; i+) irsend.sendSony(0 xa90, 12); /发送索尼电视机电源开关对应的编码 delay(40); 17.3红外发射可以通过选择“文件”“示例”IRremo17.3红外发射这样便可模拟红外遥控器发射的经过编码的红外信号了。虽然红外光不可见,但可以通过手机或者电脑的摄像头来观察红外LED是否发光,以便排除硬件问题。还可以使用两块Arduino进行红外无线通信。在一定环境下,即使接收模块与发送模块没有相对,红外信号也可以靠物体反射进行传播。以上程序中使用了for循环,发送了3次Sony红外编码,这是因为在Sony、RC5、RC6协议中都规定编码要发送3次。IRremote库还可以使用其他函数来发送不同编码的红外信号,如使用sendNEC( )发送NEC编码的红外信号,使用sendPanasonic( )发送松下编码的红外信号等。除了这些常见标准协议外,IRremote库还支持发送自定义的原始编码。17.3红外

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论