跳到主要内容

案例十二:害羞的小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 想象成"安全底线"。引导学生用手比划这两个距离,建立身体直觉。

课程目标

  1. 巩固超声波传感器的使用方法,理解传感器数据作为"条件判断输入"的编程模式;

  2. 掌握多级条件判断(如果…否则如果…否则)的嵌套结构,用距离阈值划分三个行为区域;

  3. 能将超声波数据与灯光、动作、音乐模块联动,实现"不同距离→不同表情→不同动作→不同声音"的完整响应链;

  4. 理解"害羞小 PU"的设计思路——用拟人化思维把传感器数据转化为可理解的行为故事。

课程引入

同学们,你们有没有这样的经历:走在路上,远处有人朝你走过来,你其实没太在意;等那个人越走越近,大概两三步的距离,你开始觉得有点不自在——"这个人要干嘛?";如果那个人突然走到你面前半步不到,你可能吓一跳,本能地往后退一步。

这就是人类本能的"社交距离感"——距离不同,反应完全不同。

今天,我们要给小 PU 也装上这种"社交距离感"!它本来胆子就不大,当前方空荡荡的时候,它敢放心走路;一旦有东西靠近到 30 厘米以内,它就开始紧张;要是靠到 10 厘米以内——它就彻底吓坏了,停下来慌张地摇头!

我们要用超声波传感器当它的"距离感应器",配合灯光和动作,让小 PU 的"害羞"活灵活现。

学习探究

第一步:回顾超声波传感器基础

  1. 回顾案例八:打开案例八的避障程序,复习超声波传感器的使用:
    • 读取超声波距离——获取前方障碍物的距离数值(单位:厘米)
    • 如果 距离 < 10 那么…——基础的条件判断避障逻辑
  2. 明确本课升级:案例八只有一个判断阈值(10cm),小 PU 只知道"有障碍"和"没障碍"。本课要用两个阈值(30cm 和 10cm)划分三个区域,让小 PU 有三种不同的反应。

第二步:多级条件判断——三区间编程

  1. 基础练习一:三级距离显示——先用 LED 矩阵验证条件判断逻辑:

    距离范围LED 显示含义
    > 30cm勾号 ✓安全,放心走
    10 ~ 30cm感叹号 !有人靠近,注意!
    < 10cm叉号 ✗太近了!害怕!
    • 编程结构:如果 距离 > 30 那么 ✓ 否则如果 距离 > 10 那么 ! 否则 ✗
    • 关键提问:为什么不能写成三个独立的如果
      • 如果写成三个如果,当距离 = 15cm 时,第一个如果 距离 > 30不成立,但第三个如果 距离 < 10和第二个如果 距离 > 10会同时检查——需要用否则如果确保只执行一个分支
  2. 基础练习二:距离驱动的灯光切换——把 LED 显示换成 RGB 灯光:

    • 距离 > 30cm → RGB 绿色常亮
    • 10cm < 距离 ≤ 30cm → RGB 黄色
    • 距离 ≤ 10cm → RGB 红色
    • 学生把手放在传感器前,缓缓靠近,观察灯光从绿→黄→红的三级变化
    • 教师提示:这一步先不加动作和音乐,单独测试灯光是否在正确的距离切换。模块化测试——一个功能确认正常再加下一个。

第三步:完整行为——灯光 + 动作 + 音乐

  1. 害羞行为编程——安全区(> 30cm)

    • RGB 绿色常亮
    • 眼灯常亮
    • 正常行走
    • 无音乐(安静地走)
    • 调试:行走延时设为多少合适?(建议 2 秒,然后循环检测距离)
  2. 害羞行为编程——害羞区(10 ~ 30cm)

    • RGB 黄色
    • 眼灯常亮
    • 播放一个"紧张提示音"
    • 设计讨论:为什么害羞区不是"停止",而是"放慢"?因为害羞不等于恐惧——小 PU 虽然紧张,但还敢慢慢走。这符合"害羞"的人设。
  3. 害羞行为编程——害怕区(< 10cm)

    • RGB 红色急闪
    • 眼灯快闪
    • 停止移动摇头(左转→右转→左转→右转,反复 3 次)
    • 播放短促警报音
    • 动作细节:摇头怎么实现?用"左转 → 短暂延时 → 右转 → 短暂延时"循环模拟,转角要小(约 15~10°),速度要快,看起来像紧张地左顾右盼。

第四步:测试与参数调优

  1. 分阶段测试
  • 阶段一:只测试灯光切换——把手从远处缓缓靠近,观察灯光是否按绿→黄→红顺序变化,切换距离是否准确
  • 阶段二:加入动作——测试机器人在三个区域的行为是否正确
  • 阶段三:加入音乐——测试三个区域的音效是否匹配
  • 阶段四:整体联调——在地面上放置障碍物,让机器人自由行走,观察完整行为链

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 米分别会做什么?对比一下。