5.3 触摸输入

触摸输入是一种特殊的输入接口,功能几乎与按钮一样,但是没有按钮操作的机械声音,所以触摸输入被称作无声的按钮。

BlueFi的40-Pin扩展接口完全兼容microbit,具有3个人体触摸盘,这些是另外一种特殊的输入接口。这些触摸盘不仅能感知你触摸他们, 还允许你使用鳄鱼夹电线将触摸盘与某些导体或相当于导体的材料相连接,如锡箔纸、导电不干胶、水果、蔬菜、盛有水的杯子等, 用手触摸这些导体或材料时,等同于触摸到BlueFi的触摸盘。

本节我们来了解这些触摸输入的用法。先看第一个示例:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
import time
from hiibot_bluefi.basedio import TouchPad
touch = TouchPad()
while True:
    if touch.P0:
        print("P0 be touched *")
    if touch.P1:
        print("P1 be touched ***")
    if touch.P2:
        print("P2 be touched *****")
    time.sleep(0.1)

将本程序保存到/CIRCUITPY/code.py文件中,BlueFi将立即执行该程序。你可以用右手的大拇指和食指夹住BlueFi的拓展接口的GND, 再用左手的手指去触摸P0、P1或P2触摸盘,观察LCD屏幕(控制台)上的显示信息。思考你所看到的程序运行和试验结果与程序语句之间的关联关系。

下面是代码分析:

  • 第1行,导入一个Python内建的模块“time”。
  • 第2行,从“/CIRCUITPY/lib/hiibot_bluefi/basedio.py”模块中导入TouchPad类。
  • 第3行,将导入的“TouchPad”类实例化为一个实体对象,名叫“touch”。
  • 第4行,一个无穷循环的程序块。
  • 第5行(无穷循环程序块的第1行,判断条件为True时的程序块),判断P0是否被触摸。
  • 第6行(无穷循环程序块的第2行,条件为True时的程序块的第1行),如果P0被触摸,打印特定字符串到LCD屏幕(控制台)。
  • 第7行(无穷循环程序块的第3行,判断条件为True时的程序块),判断P1是否被触摸。
  • 第8行(无穷循环程序块的第4行,条件为True时的程序块的第1行),如果P1被触摸,打印特定字符串到LCD屏幕(控制台)。
  • 第9行(无穷循环程序块的第5行,判断条件为True时的程序块),判断P2是否被触摸。
  • 第10行(无穷循环程序块的第6行,条件为True时的程序块的第1行),如果P2被触摸,打印特定字符串到LCD屏幕(控制台)。
  • 第11行(无穷循环程序块的第7行),执行time的sleep方法,参数为0.1秒。

从if语句可以看出,touch.P0(P1或P2)的返回值为布尔类型,我们可以借助REPL,以逐行输入的方式来查看它的返回值:

1
2
3
4
>>> from hiibot_bluefi.basedio import TouchPad
>>> touch = TouchPad()
>>> touch.P0
False

这是在未触摸P0时的返回值,接下来,触摸P0并输入“touch.P0”,查看结果:

1
2
>>> touch.P0
True

可以看出,触摸按键的返回值为,触摸时是True,松开时是False,结果与按钮A(B)类似。