來源 | HaaS技術社區
1、概述
本文主要介紹了矩陣鍵盤的工作原理,以及如何基於JavaScript輕應用系統快速完成 HaaS600 Kit 矩陣鍵盤應用開發。
希望瞭解和學習 HaaS600Kit 及輕應用的愛好者能完成 HaaS600kit 矩陣鍵盤功能的輕應用開發。
所需工具
- HaaS600Kit
- 4x4 矩陣鍵盤
- 串口終端
2、矩陣鍵盤簡介
2.1、工作原理
矩陣鍵盤又稱為行列式鍵盤,以最常見的4X4矩陣鍵盤為例,它是用4條I/O線作為行線,4條I/O線作為列線組成的鍵盤。在行線和列線的每一個交叉點上,設置一個按鍵,這樣鍵盤中按鍵的個數是4×4個。相比傳統的獨立按鍵,這種行列式鍵盤結構有效提高了嵌入式系統的GPIO的利用率。
矩陣鍵盤的工作原理有兩種:行列掃描和逐行/逐列掃描,以4x4矩陣鍵盤為例具體工作原理如下:
行列掃描:
- 先使上圖行線5-8口對應的GPIO配置成上拉輸入(即默認檢測為高電平)、列線1-4口輸出低電平,若期間有按鍵按下,那麼會有行線檢測到低電平輸入,此時記錄下按鍵的行座標 'x';
- 接著,使行線5-8口輸出低電平、列線1-4口配置成上拉輸入(即默認檢測為高電平),若期間有按鍵按下,那麼會有列線檢測到低電平輸入,此時記錄下按鍵的列座標 'y';
- 根據(x, y) 即可得到特徵編碼所對應的按鍵。
逐行/逐列掃描:
- 使列線1口輸出低電平,其餘行列線都為上拉輸入(即默認檢測為高電平),讀取行線5-8口對應的電平。若期間1列有按鍵按下,則對應行線將會檢測到有低電平輸入,即可得知按鍵的座標('x', 1)。
- 以此類推,進行逐列掃描。
- 使行線5口輸出低電平,其餘行列線都為上拉輸入(即默認檢測為高電平),讀取列線1-4口對應的電平。若期間5行有按鍵按下,則對應列線將會檢測到有低電平輸入,即可得知按鍵的座標(5, 'y')。
- 以此類推,進行逐行掃描。
3、HaaS600Kit 矩陣鍵盤接口介紹
HaaS600Kit 最大可支持5x5矩陣鍵盤,使用的掃描方式是行列掃描。
HaaS600Kit 矩陣鍵盤接口如上圖所示,列線對應IN1~IN5接口,行線對應OUT1~OUT5接口。
所以,本示例所用的 4X4 矩陣鍵盤接線方式為:
- 列線 1-4 口按順序依次接 HaaS600Kit 的 IN1~IN4接口;
- 行線 5-8 口按順序依次接 HaaS600Kit 的 OUT1~OUT4接口;
4、開發矩陣鍵盤輕應用
4.1、 示例 JavaScript 代碼
-
// 加載 keypad 矩陣鍵盤驅動
-
var keypad = require('keypad');
-
-
// 初始化矩陣鍵盤
-
keypad.open();
-
-
// 設置鍵盤code
-
var keyValue = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', '*', '#'];
-
-
// 定義按鍵狀態
-
var keyStatus = ['press', 'release'];
-
-
// 監聽鍵盤事件
-
keypad.on('keypadEvent', function(value, state) { console.log('key \'' + keyValue[value] + '\' ' + keyStatus[state])});
4.2、JS 代碼介紹
HaaS600Kit 搭載的輕應用系統其底層已集成矩陣鍵盤的驅動,我們只需要五行JS代碼就能完成矩陣鍵盤的應用開發,相比傳統嵌入式設備C語言開發極大的降低了開發工作量和難度。
方法:keypad.open()
打開矩陣鍵盤,初始化矩陣鍵盤實例。
數組:keyValue
矩陣鍵盤的按鍵映射,按從左到右、從上到下的行列順序,實現4x4矩陣鍵盤鍵值和HaaS600Kit 矩陣鍵盤驅動程序的綁定。
數組:keyStatus
定義按鍵狀態,HaaS600Kit 矩陣鍵盤驅動程序上報按下和鬆開兩個狀態。
方法:Keypad.on
監聽按鍵事件
事件:'keypadEvent'
當串口接收到新數據時,會觸發
事件,
事件回調函數參數:
參數 | 類型 | 必填 | 描述 |
value | Number | 是 | 矩陣鍵盤驅動上報的按鍵特徵值,範圍:0~15 |
state | Number | 是 | 矩陣鍵盤驅動上報的按鍵狀態值,0 代表按下、1 代表鬆開 |
5、 測試結果
HaaS600Kit 矩陣鍵盤功能的支持需要將HaaS輕應用系統升級至2.0版本。有HaaS輕應用系統升級需求的用戶,請將 HaaS600Kit 設備信息及聯繫方式發送郵件至[email protected],我們會與您聯繫進行設備OTA升級。
6、開發者技術支持
如需更多技術支持,可加入釘釘開發者群,或者關注微信公眾號
更多技術與解決方案介紹,請訪問阿里雲AIoT首頁https://iot.aliyun.com/