OLED 倒数计时器
这篇教学会使用 MakeCode 编辑 micro:bit 扩充板程序 ( EZ Start Kit+ ),透过 OLED 显示器搭配按钮开关、蜂鸣器、可变电阻,实作一个可以设定时间的倒数计时器
- 操作 EZ Start Kit+ 需要加载对应的扩充积木,请先参考:加载 EZ Start Kit+ 的程序积木。
- 更多信息:ICShop EZ Start Kit+ 官方网站。
OLED 显示倒数时间
倒数计时器的时间显示格式,通常是以 00:00:00 来表示,如果要透过 OLED 来呈现,需要先将“数字”转换成“文字”,接着在一位数的数字前方补零,就能做到同样的效果,首先定义“启动时”的一些变数,包含 h ( 时 )、m ( 分 )、s ( 秒 ) 和 start ( 是否开始,默认 -1 表示尚未开始 ) 以及 time ( 倒数计时的总秒数 )。
新增 change 函数,加入数字参数 num,负责将一位数的数字前方补零。
change 函数内容放入逻辑判断,判断如果输入的数字小于 10,就将前方补零并转换成文字,如果大于等于 10,直接将数字转换成文字。
新增 show 函数,在第一列 ( x=0, y=0 ) 的位置显示 H M S 的文字,在第二列显示对应的时间,时间使用刚刚的 change 函数转换数字为对应的文字。
新增 count 函数,加入数字参数 num,负责计算增加或减少秒数后的时间。
编辑 count 函数:
- 将 time 总秒数增加或减少 num。
- 判断如果 time 小于 0,就让 time 等于 0。
- 根据总秒数,计算出显示的秒数 ( 总秒数除以 60 的余数 )。
- 根据总秒数,计算出总共有几分钟 ( 总秒数除以 60 的商 )。
- 根据总共有几分钟,计算要显示的小时数 ( 总分钟中除以 60 的商 )。
- 根据总共有几分钟,计算要显示的分钟数 ( 总分钟除以 60 的余数 )。
- 计算出时间后,呼叫 show 函数,显示时间。
回到“启动时”积木,在最后方呼叫 count 函数,程序烧录到 micro:bit 执行后,OLED 画面就会出现 00:00:00 的文字。
使用按钮开关和可变电阻,增加或减少时间
因为 EZ Start Kit 有可变电阻,所以能使用可变电阻进行秒数调整 ( 例如一次增加 1 秒或一次增加 300 秒 ),参考“OLED 显示动态数字”文章,当调整可变电阻时,在 OLED 的右下角显示可变电阻的数字,并将可变电阻的数字,以 10 为区间做变化 ( 最小值为 1 )。
编辑按钮 A 与按钮 B 的程序,如果 start 小于 0 时 ( 尚未开始倒数 ) 按下按钮 A,呼叫 count 函数,增加可变电阻调整的秒数,按下按钮 B,呼叫 count 函数,减少可变电阻调整的秒数。
将程序烧录至 micro:bit 执行后,可以用可变电阻将左下角数值调整至 300,按下 A 按钮,倒数的时间就会出现 00:05:00 ( 五分钟 )。
倒数计时器
最后编辑倒数计时的程序:
- 同时按下 A 与 B 时,停止播放音效,并将 strat 乘以 -1 ( 就可以按一下开始,按一下暂停或停止 )
- 新增重复无限次积木:
- 如果 start 大于 0 ( 开始 ),呼叫 count 函数,传入 -1 ( 每次减少一秒 )。
- 如果 time 为 0,表示倒数计时结束,播放音效。
- 每隔一秒执行一次。
完成后,就是一个非常完整的倒数计时器 ( 如果要将数字归零,只要将可变电阻数值调整为最大,不断按下 B 按钮就可以归零 )。
范例解答
- 范例解答: EZ Start Kit+ OLED 倒数计时器
延伸练习
如果已经熟悉了 EZ Start Kit+ OLED 倒数计时器的原理,还可以尝试更多好玩的作法:
- 尝试加入“贪睡机制”,例如时间到了之后,按下 A 按钮可以多出一分钟 ( 解答 )。
微信扫码关注
抖音扫码关注