出手NXT2.0 8547
由 动力老男孩 发表于 2010/09/24 20:57:29家里有一套lego NXT 9797,做好萝卜头以后,有时候想做点东西玩,总是不舍得把它拆了,但是再买一套又觉得有点贵。圈圈妈是属于豪放派的,严重鄙视我这种葛朗台的行径。上周末借口圈圈百天,给我买了一套NXT2.0。嘿嘿,说明书上分明写着“10岁以上适用”。好吧,十年后我一定把这套玩具还给圈圈:)
和原来的9797大体对比了一下,传感器方面少了亮度传感器(light sensor)和声音传感器(sound sensor),但是多了一个按钮(奸商们管这个叫触觉传感器touch sensor)和一个颜色传感器(color sensor)。另外9797有一个锂电,8547没有。
颗粒方面,8547没有那个大齿轮盘(48452cx1),所以想用8547做魔方机器人的朋友,只能改变设计结构或者单独买这个齿轮了。
其实我最关注的还是那个颜色传感器,毕竟当年萝卜头就是在判断颜色的时候吃尽苦头,我很想看看新传感器效果如何。8547带的颜色传感器是乐高公司自己生产的,而我之前用的那个是HiTech公司生产的,看下面这个图,其中三角眼的是乐高公司产品,斗鸡眼的是HiTech公司的产品:
因为这个传感器是新产品,所以我原来的代码不能直接使用(lejos 0.6版本)。从lejos的官网上看到NXJ 0.85版本支持NXT2.0的颜色传感器,迅速找了根牙签,把固件刷新到0.85。关于这根神奇的牙签如何使用,请猛击这里并搜索“牙签”关键字。
需要注意的是,在0.85的API里,有ColorSensor和ColorLightSensor两种传感器,其中ColorSensor对应HiTech公司的那个,ColorLightSensor对应的乐高公司的。从API文档看了下,重点有下面几个函数:
构造函数:ColorLightSensor(SensorPort port, int type)
其中port是类似SensorPort.S1的端口号,type是一组Enum的值,设置的type可以在setType函数中修改。
获取颜色:int[] getColor()
返回的数组长度为4,分别是R,G,B和Null,其中RGB好理解,分别对应红黄蓝的颜色分量,最后一个分量暂时扔一边不管
设置照明:void setFloodlight(boolean floodlight)
这个函数用来开关传感器的灯光,和之前亮度传感器的类似。这个函数还有另外一个重载,参数是颜色值,我编译没有通过所以没有测试。
设置模式:void setType(int type)
这里的type和构造函数里的type是一样的,有下面几种值:
ColorLightSensor.TYPE_COLORFULL //读取全部颜色 ColorLightSensor.TYPE_COLORRED //只读红色 ColorLightSensor.TYPE_COLORGREEN //只读绿色 ColorLightSensor.TYPE_COLORBLUE //只读蓝色 ColorLightSensor.TYPE_COLORNONE //不知道是啥,可能是不开背景灯的意思吧
让我非常恼火的是,这个版本的API默认是有问题的,读出来的颜色值都是0。根据忧郁飞花同学的提示,我在Lejos的论坛上找到了答案,有兴趣深入了解的同学请看原帖。
按帖子中的方法修正了bug,传感器终于亮了而且可以读数了,效果非常好!因为有照明的缘故,在伸手不见戒指的晚上也读数。
看看很炫的效果图,分别是不同的type模式下setFloodlight(true)的照片:
摸黑读了一圈颜色,下面是一组数据,看上去效果很不错。
蓝:118,125,213
绿:102,196,148
红:280, 80, 79
橙:296,134,101
黄:300,237,107
白:323,318,324
试验完毕,在此感谢下假公济私的圈圈妈
恭喜恭喜
特来道贺~
看来要是搞了个魔方机器人,估计由此引起的在这方面的花费将远远超标~!
有个疼你的好媳妇,哈哈。
这个要登记造册,好好保管,不然到时圈圈造出个缺胳膊少腿的机器人来。。。
另外最近想开始搞点东西,用 Arduino 的话有什么必备、建议购买的呢?求张单子,越细越好,现在是什么都还没有呢
Arduino的控制板肯定是需要的
还需要一些扩展板,例如控制电机的话,就需要相应的驱动板
如果想要远程控制的话,就要蓝牙扩展板
就看你想做什么功能了
我觉得这套给的零件没有教育版的好~~~
话说我同学一次性购买了一套9797和一套9648。。。让我甚是汗颜啊。。
同感,9797的颗粒多很多
非常喜欢那个装散件的盒子,另外还有锂电池
现在淘宝一般买9797还送充电器和软件光盘
这样就方便多了:)
我一直在等待NXT的下一代……
第一代貌似是98年出现的,NXT是2006年
希望下一代别等到2014年:)
你老婆真好哪~~~~羡慕S了~
老大 打扰了,又得麻烦你了!
如果我用HiTech公司的颜色传感器,lejos用0.6版的话,代码部分是不是可以直接使用? 着急啊!!!
没错,如果是这两个版本的话,就跟我当时一样了
老大
鉴于找不到重启键,索性不用lejos0.6了,现在我已经把机子刷成lejos0.85版,因为lejos0.85也识别color senor不一定非得用colorlightsennor
只不过得改下您的代码部分
加了import lejos.nxt.addon.ColorSensor
改了color.getRedComponent(),
编译成功了!
打算买一个hitech公司的颜色传感器,
这样思路就和您的重合了,是吧???
对了,老大,告诉我hitech公司的颜色传感器型号啊
木有型号啊,直接搜hitech color sensor就找到了,但是不知道这么多年了还有没有
hitech公司的颜色传感器国内好像没有吧,国外的还得十天半月的,时间有限啊,老大,不知您知不知道那个网店有卖的?
http://s.taobao.com/search?q=%D1%D5%C9%AB%B4%AB%B8%D0%C6%F7+%C0%D6%B8%DF&initiative_id=staobaoz_20120521
看其中有两个灯的那种:
http://item.taobao.com/item.htm?id=15545420446&_u=luj0meb5a8
需要注意的是,hiTech公司的传感器不带光源的,所以你最好弄个台灯啥的,从侧面照着。原则是让魔方表面照明良好,没有阴影。不然的话读颜色会有错误。
现在的问题在于主机背面好像没有重启键啊!致命!
找不到您说的重启键。。。以前把机子刷成0.85版的,但不会用那个三角眼传感器,所以出此下策
0.85安装完毕的时候,有刷机提示。而0.6版的lejos不用安装也没有刷机提示啊
哭死我了。。。
终于会用颜色传感器读数了。。。在试验了无数次代码之后,改换api,终于成功编译,并读出数来了:r=83,g=71,b=58,n=1
哭死我了。。。
恭喜恭喜,这才有成就感啊
请教一下 8547 含电池和充电器吗,最近打算入手一个。谢谢!
好像没有电池和充电器