树莓派通过GPIO口,使用Python读取矩阵按键,并电脑端输出相应按键的key数值。
import RPi.GPIO as GPIO
import time
# 设置GPIO口的模式为BCM编码方式
GPIO.setmode(GPIO.BCM)
# 定义行列针脚
keypad_row = [18, 23, 24, 25]
keypad_col = [4, 17, 27]
# 定义矩阵按键的字符
keypad = [
['1', '2', '3'],
['4', '5', '6'],
['7', '8', '9'],
['*', '0', '#']
]
# 初始化行列针脚状态
for i in range(3):
GPIO.setup(keypad_col[i], GPIO.OUT)
GPIO.output(keypad_col[i], 1)
for i in range(4):
GPIO.setup(keypad_row[i], GPIO.IN, pull_up_down=GPIO.PUD_UP)
# 读取矩阵按键的状态
def keypad_read():
for i in range(3):
GPIO.output(keypad_col[i], 0)
for j in range(4):
if GPIO.input(keypad_row[j]) == 0:
time.sleep(0.05)
if GPIO.input(keypad_row[j]) == 0:
return keypad[j][i]
GPIO.output(keypad_col[i], 1)
return None
# 循环读取矩阵按键的状态
while True:
key = keypad_read()
if key != None:
print(key)
time.sleep(0.5)