我正在为一个工程学班开发一个机器人。为了这个类的目的,我需要使用NXT编程语言。要移动,机器人需要遵循一条坚实的黑线。
如果机器人松开了线,我让它向左扫描1秒,或者一直扫描到一条黑线。如果没有找到任何线,它会扫描到右边2秒,这样就可以到达初始位置,然后再多1秒,或者实现旋转。
我已经设置了回路,这样如果还没有找到线,机器人就会继续移动。这将持续整整1秒的时间。如果找到了这条线,运动就停止了,但是整个秒仍然需要完成。这最终意味着我的程序运行得很好,但是真的很慢。
在LEGO编程环境中,是否有一种方法可以使循环具有两个退出条件?或者在1秒之后,或者传感器获得所需的输入?。
发布于 2011-12-19 15:57:05
头脑风暴没有OR函数。
解决方案是创建一个退出变量,然后有两个switch语句。在上面的例子中,我有一个带有计时器的开关语句,另一个带有传感器输出。将exit变量设置为false,然后在while循环中运行,直到退出变量为true为止。
如果计时器过期,则将变量设置为true,否则忽略退出变量。对传感器的输出也做同样的操作。
这是一个混乱和相当长的解决方案,但它完全解决了这个问题,在有限的乐高头脑风暴系统。
发布于 2013-10-14 00:16:09
最后两个块是逻辑块,设置为"OR“。在这种情况下,有3个传感器正在被监视。如果有任何一个被绊倒,程序就会退出循环。

这是来自http://www.hightechkids.org/sites/default/files/CoachingLibrary/fll_programming_101_nxt_g.pdf第86页
发布于 2011-12-02 12:06:56
您可以做的是缩短超时时间(例如,100 ms ),并在找到行或循环运行10次时停止。
我不是头脑风暴专家,但我希望它有一个或功能。
https://stackoverflow.com/questions/8348698
复制相似问题