二、智慧交通

第8课 受控红绿灯

任务场景:受控红绿灯
任务场景:受控红绿灯

一、任务目标

理解外部信号改写时序,能口述默认灯态、按键后每一段灯色,以及为什么要用 「按键刚被按下」 而不是一直检测按下。

二、我们要学什么

  • 学习要点:外部按键改写时序:「按键刚被按下」 插入一轮让行,按住不会连放好几轮
  • 本课过关:能完成:没按键时保持默认;按一下能完整走完让行再恢复。
  • 示例对齐:体验题对应 「2-4-1 受控红绿灯」;完整代码对应 「2-4-2 有约束的受控红绿灯」。

三、本节要点

本节抓住「平时维持、按键插入」。不是无信号时乱切,而是行人按钮改写当前灯态。

1读场景明确真实任务
2对要点1号按键 插入让行时序
3载入运行兴趣课程积木/代码

四、解题思路

  • 输入:1号按键 刚按下。
  • 输出:两盏灯的颜色组合。
  • 生活对照:行人过街按钮。
  • 验证现象:不按则保持默认;按一下走完让行再恢复,不会连放多轮。

本课主要用到:彩灯/LED、板载按键。

  1. 1明确任务「受控红绿灯」:默认态 vs 触发态。
  2. 2主循环先维持车辆通行、行人等待的默认颜色。
  3. 31号按键 「按键刚被按下」 后执行一小段固定切换,再回到循环。
  4. 4载入后先看没按是否稳住,再按一下对照让行。

流程示意(可对照左侧文字)

任务:受控红绿灯主循环先维持车辆通行、行人等待的默认颜色1号按键 「按键刚被按下」 后执行一小段固定切换运行后对照现象

五、图形块功能讲解

本课用到的 Mixly 图形块均已在前面的课讲过。请直接对照编程练习搭积木;若有遗忘,回到该积木首次出现的课页复习。

六、知识点讲解

受控红绿灯允许外部信号改写时序:平时维持一组灯态,行人一按按钮,才插入「让行」那一段绿/黄/红。默认态 vs 触发态:主循环里先保持「车辆方向通行、行人等待」的默认颜色。检测到 1号按键 刚按下,才执行一小段固定的切换脚本(例如行人侧变绿若干秒,再黄,再回到默认)。没按键时不要自动把行人放行。用边沿触发一次放行:「按键刚被按下」 保证一次按下只插入一轮时序,按住不放不会连放好几轮。这和秒表课的「按一下切换」是同一类边沿思维。约束:不能随时打断:完整示例会加约束——例如正在黄灯过渡时忽略新的按键,或必须回到默认态才能再次受理。否则两路灯可能同时变绿。

对照与过关:输入是按键,输出是两盏灯的颜色组合;验证时既要看「没按是否保持默认」,也要看「按一下是否完整走完让行再恢复」。延时 写在触发分支里,按键后主循环会卡住这一段——这是简单做法。更精细的做法以后再用状态机,本课先把现象做对。能口述默认灯态、按键后每一段灯色,以及为什么要用 「按键刚被按下」 而不是一直检测按下。先分清「平时维持」和「按键插入一段时序」,再进编程练习对照两盏灯。

七、编程练习

点「载入」打开 MixVM(board=mini_design)。默认图形化积木;起步程序与积木均来自 MixGo MINI 兴趣课程/学期2。在 Mixly 工具栏点「运行 / 停止」,「检查」做关键字核对。请先读本页「四、解题思路」与「五、图形块功能讲解」,再点载入。

兴趣课程:2-4-1 受控红绿灯.mix。载入后运行。

八、课堂练习

先完成两道判断题,再完成选择题;全部选定后点「检查」。

  1. 判断:没有按键时灯也应像第 5 课那样不停绿黄红循环。

  2. 判断:用 「按键刚被按下」 保证一次按下只插入一轮时序。

  3. 本课的输入是?

  4. 验证时应同时观察哪两件事?

九、本节小结

本课主题是按键让行:外部按键改写时序:用「按键刚被按下」插入一轮让行,按住不会连放好几轮。体验程序没按键时保持默认,按一下走完让行再恢复;完整程序给让行加上约束。