You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

基于Raspberry Pi 3实现矩阵键盘输入数字并在LCD屏显示的问题求助

解决方案

以下是修改后可实现连续数字输入并显示到2004LCD的完整代码:

#!/usr/bin/python3
import time
import sys
import signal

# 原有的库路径导入保留
sys.path.insert(1,"C:/Users/Administrator/Desktop/Raspberry_Pi/Library/pad4pi-1.1.5")
sys.path.insert(2,"C:/Users/Administrator/Desktop/Raspberry_Pi/Library/adafruit-circuitpython-pca9685-3.3.8")
sys.path.insert(3,"C:/Users/Administrator/Desktop/Raspberry_Pi/Library/rpi-lcd-0.0.2")

from rpi_lcd import LCD
from pad4pi import rpi_gpio

# 初始化LCD
lcd = LCD()
# 4x4键盘定义
KEYPAD = [
    ["1", "2", "3", "A"],
    ["4", "5", "6", "B"],
    ["7", "8", "9", "C"],
    ["*", "0", "#", "D"]
]
ROW_PINS = [4,17,18,27]  # BCM编号
COL_PINS = [22,23,24,25] # BCM编号

# 初始化键盘
factory = rpi_gpio.KeypadFactory()
keypad = factory.create_keypad(keypad=KEYPAD, row_pins=ROW_PINS, col_pins=COL_PINS)

# 输入缓存,存储连续输入的字符
input_buffer = ""

def handle_key_press(key):
    global input_buffer
    print(f"按下按键: {key}")
    
    # 判断按键类型
    if key.isdigit():
        # 数字按键追加到缓存,最多存20个字符适配LCD单行宽度
        if len(input_buffer) < 20:
            input_buffer += key
    elif key == "#":
        # 按下#键清空输入
        input_buffer = ""
    elif key == "*":
        # 按下*键可自定义确认逻辑,比如提交输入的金额
        print(f"确认输入: {input_buffer}")
        # 这里可以加你自己的业务逻辑
    
    # 更新LCD显示
    lcd.clear()
    lcd.text("当前输入:", 1)
    lcd.text(input_buffer, 2) # 输入内容显示在第二行

# 注册按键回调
keypad.registerKeyPressHandler(handle_key_press)

# 退出信号处理,清理资源
def exit_handler(signum, frame):
    lcd.clear()
    keypad.cleanup()
    print("程序退出")
    sys.exit(0)

signal.signal(signal.SIGINT, exit_handler)

# 主循环保持程序运行
if __name__ == "__main__":
    lcd.text("请输入数字:", 1)
    while True:
        time.sleep(0.1)

关键改动说明

  • 新增全局input_buffer变量存储连续输入的数字串,解决原代码只能存储单个按键的问题
  • 按键回调函数中区分数字键和功能键,可自定义#清空、*确认等操作,你可以根据业务需求修改功能键对应的逻辑
  • 每次按键触发后自动更新LCD内容,原代码中频繁清屏的逻辑已经移除
  • 增加了程序退出时的资源清理逻辑,按下Ctrl+C退出时会自动清屏并释放GPIO资源,避免后续运行出现GPIO占用报错

内容的提问来源于stack exchange,提问作者Dogamo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 23:15:04