樹莓派的矩陣鍵盤掃瞄程式,python開發

2021-07-02 01:11:00 字數 2331 閱讀 5056

樹莓派可以很方便的拓展矩陣鍵盤用做人機互動,今天教大家如何驅動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...