案例十一:情绪机器人——用灯光表达机器人的"心情"
案例简介
案例十中,我们学会了控制 PU 机器人的 4 颗 RGB LED 和 2 颗白色射灯,并完成了灯光配合动作与音乐的"三位一体"表演。但那些灯光只是"特效"——给表演增加视觉效果。
今天,我们要赋予灯光一个全新的意义:情绪。绿色代表"开心"——机器人蹦蹦跳跳、播放欢快旋律;蓝色代表"平静"——机器人缓慢点头、播放柔和音调;红色代表"生气"——机器人跺脚踢腿、播放急促鼓点……学生将用变量存储"当前情绪",用条件判断根据情绪切换机器人的动作、灯光和音乐,设计一个完整的情绪状态机系统,并通过按键让用户实时切换机器人的心情。本案例从"编程技能"走向"系统设计",让学生体验"状态驱动行为"的核心工程思想。
教学准备
| 名称 | 图示 |
|---|---|
| PU 机器人套装 | ![]() |
| 编程设备(电脑) | |
| 平整地面 | |
| 打印"情绪设计卡"(每组一份) |
硬件回顾——灯光系统与情绪表达
| 灯光类型 | 数量 | 情绪表达潜力 |
|---|---|---|
| RGB 全彩 LED | 4 颗 | 不同颜色 = 不同情绪基调;渐变/闪烁 = 情绪强度 |
| 白色射灯(眼睛灯) | 2 颗 | 常亮 = 睁眼;熄灭 = 闭眼;闪烁 = 眨眼/紧张 |
教师提示:人类通过面部表情表达情绪——眼睛、眉毛、嘴巴各有分工。PU 机器人的"眼睛"就是 2 颗白色射灯,"脸色"就是 4 颗 RGB LED。引导学生思考:电影和动画里,角色情绪是怎么通过颜色传达的?(绿色 = 安宁/成长,蓝色 = 忧伤/冷静,红色 = 愤怒/危险,黄色 = 活力/警觉,紫色 = 神秘/魔力)
课程目标
理解"状态驱动行为"的编程思想,学会用变量存储机器人当前的情绪状态;
能设计"情绪→灯光→动作→音乐"的完整映射关系,用条件判断实现不同情绪下的差异化行为;
掌握按键输入实现"情绪切换"的交互方式,让用户实时改变机器人的心情;
综合运用全部已学模块(动作、循环、条件判断、变量、音乐、灯光、按键),完成"情绪机器人"系统项目,培养系统设计与创意表达能力。
课程引入
同学们,你们有没有注意过——电影里,角色的"心情"是怎么表现出来的?比如:快乐是黄色的、忧伤是蓝色的、愤怒是红色的、恐惧是紫色的、厌恶是绿色的。颜色本身就能传达情绪!
那我们的 PU 机器人呢?它有 4 颗会变色的 RGB 灯、2 颗会亮灭的眼睛灯、还能走路和唱歌——这不就是一个现成的"表情系统"吗?
今天,我们要让机器人拥有"情绪"。它开心的时候蹦蹦跳跳、全身发绿光;生气的时候跺脚踢腿、眼睛急闪红光;累了的时候慢慢点头、蓝色灯光柔和呼吸……你按一下按键,它就"换一个心情",整个机器人的动作、灯光、音乐都跟着变——就像给它装了一个"情绪大脑"!
学习探究
第一步:设计情绪系统——从"颜色"到"完整人格"
情绪与颜色的对应关系:引导学生讨论不同颜色代表什么情绪,并达成共识:
情绪 主色调 眼灯效果 含义 😊 开心 绿色 常亮(睁大眼) 快乐、积极、充满活力 😢 伤心 蓝色 慢闪(含泪眨眼) 忧伤、低落、需要安慰 😠 生气 红色 快闪(怒目圆睁) 愤怒、急躁、充满力量 😴 困倦 黄色 偶尔闪一下(打瞌睡) 疲倦、慵懒、放松 😲 惊讶 紫色 快闪 3 次(睁大眼) 震惊、好奇、兴奋 分发"情绪设计卡":各组领取设计卡,选择 3~5 种情绪,分别填写每种情绪对应的灯光、动作和音乐:
情绪 RGB 颜色 眼灯 机器人动作 开心 绿色 常亮 蹦跳(踢腿 + 跳跃交替) 伤心 蓝色 慢闪 缓慢点头 3 次 生气 红色 快闪 跺脚踢腿 3 次 困倦 黄色 偶闪 原地不动/微微晃动 惊讶 紫色 闪 3 次 抬头 - 教师提示:动作设计要符合情绪特征——开心应该是弹跳的、轻快的;生气应该是用力踩的、急促的;困倦应该是缓慢的、慵懒的。鼓励学生用身体模仿,再转化成机器人动作。
第二步:情绪变量与状态管理
创建情绪变量:
- 创建变量
当前情绪,用数字编码不同情绪:1= 开心、2= 伤心、3= 生气、4= 困倦、5= 惊讶
- 初始值设为
1(开机默认"开心"状态)
- 创建变量
按键切换情绪:编写"当按键被按下"事件,实现情绪切换:
按键 功能 按 A 键 切换到下一种情绪(1→2→3→4→5→1 循环) 按 B 键 切换到上一种情绪(5→4→3→2→1→5 循环) - 编程逻辑:当按键 A 被按下 { 当前情绪 += 1 如果 当前情绪 > 5 { 当前情绪 = 1 } 播放切换音效 在 LED 上显示当前情绪编号 }
切换反馈:每次切换情绪时,给用户明确的视觉+听觉反馈:
- LED 显示情绪编号(1~5)
- 灯光先闪烁新情绪的颜色 2 次("预热"效果)
- 播放一声短促音效(提示切换成功)
第三步:情绪驱动的行为系统
- 核心逻辑——情绪状态机:在"无限循环"中,根据
当前情绪变量执行不同行为:
- 教师提示:这就是计算机科学中的"状态机"(State Machine)思想——系统在任何时刻都处于某一种"状态"(情绪),状态决定行为,外部事件(按键)可以切换状态。自动售货机、红绿灯、游戏角色 AI 都是状态机。
- 行为差异化要点:引导学生注意,不同情绪下同一类参数要有明显区别:
| 参数 | 开心 | 伤心 | 生气 | 困倦 | 惊讶 |
|---|---|---|---|---|---|
| 动作速度 | 快 | 很慢 | 很快 | 极慢 | 突然一闪 |
| 动作幅度 | 大 | 小 | 很大 | 极小 | 中等 |
| 延时参数 | 短(0.3s) | 长(1.5s) | 极短(0.2s) | 很长(2s) | 中等(0.5s) |
- 讨论:为什么"生气"的延时最短、"困倦"的延时最长?(情绪越激烈→动作越快→延时越短;情绪越平和→动作越慢→延时越长)
第四步:综合项目完成
- 分阶段开发:
- 阶段一:搭建"变量 + 按键切换"基础框架,按 A/B 键能切换情绪编号并在 LED 上显示,确认状态切换正常;
- 阶段二:实现 2 种情绪(如"开心"和"生气")的完整行为——灯光 + 动作 + 音乐,对比效果差异是否明显;
- 阶段三:逐步补全其余情绪的行为,确保每种情绪的灯光、动作、音乐三者风格统一;
- 阶段四:调优参数——动作幅度、延时节奏、灯光闪烁频率,让每种情绪的"性格"鲜明可辨。
- 创意加分项(鼓励有余力的小组尝试):
- 情绪渐变过渡:切换情绪时,灯光颜色不是突变,而是从旧颜色渐变到新颜色(用循环逐级改变 RGB 值)
- 随机触发:机器人每隔一段时间随机"自主"切换一次情绪(用"取随机数"积木块),模拟"心情变化"
- 情绪互动:用超声波传感器检测——有人靠近就变"开心"(表示欢迎),靠太近就变"惊讶",没人理就变"伤心"
- 情绪日记:用变量记录每种情绪持续的时间,切换时在 LED 上显示"上一种情绪持续了 X 秒"
- 项目展示准备:
- 准备 2 分钟演示:展示所有情绪的切换效果
- 说明设计思路:为什么这种情绪用这种颜色/动作/音乐?
- 分享调试中最难的部分和解决方法
MakeCode 编程
情绪切换基础
程序一:按键切换情绪 + LED 显示情绪编号

程序链接:https://makecode.microbit.org/_TeTaL7J6tFMU
情绪行为系统
程序二:情绪机器人完整程序——情绪驱动的灯光 + 动作 + 音乐状态机

程序链接:https://makecode.microbit.org/_Mj13bxe6yHJe
总结分享
各组轮流展示"情绪机器人"的全部情绪切换效果,其他组评价:哪种情绪设计得最传神?为什么?教师结合展示总结:
颜色是情绪的语言:画家用颜色表达感情,设计师用颜色引导用户行为,我们用颜色让机器人"有灵魂"。从今天起,灯光不只是"特效",更是"表达";
状态机——从"流程"到"系统":之前的程序都是"从头到尾走一遍"的流程(顺序结构),今天的程序是"根据状态做不同事"的系统(状态机)。红绿灯是状态机、游戏角色 AI 是状态机、自动售货机也是状态机;
参数里有"性格":同样是踢腿,延时 0.2 秒是"暴躁",延时 2 秒是"慵懒"。同样是闪烁,快闪是"紧张",慢闪是"平静"。编程不只是让机器人动起来,更是让它"动得有性格";
设计思维的核心是"同理心":设计情绪机器人时,你要把自己代入机器人的角色——如果我开心,我会怎么做?如果我生气呢?好的设计不是技术堆砌,而是真正理解"用户(或角色)的感受"。
课后延伸
挑战一:"情绪混合"——现实中人的情绪很少是纯粹的,往往是"又开心又紧张"或"又伤心又感动"。能不能设计一个"混合情绪"系统?比如同时显示两种颜色(2 颗 RGB 灯一种颜色,另 2 颗另一种颜色),动作也融合两种风格;
挑战二:"情绪故事"——设计一个"情绪变化剧本",让机器人按时间线自动经历情绪变化:早上开心出门→遇到困难变沮丧→解决问题变开心→天黑了变困倦。用"延时"控制每个情绪的持续时间,讲一个完整的情绪故事;
延伸探索:查阅资料了解"情感计算"(Affective Computing)——计算机科学家是如何让 AI 识别和表达人类情绪的?现在的智能音箱、虚拟助手有哪些"情感化"设计?思考:机器人真的能有"情绪"吗?程序模拟的"情绪"和人类的真实情绪有什么区别?
