Skip to content

活动

触摸秒表

中级 | MakeCode, Python | LED显示器, 按钮, 触摸标志 | 变量, 布尔逻辑, 测量, 算数运算符, 输入/输出

第 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变量中。