Arduino红外遥控系列教程2013——红外转码扩展应用1
本帖最后由 幻生幻灭 于 2013-2-21 09:40 编辑教程四:红外转码扩展应用1——用电视遥控器控制电脑,实现无线键盘
前言
有时候,在家里看电影,用电脑通过视频线连接电视会很爽,如果再能用电视遥控器同时控制电脑就更方便啦。我们在前两篇系列教程基础之上,来一个红外转码扩展应用,采用了Arduino Leonardo作为主控。用电视遥控器控制电脑,实现无线键盘。先上视频
http://v.youku.com/v_show/id_XNTE2NjY3MDQw.html
视频链接:http://v.youku.com/v_show/id_XNTE2NjY3MDQw.html
在开始之前,请先确认你已经熟悉了本系列的前两篇教程。因为外围电路是一样的,且程序也几乎没有变化。因此重复的部分这里就不过多的描述了。
Arduino红外遥控系列教程2013——发射与接收[链接]
Arduino红外遥控系列教程2013——红外转码[链接]
第一步 更新Leonardo的Bootloader
之前版本的Bootloader会有串口通信BUG,更新官方最新版本后,问题解决。
本教程使用了官方推荐的USBtinyISP,只需在Arduino IDE的Tools中选择USBtinyISP下载器,在Board中选择Arduino Leonardo,连接好下载线,点击Burn Bootloader烧录即可。
第二步 连接硬件
硬件电路请跳转 Arduino红外遥控系列教程2013——发射与接收[链接]
第三步 下载程序
//IR remote for PC
//http://weibo.com/leolite
//By Leo 2013.02.19
#include <IRremote.h>
// #include <EEPROM.h>
#include "IR_Receive.h"
#include "IR_Send.h"
#include "IR_Value.h"
#include "Keyboard.h"
#include "Mapping.h"
int RECV_PIN = 11;
IRrecv irrecv(RECV_PIN);
decode_results results;
unsigned long date;
int addr = 0; //for EEPROM
int index = 0; //for array
int mapto = 0; //for mapping
void setup()
{
Serial.begin(9600);
// make pin 2 an input and turn on the
// pullup resistor so it goes high unless
// connected to ground:
pinMode(2, INPUT_PULLUP);
Keyboard.begin();
irrecv.enableIRIn(); // Start the receiver
}
void loop() {
if (irrecv.decode(&results)) {
//Block 1 start
//search from IR_Reveive.h and return index
if(results.value != ir_code_r){
for(int i=0;i<256;i++){
if( results.value== ir_code_r){
index = i;
break;
}
}
}
//block 3 mapping
mapto = mapping;
// Serial.println(key_define,HEX);
//block 3 end
//Send the message
Keyboard.write(key_define);
irrecv.resume(); // Receive the next value
}
}
这里在贴一张键盘编码子程序的截图
第四步 体验遥控乐趣^_^
思路扩展
红外通讯的应用非常广泛,而且相对蓝牙和Wifi成本低了很多,我们还可以用Arduino做成红外手柄去玩电脑游戏。如果手头有两三块Arduino的话,可以多做几个手柄,回味下小时候玩土星游戏机的感觉。当然越复杂的应用程序也需要完善,例如增加抗干扰处理。最后希望看到大家分享自己的红外遥控器。
写教程是需要时间和精力的,赞一个! 不好意思,没看懂,怎样通过“Keyboard.write(key_define);”这么一句就控制电脑了呢?
我每天都把电脑接电视上看电影,确实需要这么一个东西呢。。。。 顶一个,因为编辑帖子真的是很辛苦 啊 好勤奋啊,几天就出了一个完整的系列文章。 tom 发表于 2013-2-21 20:47 static/image/common/back.gif
好勤奋啊,几天就出了一个完整的系列文章。
其实年前就开始弄啦,只不过整理了以后一起发的。
之前还拜读过你的红外系列帖子,呵呵。也学习了很多 这个正是我目前需要的 真不错,这些日子也在看红外线,谢谢楼主。
只可惜现在很多手机都把红外线功能去掉了,不知道怎么给手机加红外线,如果能行的话那就有趣多了。 大连好人 发表于 2013-2-21 17:25 static/image/common/back.gif
不好意思,没看懂,怎样通过“Keyboard.write(key_define);”这么一句就控制电脑了呢?
我每天都 ...
这里我只贴了主程序,Keyboard.write()实现发送按键事件,而key_define是子程序中的一个数组,里面有按键编码。mapto是映射数组的地址。 详见附件程序 mjgzdnw 发表于 2013-2-25 11:16 static/image/common/back.gif
真不错,这些日子也在看红外线,谢谢楼主。
只可惜现在很多手机都把红外线功能去掉了,不知道怎么给手机 ...
没办法哦,不过有用音频口转红外的 请问这是什么型号的发射管。电压范围在? Pizzro 发表于 2013-6-15 21:19 static/image/common/back.gif
请问这是什么型号的发射管。电压范围在?
5MM 940nm红外发射管 (0.9~1.3V) 本教程使用了官方推荐的USBtinyISP,只需在Arduino IDE的Tools中选择USBtinyISP下载器,在Board中选择Arduino Leonardo,连接好下载线,点击Burn Bootloader烧录即可。
为什么要选择USBtinyISP 疯子。 发表于 2013-6-18 21:33 static/image/common/back.gif
本教程使用了官方推荐的USBtinyISP,只需在Arduino IDE的Tools中选择USBtinyISP下载器,在Board中选择Ardui ...
下载器手头有啥就用啥了,而且也挺好用的为啥不选呢? IR_Send.h为嘛是空的捏
页:
[1]
2