实验01:连上机器人,让马达转起来
这个实验做完你会得到什么
手机上点一个按钮,EV3 的马达转 1 秒然后停下。
这是乐高系列的起点。EV3 用的是经典蓝牙(SPP)不是 BLE,连接方式和 micro:bit、 Arduino 那两个系列完全不同 —— 要先在手机系统设置里配对,App 里再选已配对设备。 这一步打通了,后面所有传感器和马达实验都能直接用这套连接界面。
| 项目 | 说明 |
|---|---|
| 难度 | ★★☆☆☆ |
| 用时 | 约 30 分钟 |
| 前置 | 无,这是系列第一篇 |
一、器材清单
| 器材 | 数量 | 说明 |
|---|---|---|
| LEGO MINDSTORMS EV3 主机 | 1 | |
| EV3 大型马达 | 1~2 | 接 B、C 端口 |
| Android 手机 | 1 |
EV3 组件是 App Inventor 内置的(「乐高机器人」分类),不需要导入任何扩展。 这和 micro:bit / Arduino 系列不一样。
二、EV3 主机准备
- 开机,进入 Settings(扳手图标)→ Bluetooth
- 勾选 Bluetooth 和 Visibility(可见性)
- 记下屏幕左上角的主机名(默认是
EV3)
三、手机配对(这一步在系统设置里做,不是在 App 里)
- 手机 设置 → 蓝牙,搜索并点击
EV3 - EV3 屏幕上弹出确认,用主机上的按钮选 对勾(✓)
- 手机上输入配对码
1234(EV3 默认),确认 - EV3 屏幕上再确认一次
验证这一步:手机蓝牙列表里 EV3 显示为”已配对”。
⚠️ 必须先在系统设置里配对成功,App 里才能看到它。这是经典蓝牙和 BLE 最大的区别: BLE 是 App 直接扫描连接,经典蓝牙要系统层面先配对。
配不上的话:EV3 上 Bluetooth → 断开所有已连接设备,手机上取消配对再重来。
四、界面组件
| 组件 | 命名 | 关键属性 |
|---|---|---|
| 列表选择器 | 列表选择器_设备 |
文本「选择 EV3」,宽度充满 |
| 标签 | 标签_状态 |
文本「未连接」 |
| 按钮 | 按钮_转一下 |
文本「马达转 1 秒」,启用取消勾选 |
| 按钮 | 按钮_断开 |
文本「断开」 |
| 蓝牙客户端 | 蓝牙客户端1 |
不可见 |
| EV3马达 | EV3马达1 |
不可见,BluetoothClient = 蓝牙客户端1、MotorPorts = BC |
MotorPorts填BC表示同时控制 B 和 C 两个端口的马达(差速小车的标准接法)。 只有一个马达就填B。
BluetoothClient属性必须设,所有 EV3 组件都要指到同一个蓝牙客户端1上。
五、分步搭代码块
第 1 步:列出已配对设备并连接
when 列表选择器_设备.BeforePicking() {
列表选择器_设备.Elements = 蓝牙客户端1.AddressesAndNames
}
when 列表选择器_设备.AfterPicking() {
if 蓝牙客户端1.Connect(列表选择器_设备.Selection) {
标签_状态.Text = "已连接"
按钮_转一下.Enabled = true
} else {
标签_状态.Text = "连接失败,请检查 EV3 是否开机并已配对"
}
}
中途验证:点「选择 EV3」,列表里出现已配对的 EV3;选中后状态变成「已连接」,
EV3 屏幕左上角出现蓝牙连接标志。
AddressesAndNames给的是系统里已配对的设备列表,不是扫描结果 —— 没配对的设备不会出现在这里。
Connect有返回值:成功true、失败false。一定要用if判断, 不判断的话连接失败后面每条指令都会报错。
第 2 步:让马达转起来
when 按钮_转一下.Click() {
EV3马达1.RotateInDuration(50, 1000, true)
}
中途验证:点按钮,马达以 50% 功率转 1 秒然后刹车停下。这一步成功,整条链路就通了。
RotateInDuration(功率, 毫秒, 是否刹车):
- 功率 -100~100,负数反转;50 左右起步,太小转不动;
- 毫秒是转多久;
- 是否刹车填
true是电磁刹车立即停住,false是断电滑行。 精确动作用true,想让车滑一段用false。
第 3 步:几种转法对比
when 按钮_一直转.Click() {
EV3马达1.RotateIndefinitely(40)
}
when 按钮_停.Click() {
EV3马达1.Stop(true)
}
when 按钮_转一圈.Click() {
EV3马达1.RotateInTachoCounts(50, 360, true)
}
中途验证:「一直转」让马达持续转动直到点「停」;「转一圈」精确转 360 度后停下。
三种转法:
RotateInDuration按时间、RotateInTachoCounts按角度(360 = 一圈)、RotateIndefinitely一直转。要精确重复的动作用角度那个,按时间会受电池电量影响。
第 4 步:断开
when 按钮_断开.Click() {
EV3马达1.Stop(true)
蓝牙客户端1.Disconnect()
标签_状态.Text = "已断开"
按钮_转一下.Enabled = false
}
when Screen1.BackPressed() {
EV3马达1.Stop(true)
蓝牙客户端1.Disconnect()
}
断开前先
Stop。EV3 组件有个StopBeforeDisconnect属性(默认开启)会帮你做这件事, 但显式停一次更保险 —— 马达带着负载一直转会很快耗光电池。
六、排错表
| 现象 | 原因与处理 |
|---|---|
| 列表里没有 EV3 | 没在手机系统设置里配对。见第三节,App 里看到的只是已配对列表 |
| 配对时提示密码错误 | EV3 默认配对码是 1234 |
| 连接返回 false | ① EV3 已被别的设备连着(EV3 上断开所有连接);② EV3 蓝牙没开或不可见;③ 距离太远 |
| 连上了但马达不转 | ① MotorPorts 和实际插的端口不一致;② BluetoothClient 属性没设;③ 功率太低(<20 转不动) |
| 只有一个马达转 | MotorPorts 填了 B 而不是 BC |
| 两个马达方向相反 | 马达安装方向相对(差速小车的正常情况)。用 ReverseDirection 属性翻转其中一侧 |
| 转一会儿就断连 | EV3 电池电量低;或手机休眠断了蓝牙 |
七、下一步
- 实验02:差速小车遥控 —— 前进后退转弯,调速
- 实验03:碰撞就停 —— 接触传感器
相关文档
- 乐高机器人组件参考
- LEGO EV3 机器人按键控制(完整示例工程)
扫码添加客服咨询