控制马达
|
感谢网友
动力老男孩 的翻译
控制马达
Motor类介绍Motor类是对NXT马达的一个逻辑抽象。一个马达必须链接到NXT的三个输出端口上的一个才能够生效。因此,Motor类为每一个端口提供了一个已经实现好了的实例。他们分别是:Motor.A,Motor.B和Motor.C。Motor类提供了控制马达的各种方法,同时也提供了检查马达状态和参数的方法。 本指南将围绕5个例子程序展开。你可以通过试着自己书写这些例子来理解如何控制NXT的马达。这些例子都非常简单,哪怕你没有太多的Java经验,也可以成功地书写它们。在最后,还有一个关于其他马达方法的讨论,这些方法虽然没有在我们的例子程序中用到,但或许对你要做的机器人来说却是有用的。 程序1 - 基本运动控制本程序中使用了最基本的马达运动控制方法。 程序中用到的方法
请编写一段程序完成以下功能:
你可以把上述的每个函数仅用一次,来实现这些功能。 程序2 - 使用转速计NXT马达里面有一个内置的转速计在不断地跟踪马达当前转过的角度(单位为度)。本程序的目的是使用转速计来看一下马达会停得多快。 程序中用到的新方法
请编写一段程序完成以下功能:
当你完成上面程序之后,试着将stop()方法替换为flt()方法再试一次。 ( flt是float的缩写,因为float是Java保留字,无法使用,所以使用flt来定义方法名。). flt()方法将停止马达供电,但允许其随着惯性继续转动。 你会看到,即便使用stop()方法进行刹车处理,马达也不会立即停止,而是因为惯性稍微转过一点点。 程序3 - 精确旋转控制马达类有个调节进程一直在工作. 它主要有两个作用,其中之一是在特定的角度停止马达的工作. 这个程序会判断rotate()方法的准确性. 在程序中需要用到的新方法
请编写一段程序完成以下功能:
注意: 你可以使用一个子函数执行这些步骤,以避免重复的代码. 如果马达监视器正常工作的话,你会发现马达会停止在在指定角度的1度范围内。它通过计算得知马达还需要运行多远就需要刹闸。在到达指定角度前,它就需要刹闸。最后它需要对马达的位置进行微小的调整,使马达能够足够接近预设的角度. 返回顶部程序 4.中断旋转有时在马达到达指定角度前,你希望它停下来(或者做点别的事情)。如果你尽快的按下按键,那么这个程序会检测到按键被按下,然后就中断旋转任务。rotate() 方法在马达到达目标角度前是不会返回的。但这个程序中的新方法可以立刻返回。除非一个新的马达方法又开始运行,否则这个马达会保持停止在当前角度。 程序中用到的新方法
请编写一段程序完成以下功能:
注意观察: 如果你在旋转完成前按下按键,马达会停止,而不会完成旋转。否则,stop() 方法就没有效果了. 返回顶部程序 5: 调节马达速度调节进程的另一个重要功能是控制马达转速。其中一个原因是,如果想让两轮车在一条直线上行驶,必须让两个马达转速一致。(显然是这样)。标准的乐高软件通过直接让两个马达同步解决了这个问题。NXJ 使用了不同的方法:让每个马达旋转与系统时钟同步。校准器通过转速乘以使用时间来比较转数器计数(减去它的参考计数),再调整功率使这两个数目相匹配。当你需要使用任何马达方法时,调节进程将它的参考计数和使用时间置为0,并重新开始比较。 程序中用到的新方法
Stopwatch类在lejos.util包里. 请编写一段程序完成以下功能:
当速度调节开着时,马达们彼此间的误差被控制在一个小角度内。当速度调节关掉时, 旋转角度的误差会随时间变大,除非你的运气足够好,买到一系列匹配的非常好的马达。 返回顶部什么时候需要关掉速度调节呢?在一些机器人中,马达速度不应该一直不变,而是要随着传感器读数而变化,例如寻线或平衡机器人。如果速度修正频繁发生,那么使用CPU循环的校准器在调整时,通过调整马达功率以保持速度不变将没有任何优势。 什么时候需要使用速度调节呢?当你指定了一个非常慢的速度,用来维持它的功率可能不足以克服马达内耗,这是马达将不会转动。在这个情况下,rotate() 将永远不会返回. 但是如果使用了速度调节,校准器将会保持功率升高直到这个马达达到相应的速度。 返回顶部其他马达方法看看马达正在做些什么
以下是得到马达状态的其他方法:
多种多样的其他马达方法
|