
《Arduino技术及应用》课件—第17章红外遥控.ppt
18页ArduinoArduino技术及应用技术及应用第第17章章 红外遥控红外遥控Arduino技术及应用第17章 红外遥控目录目录IRremote类库成员函数红外接收红外发射17.217.117.3目录IRremote类库成员函数红外接收红外发射17.2 1红外遥控总述红外遥控总述Arduino可以使用的无线模块很多,驱动方式各有不同本章将要介绍一种最常用、成本最低的无线通信方式――红外通信红外通信是一种利用红外光编码进行数据传输的无线通信方式,是目前使用最广泛的一种通信和遥控手段由于红外线遥控装置具有体积小、功耗低、成本低等特点,因而被广泛应用于各个领域生活中常见的电视机遥控器和空调遥控器,均使用红外线遥控红外遥控总述Arduino可以使用的无线模块很多,驱动方式各17.1 IRremote类库成员函数1. IRrecv 类IRrecv类可用于接收红外信号并对其解码在使用该类之前,需要实例化一个该类的对象其成员函数如下1) IRrecv( )l功能:IRrecv类的构造函数可用于指定红外一体化接收头的连接引脚l语法:IRrecvobject(recvpin)l参数:•object,用户自定义的对象名。
•recvpin,连接到红外一体化接收头的Arduino引脚编号17.1 IRremote类库成员函数1. IRrecv 类17.1 IRremote类库成员函数(2) enableIRIn( )l功能:初始化红外解码l语法:IRrecv. enableIRIn( )l参数:IRrecv,—个IRrecv类的对象l返回值:无3) decode( )l功能:检查是否接收到编码l语法:IRrecv. decode(&results)l参数:•IRrecv,一个IRrecv类的对象•results,一个decode_results类的对象l返回值:int型值,为0表示接收到编码; 为1表示没有接收到编码17.1 IRremote类库成员函数(2)enableI17.1 IRremote类库成员函数(4) resume( )l功能:接收下一个编码l语法:IRrecv.resume( )l参数:IRrecv,—个IRrecv类的对象l返回值:无2.IRsend 类IRsend类可以对红外信号编码并发送17.1 IRremote类库成员函数(4)resume(17.1 IRremote类库成员函数(1) IRsend( )l功能:IRSend类的构造函数。
l语法:IRsendobject( )l参数:object,一个IRsend类的对象2) sendNEC( )l功能:以NEC编码格式发送指定值l语法:IRsend. sendNEC(data,nbits)l参数:•IRsend,一个IRsend类的对象•data,发送的编码值•nbits,编码位数l返回值:无17.1 IRremote类库成员函数(1)IRsend(17.1 IRremote类库成员函数(3) sendSony( )l功能:以Sony编码格式发送指定值l语法:Irsend.sendSony(data,nbits)l参数:•IRsend,一个IRsend类的对象•data,发送的编码值•nbits,编码位数l返回值:无4) sendRaw( )l功能:发送原始红外编码信号l语法:IRsend. sendRaw(buf,len,hz)l参数:•IRsend,一个IRsend类的对象•buf,存储原始编码的数组•len,数组长度•hz,红外发射频率l返回值:无17.1 IRremote类库成员函数(3)sendSon17.1 IRremote类库成员函数除此之外还有如下函数,用于其他常见协议的红外信号发送:lsendRC5( );lsendRC6( );lsendDISH( );lsendSharp( );lsendPanasonic( );lsendJVC( );在红外通信中的两端,一端进行红外信号的编码并发送,另一端接收红外信号并解码。
以下示例中将使用红外遥控器作为红外信号的发送端,使用Arduino和一体化接收头作为红外信号的接收端17.1 IRremote类库成员函数除此之外还有如下函数,17.2红外接收要想使用遥控器来控制Arduino,首先需了解遥控器各按键对应的编码,不同的遥控器,不同的按键,不同的协议,都对应着不同的编码可通过IRremote的示例程序来获取遥控器发送信号的编码红外信号接收端的制作只需将红外一体化接收头按图17-1连人Arduino即可,示例中将红外一体化接收头的输出脚连接到Arduino的11号引脚17.2红外接收要想使用遥控器来控制Arduino,首先需了17.2红外接收这里使用以下程序对红外信号进行解码,可以通过选择“文件”→“示例”→IRremote→IRrecvDemo菜单项找到该程序下载好该示例程序后,使用遥控器向红外一体化接收头发送信号,并在串口监视器中査看,则会看到如图17-2所示的信息17.2红外接收这里使用以下程序对红外信号进行解码,可以通过17.2红外接收遥控器的每个按键都对应了不同的编码,不同的遥控器使用的编码方式也不相同之所以出现“FFFFFFFF”编码,是因为使用的是NEC协议的遥控器,当按住某按键不放开时,其会发送重复编码“FFFFFFFF”。
对于其他协议的遥控器,则会重复发送其对应的编码在以上示例中,通过语句int RECV_PIN = 11;IRrecvirrecv
如图17-3所示,只需将红外发射管与Arduino连接即可,连接方式与普通LED类似,只要串联一个限流电阻即可另外,IRremote库只能使用3号引脚作为红外信号输出脚 17.3红外发射除了使用红外遥控器发射红外信号外,也可以使用17.3红外发射可以通过选择“文件”→“示例”→IRremote→IRrecvDemo菜单项找到该示例程序include
还可以使用两块Arduino进行红外无线通信在一定环境下,即使接收模块与发送模块没有相对,红外信号也可以靠物体反射进行传播以上程序中使用了for循环,发送了3次Sony红外编码,这是因为在Sony、RC5、RC6协议中都规定编码要发送3次IRremote库还可以使用其他函数来发送不同编码的红外信号,如使用sendNEC( )发送NEC编码的红外信号,使用sendPanasonic( )发送松下编码的红外信号等除了这些常见标准协议外,IRremote库还支持发送自定义的原始编码17.3红外发射这样便可模拟红外遥控器发射的经过编码的红外信17.4 本章小结本章介绍了一种目前使用最广泛的通信和遥控手段――红外通信,其因体积小、功耗低、成本低等特点,被广泛应用于各个领域本章分别从IRremote类库成员函数、红外接收、红外发射三个方面对其进行了一些简单介绍17.4 本章小结本章介绍了一种目前使用最广泛的通信和遥控手Thank You!Thank You!。












