Skip to content

距离传感器 Distance Sensor

超声波传感器,长得像一对眼睛,测量到前方物体的距离。

工作原理与量程

发出人耳听不到的超声波,靠回声测距:

  • 量程 5-200 cm(官方规格 50-2000 mm,精度 ±2 cm)。
  • 每只"眼睛"周围有 4 段 LED 灯,可以编程点亮(纯装饰/状态指示)。
  • 测不到目标(太远、太近、表面吸音)时返回无效值。

什么目标测得准

目标效果
平整的硬表面(墙、模型侧面)✅ 很准
正对传感器的面✅ 很准
斜面(> 约 30 度角)⚠️ 声波被弹走,可能测不到
细杆、网格、柔软布料❌ 不可靠

Word Blocks 积木

(距离传感器 [D] 距离 cm)                    ← 圆形读值积木
<距离传感器 [D] 距离 < [10] cm>              ← 条件积木
等待到 <距离传感器 [D] 距离 < [10] cm>

示例 1:接近减速

冲向模型时全速,靠近后减速,避免撞飞:

当程序启动时
设置移动马达 [A+E]
设置移动速度 [80] %
开始移动 [前进]
等待到 <距离传感器 [D] 距离 < [20] cm>
设置移动速度 [25] %
开始移动 [前进]
等待到 <距离传感器 [D] 距离 < [6] cm>
停止移动

示例 2:保持距离(跟随)

重复执行
  如果 <距离传感器 [D] 距离 < [10] cm> 那么
    开始移动 [后退]
  否则
    如果 <距离传感器 [D] 距离 > [15] cm> 那么
      开始移动 [前进]
    否则
      停止移动

Python 写法

python
import runloop, distance_sensor
from hub import port

async def main():
    d = distance_sensor.distance(port.D)   # 返回毫米 mm;测不到返回 -1
    if d != -1 and d < 100:                # 小于 10 cm
        pass

runloop.run(main())

Python 返回的是毫米

Word Blocks 里选 cm,Python 的 distance() 返回 mm,测不到时返回 -1。判断前先排除 -1,否则 "-1 < 100" 恒成立,机器人会误判"已到达"。

FLL 里的用途

  • 精准停位:比走固定圈数更抗打滑,适合"停在模型前 5 cm"。
  • 防撞保险:长距离冲刺时加一道"距离 < 5 cm 急停"的并行保护。
  • 定位校准:对着边墙测距,已知墙的位置就能反推机器人位置。

常见坑

  • 声波锥是发散的:近处地面、旁边的模型都可能被"看到"。传感器装高一点、别贴地。
  • 两台机器人的距离传感器互相干扰(比赛桌背对背时罕见但存在)。
  • 采样有延迟,高速冲刺时留足刹车距离。

下一个:力传感器