距离传感器 Distance Sensor
超声波传感器,长得像一对眼睛,测量到前方物体的距离。
工作原理与量程
发出人耳听不到的超声波,靠回声测距:
- 量程 5-200 cm(官方规格 50-2000 mm,精度 ±2 cm)。
- 两只"眼睛"周围共有 4 段可编程 LED(每只 2 段),可以点亮做状态指示。
- 测不到目标(太远、太近、表面吸音)时返回无效值。
什么目标测得准
| 目标 | 效果 |
|---|---|
| 平整的硬表面(墙、模型侧面) | ✅ 很准 |
| 正对传感器的面 | ✅ 很准 |
| 斜面(> 约 30 度角) | ⚠️ 声波被弹走,可能测不到 |
| 细杆、网格、柔软布料 | ❌ 不可靠 |
Word Blocks 积木
wordblocks
(距离传感器 [D] 距离 cm) ← 报告积木(圆形读值)
<距离传感器 [D] 距离 < [10] cm> ← 条件积木
等待到 <距离传感器 [D] 距离 < [10] cm>示例 1:接近减速
冲向模型时全速,靠近后减速,避免撞飞:
wordblocks
当程序启动时
设置移动马达 [A+E]
设置移动速度 [80] %
开始移动 [前进]
等待到 <距离传感器 [D] 距离 < [20] cm>
设置移动速度 [25] %
开始移动 [前进]
等待到 <距离传感器 [D] 距离 < [6] cm>
停止移动示例 2:保持距离(跟随)
wordblocks
重复执行
如果 <距离传感器 [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 里的用途
- 精准停位:比走固定圈数更抗打滑,适合"停在模型前 8 cm"。
- 防撞保险:长距离冲刺时加一道"距离 < 10 cm 急停"的并行保护。阈值必须明显高于 5 cm 量程下限(太近会返回无效值,
< 5可能永远触发不了),并给高速留出制动距离。 - 定位校准:垂直正对边墙测距,已知墙的位置就能反推机器人在该方向上的位置(一维定位;斜对墙时读数不可靠)。
常见坑
- 声波锥是发散的:近处地面、旁边的模型都可能被"看到"。传感器装高一点、别贴地。
- 两台机器人的距离传感器互相干扰(比赛桌背对背时罕见但存在)。
- 采样有延迟,高速冲刺时留足刹车距离。
下一个:力传感器。