案例十二:害羞的小PU——用超声波感知距离
案例简介
上一节课,我们给 PU 机器人设计了情绪系统——用灯光和动作表达"开心、伤心、生气"等情绪。但那些情绪是按键手动切换的,机器人不能"感知"周围发生了什么。
今天,我们要让机器人拥有真正的"环境感知力"。PU 机器人的超声波传感器就像它的"第六感"——能"感觉到"前方有没有东西靠近。我们给小 PU 设定一个新的人设:它是一个害羞的小家伙! 当前方空旷(距离 > 30cm)时,它胆子很大,正常走路;当有东西靠近到 10~30cm 时,它开始紧张,亮起黄灯、发出声音;当东西靠得太近(< 10cm)时,它吓坏了,亮红灯、停下脚步、慌张地摇头。本案例综合运用超声波传感器、条件判断、灯光、动作、音乐五大模块,让学生体验"传感器数据驱动行为"的编程思想。
教学准备
| 名称 | 图示 |
|---|---|
| PU 机器人套装(含超声波传感器、4×RGB LED + 2×白色射灯、蜂鸣器) | ![]() |
| 编程设备(电脑) | |
| 平整地面 | |
| 障碍物(积木块/书本/纸杯) | |
| 尺子(验证距离用) |
硬件回顾——超声波传感器
| 参数 | 数值 | 说明 |
|---|---|---|
| 测距范围 | 2cm ~ 400cm | 超出范围数据不可靠 |
| 安装位置 | 机器人身体前方 | 检测前方障碍物距离 |
| 工作原理 | 发射超声波 → 遇障碍物反射 → 接收回波 → 计算距离 | 类似蝙蝠回声定位 |
教师提示:案例八中我们用超声波做过基础避障(检测到障碍就转弯),本课是超声波的进阶用法——不再是"有没有障碍"的二元判断,而是"障碍有多远"的多级判断。引导学生回顾案例八的知识作为起点。
"害羞的小 PU"行为设计
| 距离范围 | PU 的状态 | 灯光效果 | 动作 | 音乐/音效 |
|---|---|---|---|---|
| > 30cm | 😄 自信——前方安全,大胆走 | RGB 绿色常亮 | 正常行走 | 无(安静行走) |
| 10 ~ 30cm | 😳 害羞——有人靠近了 | RGB 黄色 | 继续走 | 发出提示音 |
| < 10cm | 😰 害怕——太近了! | RGB 红色 + 眼灯快闪 | 停止移动 + 摇头 | 发出短促警报音 |
教师提示:三个距离区间的设定要让学生理解——为什么是 30cm 和 10cm 这两个分界线?可以把 30cm 想象成"社交距离",10cm 想象成"安全底线"。引导学生用手比划这两个距离,建立身体直觉。
课程目标
巩固超声波传感器的使用方法,理解传感器数据作为"条件判断输入"的编程模式;
掌握多级条件判断(
如果…否则如果…否则)的嵌套结构,用距离阈值划分三个行为区域;能将超声波数据与灯光、动作、音乐模块联动,实现"不同距离→不同表情→不同动作→不同声音"的完整响应链;
理解"害羞小 PU"的设计思路——用拟人化思维把传感器数据转化为可理解的行为故事。
课程引入
同学们,你们有没有这样的经历:走在路上,远处有人朝你走过来,你其实没太在意;等那个人越走越近,大概两三步的距离,你开始觉得有点不自在——"这个人要干嘛?";如果那个人突然走到你面前半步不到,你可能吓一跳,本能地往后退一步。
这就是人类本能的"社交距离感"——距离不同,反应完全不同。
今天,我们要给小 PU 也装上这种"社交距离感"!它本来胆子就不大,当前方空荡荡的时候,它敢放心走路;一旦有东西靠近到 30 厘米以内,它就开始紧张;要是靠到 10 厘米以内——它就彻底吓坏了,停下来慌张地摇头!
我们要用超声波传感器当它的"距离感应器",配合灯光和动作,让小 PU 的"害羞"活灵活现。
学习探究
第一步:回顾超声波传感器基础
- 回顾案例八:打开案例八的避障程序,复习超声波传感器的使用:
读取超声波距离——获取前方障碍物的距离数值(单位:厘米)如果 距离 < 10 那么…——基础的条件判断避障逻辑
- 明确本课升级:案例八只有一个判断阈值(10cm),小 PU 只知道"有障碍"和"没障碍"。本课要用两个阈值(30cm 和 10cm)划分三个区域,让小 PU 有三种不同的反应。
第二步:多级条件判断——三区间编程
基础练习一:三级距离显示——先用 LED 矩阵验证条件判断逻辑:
距离范围 LED 显示 含义 > 30cm 勾号 ✓ 安全,放心走 10 ~ 30cm 感叹号 ! 有人靠近,注意! < 10cm 叉号 ✗ 太近了!害怕! - 编程结构:
如果 距离 > 30 那么 ✓ 否则如果 距离 > 10 那么 ! 否则 ✗ - 关键提问:为什么不能写成三个独立的
如果?- 如果写成三个
如果,当距离 = 15cm 时,第一个如果 距离 > 30不成立,但第三个如果 距离 < 10和第二个如果 距离 > 10会同时检查——需要用否则如果确保只执行一个分支
- 如果写成三个
- 编程结构:
基础练习二:距离驱动的灯光切换——把 LED 显示换成 RGB 灯光:
- 距离 > 30cm → RGB 绿色常亮
- 10cm < 距离 ≤ 30cm → RGB 黄色
- 距离 ≤ 10cm → RGB 红色
- 学生把手放在传感器前,缓缓靠近,观察灯光从绿→黄→红的三级变化
- 教师提示:这一步先不加动作和音乐,单独测试灯光是否在正确的距离切换。模块化测试——一个功能确认正常再加下一个。
第三步:完整行为——灯光 + 动作 + 音乐
害羞行为编程——安全区(> 30cm):
- RGB 绿色常亮
- 眼灯常亮
- 正常行走
- 无音乐(安静地走)
- 调试:行走延时设为多少合适?(建议 2 秒,然后循环检测距离)
害羞行为编程——害羞区(10 ~ 30cm):
- RGB 黄色
- 眼灯常亮
- 播放一个"紧张提示音"
- 设计讨论:为什么害羞区不是"停止",而是"放慢"?因为害羞不等于恐惧——小 PU 虽然紧张,但还敢慢慢走。这符合"害羞"的人设。
害羞行为编程——害怕区(< 10cm):
- RGB 红色急闪
- 眼灯快闪
- 停止移动 → 摇头(左转→右转→左转→右转,反复 3 次)
- 播放短促警报音
- 动作细节:摇头怎么实现?用"左转 → 短暂延时 → 右转 → 短暂延时"循环模拟,转角要小(约 15~10°),速度要快,看起来像紧张地左顾右盼。
第四步:测试与参数调优
- 分阶段测试:
- 阶段一:只测试灯光切换——把手从远处缓缓靠近,观察灯光是否按绿→黄→红顺序变化,切换距离是否准确
- 阶段二:加入动作——测试机器人在三个区域的行为是否正确
- 阶段三:加入音乐——测试三个区域的音效是否匹配
- 阶段四:整体联调——在地面上放置障碍物,让机器人自由行走,观察完整行为链
MakeCode 编程
距离分级显示
程序一:三区间距离检测 + 灯光切换(绿/黄/红)

程序链接:https://makecode.microbit.org/_271HL4Pdj5K5
完整害羞行为程序
程序二:害羞的小 PU——超声波距离驱动的灯光 + 动作 + 音乐完整程序

程序链接:https://makecode.microbit.org/_Wordf1HpoWHz
总结分享
各组展示"害羞的小 PU"——让同学慢慢靠近机器人,观察它的三级反应。分享调优过程和创意设计。教师结合展示总结:
传感器是机器人的"感知":人类用眼睛感知距离,小 PU 用超声波传感器感知距离。传感器把物理世界的"距离"变成了程序能懂的"数字",程序再根据数字做出不同的反应——这就是"感知→判断→行动"的完整链路;
多级判断比二元的更"像人":案例八的避障只有"走"和"停"两个状态,就像一个开关。今天的小 PU 有三个状态——安心、害羞、害怕——更像真实的情感反应。真实的智能系统都是多层次的,不是非黑即白;
阈值是"性格参数":同样是害羞,阈值设 50cm 的小 PU 比 30cm 的小 PU 更"胆小"。就像人一样——有些人的社交距离大,有些人的社交距离小。调参数其实是在"调性格";
拟人化让技术更有温度:今天我们没有说"多级条件判断算法",而是说"害羞的小 PU"——同样的程序,有了一个故事和角色,就变得有趣得多。好的产品设计也经常这样做——用拟人化让冰冷的科技变得温暖可亲。
课后延伸
挑战一:"社牛小 PU"——把害羞改成"社牛"!> 30cm 正常走,10~30cm 反而加速走向障碍物(表示热情),< 10cm 停下来"打招呼"(点头+播放欢迎音效)。思考:只需要修改哪些部分?
挑战二:"害羞恢复动画"——当障碍物从害怕区(< 10cm)慢慢移开到安全区(> 30cm)时,设计一个"恢复"动画:红灯渐变为黄灯再渐变为绿灯 + 播放上行音阶"叮~叮~叮~"。提示:用变量记住"上一次的状态",当状态从"害怕"变为"安全"时触发恢复动画。
延伸探索:查阅资料了解自动驾驶汽车的"安全距离"分级系统——它和今天的小 PU 有相似之处吗?自动驾驶在 100 米、50 米、10 米分别会做什么?对比一下。
