【雕爺學(xué)編程】Arduino動(dòng)手做(131)---跑馬燈矩陣鍵盤(pán)模塊

37款傳感器與執(zhí)行器的提法,在網(wǎng)絡(luò)上廣泛流傳,其實(shí)Arduino能夠兼容的傳感器模塊肯定是不止這37種的。鑒于本人手頭積累了一些傳感器和執(zhí)行器模塊,依照實(shí)踐出真知(一定要?jiǎng)邮肿觯┑睦砟睿詫W(xué)習(xí)和交流為目的,這里準(zhǔn)備逐一動(dòng)手嘗試系列實(shí)驗(yàn),不管成功(程序走通)與否,都會(huì)記錄下來(lái)—小小的進(jìn)步或是搞不掂的問(wèn)題,希望能夠拋磚引玉。
【Arduino】168種傳感器模塊系列實(shí)驗(yàn)(資料代碼+仿真編程+圖形編程)
實(shí)驗(yàn)一百三十一:YL-004老款20按鍵獨(dú)立鍵盤(pán) 跑馬燈矩陣鍵盤(pán)模塊

4X4矩陣鍵盤(pán)
是單片機(jī)外部設(shè)備中所使用的排布類(lèi)似于矩陣的鍵盤(pán)組。矩陣式結(jié)構(gòu)的鍵盤(pán)顯然比直接法要復(fù)雜一些,識(shí)別也要復(fù)雜一些,列線通過(guò)電阻接正電源,并將行線所接的單片機(jī)的I/O口作為輸出端,而列線所接的I/O口則作為輸入。由于電路設(shè)計(jì)時(shí)需要更多的外部輸入,單獨(dú)的控制一個(gè)按鍵需要浪費(fèi)很多的IO資源,所以就有了矩陣鍵盤(pán),常用的矩陣鍵盤(pán)有4X4和8X8,其中用的最多的是4X4。
工作原理
矩陣鍵盤(pán)又稱(chēng)為行列式鍵盤(pán),它是用4條I/O線作為行線,4條I/O線作為列線組成的鍵盤(pán)。在行線和列線的每一個(gè)交叉點(diǎn)上,設(shè)置一個(gè)按鍵。這樣鍵盤(pán)中按鍵的個(gè)數(shù)是4X4個(gè)。這種行列式鍵盤(pán)結(jié)構(gòu)能夠有效地提高單片機(jī)系統(tǒng)中I/O口的利用率。由于單片機(jī)IO端口具有線與的功能,因此當(dāng)任意一個(gè)按鍵按下時(shí),行和列都有一根線被線與,通過(guò)運(yùn)算就可以得出按鍵的坐標(biāo)從而判斷按鍵鍵值。

行列掃描法原理
1、使行線為編程的輸入線,列線是輸出線,拉低所有的列線,判斷行線的變化,如果有按鍵按下,按鍵按下的對(duì)應(yīng)行線被拉低,否則所有的行線都為高電平。
2、在第一步判斷有鍵按下后, 延時(shí)10ms消除機(jī)械抖動(dòng),再次讀取行值,如果此行線還處于低電平狀態(tài)則進(jìn)入下 一步,否則返回第一步重新判斷。
3、開(kāi)始掃描按鍵位置,采用逐 行掃描,每間隔1ms的時(shí)間,分別拉低第一列,第二列,第三列,第四 列,無(wú)論拉低哪一列其他三列都為高電平,讀取行值找到按鍵的位置,分別把行值和列值儲(chǔ)存在寄存器里。
4、從寄存器中找到行值和列 值并把其合并,得到按鍵值,對(duì)此按鍵值進(jìn)行編碼,按照從第一行第一個(gè)一直到第四行第四個(gè)逐行進(jìn)行編碼,編碼值從“0000” 至“1111” , 再進(jìn)行譯碼,最后顯示按鍵號(hào)碼。

4*4矩陣鍵盤(pán)+4位獨(dú)立按鍵+8位跑馬燈組合模塊


4*4矩陣鍵盤(pán)+4位獨(dú)立按鍵+8位跑馬燈組合模塊參考電原理圖

模塊上4*4矩陣鍵盤(pán)有一個(gè)8腳的端口,理論上可以直接插到Arduino的0-7腳上,但0,1腳用于串口通信,所以只能選擇2~13腳,這里選用了2-9腳。
Keypad Pin L1 –> Arduino Pin 2??(行)
Keypad Pin L2 –> Arduino Pin 3
Keypad Pin L3 –> Arduino Pin 4
Keypad Pin L4 –> Arduino Pin 5
Keypad Pin R1 –> Arduino Pin 6??(列)
Keypad Pin R2 –> Arduino Pin 7
Keypad Pin R3 –> Arduino Pin 8
Keypad Pin R4 –> Arduino Pin 9
測(cè)試矩陣鍵盤(pán)部分接線示意圖

矩陣鍵盤(pán)所需庫(kù)文件<Keypad>
在Arduino IDE 1.8.10 或者以上版本中, 項(xiàng)目->加載庫(kù)->管理庫(kù)中搜索Keypad,然后安裝即可。
也可以下載庫(kù)(需要下載庫(kù)文件?https://github.com/Chris--A/Keypad),然后手動(dòng)添加到IDE中。

Arduino實(shí)驗(yàn)開(kāi)源代碼
串口輸出16位矩陣鍵值

程序之二:矩陣鍵盤(pán)部分測(cè)試每個(gè)按鍵的按下與松開(kāi)
實(shí)驗(yàn)串口返回情況

程序之三:矩陣鍵盤(pán)部分測(cè)試按鍵'*'和 '#'控制LED燈(板載13腳)
'#'鍵控制LED燈自鎖開(kāi)關(guān),'*'鍵按下時(shí)LED閃爍,松開(kāi)熄滅

測(cè)試跑馬燈部分接線示意圖


程序之四:測(cè)試跑馬燈部分,循環(huán)逐個(gè)點(diǎn)亮,逐個(gè)熄滅
Arduino實(shí)驗(yàn)場(chǎng)景圖

程序之五:測(cè)試跑馬燈部分,循環(huán)單個(gè)熄滅
測(cè)試獨(dú)立按鍵部分+跑馬燈部分

程序之六:測(cè)試獨(dú)立按鍵部分+跑馬燈部分,按鍵控制跑馬燈
實(shí)驗(yàn)開(kāi)源圖形編程(Mind+、編玩邊學(xué))

實(shí)驗(yàn)開(kāi)源仿真編程(Linkboy V4.62)
