出手NXT2.0 8547

家里有一套lego NXT 9797,做好萝卜头以后,有时候想做点东西玩,总是不舍得把它拆了,但是再买一套又觉得有点贵。圈圈妈是属于豪放派的,严重鄙视我这种葛朗台的行径。上周末借口圈圈百天,给我买了一套NXT2.0。嘿嘿,说明书上分明写着“10岁以上适用”。好吧,十年后我一定把这套玩具还给圈圈:)

NXT 2.0

NXT 2.0

和原来的9797大体对比了一下,传感器方面少了亮度传感器(light sensor)和声音传感器(sound sensor),但是多了一个按钮(奸商们管这个叫触觉传感器touch sensor)和一个颜色传感器(color sensor)。另外9797有一个锂电,8547没有。

颗粒方面,8547没有那个大齿轮盘(48452cx1),所以想用8547做魔方机器人的朋友,只能改变设计结构或者单独买这个齿轮了。
48452cx

其实我最关注的还是那个颜色传感器,毕竟当年萝卜头就是在判断颜色的时候吃尽苦头,我很想看看新传感器效果如何。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)的照片:

lego的颜色传感器,可以当彩灯了

lego的颜色传感器,可以当彩灯了

摸黑读了一圈颜色,下面是一组数据,看上去效果很不错。
蓝:118,125,213
绿:102,196,148
红:280, 80, 79
橙:296,134,101
黄:300,237,107
白:323,318,324

试验完毕,在此感谢下假公济私的圈圈妈 :)



对 “出手NXT2.0 8547” 的 25 条 评论

  1. juqkai 说:

    恭喜恭喜

  2. alai 说:

    特来道贺~

  3. carlton 说:

    看来要是搞了个魔方机器人,估计由此引起的在这方面的花费将远远超标~!

  4. SEVEN 说:

    有个疼你的好媳妇,哈哈。

  5. z 说:

    这个要登记造册,好好保管,不然到时圈圈造出个缺胳膊少腿的机器人来。。。
    另外最近想开始搞点东西,用 Arduino 的话有什么必备、建议购买的呢?求张单子,越细越好,现在是什么都还没有呢

    • Arduino的控制板肯定是需要的
      还需要一些扩展板,例如控制电机的话,就需要相应的驱动板
      如果想要远程控制的话,就要蓝牙扩展板
      就看你想做什么功能了

  6. 忧郁飞花 说:

    我觉得这套给的零件没有教育版的好~~~
    话说我同学一次性购买了一套9797和一套9648。。。让我甚是汗颜啊。。

    • 同感,9797的颗粒多很多
      非常喜欢那个装散件的盒子,另外还有锂电池
      现在淘宝一般买9797还送充电器和软件光盘
      这样就方便多了:)

  7. becky 说:

    我一直在等待NXT的下一代……

  8. 小乐 说:

    你老婆真好哪~~~~羡慕S了~

  9. 风雪冲 说:

    老大 打扰了,又得麻烦你了!
    如果我用HiTech公司的颜色传感器,lejos用0.6版的话,代码部分是不是可以直接使用? 着急啊!!!

  10. wx2000 说:

    请教一下 8547 含电池和充电器吗,最近打算入手一个。谢谢!

发表评论

可以使用下列 XHTML 标签:<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>