循环模块

循环模块是可以容纳编程模块序列的容器。它会使所含的模块序列重复执行。可以选择不断重复执行模块、重复特定次数或是直至传感器测试或其他条件为“真”。

只有循环内的模块会重复执行。在循环结束后,程序会继续执行循环之后的模块。
提示和技巧
拖动模块可在循环内移动它们。循环模块会扩展以便为内部的模块腾出空间。
选择循环模式


模式选择器
输入
“计数”输出
循环名称

使用模式选择器可控制循环的重复方式。不同模式指定使循环结束的条件。例如,可以使循环重复特定次数、重复到传感器数据值达到特定阈值或不断重复。可用输入会因模式而异。下面介绍了模式。

可以在循环模块顶部的“循环名称”字段中为循环输入名称。此名称由循环中断模块用于提供另一种结束循环的方式。

循环中的模块可以使用计数输出得知循环已重复的次数。有关更多信息,请参见使用“计数”输出
模式
无限制


在“无限制”模式中,循环内的模块会不断重复执行。永远不会到达放置在循环之后的任何模块。
示例 1
此程序使机器人反复按交替的直行/转弯顺序驱动,直至程序停止。
提示和技巧
使用 EV3 上的“返回”按钮可停止程序。
示例 2
此程序会在每次按压触动传感器时在 EV3 显示上显示闭合的嘴,否则会显示张开的嘴。循环使切换模块中的传感器测试持续重复。
计数


在“计数”模式中,计数输入指定循环中重复模块的次数。
示例
此程序使机器人说一次“Hello”,说六次“Go”,然后说一次“Bravo”。循环模块包含一个声音模块,配置为重复六次。
时间


在“时间”模式中,可以在秒数输入中指定使循环重复的时间量。从循环开始时测量时间。

仅在循环序列结束时才测试时间限制。循环序列会始终至少执行一次,仅当当时经过的时间少于秒数时,循环会继续返回到开头。
逻辑


在“逻辑”模式中,循环会一直重复,直至直到输入在循环序列结束时为“真”。循环序列会始终至少执行一次,在每个循环迭代结束时会测试“直到”输入。

使用数据线可将直到输入连接到循环内编程模块的逻辑输出。需要循环结束时,此输出应为“真”。
示例
此程序使机器人向前驱动,直至按压了触动传感器或颜色传感器检测到黑色(先发生的情况起作用)。逻辑运算模块的输出用于循环的直到输入。当循环完成时,机器人会停止。
提示和技巧
可以使用下面介绍的传感器模式,通过循环模块直接测试许多仅涉及一个传感器的传感器测试。
传感器模式
循环模块包含读取传感器数据并将其与输入值进行比较的几个模式。每种传感器类型具有不同模式。某些类型的传感器数据可以与阈值进行比较,其他类型可以与某些特定值进行比较。
将传感器数据与阈值进行比较
在具有阈值输入的模式中,循环模块会重复循环内的模块序列,直至阈值比较为“真”。例如,可以使循环重复,直至颜色传感器检测到小于指定阈值的反射光线强度值。



模式选择器
端口选择器
“比较类型”输入
“阈值”输入

使用模式选择器可选择具有阈值输入的传感器模式。如果模式使用端口,则使用端口选择器确保端口与传感器或电机连接到的 EV3 程序块上的端口匹配。

比较类型列表中选择要使用的比较类型,然后输入阈值

每当循环内的模块序列完成时,循环模块会读取传感器数据并测试阈值。如果测试在当时为“伪”,则循环会重复。如果测试为“真”,则循环会结束,并且程序会继续执行循环之后的下一个模块。

有关使用不同传感器类型及它们提供的数据的更多信息,请参见“使用传感器”帮助文章。
示例
此程序使机器人向前驱动,同时重复三种不同声音,直至颜色传感器检测到小于 50 的反射光线强度,然后停止机器人。
提示和技巧
仅在循环序列结束时测试传感器阈值。在上面的示例中,如果颜色传感器在循环中短暂通过深色,则机器人可能不会看到它并且不会停止
将传感器数据与特定值进行比较
以下传感器模式允许循环将传感器数据与特定输入值进行比较。循环会重复,直至传感器数据等于指定输入值。
模式备注
程序块按钮 循环会重复,直至所选按钮之一执行所选动作。

请参见使用程序块按钮
颜色传感器 - 颜色 循环会重复,直至检测到所选颜色之一。

请参见使用颜色传感器
红外传感器 - 远程 循环会重复,直至按压下 IR 信标上的所选按钮之一。

请参见使用红外传感器“远程”模式
触动传感器 循环会重复,直至触动传感器处于所选状态。

请参见使用触动传感器
超声波传感器 - 存在 循环会重复,直至检测到超声波信号。

请参见使用超声波传感器
消息传递 循环会重复,直至收到指定消息类型。

请参见消息传递模块
提示和技巧
仅在循环序列结束时测试传感器。如果传感器数据在循环序列执行期间仅短暂地与指定输入值匹配,则循环可能不会停止。
使用“计数”输出
循环模块开头处的计数输出告知循环序列已执行的次数。可以在循环内使用“计数”使循环序列在每次循环重复时执行不同操作。

“计数”在首次执行循环期间为 0,并在每次循环重复时增加 1。
示例
此程序在 EV3 显示屏上显示碰撞(按压然后松开)触动传感器的次数计数。循环中的等待模块使循环在重复之前等待每次触动传感器碰撞,计数用于显示模块的“文本”输入。
调整循环大小
循环模块通常会自动扩展以便为拖动到其中的新编程模块腾出空间。还可以在需要时手动调整循环模块大小。要调整循环大小,请选择循环模块,然后拖动外侧周围出现的大小调整手柄。
示例
此循环模块正在调整大小,以便为其中的第二个模块序列腾出空间。
输入与输出
可用于循环模块的输入取决于所选模式。可以将输入值直接输入到模块中。或者,可以通过数据线从其他编程模块的输出提供输入值。
输入类型备注
计数 数字在“计数”模式中要重复循环的次数。
秒数 数字在“时间”模式中要重复循环的秒数。
直到 逻辑在“逻辑”模式中,循环会在此输入为“真”时结束。
比较类型 数字具有阈值的传感器模式比较类型。
0:=(等于)
1:≠(不等于)
2:>(大于)
3:≥(大于或等于)
4:<(小于)
5:≤(小于或等于)
阈值 数字对于具有阈值的传感器模式,要将传感器数据与之进行比较的值。
(各种传感器类型的输入)有关传感器数据的更多信息,请参见各种传感器类型的帮助。
循环模块的输出是循环已重复的次数。要使用该输出,请使用数据线将其连接到循环内部或之后的编程模块。
输出类型备注
计数 数字循环已完成的次数。“计数”在首次执行循环期间为 0。
循环
快速链接