樹莓派可以很方便的拓展矩陣鍵盤用做人機互動,今天教大家如何驅動4*4矩陣鍵盤。
先貼上**:
import time
class keypad(object):
keypad=[
['1','2','3','*'],
['4','5','6','#'],
['7','8','9','$'],
['clr','0','set','ok']]
row =[12,16,20,21]
column =[6,13,19,26]
def __init__(self):
gpio.cleanup()
gpio.setmode(gpio.bcm)
def getkey(self):
import rpi.gpio as gpio
#設定列輸出低
for i in range(len(self.column)):
gpio.setup(self.column[i],gpio.out)
gpio.output(self.column[i],gpio.low)
#設定行上拉輸入
for j in range(len(self.row)):
gpio.setup(self.row[j],gpio.in,pull_up_down=gpio.pud_up)
#檢測行是否有鍵按下,有則讀取行值(0~3)
rowval=-1
for i in range(len(self.row)):
rowstatus=gpio.input(self.row[i])
if rowstatus==gpio.low:
rowval=i
# print 'rowval=%s' % rowval
#若無鍵按下,返回
if rowval<0 or rowval>3:
self.exit()
return
#若第rowval行有鍵按下,翻轉輸入輸出模式
#第rowval行輸出高電平,
gpio.setup(self.row[rowval],gpio.out)
gpio.output(self.row[rowval],gpio.high)
#列為下拉輸入
for j in range(len(self.column)):
gpio.setup(self.column[j],gpio.in,pull_up_down=gpio.pud_down)
#讀取按鍵所在列值
columnval=-1
for i in range(len(self.column)):
columnstatus=gpio.input(self.column[i])
if columnstatus==gpio.high:
columnval=i
#等待按鍵鬆開
while gpio.input(self.column[i])==gpio.high:
time.sleep(0.5)
# print 'columnval=%s' % columnval
#若無鍵按下,返回
if columnval<0 or columnval>3:
self.exit()
return
self.exit()
return self.keypad[rowval][columnval]
def exit(self):
import rpi.gpio as gpio
for i in range(len(self.row)):
gpio.setup(self.row[i],gpio.in,pull_up_down=gpio.pud_up)
for j in range(len(self.column)):
gpio.setup(self.column[j],gpio.in,pull_up_down=gpio.pud_up)
if __name__='__main__':
kp=keypad()
key=none
while true:
key=kp.getkey()
if not key==none:
print 'you enter the key:',key
程式設計思路:假如s1鍵按下,先掃瞄行(列),即行輸入,列輸出高。此時接第一行的引腳必然會被拉高。設定接第一行的引腳為輸出高,列輸入。此時接第一列的引腳必然會被拉高。這樣我們就得到了第一行第一列的按鍵被按下。
4X4矩陣鍵盤掃瞄程式
4x4矩陣鍵盤掃瞄 1.4根行線的gio均設為output,根列線的gio均設為input 2.4根行線的gio分別置為0111 1011 1101 1110,讀逐一讀取列線gio的值,可確定是哪乙個按鍵 電路圖如下 注意 1.圖中用作輸入的gio,一定要有乙個上拉電阻。2.晶元中的每乙個引腳是否用...
4X4矩陣鍵盤掃瞄程式
4x4矩陣鍵盤掃瞄 1.4根行線的gio均設為output,根列線的gio均設為input 2.4根行線的gio分別置為0111 1011 1101 1110,讀逐一讀取列線gio的值,可確定是哪乙個按鍵。電路圖例如以下 注意 1.圖中用作輸入的gio,一定要有乙個上拉電阻。2.晶元中的每個引腳是否...
STM32 4 4矩陣鍵盤掃瞄程式(中斷方式)
總體思路 中斷線為4行連線的gpio口,先初始化矩陣的4行輸出低電平4列輸出高電平,當有按鍵按下時的上公升沿觸發中斷 然後在相應的中斷處理函式裡面採取查詢的方式 參考上篇 獲得鍵值。部分程式 void exti9 5 irqhandler void 外部中斷中斷函式 if gpio readinpu...