一、秒表计时

第2课 可开始暂停计时器

任务场景:可开始暂停计时器
任务场景:可开始暂停计时器

一、任务目标

用 T2 切换「开始」开关:走表时点阵刷「计时」,暂停时数字停住。完整代码加 T3:暂停状态下才能清零。

二、我们要学什么

  • 学习要点:开关变量 + was_touched:同一颗 T2 在走表/暂停之间切换,点阵显示已过时间
  • 本课过关:按 T2 能走能停,屏上数字跟着变;能讲清「开始」和「计时」各管什么。
  • 示例对齐:体验题对应 「1-2-1 可开始暂停计时器」;完整代码对应 「1-2-2 循环使用计时器」。

三、本节要点

本节把定时器做成可暂停的秒表。体验 1-2-1:T2 取反「开始」,主循环持续刷屏;完整代码再加暂停时 T3 清零。

1读场景明确真实任务
2对要点T2 切换开始,屏上刷计时
3载入运行本课积木/代码

四、解题思路

  • 输入:T2 刚按下取反「开始」;完整代码暂停时 T3 清零。
  • 输出:点阵上的「计时」数字。
  • 生活对照:秒表的开始/暂停键。
  • 验证现象:开始为真时数字往上加;再按 T2,数字停住。

本课主要用到:点阵屏、板载按键、定时器。

  1. 1明确任务「可开始暂停计时器」:输入是 T2,输出是点阵计时。
  2. 2回调里仅当「开始」为真才计时 += 1,并声明全局变量。
  3. 3主循环侦听按键,并把「计时」送到点阵(不要只在按下的那一帧刷屏)。
  4. 4载入后先按 T2 看走停;完整代码再试暂停后 T3 归零。

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

任务:可开始暂停计时…判断传感或变量是否达到阈值…搭出主循环,让程序一直运行…把计算结果映射到可观察输出…载入官方示例后先点运行,对…

五、图形块功能讲解

下面只列出本课首次出现的 Mixly 图形块(真积木截图)。已在前面课讲过的不再重复;先认新块,再点「载入」对照拖搭。

图形块分类作用本课用法
如果…那么…
控制满足条件时执行对应分支,用于按键、传感阈值的判断。T2 刚按下时执行 开始 = not 开始。
按键刚被按下
板载传感边沿检测:这一瞬间是否刚按下(适合触发一次动作)。体验:T2 边沿触发一次切换。
取反
逻辑把真变假、假变真。把「开始」取反,同一键走停切换。
并且/或者
逻辑组合多个条件。完整代码:T3 按下并且当前没在走表才清零。

六、知识点讲解

本课把上一课的「只会自己跳」的定时器,做成真正能用的秒表:开始 / 暂停由按键切换,点阵屏显示已经过了多久。

开关变量「开始」

用一个布尔变量当秒表闸门:为真时回调里才给「计时」加一;为假时回调仍在响,但不再累加。T2 刚按下时执行 开始 = not 开始,同一颗键就能在走表和暂停之间切换。

was_touched 边沿检测

要的是「这一瞬间刚按下」而不是「一直按着」。用 was_touched 才不会按住期间每圈循环都翻转一次开关,把秒表抖成乱闪。

复位要有条件

完整做法里 T3 清零通常加「当前没在走表」:暂停时才能归零,避免跑表中途被误清。屏上显示的是变量「计时」,不是墙上的时钟。

  • 回调里必须声明全局的「计时」「开始」,否则函数内部改的是局部副本,屏上数字不会动。
  • 主循环负责:侦听按键、把「计时」送到点阵。累加仍放在定时器回调里,节拍才稳。
  • 过关:按 T2 能走能停,屏上数字跟着变;能讲清「开关变量」和「计时变量」各管什么。

先弄清「开始」如何被取反、回调何时才加一,再进编程练习对照点阵读数。

七、编程练习

点「载入」打开 MixVM(board=mixgo_zero_design)。在 Mixly 工具栏点「运行 / 停止」,「检查」做关键字核对。请先读本页「四、解题思路」与「五、图形块功能讲解」,再点载入。

1-2-1 可开始暂停计时器.mix。载入后运行。

八、课堂练习

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

  1. 判断:只要定时器在跑,「计时」就一定会一直加,与「开始」无关。

  2. 判断:T2 应用 was_touched 做边沿检测,避免按住时每圈循环都翻转开关。

  3. 体验题里点阵数字要持续刷新,shows 应放在哪里?

  4. 完整代码里 T3 清零通常还要满足什么?

九、本节小结

记住:T2 切换「开始」,回调里才加一;屏上数字跟着走或停。