例程19-红外遥控_第1页
例程19-红外遥控_第2页
例程19-红外遥控_第3页
例程19-红外遥控_第4页
例程19-红外遥控_第5页
已阅读5页,还剩12页未读 继续免费阅读

下载本文档

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

文档简介

1、Arduino视频教程智宇科技第19讲红外遥控Arduino视频教程智宇科技红外接收头介绍红外遥控器发出的信号是一连串的二进制脉冲码。为了使其在无线传输过程中免受其他红外信号的干扰,通常都是先将其调制在特定的载波频率上,然后再经红外发射二极管发射出去,而红外线接收装置则要滤除其他杂波, 叧接收该特定频率的信号并将其还原成二进制脉冲码,也就是解调。内置接收管将红外发射管发射出来的光信号转换为微弱的电信号,此信号经由IC内部放大器进行放大,然后通过自动增益控制、带通滤波、解调变、波形整形后还原为遥控器发射出的原始编码,经由接收头的信号输出脚输入到电器上的编码识别电路。Arduino视频教程智宇科技

2、要想对某一遥控器进行解码必须要了解该遥控器的编码方式。本产品使用的遥控器的码方式为:NEC协议。下面就介绍一下NEC协议的特点:(1)8位地址位,8位命令位(2) 为了可靠性地址位和命令位被传输两次(3) 脉冲位置调制(4) 载波频率38khz(5) 每一位的时间为1.125ms或2.25ms 逻辑 0和1的定义如下图逻辑1的是由560us的高电平和1.69ms的低电平组成的脉冲表示Arduino视频教程智宇科技逻辑0的是由560us的高电平和565us的低电平组成的脉冲表示重复脉冲重复码的格式是由9ms的AGC高电平和2.25ms的低电平及一个560us的高电平组成。如右图所示Arduino

3、视频教程智宇科技按键按下立刻松开的发射脉冲:下图片显示了NEC的协议典型的脉冲序列。一个信息发送是由9mS的AGC自动增益控制脉冲开头,在早期的IR红外命令。中用来设置增益。接着是4.5mS空闲,然后是地址、地址和命令都传送2次,第二次的地址和命令是反码,可以用来校验接收到的信息。总的传输时间是固定的,因为每一位都有反码传送。Arduino视频教程智宇科技按键按下一段时间才松开的发射脉冲:一个命令发送一次,即使在遥控器上的按键仍然按下。当按键一直按下时,第一个110ms的脉冲与上图一样,之后每110ms重复代码传输一次。返个重复代码是由一个9ms的高电平脉冲和一个2.25ms 低电平和560s

4、的高电平组成,直到按键释放。Arduino视频教程智宇科技红外接收头的引脚与连线如左图将VOUT接到模拟口,GND接到实验板上的GND,VCC接到实验板上的+5v。实验连线如右图将红外接收头按照上述方法接好,将VOUT接到数字11口引脚,将LED灯通过电阻接到数字引脚2,3,4,5,6,7。Arduino视频教程智宇科技遥控器键值可先用串口显示对应按键编码,再修改程序使之匹配, 以适应不同遥控器示例遥控器按键编码“0” = 0x00FF6897 ; “1”=0x00ff30CF ; “4”=0x00FF10EF ; “7”=0x00FF42BD ;“” = 0x00FF9867 ;“C” =0

5、x00FFB04F ;“2”=0x00FF18E7 ; “5”=0x00FF38C7 ; “8”=0x00FF4AB5 ;“3”=0x00FF7A85 ; “6”=0x00FF5AA5 ; “9”=0x00FF52AD ;编译前注意:复制2.例程代码例程19-红外遥控里的库文件夹IRremote到Arduino的安装目录:Arduinolibraries目录下,缺失库文件可能编译出错。Arduino视频教程智宇科技参考源程序如下:#include int RECV_PIN = 11; int LED1 = 2;int LED2 = 3; int LED3 = 4; int LED4 = 5;

6、int LED5 = 6; int LED6 = 7;long on1 = 0x00FF6897;/编码示例,与发送匹配用long off1 = 0x00FF30CF; long on2 = 0x00FF9867; long off2 = 0x00FF18E7; long on3 = 0x00FFB04F;long off3 = 0x00FF7A85;Arduino视频教程智宇科技long on4 = 0x00FF10EF; long off4 = 0x00FF42BD; long on5 = 0x00FF38C7; long off5 = 0x00FF4AB5; long on6 = 0x0

7、0FF5AA5; long off6 = 0x00FF52AD; IRrecv irrecv(RECV_PIN); decode_results results;/ Dumps out the decode_results structure./ Call this after IRrecv:decode()/ void * to work around compiler issue/void dump(void *v) /decode_results *results = (decode_results *)v void dump(decode_results *results) int c

8、ount = results-rawlen;if (results-decode_type = UNKNOWN)Serial.println(Could not decode message);Arduino视频教程智宇科技elseif (results-decode_type = NEC)Serial.print(Decoded NEC: );else if (results-decode_type = SONY)Serial.print(Decoded SONY: );else if (results-decode_type = RC5)Serial.print(Decoded RC5:

9、);else if (results-decode_type = RC6)Serial.print(Decoded RC6: );Serial.print(results-value, HEX);Arduino视频教程智宇科技Serial.print( ();Serial.print(results-bits, DEC);Serial.println( bits);Serial.print(Raw (); Serial.print(count, DEC); Serial.print(): );for (int i = 0; i rawbufi*USECPERTICK, DEC);elseSer

10、ial.print(-(int)results-rawbufi*USECPERTICK, DEC);Serial.print( );Serial.println();Arduino视频教程智宇科技void setup()pinMode(RECV_PIN, INPUT); pinMode(LED1, OUTPUT); pinMode(LED2, OUTPUT); pinMode(LED3, OUTPUT); pinMode(LED4, OUTPUT); pinMode(LED5, OUTPUT); pinMode(LED6, OUTPUT);pinMode(13, OUTPUT); Serial

11、.begin(9600);irrecv.enableIRIn(); / Start the receiverint on = 0;unsigned long last = millis();/*应用millis函数可获取机器运行的时间长度,单位ms。系统最长的记录时间为9小时22分,如果超出时间将从0开始。函数返回值为unsigned long型,无参数。 */void loop()Arduino视频教程智宇科技if (irrecv.decode(&results)/ If its been at least 1/4 second since the last/ IR received, to

12、ggle the relay if (millis() - last 250)on = !on;digitalWrite(8, on ? HIGH : LOW); digitalWrite(13, on ? HIGH : LOW); dump(&results);if (results.value = on1 ) digitalWrite(LED1, HIGH);if (results.value = off1 ) digitalWrite(LED1, LOW);if (results.value = on2 ) digitalWrite(LED2, HIGH);if (results.val

13、ue = off2 ) digitalWrite(LED2, LOW);/Arduino视频教程智宇科技if (results.value = on3 )digitalWrite(LED3, HIGH);if (results.value = off3 ) digitalWrite(LED3, LOW);if (results.value = on4 ) digitalWrite(LED4, HIGH);if (results.value = off4 ) digitalWrite(LED4, LOW);if (results.value = on5 ) digitalWrite(LED5, HIGH);if (results.value = off5 ) digitalWrit

温馨提示

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

评论

0/150

提交评论