App Inventor 2 EV3超声波传感器教程

« 返回首页

概述

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

当 按钮_连接.被点击
  设 BluetoothClient1.安全连接 = true
  调用 BluetoothClient1.扫描并连接(10)

当 BluetoothClient1.连接完成(设备名, 地址)
  如果 设备名 包含 "EV3"
    标签_状态.文本 = "✅ 已连接EV3"
    设 Ev3UltrasonicSensor1.蓝牙客户端 = BluetoothClient1
    设 Ev3UltrasonicSensor1.传感器端口 = "4"  ' EV3端口4
    设 Clock_读取.启用计时器 = true

读取超声波距离

连续读取

设 Clock_读取.计时器间隔 = 200  ' 200ms读取一次

当 Clock_读取.计时
  设 距离 = Ev3UltrasonicSensor1.获取距离()
  如果 距离 > 0
    标签_距离.文本 = "距离:" & 数学.保留小数(距离, 1) & " cm"
    
    ' 距离预警
    如果 距离 < 20
      标签_预警.文本 = "⚠️ 太近!"
      标签_预警.文本颜色 = 红色
    否则 如果 距离 < 50
      标签_预警.文本 = "注意距离"
      标签_预警.文本颜色 = 橙色
    否则
      标签_预警.文本 = "安全"
      标签_预警.文本颜色 = 绿色

单次读取

当 按钮_测量.被点击
  设 距离 = Ev3UltrasonicSensor1.获取距离()
  标签_距离.文本 = 距离 & " cm"

实战案例:避障小车

设 左电机端口 = "B"
设 右电机端口 = "C"
设 自动模式 = false

当 按钮_自动.被点击
  设 自动模式 = true
  调用 前进()

定义 前进()
  调用 Ev3Motors.设置功率(左电机端口, 50)
  调用 Ev3Motors.设置功率(右电机端口, 50)
  调用 Ev3Motors.前进(左电机端口)
  调用 Ev3Motors.前进(右电机端口)

当 Clock_读取.计时
  如果 自动模式
    设 距离 = Ev3UltrasonicSensor1.获取距离()
    如果 距离 < 20 且 距离 > 0
      ' 遇到障碍物,后退再转弯
      调用 Ev3Motors.后退(左电机端口)
      调用 Ev3Motors.后退(右电机端口)
      调用 Clock1.等待(500)
      ' 右转
      调用 Ev3Motors.前进(左电机端口)
      调用 Ev3Motors.后退(右电机端口)
      调用 Clock1.等待(300)
      调用 前进()

当 按钮_停止.被点击
  设 自动模式 = false
  调用 Ev3Motors.停止(左电机端口)
  调用 Ev3Motors.停止(右电机端口)

EV3端准备

  1. 确保EV3固件已更新到最新版本
  2. 打开EV3蓝牙(设置 → Bluetooth → 勾选Visible)
  3. 将超声波传感器连接到指定端口(如端口4)
  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 🐝 整理。

文档反馈