本回我要說的是低功耗4G模組Air724UG的KEYPAD示例,我已整理成文,特供大家參考。
一、簡介
在電路設計中,通常需要較多的外部輸入,如果每個按鍵都單獨去占用一個 IO 接口,就會非常浪費資源,為了減少 I/O 口的占用,通常將按鍵排列成矩陣形式,即矩陣鍵盤。
特性:
KEYIN0
掃描鍵盤輸入 0,與 UBOOT 復用,此管腳在模塊開機動作完成之前不能進行拉高,電壓域為 V_GLOBAL_1V8。
KEYIN1
掃描鍵盤輸入 1,此管腳在模塊開機動作完成之前不能進行拉高,電壓域為 V_GLOBAL_1V8。
KEYIN2、KEYIN3、KEYIN4、KEYIN5
掃描鍵盤輸入管腳,電壓域為 V_GLOBAL_1V8。
KEYOUT0、KEYOUT1、KEYOUT2、KEYOUT3
掃描鍵盤輸出管腳,電壓域為 V_GLOBAL_1V8。
KEYOUT4
掃描鍵盤輸出管腳 4,與 UART3_RXD 復用,電壓域為 V_GLOBAL_1V8。
KEYOUT5
掃描鍵盤輸出管腳 5,與 UART3_TXD 復用,電壓域為 V_GLOBAL_1V8。
注意:鍵盤接口的所有管腳不能復用為GPIO。
二、演示功能概述
三、準備硬件環境
3.1 開發板準備
使用 EVB_Air724 開發板,如下圖所示:
此開發板的詳細使用說明參考:
https://docs.openluat.com/air724ug/product/
Air724UG 產品手冊中的《EVB_Air724UG_AXX 開發板使用說明》,寫這篇文章時最新版本的使用說明為:《EVB_Air724UG_A14 開發板使用說明》;開發板使用過程中遇到任何問題,可以直接參考這份使用說明文檔。
API文檔:
https://doc.openluat.com/wiki/21?wiki_page_id=2068
3.2 數據通信線
USB數據線一根(micro USB)。
3.3 PC 電腦
WIN7以及以上版本的 WINDOWS 系統。
3.4 矩陣鍵盤
4x4 矩陣鍵盤
3.5 組裝硬件環境
USB 數據線插入 USB 口,另一端與電腦相連,撥碼開關全部撥到 ON,串口切換開關選擇 UART1,USB 供電的 4V 對應開關撥至 ON 檔,連接矩陣鍵盤,把鍵盤陣列軟排線接口插入開發板相對印引腳,keyin2 keyin3 keyin4 keyin5 keyout0 keyout1 keyout2 keyout3,如下圖所示。
四、準備軟件環境
4.1 下載調試工具
使用說明參考:
Luatools下載和詳細使用
https://docs.openluat.com/Luatools/
4.2 源碼及固件
1、底層 core 下載
下載底層固件,并解壓。
鏈接:
https://docs.openluat.com/air724ug/luatos/firmware/
如下圖所示,紅框的是我們要使用到的
2、本教程使用的demo見附件:
https://gitee.com/openLuat/LuatOS-Air724UG/tree/master/script_LuaTask/demo/keypad
4.3 下載固件和腳本到開發板中
打開 Luatools,開發板上電開機,如開機成功 Luatools 會打印如下信息。
點擊項目管理測試選項。
進入管理界面,如下圖所示。
點擊選擇文件,選擇底層固件,我的文件放在 D:luatOSAir724 路徑中
點擊增加腳本或資源文件,選擇之前下載的程序源碼,如下圖所示。
點擊下載底層和腳本,下載完成如下圖所示。
五、代碼示例介紹
5.1 API 說明
5.1.1 powerKey.setup(longPrd, longCb, shortCb) 開機鍵功能配置
配置開機鍵長按彈起和短按彈起的功能.
如何定義長按鍵和短按鍵,例如長按鍵判斷時長為 3 秒:
按下大于等于 3 秒再彈起判定為長按鍵;
按下后,在3 秒內彈起,判定為短按鍵
名稱 | 傳入值類型 | 釋義 |
longPrd | number | 可選參數,默認為 3000 長按鍵判斷時長,單位毫秒 |
longCb | function | 可選參數,默認為 nil 長按彈起時的回調函數,如果為 nil,使用默認的處理函數 |
shortCb | function | 可選參數,默認為 nil 短按彈起時的回調函數 |
5.1.2 創建一個 tKeypad 表,儲存所有按鍵值(16 個鍵盤元素 +1 個開關機鍵元素)
--每個元素的索引為行列值拼接而成的字符串,值為按鍵名的字符串
--例如:按鍵名為"1"的行值為 5,列值為 3,則["53"] = "1"
5.1.3 定義某個 keyName 按鍵的長按下消息處理函數
5.1.4 定義一個按鍵消息處理函數
--按鍵消息處理函數
5.1.5 注冊按鍵消息處理函數
5.1.6 初始化鍵盤陣列
5.2 testKeypad.lua 代碼
注冊按鍵消息處理函數 rtos.on(rtos.MSG_KEYPAD,keyMsg),初始化鍵盤陣列 rtos.init_module(rtos.MOD_KEYPAD,0,0x0F,0x0F),當有鍵盤按下或抬起時按鍵消息處理函數會打印出對應的行列值。
5.3 main.lua 代碼
本代碼為主程序腳本,系統啟動后首先會對 4G 網絡進行配置,等待網絡連接成功,然后加載矩陣鍵盤測試模塊。
六、開機調試
6.1 開發板開機
連接好硬件并下載固件后,啟動 Luatools 軟件,系統運行信息將顯示在界面中。紅框中為開發板連接到 PC 機后正常打印的信息,如下圖所示。
6.2 鍵盤調試
鍵盤按下或抬起時按鍵消息處理函數會打印出對應的行列,true 為按鍵按下,false 為按鍵抬起。
七、常見問題
7.1 為什么 KEYIN0 的按鍵在開機時被按下后就會不開機。
答:因為 KEYIIN0 信號復用為是 USB_BOOT,如果被按下就會進入下載模式,就進入不了開機流程。只需重新斷電開機就能恢復
7.2 為什么按下按鍵時沒反應?
1、看下按鍵引腳是否與模塊引腳是否接對?鍵盤是不是 ok?
2、是不是引用了 powKey.lua ,關機按鍵默認行列是(255,255)不需另外配置。
分享完畢,歡迎關注
-
電路設計
+關注
關注
6676文章
2454瀏覽量
204560 -
接口
+關注
關注
33文章
8617瀏覽量
151314 -
開發板
+關注
關注
25文章
5068瀏覽量
97621 -
模組
+關注
關注
6文章
1496瀏覽量
30426
發布評論請先 登錄
相關推薦
評論