电子手表
电子手表
让手表显示时间。让我们一起来给你的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上显示时间。谁知道你接下来会完成什么呢?只有时间会给出答案!