按钮是一种常用的电路控制元件,用来接通或断开电路,以达到控制电动机或其他电气设备运行的目的。
按钮分为常开按钮(开关触点断开的按钮)、常闭按钮(开关触点接通的按钮)、常开常闭按钮(开关触点既有接通也有断开的按钮)和动作点击按钮。例如常见的按钮主要有急停按钮、启动按钮、停止按钮、组合按钮(键盘)、点动按钮、复位按钮。
micro:bit最明显的输入方式是按钮,通过MicroPython程序编写可以用特定方式对按钮A和B以及它们的组合进行响应。
【例2.7】 按钮计数。
程序运行后,micro:bit睡眠1×10 4 ms(10s),在此期间,不断按下按钮A,10s时间后,LED点阵滚动显示按钮A被按下的次数。
编写程序,代码如下:
from microbit import * sleep(10000) display.scroll(str(button_a.get_presses()))
程序解析如下。
(1)程序中的暂停(延迟),是指使用一段空循环消耗处理器的时间,即处理器在这段时间什么事情都不做,从而达到延迟的目的。sleep()函数的作用是让micro:bit睡眠一定量的时间(单位:毫秒)。如果想让程序暂停,可以通过这种方法实现。
(2)开发板上的两个按钮分别称为button_a和button_b。程序中通过button_a对象的get_presses方法,获取在休眠状态下按钮A被按压次数的数字。
(3)由于get_presses只能够提供数值,而display.scroll只显示字符,因此需要将数值转换为字符串,str()函数可以做到这一点(str表示string,它可以将其他信息转换成字符串)。
(4)在此期间,若按钮A被按下10次,Python实现第三行代码的过程如下。
①Python理解了完整的行后,获取了get_presses的值:display.scroll(str(button_a.get_presses()))。
②Python知道按钮被按下的次数后,将数值转换成字符串:display.scroll(str(10))。
③最终,Python得知通过显示器应滚动显示的内容:display.scroll("10")。
get_presses()的作用是返回按钮被按下的总次数,并在返回前重置该数值为0。
按钮的方法还有is_pressed()和was_pressed(),它们经常作为判断条件。
is_pressed()的作用是若指定按钮被按下则返回True,否则返回False。
was_pressed()的作用是表示自设备启动或上次调用此方法以来该按钮是否曾被按下,“是”返回True,“否”返回False。
在“睡眠”时间内按5次“按钮计数”的结果如图2.7所示。
图2.7 按钮计数的结果
(1)如何用display.show编写程序?
(2)对比两种方法的效果。