中文乐高

 找回密码
 马上注册

QQ登录

只需一步,快速开始

查看: 18373|回复: 33

NXTG编程扫盲教程——运动模块

    [复制链接]
发表于 2010-8-1 15:20:58 | 显示全部楼层 |阅读模式
    写教程前先发下牢骚,首先不满LEGO把NXTG设计得这么傻瓜,让初学者即容易入门,又容易学得似懂非懂;接着鄙视一下我们伟大的机器人代理商SEMIA,把NXT卖得死贵死贵,让LEGO机器人在中国不能普及,并且把教程写得含糊不清,连最基本的程序是什么,程序结构这么弄都不说一下;最后,我求求各位初学者甚至是老师你们能自己先思考一下么,别大小程序都问下我,让我帮写,谢谢了!

     今天讲的是运动模块,好多朋友都问在用NXT-G编程的时候,明明是给马达块设置了无限制方式了,编译下载后,马达只是运行一下就停止了呢?
      先给大家介绍一下NXTG中块的工作方式,大多数块只是做了一个初始化的工作,只是做了点定义变量(参量)和定义模块相关IO的工作。定义完,块就相当于结束了,如果在运行块时没有变量什么的操作,这个部分就结束了。说得好像有点不清除,那我还是举例解释吧。

更具上面的说法,马达模块也是定义IO的操作和定义变量。定义IO的操作为使能AVR单片机的PWM管脚,根据功率(速度)百分比设置PWM占空比。定义变量的操作为为一个等待(循环)设定条件。对于NXTG块中的无限制而言,就只是做了IO定义的操作,没有变量定义的操作。
相当于NXC中

  1. task main()
  2. {
  3.     OnFwd(OUT_A,100);
  4.     while(0);
  5. }
复制代码


原型应该是有个不循环的,结果调不出

而设置了时间的模块相当于


  1. task main()
  2. {
  3.   unsigned long startTick=CurrentTick();
  4.   unsigned long T=3000;
  5.   do
  6.   {
  7.       OnFwd(OUT_A,100);
  8.       startTick=CurrentTick();
  9.   }while(CurrentTick() - startTick < T);
  10. }
复制代码


原型为

设置角度的模块相当于


  1. task main()
  2. {
  3.   int tacho;
  4.   int D=500;
  5.   tacho=MotorTachoCount(OUT_A);
  6.   do
  7.   {
  8.        OnFwd(OUT_A,100);
  9.   }while(MotorTachoCount(OUT_A) != tacho + D);
  10. }
复制代码


原型为

看完上面的东西后应该可以知道第一个程序之所以会转一下就停,是因为后面没有循环条件,如果想实现真正的无限转的话,必须加上个等待或者循环,以保证任务没有运行到结束。
NXC程序为

  1. task main()
  2. {
  3.     OnFwd(OUT_A,100);
  4.     while(1)
  5.     {
  6.     }
  7. }
复制代码


如果看完我写的东西还不明白的可以试着把上面的程序都做一遍,自己体会一下。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?马上注册

x
如果您觉得我的帖子对您有用,请不吝给我一个“赞”!
发表于 2010-8-1 16:56:49 | 显示全部楼层
我就是遇到这样的问题。。非常感谢LZ
如果您觉得我的帖子对您有用,请不吝给我一个“赞”!
发表于 2010-8-1 16:57:30 | 显示全部楼层
再说一句。。。我大概看明白了。。。
如果您觉得我的帖子对您有用,请不吝给我一个“赞”!
发表于 2010-8-1 18:58:28 | 显示全部楼层
要不是我理解能力强。。我一开始学的时候也会糊涂的。。。

不过NXTG确实是个很好的软件(前提是全部模块的细节都理解的情况下)
如果您觉得我的帖子对您有用,请不吝给我一个“赞”!
发表于 2010-8-1 23:42:48 | 显示全部楼层
学习了。
如果您觉得我的帖子对您有用,请不吝给我一个“赞”!
发表于 2010-8-8 01:26:02 | 显示全部楼层
太靠性能了(学校的机子很卡)
如果您觉得我的帖子对您有用,请不吝给我一个“赞”!
发表于 2010-10-28 20:27:32 | 显示全部楼层
期待更多的扫盲贴,讲NXT-G与NXC对比
如果您觉得我的帖子对您有用,请不吝给我一个“赞”!
发表于 2010-11-25 21:55:01 | 显示全部楼层
xuexile
如果您觉得我的帖子对您有用,请不吝给我一个“赞”!
发表于 2010-11-29 11:08:49 | 显示全部楼层
学习
如果您觉得我的帖子对您有用,请不吝给我一个“赞”!
发表于 2010-12-28 15:59:23 | 显示全部楼层
初学者谢谢楼主了!看得很明白!
如果您觉得我的帖子对您有用,请不吝给我一个“赞”!
发表于 2010-12-30 16:29:50 | 显示全部楼层
不错,讲得很好。
如果您觉得我的帖子对您有用,请不吝给我一个“赞”!
发表于 2011-3-25 00:51:02 | 显示全部楼层
支持楼主,有奉献精神的朋友
如果您觉得我的帖子对您有用,请不吝给我一个“赞”!
发表于 2011-3-26 11:40:37 | 显示全部楼层
谢谢!!
如果您觉得我的帖子对您有用,请不吝给我一个“赞”!
发表于 2011-3-28 00:13:00 | 显示全部楼层
[g:02]受教了!
如果您觉得我的帖子对您有用,请不吝给我一个“赞”!
发表于 2011-7-11 22:28:21 | 显示全部楼层
学习!!!!!
如果您觉得我的帖子对您有用,请不吝给我一个“赞”!
您需要登录后才可以回帖 登录 | 马上注册

本版积分规则

QQ|中文乐高 ( 桂ICP备11003955号-1 )

GMT+8, 2019-7-17 00:52 , Processed in 0.026417 second(s), 20 queries .

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