二、智慧交通
第6课 计时红绿灯

一、任务目标
理解倒计时,能指着程序说出「哪段循环对应哪盏灯」,并改一处倒计时长度后现象跟着变。
二、我们要学什么
- 学习要点:用 for 倒计时驱动相位:先绿倒数,再黄灯短停,再红倒数
- 本课过关:能看到数字与灯色同步;黄灯不要被写进绿灯的 for 里面。
- 示例对齐:体验题对应 「2-2-1 计时红绿灯」;完整代码对应 「2-2-2 计时红绿灯」。
三、本节要点
本节给红绿灯加上倒计时。黄灯、红灯必须写在绿灯 for 的外面,否则一拍就切完。
四、解题思路
- 输入:无按键;循环自己走完绿/黄/红。
- 输出:灯色 + 点阵倒数数字。
- 生活对照:路口屏上的剩余秒。
- 验证现象:绿灯从 9 数到 0 才变黄,不会每秒都闪黄灯。
本课主要用到:点阵屏、彩灯/LED。
- 1明确任务「计时红绿灯」:数字和灯色必须同一相位。
- 2绿灯 for 里只做绿灯该做的事(亮绿灯、显示 i、延时)。
- 3黄灯 延时 0.5 秒、红灯再开一个倒数 for,都放在绿灯循环之后。
- 4载入后看会不会「绿灯没数完就变黄」。
流程示意(可对照左侧文字)
五、图形块功能讲解
下面只列出本课首次出现的 Mixly 图形块(真积木截图)。已在前面课讲过的不再重复;先认新块,再点「载入」对照拖搭。
| 图形块 | 分类 | 作用 | 本课用法 |
|---|---|---|---|
![]() | 控制 | 依次取出列表中每一项并执行循环体。 | 绿/红相位:for i in range(9, -1, -1) 倒数。 |
![]() | 控制 | 生成一段整数范围,常配合 for 循环。 | 生成 9 到 0 的倒数范围。 |
![]() | 板载执行 | 打开或关闭指定 LED。 | 完整代码可用 LED 亮灭配合相位;体验主要用板载灯颜色。 |
六、知识点讲解
计时红绿灯在灯色之外加上倒计时:点阵从 9 跳到 0,时间到了才换下一色,行人能看见还要等几秒。计数循环当秒表:for i in range(9, -1, -1) 每次减 1,把 i 显示到点阵,再短延时。循环结束,这一相位才结束。灯色在循环外(或循环里)设置,数字负责「还剩几拍」。灯与数字要同步:绿亮着时屏上应是绿灯剩余拍数;切黄、切红时数字应重新从大到小。不要出现「灯已经红了,屏上还在为绿灯倒数」。闪速版在缩短哪一段:完整示例会把黄灯或某一相位缩得很短,形成「闪速」对比。改 range 的起点或每步 延时,倒计时总时长就变。
对照与过关:range 的终点、步长写错(例如忘了 -1)会正着数或根本不进循环,灯会卡住。点阵 shows(i) 显示的是拍数,不是时钟秒;步长 0.2 秒时,10 拍大约 2 秒。能指着程序说出「哪段循环对应哪盏灯」,并改一处倒计时长度后现象跟着变。先分清「灯色相位」和「点阵倒计时」两套输出,再进编程练习对照。
七、编程练习
点「载入」打开 MixVM(board=mini_design)。默认图形化积木;起步程序与积木均来自 MixGo MINI 兴趣课程/学期2。在 Mixly 工具栏点「运行 / 停止」,「检查」做关键字核对。请先读本页「四、解题思路」与「五、图形块功能讲解」,再点载入。
兴趣课程:2-2-1 计时红绿灯.mix。载入后运行。
正在载入编程环境
正在载入 MixGo MINI 仿真编程环境…
八、课堂练习
先完成两道判断题,再完成选择题;全部选定后点「检查」。
判断:黄灯 setcolor 和 延时 可以写在绿灯倒数 for 的里面。
判断:点阵上的数字应表示当前相位还剩几秒。
绿灯倒数用哪段范围最贴近本课示例?
黄灯 0.5 秒应出现在?
九、本节小结
本课主题是倒计时相位:用计数循环驱动相位:先绿倒数,再黄灯短停,再红倒数。体验程序与完整程序相同,数字与灯色要同步。黄灯不要被写进绿灯的循环里面。


