在电路设计中,通常需要较多的外部输入,如果每个按键都单独去占用一个 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。
本教程教你如何使用开发板的矩阵键盘获取输入信息。
使用 EVB_Air724 开发板
此开发板的详细使用说明参考:
https://docs.openluat.com/air724ug/product/
API文档:
https://doc.openluat.com/wiki/21?wiki_page_id=2068
USB数据线一根(micro USB)。
WIN7以及以上版本的 WINDOWS 系统。
4x4 矩阵键盘
USB 数据线插入 USB 口,另一端与电脑相连,拨码开关全部拨到 ON,串口切换开关选择 UART1,USB 供电的 4V 对应开关拨至 ON 档,连接矩阵键盘,把键盘阵列软排线接口插入开发板相对印引脚,keyin2 keyin3 keyin4 keyin5 keyout0 keyout1 keyout2 keyout3,如下图所示。
使用说明参考:
Luatools下载和详细使用
https://docs.openluat.com/Luatools/
1、 底层 core 下载
下载底层固件,并解压。
链接:
https://docs.openluat.com/air724ug/luatos/firmware/
如下图所示,红框的是我们要使用到的
2、本教程使用的demo见附件:
https://gitee.com/openLuat/LuatOS-Air724UG/tree/master/script_LuaTask/demo/keypad
打开 Luatools,开发板上电开机,如开机成功 Luatools 会打印如下信息。
点击项目管理测试选项。
进入管理界面,如下图所示。
点击选择文件,选择底层固件,我的文件放在 D:\luatOS\Air724 路径中
点击增加脚本或资源文件,选择之前下载的程序源码,如下图所示。
点击下载底层和脚本,下载完成如下图所示。
配置开机键长按弹起和短按弹起的功能.
如何定义长按键和短按键,例如长按键判断时长为 3 秒:
按下大于等于 3 秒再弹起判定为长按键;
按下后,在3 秒内弹起,判定为短按键
参数
--每个元素的索引为行列值拼接而成的字符串,值为按键名的字符串
--例如:按键名为"1"的行值为 5,列值为 3,则["53"] = "1"
--按键消息处理函数
注册按键消息处理函数 rtos.on(rtos.MSG_KEYPAD,keyMsg),初始化键盘阵列 rtos.init_module(rtos.MOD_KEYPAD,0,0x0F,0x0F),当有键盘按下或抬起时按键消息处理函数会打印出对应的行列值。
本代码为主程序脚本,系统启动后首先会对 4G 网络进行配置,等待网络连接成功,然后加载矩阵键盘测试模块。
连接好硬件并下载固件后,启动 Luatools 软件,系统运行信息将显示在界面中。红框中为开发板连接到 PC 机后正常打印的信息,如下图所示。
键盘按下或抬起时按键消息处理函数会打印出对应的行列,true 为按键按下,false 为按键抬起。
答:因为 KEYIIN0 信号复用为是 USB_BOOT,如果被按下就会进入下载模式,就进入不了开机流程。只需重新断电开机就能恢复
1、看下按键引脚是否与模块引脚是否接对?键盘是不是 ok?
2、是不是引用了 powKey.lua ,关机按键默认行列是(255,255)不需另外配置。
文章评论(0条评论)
登录后参与讨论