6. 检测面板按键

好的,至少我现在已经会创建一些代码让板子做一些事情了。 那么,接下来我们来处理设备的输入,比如按键输入吧。 首先,我们要知道两个概念, Output 输出是表示从设备输出到外围,Input 输入是处理设备过程中接受到的一些信息

那么在板子上最明显的输入便是二个按钮,灯板左右两个 A 和 B 按键,如果我们能想得知板子按键按下了吗,或者是按过吗,又或是,按了几次,要如何做到呢?

其实这并不难,倒不如说很容易做到。

from microbit import *

sleep(2000)

display.scroll(str(button_a.get_presses()))

这段代码运行时候会先暂停两秒,然后你才开始按键,此时将会滚动显示你按下 A 的次数。就是这样简单,虽然这些代码并没有什么用,但还是提供了些许新思路,让你可以去想象更多控制硬件的方式。

  1. 这个 sleep
    函数可以让板子暂停些许时间,暂停的时间为方块数字的毫秒,如果你想在你的程序某个时候暂停,就按照上面那样写个 sleep 函数就行。
  2. button_a 对象允许你通过 get_presses 方法 获取一个时间内被按的次数

然后一旦 get_presses 获取到了值,将其传递到 display.sroll 中,这个方法只能接受字符型,所以我们需要通过 str 函数将 整型转换成字符串 所以针对 python 原理我们做了一个假设,进行更深层次的理解 如果你在 10 秒内按了 10 次,那么上面代码的第三行怎么执行呢? 由于 python 是从最内层开始执行代码的。 所以:

display.scroll(str(button_a.get_presses()))

当然变成这样就会显示你按下的按键次数(一段时间里,可指定)。

display.scroll(str(10))

现在python已经知道按了多少下了,所以接下来将里面的变成字符串,记注一定是最内层优先执行,即先执行 str(“10”)。

display.scroll(str("10"))

6.1. 循环处理事件

如果你想要板子去响应一个按钮按压事件,那么你就需要用 if 进行判断按钮是否按压,而且这个判断方法建议放在一个死循环中。 例如:

while True:
    # Do stuff

所以我们可以构筑一个很简单的代码

from microbit import *

while True:
    if button_a.is_pressed():
        display.show(Image.HAPPY)
        display.clear()

此时可以按下按键 A 显示我们之前学习到的 Image ,这便是所谓的学以致用了。