|
前一段时间写了《中文乐高版MagicWand(摇摇棒)使用教程(NXC篇》,怕是很多没有C语言基础的朋友看着有点头晕,一直想写个NXTG的教程,可是处理一点离职的事耽误了,和那些购买了摇摇棒的朋友说声对不起了。
NXTG这个东西,是个好东西,但是也是个很恶心的东西。好在它简单,什么东西都帮做好了,和个积木一样,搭上就行,没有编程基础的人都能上手;但是恶心也恶心在它简单上,很多东西都有没有,比如说本教程用到的数组Block,还得用第三方的。本来用C很容易实现的东西,用NXTG还破费点周折。
前面说了,要使用NXT-G编程的话,需要2个第三方的block,Array Element和PCF8574-Nx,想要编程前需要先把这两个block导入到NXT-G内。除此外还需要一个叫Modify_User_Settings的VI,只有安装了这个vi,才可以定义数组类型的变量。Modify_User_Settings文件放到X:\Program Files\LEGO Software\LEGO MINDSTORMS NXT\engine\project目录下,其中x为你安装NXTG的盘符。放好后,重新启动NXTG,然后在tools中启动Modify_User_Settings,如图一:
然后选中Enabled,点ok,如图二:
这个时候,在Edit-->Define Variables中可定义数组变量了,点Create,创建4个名字分别为L,E,G,O的Integer Array类型的数组。如图三:
然后要做的是给数组初始化,在程序面板上,调出一个变量block,然后选择L,并且在Action一栏选择为Write
如图四:
接着给数组赋初值,其实就是摇摇棒显字的字模,在刚才给变量定义的地方的右边,有个Value的地方,这个就是给数组赋值的地方,一个空是数组的位置(Index),第二个空为位置对应的值,需要注意的是,数组的从0开始的!另外值不能是十六进制数,为十进制数!
然后,我在L数组变量的值依次赋值为:0,254,254,254,254,254,254,254,254,255 。一共9个数。他们分别代表全亮,只亮最下一个LED和全灭。 补充一下数值的定义方法,摇摇棒一共是8个LED,共一字节,LED8为高位,LED1为低位。0为LED亮,1为LED灭。
L | LED1 | LED2 | LED3 | LED4 | LED5 | LED6 | LED7 | LED8 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 254 | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 254 | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 254 | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 254 | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 254 | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 254 | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 254 | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 254 | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 255 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 |
点击开始-->所有程序->附件-->计算器,选择查看-->科学型,选择2进制,一次输入上表中的0和1,如第一行为8个0,然后选择十进制,计算器就帮你完成了一次2进制数转十进制数的过程,所以结果为0,同理,第二行输入二进制11111110,转十进制得254;最后一行为二进制8个1,转换为十进制为255。
下面开始需要构建主程序了,先调出一个死循环,然后再嵌套一个循环,内层循环选择计数,循环次数对应数组的长度,因为L数组的长度为9,所以我这里填9,然后勾选Counter,如图五:
接着给内嵌循环里面分别放入一个变量,选择为L,Action栏选择为Read。再调入一个Array Element block和PCF8547-Nx block。PCF8547-Nx block配置I2C Address填写为0x40,Mode选择为Write
如图六:
连接方法如图七:
现在你可以下载运行,看下效果了。
附上编程说需的block和程文件,还有我写好的一个示范程序。
最后特别感谢daizg前辈为我提供数组block,没有它,这个程序会相当啰嗦。
ps:运行本示范程序,以上步骤必须全部完成,需要安装的模块一个都不能少,另外,固件版本需要在1.05以上!
|
|