第 1 步:制作
它是什么?
使用新版micro:bit的触摸徽标传感器作为一个额外按键,来创建一个真正的秒表。
介绍
编程指南
学习目标
- 如何在实际项目中使用新版micro:bit的触摸徽标传感器作为额外的按键
- 如何使用变量和数学运算符来测量时间
- 如何使用数学运算符来换算单位(毫秒换算为秒)
- 什么是布尔变量,以及如何使用它们来控制程序流程
使用方法
- 将程序下载到含内置扬声器的新版micro:bit中。
- 按下按键A开始秒表计时。 当秒表计时的时候,LED显示屏上会显示一个动态跳动的心形。
- 按下B键来停止计时。 你可以随时开始或者暂停计时,时间将累计增加,就像一个真正的秒表一样。
- 按下micro:bit前面的金色触摸徽标,来显示测量到的时间(以秒为单位)。
- 按micro:bit背面的重置按键来清除计时,重设时间为0。
工作原理
- micro:bit记录开机(通电)后的时间,以毫秒为单位 (千分之一秒)。 这称为运行时间。
- 按下按键A时,名为start的变量会设置为当前的运行时间。
- 按下按键B时,新的当前运行时间会减去start记录的值,这样便得到了从秒表开始计时到当前过了多少时间。 此差值将被累加到总时间中,总时间存储在一个名为time的变量中。
- 如果按下触摸徽标,程序会在LED显示屏上显示总时间。 它将时间除以1000, 从毫秒(千分之一秒)换算为秒。 它使用整数除法运算符给出整数结果。
- 程序也使用名为running的布尔变量来控制运行。 布尔变量只能有两种值:True或False。 如果running变量值为true,表明秒表已开始计时。 如果running变量值为false,表明秒表尚未开始计时或者已经停止计时。
- 如果running变量值为true,则程序使用loop循环在LED显示屏上持续显示动态心形。
- 如果秒表已被停止,且如果running变量的值不是true时,只有按下徽标时才会显示时间。
- 程序为了防止误计数,变量time的值仅在计时开始后、且按下按键B时才会发生改变,判断方法为running变量的值为true。
所需材料
- 新版含音频设备的micro:bit(或者MakeCode模拟器)
- MakeCode或者Python编辑器
- 电池盒(选配)
第 2 步:编程
1from microbit import *
2time = 0
3start = 0
4running = False
5
6while True:
7 if running:
8 display.show(Image.HEART)
9 sleep(300)
10 display.show(Image.HEART_SMALL)
11 sleep(300)
12 else:
13 display.show(Image.ASLEEP)
14 if button_a.was_pressed():
15 running = True
16 start = running_time()
17 if button_b.was_pressed():
18 if running:
19 time += running_time() - start
20 running = False
21 if pin_logo.is_touched():
22 if not running:
23 display.scroll(int(time/1000))
第 3 步:完善
- 修改程序,以便你可以通过摇晃micro:bit来重置时间。
- 使用分数运算来替代整数运算,使计时器更准确。
- 添加一个lap time函数,以便记录当秒表处于计时状态、并且你按下触摸徽标时的时间点。 确保这不会被累加到记录总时间的time变量中。
This content is published under a Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) licence.