乐高 EV3 实验01 - 连上机器人,让马达转起来

« 返回 LEGO 专题

实验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 主机准备

  1. 开机,进入 Settings(扳手图标)→ Bluetooth
  2. 勾选 BluetoothVisibility(可见性)
  3. 记下屏幕左上角的主机名(默认是 EV3

三、手机配对(这一步在系统设置里做,不是在 App 里)

  1. 手机 设置 → 蓝牙,搜索并点击 EV3
  2. EV3 屏幕上弹出确认,用主机上的按钮选 对勾(✓)
  3. 手机上输入配对码 1234(EV3 默认),确认
  4. EV3 屏幕上再确认一次

验证这一步:手机蓝牙列表里 EV3 显示为”已配对”。

⚠️ 必须先在系统设置里配对成功,App 里才能看到它。这是经典蓝牙和 BLE 最大的区别: BLE 是 App 直接扫描连接,经典蓝牙要系统层面先配对。

配不上的话:EV3 上 Bluetooth → 断开所有已连接设备,手机上取消配对再重来。


四、界面组件

组件 命名 关键属性
列表选择器 列表选择器_设备 文本「选择 EV3」,宽度充满
标签 标签_状态 文本「未连接」
按钮 按钮_转一下 文本「马达转 1 秒」,启用取消勾选
按钮 按钮_断开 文本「断开」
蓝牙客户端 蓝牙客户端1 不可见
EV3马达 EV3马达1 不可见,BluetoothClient = 蓝牙客户端1MotorPorts = BC

MotorPortsBC 表示同时控制 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 电池电量低;或手机休眠断了蓝牙

七、下一步


相关文档

文档反馈