概述
App Inventor 2提供LEGO MINDSTORMS EV3组件,可以直接通过蓝牙连接EV3,读取各种传感器。
已有文档:bluetooth_remote.md 介绍了蓝牙通信。本文聚焦EV3超声波传感器。
EV3组件
添加组件
组件面板 → LEGO MINDSTORMS → **Ev3 Ultrasonic Sensor`
支持的EV3组件
| 组件 | 说明 |
|---|---|
| Ev3Motors | 电机控制 |
| Ev3ColorSensor | 颜色传感器 |
| Ev3GyroSensor | 陀螺仪 |
| Ev3Sound | 声音 |
| Ev3TouchSensor | 触摸传感器 |
| Ev3UltrasonicSensor | 超声波传感器 |
| Ev3UI | EV3屏幕显示 |
蓝牙连接EV3
when 按钮_连接.Click() {
蓝牙客户端1.Secure = true
蓝牙客户端1.Connect(10)
}
when 蓝牙客户端1.Connect(设备名, 地址) {
if textContains(设备名, "EV3") {
标签_状态.Text = "✅ 已连接EV3"
EV3超声波传感器1.BluetoothClient = 蓝牙客户端1
EV3超声波传感器1.SensorPort = "4" // EV3端口4
计时器_读取.TimerEnabled = true
}
}
读取超声波距离
连续读取
计时器_读取.TimerInterval = 200 // 200ms读取一次
when 计时器_读取.Timer() {
var 距离 = EV3超声波传感器1.GetDistance()
if 距离 > 0 {
标签_距离.Text = join("距离:", formatDecimal(距离, 1), " cm")
// 距离预警
if 距离 < 20 {
标签_预警.Text = "⚠️ 太近!"
标签_预警.TextColor = 红色
} else if 距离 < 50 {
标签_预警.Text = "注意距离"
标签_预警.TextColor = 橙色
} else {
标签_预警.Text = "安全"
标签_预警.TextColor = 绿色
}
}
}
单次读取
when 按钮_测量.Click() {
var 距离 = EV3超声波传感器1.GetDistance()
标签_距离.Text = join(距离, " cm")
}
实战案例:避障小车
设 左电机端口 = "B"
设 右电机端口 = "C"
设 自动模式 = false
当 按钮_自动.被点击
设 自动模式 = true
调用 前进()
定义 前进()
调用 Ev3Motors.设置功率(左电机端口, 50)
调用 Ev3Motors.设置功率(右电机端口, 50)
调用 Ev3Motors.前进(左电机端口)
调用 Ev3Motors.前进(右电机端口)
当 计时器_读取.计时
如果 自动模式
设 距离 = EV3超声波传感器1.获取距离()
如果 距离 < 20 且 距离 > 0
' 遇到障碍物,后退再转弯
调用 Ev3Motors.后退(左电机端口)
调用 Ev3Motors.后退(右电机端口)
调用 计时器1.等待(500)
' 右转
调用 Ev3Motors.前进(左电机端口)
调用 Ev3Motors.后退(右电机端口)
调用 计时器1.等待(300)
调用 前进()
当 按钮_停止.被点击
设 自动模式 = false
调用 Ev3Motors.停止(左电机端口)
调用 Ev3Motors.停止(右电机端口)
EV3端准备
- 确保EV3固件已更新到最新版本
- 打开EV3蓝牙(设置 → Bluetooth → 勾选Visible)
- 将超声波传感器连接到指定端口(如端口4)
- EV3上不需要运行任何程序
常见问题
Q1: 无法连接EV3?
- 确保EV3蓝牙已打开且可见
- 先在手机蓝牙设置中配对EV3
- EV3蓝牙名称通常是 “EV3” + 后缀
- 部分手机需要输入配对码 “1234”
Q2: 超声波读数为0或负数?
- 检查传感器端口是否正确(1-4)
- 确认传感器已牢固连接到EV3
- 超出测量范围时(>250cm或<3cm)读数不准确
Q3: 读取速度慢?
蓝牙通信有延迟。EV3传感器读取间隔建议 ≥ 100ms。降低Clock间隔可以提高频率但不建议低于100ms。
总结
| 项目 | 说明 |
|---|---|
| 连接方式 | 蓝牙(BluetoothClient) |
| 传感器组件 | Ev3UltrasonicSensor |
| 测量范围 | 3-250 cm |
| 精度 | ±1 cm |
| 读取间隔 | 建议 ≥ 100ms |
版权声明:MIT App Inventor 官方文档采用 CC BY-SA 4.0 授权,本文档由 ai2claw 🐝 整理。
扫码添加客服咨询