LEGO MINDSTORMS EV3 使用程序块按钮

file

程序块按钮是 EV3 程序块正面上的五个按钮(左、中、右、上和下)。可以如同传感器一样使用程序块按钮检测是否按压了按钮,以及查明按压了哪个按钮。

可以使用程序块按钮使程序响应按钮按压。例如,可以在按压上和下按钮时分别使机器人手臂举起和放下。

提示和技巧

EV3 上的“返回”按钮不包含在程序块按钮中。按压“返回”按钮会中止正在运行的程序。

程序块按钮还可以跟踪在过去是否按压然后松开了某个按钮。这称为“碰撞”,其工作方式与触动传感器的“碰撞”状态相同。

程序块按钮可以提供以下数据:

数据 类型 备注
按钮 ID 数字 指示当前按压的按钮: 0 = 无 ,1 = 左, 2 = 中 ,3 = 右, 4 = 上, 5 = 下
按压 逻辑 对于指定按钮 ID (1-5),如果按压了按钮,则为“真”,否则为“伪”。
松开 逻辑 对于指定按钮 ID (1-5),如果按压了按钮,则为“伪”,否则为“真”。
碰撞 逻辑 对于指定按钮 ID (1-5),如果在过去按压并松开了按钮,则为“真”。下一次“碰撞”发生因而需要新的按压和松开。

提示和技巧

程序块按钮无法检测同时按压了多个按钮的情况。如果同时按压两个按钮,则一个按钮会覆盖另一个。

程序块按钮使用示例

下面是有关在程序中如何使用程序块按钮的一些示例。

示例 1:按压按钮以继续

file

此程序使机器人向前驱动一秒,然后显示“Press a Button…”。接下来等待程序块按钮之一受到按压,再向后驱动一秒。此程序将等待模块与“程序块按钮 - 更改 - 程序块按钮”模式结合使用来等待任何程序块按钮受到按压。

示例 2:程序块按钮控制面板

file

此程序使机器人在左按钮受到按压时向左转弯,在右按钮受到按压时向右转弯。此程序将切换模块与“程序块按钮 - 测量 - 程序块按钮”模式结合使用来查明受到按压的程序块按钮。切换中的三种不同情况使机器人执行以下动作:在左按钮受到按压时向左转弯,在右按钮受到按压时向右转弯,在没有按钮受到按压时停止。会在循环中连续重复进行测试。

提示和技巧

可尝试对切换使用“+”按钮来添加更多情况。例如,可以使机器人在您按压上和下按钮时分别向前和向后驱动。

示例 3:使用程序块按钮控制程序块状态灯颜色

file

此程序在您按下左按钮时以绿色开启程序块状态灯,在按下中按钮时以橙色开启,在按下右按钮时以红色开启。首先,它使用“程序块按钮 - 比较 - 程序块按钮”模式的切换模块测试左、中或右按钮是否受到按压。如果未受到按压,则程序块状态灯模块会关闭灯。如果这三个按钮中的一个按钮受到按压,则“测量 - 程序块按钮”模式的程序块按钮模块会通过数据线获取受按压按钮的按钮 ID (1-3)。数学模块随后会将此值减去 1,以便可以用作程序块状态灯模块的“颜色”输入 (0-2)。

程序块按钮模块和模式

下表显示可以与程序块按钮一起使用的所有编程模块和模式。

模块 模式 用途
等待 程序块按钮 - 比较 - 程序块按钮 等待所选程序块按钮之一受到按压、松开或碰撞。
等待 程序块按钮 - 更改 - 程序块按钮 等待受按压程序块按钮(按钮 ID)更改。如果在模块开始时未按压任何程序块按钮,则这会等待任何程序块按钮受到按压。
循环 程序块按钮 - 程序块按钮 重复模块序列,直至所选程序块按钮之一受到按压、松开或碰撞。
切换 程序块按钮 - 测量 - 程序块按钮 根据按压的程序块按钮在两个或更多模块序列之间进行选择。
切换 程序块按钮 - 比较 - 程序块按钮 根据是按压、松开还是碰撞了所选程序块按钮之一,在两个模块序列之间进行选择。
程序块按钮 测量 - 程序块按钮 通过数字数据线获取当前按压的程序块按钮的按钮 ID(如果未按压任何按钮,则为 0)。
程序块按钮 比较 - 程序块按钮 测试所选程序块按钮之一是否受到按压、松开或碰撞,并通过逻辑数据线获取结果。
黔西南 触摸未来
我们正身处一个只要愿意思考,就能改变世界的时代