2、按键实验
大约 2 分钟
例程代码
from fpioa_manager import fm
import time
fm.register(11, fm.fpioa.GPIOHS11, force=True)
fm.register(12, fm.fpioa.GPIOHS12, force=True)
fm.register(13, fm.fpioa.GPIOHS13, force=True)
fm.register(16, fm.fpioa.GPIOHS16, force=True)
key1 = GPIO(GPIO.GPIOHS11, GPIO.IN)
key2 = GPIO(GPIO.GPIOHS12, GPIO.IN)
key3 = GPIO(GPIO.GPIOHS13, GPIO.IN)
key4 = GPIO(GPIO.GPIOHS16, GPIO.IN)
while True:
if not key1.value():
print("按键1被按下")
time.sleep_ms(500)
if not key2.value():
print("按键2被按下")
time.sleep_ms(500)
if not key3.value():
print("按键3被按下")
time.sleep_ms(500)
if not key4.value():
print("按键4被按下")
time.sleep_ms(500)
实验准备
- 通过usb线将K210与电脑连接。
- 打开CanMV IDE,执行上面的例程代码。
实验结果
- 运行之后,k210会持续检测顶部四个按键的状态,当检测到按键被按下时,会在串行终端输出按键X被按下。
例程代码讲解
- 导入运行例程所需的模块。
from maix import GPIO
from fpioa_manager import fm
import time
- 通过 fm 对象对芯片的特定引脚(11、12、13、16)进行功能配置,将它们分别映射到对应的 GPIOHS 系列功能模块上,并且采用强制注册的方式确保配置能够按照代码的需求准确完成,以便后续可以基于这些配置好的引脚功能与外部设备进行交互等操作。
fm.register(11, fm.fpioa.GPIOHS11, force=True)
fm.register(12, fm.fpioa.GPIOHS12, force=True)
fm.register(13, fm.fpioa.GPIOHS13, force=True)
fm.register(16, fm.fpioa.GPIOHS16, force=True)
- 创建了四个 GPIO 对象(key1、key2、key2、key4),分别对应芯片上不同的 GPIOHS 引脚(GPIOHS11、GPIOHS12、GPIOHS13、GPIOHS16)并将它们都配置为输入模式,以便后续能够通过这些对象去检测相应引脚的输入状态。用于判断是否有外部设备(如按键等)与这些引脚产生交互动作。
key1 = GPIO(GPIO.GPIOHS11, GPIO.IN)
key2 = GPIO(GPIO.GPIOHS12, GPIO.IN)
key3 = GPIO(GPIO.GPIOHS13, GPIO.IN)
key4 = GPIO(GPIO.GPIOHS16, GPIO.IN)
- 进入一个无限循环。
while True:
- 以检测按键1的代码为例。检测与 key1 对象关联的引脚的输入状态,当检测到该引脚为低电平(即判断为按键 1 被按下)时,在串行终端中打印“按键1被按下”,并让程序暂停执行一段时间,以实现合适的操作节奏和一定程度上避免按键抖动带来的误判问题。
if not key1.value():
print("按键1被按下")
time.sleep_ms(500)