Mindstorm NXT编程循环退出条件

时间:2011-12-01 21:43:06

标签: robotics nxt mindstorms

我正在为工程类开发一个机器人。出于本课程的目的,我需要使用NXT编程语言。要移动,机器人需要遵循纯黑线。

如果机器人松开线,我会向左扫描1秒钟,或直到它到达黑线。如果没有找到线,则向右扫描2秒钟,然后达到初始位置,然后再延长1秒或实现旋转。

我设置了循环,这样如果找不到线,机器人就会继续移动。这持续了整整1秒钟。如果找到该线,则运动停止,但完整的第二个仍然必须完成。最终这意味着我的程序运行完美,但实际上非常慢。

tl; dr有没有办法在LEGO Mindstorm编程环境中制作具有两个退出条件的循环? 1秒后,传感器是否获得所需的输入?

3 个答案:

答案 0 :(得分:1)

最后两个块是设置为“OR”的逻辑块。在这种情况下,正在观看3个传感器。如果任何一个被绊倒,程序就会退出循环。

.

这是http://www.hightechkids.org/sites/default/files/CoachingLibrary/fll_programming_101_nxt_g.pdf

的第86页

答案 1 :(得分:0)

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

我不是心灵风暴专家,但我希望它具有OR功能。

答案 2 :(得分:0)

Mindstorms没有OR功能。

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

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

这是一个混乱且相当长的解决方案,但它在相当有限的LEGO Mindstorms系统中完美地解决了这个问题。