跳到主要内容

案例十一:情绪机器人——用灯光表达机器人的"心情"

案例简介

案例十中,我们学会了控制 PU 机器人的 4 颗 RGB LED 和 2 颗白色射灯,并完成了灯光配合动作与音乐的"三位一体"表演。但那些灯光只是"特效"——给表演增加视觉效果。

今天,我们要赋予灯光一个全新的意义:情绪。绿色代表"开心"——机器人蹦蹦跳跳、播放欢快旋律;蓝色代表"平静"——机器人缓慢点头、播放柔和音调;红色代表"生气"——机器人跺脚踢腿、播放急促鼓点……学生将用变量存储"当前情绪",用条件判断根据情绪切换机器人的动作、灯光和音乐,设计一个完整的情绪状态机系统,并通过按键让用户实时切换机器人的心情。本案例从"编程技能"走向"系统设计",让学生体验"状态驱动行为"的核心工程思想。

教学准备

名称图示
PU 机器人套装
编程设备(电脑)
平整地面
打印"情绪设计卡"(每组一份)

硬件回顾——灯光系统与情绪表达

灯光类型数量情绪表达潜力
RGB 全彩 LED4 颗不同颜色 = 不同情绪基调;渐变/闪烁 = 情绪强度
白色射灯(眼睛灯)2 颗常亮 = 睁眼;熄灭 = 闭眼;闪烁 = 眨眼/紧张

教师提示:人类通过面部表情表达情绪——眼睛、眉毛、嘴巴各有分工。PU 机器人的"眼睛"就是 2 颗白色射灯,"脸色"就是 4 颗 RGB LED。引导学生思考:电影和动画里,角色情绪是怎么通过颜色传达的?(绿色 = 安宁/成长,蓝色 = 忧伤/冷静,红色 = 愤怒/危险,黄色 = 活力/警觉,紫色 = 神秘/魔力)

课程目标

  1. 理解"状态驱动行为"的编程思想,学会用变量存储机器人当前的情绪状态;

  2. 能设计"情绪→灯光→动作→音乐"的完整映射关系,用条件判断实现不同情绪下的差异化行为;

  3. 掌握按键输入实现"情绪切换"的交互方式,让用户实时改变机器人的心情;

  4. 综合运用全部已学模块(动作、循环、条件判断、变量、音乐、灯光、按键),完成"情绪机器人"系统项目,培养系统设计与创意表达能力。

课程引入

同学们,你们有没有注意过——电影里,角色的"心情"是怎么表现出来的?比如:快乐是黄色的、忧伤是蓝色的、愤怒是红色的、恐惧是紫色的、厌恶是绿色的。颜色本身就能传达情绪!

那我们的 PU 机器人呢?它有 4 颗会变色的 RGB 灯、2 颗会亮灭的眼睛灯、还能走路和唱歌——这不就是一个现成的"表情系统"吗?

今天,我们要让机器人拥有"情绪"。它开心的时候蹦蹦跳跳、全身发绿光;生气的时候跺脚踢腿、眼睛急闪红光;累了的时候慢慢点头、蓝色灯光柔和呼吸……你按一下按键,它就"换一个心情",整个机器人的动作、灯光、音乐都跟着变——就像给它装了一个"情绪大脑"!

学习探究

第一步:设计情绪系统——从"颜色"到"完整人格"

  1. 情绪与颜色的对应关系:引导学生讨论不同颜色代表什么情绪,并达成共识:

    情绪主色调眼灯效果含义
    😊 开心绿色常亮(睁大眼)快乐、积极、充满活力
    😢 伤心蓝色慢闪(含泪眨眼)忧伤、低落、需要安慰
    😠 生气红色快闪(怒目圆睁)愤怒、急躁、充满力量
    😴 困倦黄色偶尔闪一下(打瞌睡)疲倦、慵懒、放松
    😲 惊讶紫色快闪 3 次(睁大眼)震惊、好奇、兴奋
  2. 分发"情绪设计卡":各组领取设计卡,选择 3~5 种情绪,分别填写每种情绪对应的灯光、动作和音乐:

    情绪RGB 颜色眼灯机器人动作
    开心绿色常亮蹦跳(踢腿 + 跳跃交替)
    伤心蓝色慢闪缓慢点头 3 次
    生气红色快闪跺脚踢腿 3 次
    困倦黄色偶闪原地不动/微微晃动
    惊讶紫色闪 3 次抬头
    • 教师提示:动作设计要符合情绪特征——开心应该是弹跳的、轻快的;生气应该是用力踩的、急促的;困倦应该是缓慢的、慵懒的。鼓励学生用身体模仿,再转化成机器人动作。

第二步:情绪变量与状态管理

  1. 创建情绪变量

    • 创建变量当前情绪,用数字编码不同情绪:
      • 1 = 开心、2 = 伤心、3 = 生气、4 = 困倦、5 = 惊讶
    • 初始值设为 1(开机默认"开心"状态)
  2. 按键切换情绪:编写"当按键被按下"事件,实现情绪切换:

    按键功能
    按 A 键切换到下一种情绪(1→2→3→4→5→1 循环)
    按 B 键切换到上一种情绪(5→4→3→2→1→5 循环)
    • 编程逻辑:当按键 A 被按下 { 当前情绪 += 1 如果 当前情绪 > 5 { 当前情绪 = 1 } 播放切换音效 在 LED 上显示当前情绪编号 }
  3. 切换反馈:每次切换情绪时,给用户明确的视觉+听觉反馈:

  • LED 显示情绪编号(1~5)
  • 灯光先闪烁新情绪的颜色 2 次("预热"效果)
  • 播放一声短促音效(提示切换成功)

第三步:情绪驱动的行为系统

  1. 核心逻辑——情绪状态机:在"无限循环"中,根据当前情绪变量执行不同行为:
  • 教师提示:这就是计算机科学中的"状态机"(State Machine)思想——系统在任何时刻都处于某一种"状态"(情绪),状态决定行为,外部事件(按键)可以切换状态。自动售货机、红绿灯、游戏角色 AI 都是状态机。
  1. 行为差异化要点:引导学生注意,不同情绪下同一类参数要有明显区别:
参数开心伤心生气困倦惊讶
动作速度很慢很快极慢突然一闪
动作幅度很大极小中等
延时参数短(0.3s)长(1.5s)极短(0.2s)很长(2s)中等(0.5s)
  • 讨论:为什么"生气"的延时最短、"困倦"的延时最长?(情绪越激烈→动作越快→延时越短;情绪越平和→动作越慢→延时越长)

第四步:综合项目完成

  1. 分阶段开发
  • 阶段一:搭建"变量 + 按键切换"基础框架,按 A/B 键能切换情绪编号并在 LED 上显示,确认状态切换正常;
  • 阶段二:实现 2 种情绪(如"开心"和"生气")的完整行为——灯光 + 动作 + 音乐,对比效果差异是否明显;
  • 阶段三:逐步补全其余情绪的行为,确保每种情绪的灯光、动作、音乐三者风格统一;
  • 阶段四:调优参数——动作幅度、延时节奏、灯光闪烁频率,让每种情绪的"性格"鲜明可辨。
  1. 创意加分项(鼓励有余力的小组尝试):
  • 情绪渐变过渡:切换情绪时,灯光颜色不是突变,而是从旧颜色渐变到新颜色(用循环逐级改变 RGB 值)
  • 随机触发:机器人每隔一段时间随机"自主"切换一次情绪(用"取随机数"积木块),模拟"心情变化"
  • 情绪互动:用超声波传感器检测——有人靠近就变"开心"(表示欢迎),靠太近就变"惊讶",没人理就变"伤心"
  • 情绪日记:用变量记录每种情绪持续的时间,切换时在 LED 上显示"上一种情绪持续了 X 秒"
  1. 项目展示准备
  • 准备 2 分钟演示:展示所有情绪的切换效果
  • 说明设计思路:为什么这种情绪用这种颜色/动作/音乐?
  • 分享调试中最难的部分和解决方法

MakeCode 编程

情绪切换基础

程序一:按键切换情绪 + LED 显示情绪编号

程序链接:https://makecode.microbit.org/_TeTaL7J6tFMU

情绪行为系统

程序二:情绪机器人完整程序——情绪驱动的灯光 + 动作 + 音乐状态机

程序链接:https://makecode.microbit.org/_Mj13bxe6yHJe

总结分享

各组轮流展示"情绪机器人"的全部情绪切换效果,其他组评价:哪种情绪设计得最传神?为什么?教师结合展示总结:

  • 颜色是情绪的语言:画家用颜色表达感情,设计师用颜色引导用户行为,我们用颜色让机器人"有灵魂"。从今天起,灯光不只是"特效",更是"表达";

  • 状态机——从"流程"到"系统":之前的程序都是"从头到尾走一遍"的流程(顺序结构),今天的程序是"根据状态做不同事"的系统(状态机)。红绿灯是状态机、游戏角色 AI 是状态机、自动售货机也是状态机;

  • 参数里有"性格":同样是踢腿,延时 0.2 秒是"暴躁",延时 2 秒是"慵懒"。同样是闪烁,快闪是"紧张",慢闪是"平静"。编程不只是让机器人动起来,更是让它"动得有性格";

  • 设计思维的核心是"同理心":设计情绪机器人时,你要把自己代入机器人的角色——如果我开心,我会怎么做?如果我生气呢?好的设计不是技术堆砌,而是真正理解"用户(或角色)的感受"。

课后延伸

  • 挑战一:"情绪混合"——现实中人的情绪很少是纯粹的,往往是"又开心又紧张"或"又伤心又感动"。能不能设计一个"混合情绪"系统?比如同时显示两种颜色(2 颗 RGB 灯一种颜色,另 2 颗另一种颜色),动作也融合两种风格;

  • 挑战二:"情绪故事"——设计一个"情绪变化剧本",让机器人按时间线自动经历情绪变化:早上开心出门→遇到困难变沮丧→解决问题变开心→天黑了变困倦。用"延时"控制每个情绪的持续时间,讲一个完整的情绪故事;

  • 延伸探索:查阅资料了解"情感计算"(Affective Computing)——计算机科学家是如何让 AI 识别和表达人类情绪的?现在的智能音箱、虚拟助手有哪些"情感化"设计?思考:机器人真的能有"情绪"吗?程序模拟的"情绪"和人类的真实情绪有什么区别?