Skip to content

电子手表

电子手表

让手表显示时间。让我们一起来给你的micro:bit编写一个真正的电子手表的程序!

时长:~20分钟

设置时间变量

我们需要一些变量来追踪时间以及代表一些其他事项。

  • 在工具栏的基本中,将一个开机时执行拖拽到代码编辑区域。
  • 好了,在变量选项中,点击设置变量。将这个变量命名为hours。拖拽出一个将 设置为积木块,点击下拉箭头将变量名称改为 hours。将这个变量放入开机时执行积木块下方。
  • 重复上一个步骤4次,分别设置名为minutestimeadjustampm的变量。
  • 现在,把将 设置为 积木块的变量名设置为 time,去到 文本选项,拖拽出一个" "积木块用来替换0
  • 对于变量ampm,将这个积木块中的 0改为逻辑选项中的false

显示时间

让我们试着在micro:bit屏幕上显示时间。现在我们还没有记录时间,但是我们可以先试着让我们的手表显示一些东西。

  • 输入类目中,拖拽出一个当振动积木块。我们将让手表在震动的时候显示时间。
  • 再次拖拽出一个将 设置为,并将它放置在当振动的下方。将变量名称改为time
  • 文本中的一个组合字符串替换0。拖拽出另一个组合字符串,将其放在你拖拽出的第一个组合字符串的下方。
  • 将第一个组合字符串中的" "改为变量hours。将第二个组合字符串的第一个凹槽中的文本更改为":",第二个凹槽则改为变量minutes
  • 最后,在将 设置为的下方插入一个显示字符串。将里面的文本切换成变量time
  • 将代码下载到你的micro:bit中,并摇晃micro:bit。你看到了LED屏幕上显示的时间“0:0”吗?

用按钮设置时间

我们需要用一种方法来设置手表上的时间。我们将使用按钮来设置当前的时间。一个按钮设置时钟,另一个按钮设置分钟。

设置时钟

让我们找到一种方法来设置手表的时钟吧。

在输入中,找到当按钮被按下,并将其放入到代码编辑区域中。 从逻辑选项中,拖拽出一个如果为 则 否则积木块,并把它放在当按钮被按下的下方。 从同一个逻辑选项中,拖拽出一个0 < 0,并用它来替换false条件。 将条件左侧的0改为变量hours,将右侧的0改为23。这将我们的时间统计限制在23小时以内。 在的部分,放置一个 以 幅度更改。从下拉菜单中选择变量名hours。 在否则的部分,放置一个将 设置为。从下拉菜单中,选择变量名hours,右侧的0保持不变。

设置分钟

设置分钟和设置时钟基本上都一样,但是有少数的变动。

简单地说,在当按钮被按下积木块上点击鼠标右键,选择菜单中的复制选项。这样可以复制出一个一模一样的积木块。 在新的当按钮被按下积木块上,将按钮改成B。 将每个hours的变量名改为minutes。将if条件中的23改为59。这就是我们分钟数统计的限制。

选择12小时或24小时

时间通常以12小时或者24小时的格式显示。我们将使用另一个按钮来选择时间显示的格式。如果选择12小时的格式,则在末尾添加一个‘AM’或者‘PM’。

  1. 输入选项中,拖拽出一个当按钮被按下积木块,并将其放入代码编辑区域中。将按钮改为A+B
  2. 拖拽出一个将 设置为,将它放入当按钮被按下积木块的下方,并将变量改为ampm。 从逻辑中,拖拽出一个,用来替换0
  3. 变量选项中,选择一个ampm,并把它连接到的右侧。这可以使我们的时间格式在12小时和24小时之间来回切换。

制作计时器

一只手表通常有3个部分:显示屏、设置和计时器。我们需要用一种方式使时钟和分钟保持正确的时间显示。让我们一起来给计时器编程吧。

基本选项中,将一个无限循环积木块拖拽到代码编辑区域。 同样在基本选项中,拖拽出一个暂停,并把它放入到循环中。将时间从100改为60000。这个时间是按毫秒算,所以我们想以每60,000毫秒来统计分钟数。 在暂停的下方,放置一个如果 则 否则的积木块。将if中的条件改为0 < 0。 将左侧的0替换成变量minutes,右侧的0替换成59。 将一个以 幅度修改放入到的部分。将变量名改为分钟。 拖拽一个将 设为,并将其放入到否则。再次,将变量名改为minutes

继续编程

现在,拖拽出另一个如果 则 否则,并将它放在第一个内部的将 设为的下方。 在第二个如果中,放置一个0 < 0 作为条件。将左侧的0替换成变量hours。将右侧的0替换成23。我们统计小时数到23,直到我们返回0(午夜)。 将一个以 幅度修改放入到第二个。将变量名改为hours。 拖拽出一个将 设为,并把它放入到第二个否则的部分。再次,将变量名改为hours。好了,计时器准备开始工作了。

摇晃并显示时间

我们将返回之前我们编写的时间显示的代码部分。我们将让它显示真正的时间。这一步将会很忙,但是我们还是会把它完成。 首先,当我们使用12小时的格式的时候,我们需要编写小时数调整的代码。

  1. 找到我们之前编写过的当振动积木块。将它拖拽出来,把它下面的积木块都拖动到垃圾箱内。我们重新开始编程。
  2. 将一个将 设置为积木块拖拽出来,放入到当震动的下方。将变量名改为adjust。将右侧的0改为变量hours
  3. 拖拽出一个如果 则积木块,并将它放入到将 设置为的下方。用变量ampm替换条件。
  4. 拖拽出一个如果 则 否则积木块,并将它放入到第一个如果 则部分。将条件改为0 < 0。将左侧的0改为变量hours ,右侧的0改为12。将< 改为 >。 5.拖拽出另一个将 设置为积木块,并将它放入到第二个如果 则 否则积木块的部分。将变量名改为adjust。在数学选项中,拖拽出一个 0 - 0,用于替换将 设置为积木块中的0。将左侧的0改为变量hours,将右侧的0改为12
  5. 拖拽出另一个如果 则积木块,将其放在否则内。将它的条件改为0 = 0。用变量hours替换左侧的0
  6. 在最后一个如果 则积木块钟,放置一个将 设置为积木块。将变量名改为adjust,并将它的值设置为12

继续编程

现在,我们需要将时钟和分钟设置的代码结合,组成手表上显示的文本。

  1. 当振动的底部,插入一个将 设置为积木块。将变量名改为time。从文本中,拖拽出一个组合字符串,将它连接到将 设置为
  2. 选中最后一个将 设置为,右击积木块,选择菜单中的复制,将最后一个将 设置为复制3次。然后,将复制后的积木块分别放到各自的下方,这样4个积木块就堆栈到一起了。
  3. 在第一个将 设置为,用变量adjust替换掉组合字符串中的第二个""
  4. 在第二个将 设置为,用变量time替换掉组合字符串中的第一个""。将组合字符串中的第二个字符串改为":"
  5. 在第三个将 设置为,用变量time替换掉组合字符串中的第一个""。将组合字符串中的第二个字符串改为数学中的除法运算符。将左侧的0改为变量minutes,右侧的0改为10
  6. 在第四个将 设置为,用变量time替换掉组合字符串中的第一个""。将组合字符串的第二个字符改为数学中的 to a 的余数。将左侧的0改为变量minutes,右侧的0改为10

继续编程

现在,我们的代码快要完成了。这里如果我们用的是12小时的格式的话,我们需要添加‘AM’或‘PM’。那么,最后,显示完整的时间字符串。

  1. 当振动的底部放入一个如果 则积木块。用变量ampm替换条件true
  2. 在这个如果 则积木块中插入一个如果 则 否则积木块。将一个0 < 0作为条件,把左侧的0改为变量hours,右侧的0改为11。将<改为>
  3. 中放入一个将 设置为积木块,把它的变量名改为time,并连接一个组合字符串。让组合字符串的第一部分为变量time,第二个部分为文本"PM"
  4. 执行上一步的操作,但是把将 设置为积木块放在否则下方。这次将组合字符串的第二个部分改为"AM"
  5. 最后,在当振动的底部放入一个从基本中拖拽出来的显示字符串。将字符串"Hello!"改为变量time

完成

哇,太棒了!手表的代码已经编写好了,准备试一试吧。点击 下载按钮,将你的代码下载到micro:bit上。当你摇晃它的时候,micro:bit就会显示当前的时间。

现在,它显示了24小时的格式:时间显示从023,再返回到0。同时按下按钮A+B,将其改为12小时的格式:时间显示从1212 ,其中还有1~11。在它的末尾有"AM""PM"

如果要设置当前的时间,你可以使用按钮AB。每次按下按钮A,当前的时间增加1小时。每次按下按钮B,当前的时间增加1分钟。

现在,你可以在你的micro:bit上显示时间。谁知道你接下来会完成什么呢?只有时间会给出答案!