ev3 编程中各程序块之间的关联

在特殊场合的 ev3 模型中, 可能会用到不止一个 brick
(官方将之称为程序块).
程序块之间可以通过两种方式连接: 有线和无线. 有线是指
USB 线, 无线是指 wifi 或 蓝牙. 这两种试是相互排斥的.

USB 连接

通过 USB 线将多个程序块连接在一起的方式, 官方称为 “菊链”, 最多可以将
4 个程序块连接在一起. 在官方文档中, 对 “菊链” 的描述如下:

通过菊链可以使用 EV3 USB 电缆将 EV3
程序块连接在一起. 随后可以使用链中的第一个 EV3 程序块控制电机, 并读取菊链 EV3
程序块的传感器. 可以有多达四个 EV3 程序块形成菊链.

在使用方式上, 一般将第一个程序块当作主控器, 其它程序块作为被控制一方

比如一个当作有线遥控器, 控制其它程序块的运行. 这种情况下,
只要在作为主控器的程序块上布置软件即可, 被控制的主控器不需要布置程序,
也就不需要启动任何程序. 在操控时, 启动主控器上的程序, 对主控器进行操作,
从而给受控制的程序块发指令, 由受控制方具体驱动电机和传感器.

通过 “菊链” 模式将多个程序块连接在一起时, 比如连接方式为

A-->B-->C-->D

每个程序块在连接体系具有 “层” 级的概念. 在上述连接中,
总共分为 4 层. A 为第一层, B 为第二层, C 为第三层, D 为第四层. 运行于
A 的程序通过指定 “层”, 可以控制 B, C, D.

在编写程序时, 打开 “菊链” 模式, 传感器和电机的图标上的标题栏将出现层级的编辑框,
从而允许选择控制哪一层的电机或获取哪一层的传感器的输入.

无线连接

这里只描述蓝牙连接方式.

通过蓝牙方式连接在一起的程序块, 各程序块之间没有主从关系, 也没有 “层” 的概念,
各程序块之间通过 “消息” 进行通信. 在官方文档中, 对消息的描述为

消息传递模块用于在 EV3 程序块之间发送蓝牙消息. 要发送或接收消息,
必须先通过程序块蓝牙菜单或通过蓝牙连接模块连接 EV3 程序块.

消息以三个组件为特征

  1. 在其之间传递消息的程序块
  2. 标识消息的消息标题
  3. “消息”值. 这可能是文本, 数字或逻辑

通过指定程序块, 可以指定消息的接收方 (由哪个程序块接收); 通过标题,
可以将消息限定在某个消息组; 最后才是消息值,
不同标题具有相同消息值的消息属于两条不同的消息.

通过蓝牙方式连接, 最多可以连接 7 个程序块. 通过消息机制,
可以搭建非常复杂的模型, 可以编写非常复杂的程序.

其它

通过使用发线, 通过 USB 连接时, 受控的程序块对指令的执行感觉不到延迟;
而通过蓝牙连接时, 消息在传递时会有较大的延迟, 对于对电机进行精细控制时,
会出现断断续续的现象, 也许是我的使用方式有问题吧 (-^-).

由于会看本文的都是用过 EV3 的人, 就不贴图了!

阅读更多
个人分类: ev3
上一篇robotc 编程挑战 (5)
下一篇C++17 之 "折叠表达式"
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭
关闭