查看“红外学习遥控”的源代码
←
红外学习遥控
跳转至:
导航
、
搜索
因为以下原因,您没有权限编辑本页:
您所请求的操作仅限于该用户组的用户使用:
用户
您可以查看与复制此页面的源代码。
{{Language| 红外学习遥控}} {| style="width: 800px;" |- | ==目的== 接收红外遥控器的发射编码,并保存起来,然后可以读取并发射相同红外信号。 ==原理== 利用红外接收传感器接收红外遥控器发射的编码,保存到EEPROM,然后可以通过读取EEPROM发射相同的红外信号。 ==设备== {|class="wikitable" |- |模块||数量||功能 |- |[[mCookie-CoreUSB/zh]]||1||核心板 |- |[[mCookie-Hub/zh]]||1||传感器转接板 |- |[[Microduino-IR receiver/zh]]||1||红外接收传感器 |- |[[Microduino-IR Emitter/zh]]||1||红外发送传感器 |- |[[Microduino-Converter/zh]]||1||转接板 |} [[File:IR_learn.jpg|600px|center|thumb]] ==搭建硬件== *Setup 1:将CoreUSB与Sensorhub叠堆。 [[File:CoreUSB_Sensorhub.jpg|600px|center|thumb]] *Setup 2:将红外发射传感器通过转接板接到Sensorhub的D3引脚上,将红外接收传感器接到Sensorhub的D10引脚上. [[file:Microduino-sensorhub_IR.JPG|thumb|800px|center]] [[File:ir_transmitter_receive.jpg|600px|center|thumb]] ==软件调试== *EEPROM读写方法定义,及红外接收、发射模块定义 <source lang="cpp"> #define EEPROM_write(address, var) eeprom_write_block((const void *)&(var), (void*)(address),sizeof(var)) //EEPROM写入 #define EEPROM_read(address, var) eeprom_read_block((void*)&(var),(const void *)(address),sizeof(var)) //EEPROM读取 IRrecv irrecv(RECV_PIN); //红外接收 decode_results results; //编码读取结果 IRsend irsend; //红外发射 int RECV_PIN = 10; //红外接收引脚 int num = 0; unsigned long readValue; </source> *串口及红外接收模块初始化 <source lang="cpp"> Serial.begin(9600); irrecv.enableIRIn(); //启动红外接收 </source> [[File:Microduino_IRrecv_1.png||300px|center|thumb]] *主要功能包括学习红外编码和发射红外编码,学习的红外编码保存到EEPROM中,地址范围为1~9。可以通过读取EEPROM中地址1~9的数据得到相关的红外编码,然后发射红外信号。 <source lang="cpp"> Serial.println("Please enter the num: 1.learn IR code 2.Send IR code"); while(!Serial.available()); num = Serial.read(); if(num == '1') //学习红外编码 { Serial.println("please enter the learn num: 1~9"); while(!Serial.available()); num = Serial.read()-48; if(num>=1&&num<=9) { Serial.println("please send the IR;"); while(!irrecv.decode(&results)); //识别红外编码 EEPROM_write(num,results.value); //将红外编码写入到EEPROM中 Serial.print("input IR code:"); Serial.println(results.value, HEX); Serial.println("IR learning Done"); irrecv.resume(); // Receive the next value } else { Serial.println("invalid num"); } } if(num == '2') { Serial.println("please enter the send num: 1~9"); while(!Serial.available()); num = Serial.read()-48; if(num>=1&&num<=9) { EEPROM_read(0,readValue); //从EEPROM中读取数据 irsend.sendSony(readValue, 32); //发射红外信号 Serial.print("output IR code:"); Serial.println(readValue, HEX); Serial.println("IR sending Done"); } else { Serial.println("invalid num"); } } </source> *注意:如果感觉红外发射器遥控距离太短,可以通过减小红外发射器上的限流电阻来增加发射距离。 ==程序== [[https://github.com/Microduino/Microduino_Tutorials/tree/master/MCookie_Tutorial/MicroduinoIrRemoteLearning MicroduinoIrRemoteLearning]] ==结果== 可以接受和保存红外遥控器发射的红外编码,并发射出相同的红外信号。 ==视频== |}
该页面使用的模板:
模板:Language
(
查看源代码
)
模板:Nmbox
(
查看源代码
)
返回至
红外学习遥控
。
导航菜单
个人工具
创建账户
登录
名字空间
页面
讨论
变种
视图
阅读
查看源代码
查看历史
更多
搜索
Welcome
首页
创客大赛
大赛详情
3D打印
安装月球车
图形化编程
操控月球车
升级月球车
编程工具下载
软件下载
Arduino
Processing
Mixly
Scratch
模块套件
Microduino 102
mCookie 102
mCookie 202
mCookie 302
IBC
其他
应用套件
四轴飞行器
平衡车
小车CUBE
音乐播放器
刷卡音乐播放器
wifi气象站
彩虹音乐触摸灯
分贝检测仪
迎门汇报
LED点阵时钟
LED点阵屏幕
硬件
mCookie
Sensor
Microduino
MicroWrt
MicroNux
MicroRobot-Core
MicroRobot-CoreESP
ideaBoard
ideaBox
MicroMV
MicroAI
帮助
常见问题
帮助
工具
链入页面
相关更改
特殊页面
页面信息