电子手表
电子手表
让手表显示时间。让我们一起来给你的micro:bit编写一个真正的电子手表的程序!
时长:~20分钟
设置时间变量
我们需要一些变量来追踪时间以及代表一些其他事项。
- 在工具栏的基本中,将一个
开机时执行拖拽到代码编辑区域。 - 好了,在变量选项中,点击
设置变量。将这个变量命名为hours。拖拽出一个将 设置为积木块,点击下拉箭头将变量名称改为hours。将这个变量放入开机时执行积木块下方。 - 重复上一个步骤4次,分别设置名为
minutes、time、adjust和ampm的变量。 - 现在,把
将 设置为积木块的变量名设置为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’。
- 在输入选项中,拖拽出一个
当按钮被按下积木块,并将其放入代码编辑区域中。将按钮改为A+B。 - 拖拽出一个
将 设置为,将它放入当按钮被按下积木块的下方,并将变量改为ampm。 从逻辑中,拖拽出一个非,用来替换0。 - 从变量选项中,选择一个
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小时的格式的时候,我们需要编写小时数调整的代码。
- 找到我们之前编写过的
当振动积木块。将它拖拽出来,把它下面的积木块都拖动到垃圾箱内。我们重新开始编程。 - 将一个
将 设置为积木块拖拽出来,放入到当震动的下方。将变量名改为adjust。将右侧的0改为变量hours。 - 拖拽出一个
如果 则积木块,并将它放入到将 设置为的下方。用变量ampm替换条件。 - 拖拽出一个
如果 则 否则积木块,并将它放入到第一个如果 则的则部分。将条件改为0 < 0。将左侧的0改为变量hours,右侧的0改为12。将<改为>。 5.拖拽出另一个将 设置为积木块,并将它放入到第二个如果 则 否则积木块的则部分。将变量名改为adjust。在数学选项中,拖拽出一个0 - 0,用于替换将 设置为积木块中的0。将左侧的0改为变量hours,将右侧的0改为12。 - 拖拽出另一个
如果 则积木块,将其放在否则内。将它的条件改为0 = 0。用变量hours替换左侧的0。 - 在最后一个
如果 则积木块钟,放置一个将 设置为积木块。将变量名改为adjust,并将它的值设置为12。

继续编程
现在,我们需要将时钟和分钟设置的代码结合,组成手表上显示的文本。
- 在
当振动的底部,插入一个将 设置为积木块。将变量名改为time。从文本中,拖拽出一个组合字符串,将它连接到将 设置为。 - 选中最后一个
将 设置为,右击积木块,选择菜单中的复制,将最后一个将 设置为复制3次。然后,将复制后的积木块分别放到各自的下方,这样4个积木块就堆栈到一起了。 - 在第一个
将 设置为,用变量adjust替换掉组合字符串中的第二个""。 - 在第二个
将 设置为,用变量time替换掉组合字符串中的第一个""。将组合字符串中的第二个字符串改为":"。 - 在第三个
将 设置为,用变量time替换掉组合字符串中的第一个""。将组合字符串中的第二个字符串改为数学中的除法运算符。将左侧的0改为变量minutes,右侧的0改为10。 - 在第四个
将 设置为,用变量time替换掉组合字符串中的第一个""。将组合字符串的第二个字符改为数学中的 to a的余数。将左侧的0改为变量minutes,右侧的0改为10。

继续编程
现在,我们的代码快要完成了。这里如果我们用的是12小时的格式的话,我们需要添加‘AM’或‘PM’。那么,最后,显示完整的时间字符串。
- 在
当振动的底部放入一个如果 则积木块。用变量ampm替换条件true。 - 在这个
如果 则积木块中插入一个如果 则 否则积木块。将一个0 < 0作为条件,把左侧的0改为变量hours,右侧的0改为11。将<改为>。 - 在
则中放入一个将 设置为积木块,把它的变量名改为time,并连接一个组合字符串。让组合字符串的第一部分为变量time,第二个部分为文本"PM"。 - 执行上一步的操作,但是把
将 设置为积木块放在否则下方。这次将组合字符串的第二个部分改为"AM"。 - 最后,在
当振动的底部放入一个从基本中拖拽出来的显示字符串。将字符串"Hello!"改为变量time。

完成
哇,太棒了!手表的代码已经编写好了,准备试一试吧。点击 下载按钮,将你的代码下载到micro:bit上。当你摇晃它的时候,micro:bit就会显示当前的时间。
现在,它显示了24小时的格式:时间显示从0到23,再返回到0。同时按下按钮A+B,将其改为12小时的格式:时间显示从12到12 ,其中还有1~11。在它的末尾有"AM"或"PM"。
如果要设置当前的时间,你可以使用按钮A和B。每次按下按钮A,当前的时间增加1小时。每次按下按钮B,当前的时间增加1分钟。
现在,你可以在你的micro:bit上显示时间。谁知道你接下来会完成什么呢?只有时间会给出答案!