EV3 Lab 指南

EV3 Lab 指南 > 编程模块 > 流程模块 > 循环模块

循环模块

循环模块

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

只有循环内的模块会重复执行。在循环结束后, 程序会继续执行循环之后 的模块。

【提示和技巧】

拖动模块可在循环内移动它们。循环模块会扩展以便为内部的模块腾出空间。

 

选择循环模式

循环模块

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

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

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


模式

无限制

循环模块

在“无限制”模式中,循环内的模块会不断重复执行。 永远不会到达放置在循环之后的任何模块。

示例 1

 循环模块

此程序使机器人反复 按交替的直行/转弯  顺序驱动,直至程序 停止。

【提示和技巧】

使用 EV3 上的“返回”按钮可停止程序。

示例 2

循环模块

此程序会在 每次按压触 动传感器时 在 EV3 显 示上显示闭 合的嘴,否 则会显示张 开的嘴。循 环使切换模 块中的传感 器测试持续 重复。

计数

循环模块

在“计数”模式中,计数输入指定循环中重复模块的次数。

示例

 循环模块

此程序使机器人说一次“Hello”,说六次“Go”,然后说一次“Bravo”。循环模块包含一个声音模块, 配置为重复六次。

时间

 循环模块

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

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

逻辑

循环模块

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

使用数据线可将直到输入连接到循环内编程模块的逻辑输出。需要循环结束时,此输出应为“真”。

示例

 循环模块

此程序使机器人向前驱动,直至按压了触动传感器或颜色传感器检测到黑色(先发生的情况起作用)。 逻辑运算模块的输出用于循环的直到输入。当循环完成时,机器人会停止。

【提示和技巧】

可以使用下面介绍的传感器模式,通过循环模块直接测试许多仅涉及一个传感器的传感器测试。

 

传感器模式

循环模块包含读取传感器数据并将其与输入值进行比较的几个模式。每种传感器类型具有不同模式。 某些类型的传感器数据可以与阈值进行比较,其他类型可以与某些特定值进行比较。

将传感器数据与阈值进行比较

在具有阈值输入的模式中,循环模块会重复循环内的模块序列,直至阈值比较为“真”。例如, 可以使 循环重复,直至颜色传感器检测到小于指定阈值的反射光线强度值。

循环模块

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

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

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

有关使用不同传感器类型及它们提供的数据的更多信息,请参见“使用传感器”帮助文章。

示例

循环模块

此程序使机器人向前驱动,同时重复三种不同声音,直至颜色传感器检测到小于 50  的反射光线强 度,然后停止机器人。

【提示和技巧】

仅在循环序列结束时测试传感器阈值。在上面的示例中, 如果颜色传感器在循环中短暂通过深色,则 机器人可能不会看到它并且不会停止

将传感器数据与特定值进行比较

以下传感器模式允许循环将传感器数据与特定输入值进行比较。循环会重复, 直至传感器数据等于指

定输入值。

模式

备注

程序块按钮

循环会重复,直至所选按钮之一执行所选动作。 
请参见使用程序块按钮。

颜色传感器 - 颜色

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

红外传感器 - 远程

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

触动传感器

循环会重复,直至触动传感器处于所选状态。 
请参见使用触动传感器。

超声波传感器 - 存在

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

消息传递

循环会重复,直至收到指定消息类型。 
请参见消息传递模块。

【提示和技巧】

仅在循环序列结束时测试传感器。如果传感器数据在循环序列执行期间仅短暂地与指定输入值匹配, 则循环可能不会停止。

 

使用计数输出

循环模块开头处的计数输出告知循环序列已执行的次数。可以在循环内使用“计数”使循环序列在每次 循环重复时执行不同操作。

“计数”在首次执行循环期间为 0,并在每次循环重复时增加 1。

示例

循环模块

此程序在 EV3  显示屏上显示  碰撞(按压然后 松开)触动传感 器的次数计数。 循环中的等待  模块使循环在  重复之前等待  每次触动传感

器碰撞,计数用于显示模块的“文本”输入。

 

调整循环大小

循环模块通常会自动扩展以便为拖动到其中的新编程模块腾出空间。还可以在需要时手动调整循环模 块大小。要调整循环大小,请选择循环模块,然后拖动外侧周围出现的大小调整手柄。

示例

循环模块

此循环模块正 在调整大小, 以便为其中的 第二个模块序列腾出空间。


输入与输出

可用于循环模块的输入取决于所选模式。可以将输入值直接输入到模块中。或者, 可以通过数据线从

其他编程模块的输出提供输入值。

输入

类型

备注

计数

数字

在“计数”模式中要重复循环的次数。

秒数

数字

在“时间”模式中要重复循环的秒数。

直到

逻辑

在“逻辑”模式中,循环会在此输入为“真”时结 束。

比较类型

数字

具有阈值的传感器模式比较类型。 
0:=(等于)
1:≠(不等于) 
2:>(大于)
3:≥(大于或等于) 
4:<(小于)
5:≤(小于或等于)

阈值

数字

对于具有阈值的传感器模式,
要将传感器数据与之 进行比较的值。

(各种传感器类型的输入)

 

有关传感器数据的更多信息,
请参见各种传感器类 型的帮助。

循环模块的输出是循环已重复的次数。要使用该输出, 请使用数据线将其连接到循环内部或之后的编 程模块。

输出

类型

备注

计数

数字

循环已完成的次数。“计数”在首次执行循环期间为 0。