2011-12-01 30 views
3

我正在开发一个工程类的机器人。为了课堂的目的,我需要使用NXT编程语言。要移动,机器人需要遵循一条坚实的黑线。Mindstorm NXT编程循环退出条件

如果机器人松脱线,我会向左扫描1秒,或直到它到达黑线。如果找不到线,则向右扫描2秒,以便达到初始位置,然后再实现1秒或旋转。

我建立了循环,以便如果线未找到,机器人继续移动。这将持续整整1秒的时间。如果找到该线,运动停止,但整秒钟仍然需要完成。最终这意味着我的程序完美运行,但真的非常慢。

tl; dr在LEGO Mindstorm编程环境中有两种退出条件的循环吗?在1秒钟后,或传感器获得所需的输入?

+0

86有我正确地重新标记吗? –

回答

0

Mindstorms没有OR功能。

解决方案是创建一个退出变量,然后有两个switch语句。在上面的例子中,我有一个带有定时器的switch语句,另一个带有传感器输出。将exit变量设置为false,然后在while循环内运行,直到退出变量为true。

如果计时器到期,请将变量设置为true,否则忽略退出变量。对传感器的输出做同样的事情。

这是一个混乱和相当长的解决方案,但它在相当有限的乐高头脑风暴系统内完美地解决了这个问题。

0

你可以做的是让超时时间缩短(例如100毫秒),如果找到该行或循环运行10次,则停止。

我不是mindstorms专家,但我期望它有一个或功能。

+1

逻辑块位于IIRC的高级部分。 –