这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » DIY与开源设计 » 电子DIY » [Let'sDo第3期]过程贴,按键及屏幕驱动

共1条 1/1 1 跳转至

[Let'sDo第3期]过程贴,按键及屏幕驱动

菜鸟
2024-11-24 21:34:21     打赏
按键模块

按键模块包含一个 板载的 BOOT0 引脚 和两个 外接的 A1 和 A2 引脚 作为按键输入。按键按下时,GPIO引脚会读取到低电平(0),而未按下时则读取高电平(1)。为了确保稳定的输入信号,本模块采用了BOOT上拉电阻,A1,A2下拉电阻。按键的操作会通过分压电路和开发板GPIO引脚进行处理。

硬件连接
  1. 电源要求
    模块需要通过 3.3V 电源来供电。开发板的 VBUS 引脚输出 1.8V,无法正常识别高电平,因此必须使用 3.3V 电源来保证按键模块能够正常工作。

  2. 按键引脚

    • BOOT0:板载引脚,用作按键输入。

    • A1 和 A2:外接引脚,分别用作蓝色和红色按键输入。

  3. 连接方式
    按键模块通过分压电阻与开发板GPIO引脚相连接,接线需要按照原理图正确连接。

    1732454832107511.jpg

驱动代码

以下是驱动代码,已更新为支持 BOOT0外接的 A1、A2 引脚

import time
import board
from digitalio import DigitalInOut, Direction, Pull

# 定义按键值
KEY_NULL = 0
KEY_D0   = 1
KEY_D1   = 2
KEY_D2   = 4

# 定义按键 GPIO 引脚
key0 = DigitalInOut(board.BOOT0)  # BOOT0 按键
key1 = DigitalInOut(board.A1)     # A1 按键
key2 = DigitalInOut(board.A2)     # A2 按键

# 按键初始化
def keyInit():
    key0.direction = Direction.INPUT
    key0.pull = Pull.UP  # BOOT0 使用上拉
    key1.direction = Direction.INPUT
    key1.pull = Pull.DOWN  # A1 使用下拉
    key2.direction = Direction.INPUT
    key2.pull = Pull.DOWN  # A2 使用下拉

# 按键检测
def keyDetect():
    key_value = KEY_NULL
    if key0.value == 0:  # 判断 BOOT0 是否按下
        key_value += KEY_D0
    if key1.value:       # 判断 A1 是否按下
        key_value += KEY_D1
    if key2.value:       # 判断 A2 是否按下
        key_value += KEY_D2
    return key_value

# 检查按键是否按下
def isKeyPressed():
    key_value = keyDetect()
    if key_value:  # 如果检测到按键被按下
        time.sleep(0.01)  # 防抖
        if key_value == keyDetect():  # 再次确认按键状态
            return key_value
    return 0  # 没有按键按下

# 主函数:调试检测按键
def main():
    keyInit()  # 初始化按键
    print("开始按键调试,按下按键查看状态...")
    while True:
        key_value = isKeyPressed()  # 获取按键状态

        # 打印按键状态
        if key_value == KEY_NULL:
            print("没有按键按下")
        else:
            print(f"按下的按键:{key_value}")

        time.sleep(0.5)  # 每隔0.5秒检查一次

# 启动主函数
main()

1732455125209181.png

注意事项
  1. 引脚连接:确保 BOOT0、A1 和 A2 按键的连接正确。每个按键都通过分压电路与GPIO引脚连接,在按下时通过引脚读取低电平(1),未按下时为高电平(0)。

    由于外接按键正负极接反导致无论A1,A2上下拉都是默认输出1,这点错误要避免。

由于LCD模块比较简单,只需要引用库就能使用,这里就不进一步介绍。





关键词: 按键     过程    

共1条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]