按键
前言
按键是最简单也最常见的输入设备,很多产品都离不开按键,包括早期的iPhone,今天我们就来学习一下如何使用Python来编写按键程序。有了按键输入功能,我们就可以做很多好玩的东西了。
实验目的
编程实现按键输入检测。
实验讲解
CyberCAM板载一个按键,位于TYPE-C供电口旁边,有丝印'K'字母的就是:
从CyberCAM 引脚图可以看到按键连接到K230 引脚IO21, 没按下时输入高电平(1),按下接地输出低电平(0):
由于我们使用的是Python库,只需要知道库引脚名称即可。按键在Python库中的名称为board.KEY :
digitalio对象
在CircuitPython中可以直接使用 digitalio(数字 IO)模块编程实现IO输入从而实现按键的输入电平检测。具体介绍如下表:
构造函数
key=digitalio.DigitalInOut(pin)
参数说明:
pin开发板引脚编号。例:board.PC8
使用方法
key.direction = value
引脚定义输入/输出。value匹配值如下:
digitalio.Direction.INPUT:输入。digitalio.Direction.OUTPUT:输出。
key.pull = value
设置上下拉电阻。value匹配值如下:
digitalio.Pull.UP:上拉。digitalio.Pull.DOWN:下拉。
value = key.value
按键输入返回值。value返回值如下:
True或1:高电平。False或0:低电平。
更多用法请阅读官方文档:
https://docs.circuitpython.org/en/latest/shared-bindings/digitalio/index.html
KEY跟上一节LED一样也是用到digitalio对象,只是从输出方式给改成了输入方式,我们可以通过代码实现当检测到按键被按下时(输入低电平)点亮LED蓝灯,松开时(输入高电平)熄灭LED蓝灯。
参考代码
'''
实验名称:按键
实验平台:CyberCAM
作者:01Studio
'''
#导入相关模块
import board,time
from digitalio import DigitalInOut, Direction, Pull
#构建LED对象和初始化
led = DigitalInOut(board.LED) #定义引脚编号
led.direction = Direction.OUTPUT #IO为输出
#构建按键对象和初始化
key = DigitalInOut(board.KEY) #定义引脚编号
key.direction = Direction.INPUT #IO为输入
key.pull = Pull.UP #开启上拉电阻
state = 0 #LED引脚状态
while True:
if key.value == 0: #按键被按下
time.sleep(0.01) #10ms延时消抖
if key.value == 0: #按键被按下
state = not state #LED状态翻转
led.value = state #输出状态,点亮或熄灭板载LED蓝灯
print('KEY Press!')
while not key.value: #检测按键是否松开
pass
实验结果
在VSCode IDE中运行代码:

按下按键,LED点亮。

再次按下,LED熄灭

除了使用板载按键和LED外,你也可以自己搭建电路通过GPIO排针引脚连接,注意修改代码中的GPIO引脚编号即可。
按键的本质也是GPIO操作,除了板载的LED和按键,你也可以通过杜邦线连接到CyberCAM其它GPIO(12P排针上)使用相关功能。