求Arduino红外控制乐高-Arduino中文社区 - Powered by Discuz!

Arduino中文社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 7813|回复: 2

求Arduino红外控制乐高

[复制链接]
发表于 2012-11-28 16:16 | 显示全部楼层 |阅读模式
本帖最后由 simatic_net 于 2012-11-28 16:16 编辑

乐高科技系列是非常好的机械平台。
乐高也有自己的电气配套系统。
但是我想用arduino红外控制乐高。
首先我来介绍一下乐高的PF组件。

乐高PF套件

乐高PF套件


它由电池盒、红外接收器、电机、和红外发射器组成。
我的目的就是利用arduino接红外二极管,代替红外遥控发射器。
lego红外遥控.jpg
因为这个红外发射器不能编程,只能通过操纵杆来发出指令。如果可以代替成功,我们就可以通过在arduino上编程,将乐高做的更加智能。
乐高采用自己的红外线编码体系。好在这是公开的,大家可以在此下载详细的技术规范:
乐高红外规范LEGO_Power_Functions_RC_v110.pdf (312.07 KB, 下载次数: 82)
从这个红外规范中你可以看出,和普通电视遥控器的编码区别比较大,所以根本无法使用IRremote库,我只能自己编写红外发射代码。
红外规范.jpg
经过研究乐高提供的这个红外编码规范,并且参考了坛子中的帖子:
http://www.arduino.cn/forum.php?mod=viewthread&tid=1394
我编写了如下程序:可惜无效。请大家帮忙看看,有什么不妥?
int IR = 5;   
void setup()
{
pinMode(IR, OUTPUT);
}
void loop()
{
  IR_SS();
  
  IR_S0();
  IR_S0();
  IR_S0();
  IR_S0();
  
  IR_S0();
  IR_S0();
  IR_S0();
  IR_S1();
  
  IR_S0();
  IR_S1();
  IR_S0();
  IR_S1();
  
  IR_S1();
  IR_S0();
  IR_S1();
  IR_S1();
  
  IR_SS();
  
  delay(200);
  
  IR_SS();
  
  IR_S1();
  IR_S0();
  IR_S0();
  IR_S0();
  
  IR_S0();
  IR_S0();
  IR_S0();
  IR_S1();
  
  IR_S0();
  IR_S1();
  IR_S0();
  IR_S1();
  
  IR_S0();
  IR_S0();
  IR_S1();
  IR_S1();
  
  IR_SS();
  
  delay(200);
  
}
void IR_Send38KHZ(int x,int y) //产生38KHZ红外脉冲
{
for(int i=0;i<x;i++)//15=386US
{
           if(y==1)
           {
     digitalWrite(IR,1);
            delayMicroseconds(9);
     digitalWrite(IR,0);
            delayMicroseconds(9);
           }
           else
           {
     digitalWrite(IR,0);
            delayMicroseconds(20);
           }            
}
}
void IR_SS() //开始与停止
{
  IR_Send38KHZ(6,1);
  IR_Send38KHZ(39,0);
}
void IR_S0() //发射0
{
  IR_Send38KHZ(6,1);
  IR_Send38KHZ(10,0);
}
void IR_S1() //发射1
{
  IR_Send38KHZ(6,1);
  IR_Send38KHZ(21,0);
}
我利用arduino在第5引脚接了个红外发射管。对准乐高红外接收器:
lego红外接收.jpg
我这个程序比较简单,发射的编码含义就是让电机正转,并且不停的发射。可惜接收器没有任何反应,电机也不转。
求帮助!!!!!!!!!!
另外我回答一下大家的疑问:
1、为什么要做这个。
原来的遥控器只能通过拨动操纵杆来控制乐高小车或者机器人等。
8043-1.jpg
如果用arduino代替,由于其可编程的特性,可将作品做成智能车等,同事也可以添加更多传感器,比如可以实现语音控制等。
2、乐高有自己的可编程控制器,并且非常好,你为什么不用。
是呀,乐高的NXT非常好。但是最多只能连接4个传感器、3个伺服电机,限制了作品的规模和复杂性。

如果您有其他问题,也可以回帖提出,欢迎交流!
 楼主| 发表于 2012-11-28 16:17 | 显示全部楼层
本帖最后由 simatic_net 于 2012-11-28 22:08 编辑

经过高人指点,找到了一个库,可惜我无法下载。哪位帮忙下载一下?http://arduino.cc/forum/index.php/topic,7900.0.html
发表于 2012-11-28 17:38 | 显示全部楼层
= =  你可以把乐高遥控器发射的指令用接收器接收,然后记录下编码。还有。。。乐高的东西完全没有必要用红外。。买个NXT蓝牙通讯就什么都解决了
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|Archiver|手机版|Arduino中文社区

GMT+8, 2024-12-27 23:30 , Processed in 0.097163 second(s), 19 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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