求助用Arduino控制乐高
本帖最后由 simatic_net 于 2012-11-28 20:59 编辑首先介绍一下乐高的PF组件:
它由电池盒、红外遥控器、红外接收器、电机构成。
我要利用Arduino加红外二极管,代替乐高红外遥控器。
好消息是乐高的红外协议是公开的,下面可下载:
可坏消息是IRemote并不支持乐高的协议,所以我只好自己编写红外发射程序。
于是我研究了乐高的协议,编写如下程序: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);
}可惜上面的程序不能工作!我也不知道原因。请帮忙debug!
我在Arduino的第5脚上接了个红外发射管,程序内容是不停发射让电机正转的编码。可惜电机不转,红外接收器也没反应。
它除了具有接收红外信号的功能,同时它也是两路电机PWM驱动板。只要接通9V电源(由乐高电池盒提供)就可以工作。
接下来回答一些朋友们的疑问:
1、为什么要替代乐高原有的红外遥控?
因为原有遥控器只能通过用手扳动操纵杆来控制电机。而如果使用arduino控制,由于arduino本身可编程,可提高作品的自动化程度。
2、为什么不使用乐高自有的NXT控制器?
因为带有乐高NXT的套装最少也要两千元。而且最多只能接4个传感器和3个伺服电机输出。扩展接口数量太少了。而乐高的PF系统可以实现8轴可调速开环控制。Arduino的传感器数量也更丰富,NXT自带传感器只有按钮、超声波、颜色、声音,而利用Arduino可以方便的实现语音控制、温度控制等。
3、为什么不直接使用非乐高的电机?
乐高是非常好的机械平台,通过丰富的零件配合,可以实现很多机械功能。乐高电机可以完美的与只配合,使用非乐高电机很难与乐高积木安装匹配。
本帖最后由 simatic_net 于 2012-12-19 16:45 编辑
到目前为止我一共试验了三个库都不好用。
这三个库在arduino-1.0.3环境下编译都无法通过。
第一个库在arduino-0023环境下可以编译通过,但是运行无效果。
第三个库我没弄明白是干什么用的。
第三个库在arduino-0023环境下打不开例子程序。 simatic_net 发表于 2012-11-28 21:00 static/image/common/back.gif
自己顶一下,先留个位置。欢迎讨论。
嗯,整这个还是划算不少。刚搜到个lego powerfunction 的library,http://arduino.cc/forum/index.php/topic,7900.0.html
你试试
不过IR发射范围太小了,IR+xbee还是很给力的
benjaminxuu 发表于 2012-11-28 21:26 static/image/common/back.gif
嗯,整这个还是划算不少。刚搜到个lego powerfunction 的library,http://arduino.cc/forum/index.php/to ...
多谢。还是您厉害可以搜索到这么好的资源。 benjaminxuu 发表于 2012-11-28 21:26 static/image/common/back.gif
嗯,整这个还是划算不少。刚搜到个lego powerfunction 的library,http://arduino.cc/forum/index.php/to ...
无法下载呀!郁闷中。 我以前有时间玩lego的时候写过这个的库。。容我好好找找在哪台机器上。。 simatic_net 发表于 2012-11-28 21:51 static/image/common/back.gif
无法下载呀!郁闷中。
试试这个行不 用arduino控制lego是很好的路子,楼主能不能多介绍一下你图片上的lego系列? 贵价系列;P;P;P;P;P estar 发表于 2012-11-29 14:49 static/image/common/back.gif
用arduino控制lego是很好的路子,楼主能不能多介绍一下你图片上的lego系列?
乐高科技系列2010年的旗舰,8043。 wow!!!高中之后就没再玩儿过lego。。。只折腾过rcx和nxt早期的飘过~ benjaminxuu 发表于 2012-11-29 09:53 static/image/common/back.gif
试试这个行不
这个库在1.0以后的版本无法编译。0023下可以编译通过,但是运行例子程序无反应。我确信引脚我已经根据实际情况修改成实际连接红外二极管的引脚。我只有一只红外二极管,不知道是不是坏了,下一步,多弄几个红外二极管试试。 benjaminxuu 发表于 2012-11-29 09:53 static/image/common/back.gif
试试这个行不
编译可以通过,不过没有效果。我再研究一下。
页:
[1]