乐高 EV3 实验02 - 差速小车遥控

« 返回 LEGO 专题

实验02:差速小车遥控

这个实验做完你会得到什么

手机上五个方向键 + 一根调速滑动条,EV3 小车前进、后退、左转、右转、原地转圈, 松手就停。

项目 说明
难度 ★★☆☆☆
用时 约 40 分钟
前置 实验01:连上机器人,连接界面直接复用

一、器材与组装

器材 数量 说明
EV3 主机 1  
EV3 大型马达 2 接 B、C 端口,装在车体两侧
轮子 + 万向轮 两个驱动轮 + 一个支撑点

这种结构叫差速驱动平台:两侧轮速不同就会转弯。

想要的动作 两侧轮子
前进 同速同向
后退 同速反向
右转 左轮快、右轮慢
左转 右轮快、左轮慢
原地打转 两轮反向同速

两个马达的安装方向通常是相对的(面对面装在车两侧),所以同一个功率值会让它们 朝相反方向转。EV3马达组件的 ReverseDirection 属性可以翻转, 但更简单的办法是先试一下:点前进,车往后跑就把功率取负。


二、界面组件

在实验01 的连接界面基础上加:

组件 命名 关键属性
表格布局 表格布局1 3 行 3 列,放方向键
按钮 按钮_前 / 按钮_后 / 按钮_左 / 按钮_右 / 按钮_停 放在表格的上/下/左/右/中
按钮 按钮_原地转 文本「原地转圈」
滑动条 滑动条_功率 最小值 20、最大值 100、初始 50
标签 标签_功率 文本「功率:50」
EV3马达 EV3马达1 BluetoothClient = 蓝牙客户端1MotorPorts = BC

三、分步搭代码块

第 1 步:前进后退

RotateSyncIndefinitely(功率, 转向比) —— 两个马达同步转动,比分别控制两个组件稳。

global 功率 = 50

when 滑动条_功率.PositionChanged(thumbPosition) {
  global 功率 = round(thumbPosition)
  标签_功率.Text = join("功率:", 功率)
}

when 按钮_前.TouchDown() {
  EV3马达1.RotateSyncIndefinitely(功率, 0)
}

when 按钮_后.TouchDown() {
  EV3马达1.RotateSyncIndefinitely(-功率, 0)
}

when 按钮_前.TouchUp() {
  EV3马达1.Stop(true)
}

when 按钮_后.TouchUp() {
  EV3马达1.Stop(true)
}

中途验证:按住「前」车往前跑,松开停;按住「后」倒车。跑反了就把功率的正负号对调。

转向比 0 = 直行。这个参数范围是 -100 ~ 100: 0 两轮同速,正数往一边偏,±100 就是原地打转。

TouchDown / TouchUp 而不是 Click:按住才动、松手就停,这才是遥控的手感。

第 2 步:转弯

global 功率 = 50

when 按钮_右.TouchDown() {
  EV3马达1.RotateSyncIndefinitely(功率, 50)
}

when 按钮_左.TouchDown() {
  EV3马达1.RotateSyncIndefinitely(功率, -50)
}

when 按钮_右.TouchUp() {
  EV3马达1.Stop(true)
}

when 按钮_左.TouchUp() {
  EV3马达1.Stop(true)
}

中途验证:按住「右」车向右画弧线前进。转向比调到 50 是比较自然的转弯半径; 数字越大转得越急。

第 3 步:原地打转与急停

global 功率 = 50

when 按钮_原地转.TouchDown() {
  EV3马达1.RotateSyncIndefinitely(功率, 100)
}

when 按钮_原地转.TouchUp() {
  EV3马达1.Stop(true)
}

when 按钮_停.Click() {
  EV3马达1.Stop(true)
}

中途验证:按住「原地转圈」,车在原地打转不前进。

留一个显式的「停」按钮很有必要:手指从按钮上滑开时 TouchUp 可能不触发, 车就会一直跑。这是遥控类应用最常见的事故。

第 4 步:走固定距离(进阶)

遥控之外,也可以让车走精确的距离:

when 按钮_走一米.Click() {
  EV3马达1.RotateSyncInDistance(50, 100, 0, true)
}

中途验证:点一下,车往前走约 1 米后自动停。

RotateSyncInDistance(功率, 距离, 转向比, 是否刹车)距离单位是厘米 (组件文档原文 “for a distance in cm”)—— 所以走 1 米填 100,别填 1000。

距离准不准取决于 WheelDiameter 属性(轮子直径)—— 默认值对应标准 EV3 轮,换轮子必须改,否则误差很大。


四、排错表

现象 原因与处理
车往反方向跑 功率取负,或用 ReverseDirection 属性翻转
只有一个轮转 MotorPorts 填的是 B 不是 BC;或某个马达线没插好
车原地打转(本该直行) 两个马达装反了。转向比填 0 时如果还转圈,说明一侧需要 ReverseDirection
松手车不停 手指滑出按钮导致 TouchUp 没触发。用「停」按钮兜底
转弯太急/太缓 调转向比,50 是常用值,30 更缓、80 更急
走的距离不准 距离单位是厘米不是毫米;WheelDiameter 和实际轮子不符;地面打滑
低功率时不动只嗡嗡响 功率低于 20 通常带不动车。滑动条最小值设 20

五、下一步


相关文档

文档反馈