极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 77600|回复: 26

Arduino红外遥控系列教程2013——红外转码扩展应用1

[复制链接]
发表于 2013-2-21 09:59:23 | 显示全部楼层 |阅读模式
本帖最后由 幻生幻灭 于 2013-2-21 09:40 编辑

教程四:红外转码扩展应用1——用电视遥控器控制电脑,实现无线键盘


前言
有时候,在家里看电影,用电脑通过视频线连接电视会很爽,如果再能用电视遥控器同时控制电脑就更方便啦。我们在前两篇系列教程基础之上,来一个红外转码扩展应用,采用了Arduino Leonardo作为主控。用电视遥控器控制电脑,实现无线键盘。先上视频


视频链接: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——发射与接收[链接]


第三步 下载程序
[pre lang="arduino" line="1" file="Step4_IR_Record_Key.ino"]//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[0]){
      for(int i=0;i<256;i++){
        if( results.value== ir_code_r){
          index = i;
          break;
        }
      }
    }


    //block 3 mapping
    mapto = mapping[index];
   // Serial.println(key_define[mapto],HEX);
    //block 3 end

    //Send the message
    Keyboard.write(key_define[mapto]);

    irrecv.resume(); // Receive the next value
  }
}
[/code]

这里在贴一张键盘编码子程序的截图


第四步 体验遥控乐趣^_^


思路扩展
红外通讯的应用非常广泛,而且相对蓝牙和Wifi成本低了很多,我们还可以用Arduino做成红外手柄去玩电脑游戏。如果手头有两三块Arduino的话,可以多做几个手柄,回味下小时候玩土星游戏机的感觉。当然越复杂的应用程序也需要完善,例如增加抗干扰处理。最后希望看到大家分享自己的红外遥控器。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复

使用道具 举报

发表于 2013-2-21 12:22:03 | 显示全部楼层
写教程是需要时间和精力的,赞一个!
回复 支持 反对

使用道具 举报

发表于 2013-2-21 17:25:26 | 显示全部楼层
不好意思,没看懂,怎样通过“Keyboard.write(key_define[mapto]);”这么一句就控制电脑了呢?

我每天都把电脑接电视上看电影,确实需要这么一个东西呢。。。。
回复 支持 反对

使用道具 举报

发表于 2013-2-21 19:35:13 | 显示全部楼层
顶一个,因为编辑帖子真的是很辛苦 啊
回复 支持 反对

使用道具 举报

发表于 2013-2-21 20:47:44 | 显示全部楼层
好勤奋啊,几天就出了一个完整的系列文章。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-2-22 09:31:41 | 显示全部楼层
tom 发表于 2013-2-21 20:47
好勤奋啊,几天就出了一个完整的系列文章。

其实年前就开始弄啦,只不过整理了以后一起发的。
之前还拜读过你的红外系列帖子,呵呵。也学习了很多
回复 支持 反对

使用道具 举报

发表于 2013-2-22 22:37:21 | 显示全部楼层
这个正是我目前需要的
回复 支持 反对

使用道具 举报

发表于 2013-2-25 11:16:03 | 显示全部楼层
真不错,这些日子也在看红外线,谢谢楼主。

只可惜现在很多手机都把红外线功能去掉了,不知道怎么给手机加红外线,如果能行的话那就有趣多了。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-2-25 13:24:31 | 显示全部楼层
大连好人 发表于 2013-2-21 17:25
不好意思,没看懂,怎样通过“Keyboard.write(key_define[mapto]);”这么一句就控制电脑了呢?

我每天都 ...

这里我只贴了主程序,Keyboard.write()实现发送按键事件,而key_define[mapto]是子程序中的一个数组,里面有按键编码。mapto是映射数组的地址。 详见附件程序
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-2-25 14:17:36 | 显示全部楼层
mjgzdnw 发表于 2013-2-25 11:16
真不错,这些日子也在看红外线,谢谢楼主。

只可惜现在很多手机都把红外线功能去掉了,不知道怎么给手机 ...

没办法哦,不过有用音频口转红外的
回复 支持 反对

使用道具 举报

发表于 2013-6-15 21:19:35 | 显示全部楼层
请问这是什么型号的发射管。电压范围在?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-6-15 21:38:14 | 显示全部楼层
Pizzro 发表于 2013-6-15 21:19
请问这是什么型号的发射管。电压范围在?


5MM 940nm红外发射管 (0.9~1.3V)
回复 支持 反对

使用道具 举报

发表于 2013-6-18 21:33:57 | 显示全部楼层
本教程使用了官方推荐的USBtinyISP,只需在Arduino IDE的Tools中选择USBtinyISP下载器,在Board中选择Arduino Leonardo,连接好下载线,点击Burn Bootloader烧录即可。

为什么要选择USBtinyISP
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-6-19 09:00:07 | 显示全部楼层
疯子。 发表于 2013-6-18 21:33
本教程使用了官方推荐的USBtinyISP,只需在Arduino IDE的Tools中选择USBtinyISP下载器,在Board中选择Ardui ...

下载器手头有啥就用啥了,而且也挺好用的为啥不选呢?
回复 支持 反对

使用道具 举报

发表于 2013-6-20 22:40:49 | 显示全部楼层
IR_Send.h为嘛是空的捏
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则 需要先绑定手机号

Archiver|联系我们|极客工坊

GMT+8, 2024-3-28 21:59 , Processed in 0.059834 second(s), 27 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表