全面解读Air724UG模组软件的KEYPAD操作!

本文将全面解读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:\luatOS\Air724 路径中

图片

  • 点击增加脚本或资源文件,选择之前下载的程序源码,如下图所示。

图片

  • 点击下载底层和脚本,下载完成如下图所示。

图片

五、代码示例介绍

5.1 API 说明

5.1.1 powerKey.setup(longPrd, longCb, shortCb) 开机键功能配置

配置开机键长按弹起和短按弹起的功能.

如何定义长按键和短按键,例如长按键判断时长为 3 秒:

按下大于等于 3 秒再弹起判定为长按键;

按下后,在3 秒内弹起,判定为短按键

参数

名称传入值类型释义
longPrdnumber可选参数,默认为 3000 长按键判断时长,单位毫秒
longCbfunction可选参数,默认为 nil 长按弹起时的回调函数,如果为 nil,使用默认的处理函数
shortCbfunction可选参数,默认为 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)不需另外配置。

分享完毕

### 关于UG后处理定制命令的使用指南 #### UG后处理定制命令概述 Air724UG 是一款集成了多种功能模块的低功耗模组,支持丰富的外设接口和通信协议。对于 UG 后处理定制命令而言,通常涉及对特定硬件资源的操作以及自定义逻辑实现的功能扩展。这类操作可能包括但不限于 ADC 数据采集后的处理、按键事件触发的动作响应或者基于 UDP/TCP 协议的数据交互。 尽管当前引用未直接提及 UG 后处理的具体细节[^1],但从已知资料可以推测,UG 后处理定制命令主要依赖 RTOS(实时操作系统)框架下的 API 接口调用完成。这些接口允许开发者针对具体需求编写脚本或程序片段,从而实现高度个性化的功能设计。 --- #### 实现UG后处理定制命令的关键步骤解析 ##### 1. **初始化相关模块** 在 Air724UG 中,无论是 ADC 还是 KEYPAD 功能都需要先进行必要的初始化设置。例如,在 KEYPAD 示例中提到 `rtos.init_module` 函数用于配置键盘矩阵参数[^3]。类似地,如果要执行 ADC 数据采集,则需通过如下方式启动 ADC 模块: ```python import rtos # 初始化ADC模块 adc_channel = 0 # 假设使用通道0 resolution_bits = 10 # 设置分辨率为10位 rtos.init_adc(adc_channel, resolution_bits) ``` 此部分代码展示了如何借助 RTOS 提供的标准方法激活目标设备,并为其指定运行条件。 ##### 2. **注册回调函数** 为了捕获来自外部世界的信号变化情况,必须事先安排好相应的监听机制。比如前述文档里描述过的按键消息处理器绑定过程——即调用 `rtos.on()` 方法关联特定类型的事件与其对应的行为反应逻辑[^3]。同理可得,当涉及到连续监测模拟量输入水平时也可以采用类似的策略: ```python def adc_callback(value): """ADC采样值回调""" print(f"Current ADC value is {value}") # 注册ADC读取结果的通知服务 rtos.register_adc_handler(adc_channel, adc_callback) ``` 这里定义了一个简单的打印语句作为示范用途的实际业务流程可能会更加复杂多样。 ##### 3. **构建数据流管道** 考虑到实际应用场景往往需要对接多个子系统共同协作才能达成最终目的因此有必要建立起一套完整的端到端解决方案其中就包含了前面所讨论的各种组件之间的相互作用关系。假设我们希望把经过初步筛选过滤之后的有效测量数值发送给远程服务器保存那么就需要额外引入网络传输手段如下面展示的例子那样利用 UDP 发送信息包[^4]: ```python import socket udp_ip = "192.168.1.100" udp_port = 5005 sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) def send_data_over_udp(data_point): message = f"{data_point}".encode('utf-8') sock.sendto(message, (udp_ip, udp_port)) # 修改之前的ADC回调以便自动上传每次获取的新样本 def enhanced_adc_callback(value): adc_callback(value) # 调用原始显示功能 send_data_over_udp(value) # 并同时向外推送该记录 rtos.unregister_adc_handler(adc_channel) # 取消旧版链接以防冲突 rtos.register_adc_handler(adc_channel, enhanced_adc_callback) # 更新为增强型版本 ``` 以上实例综合运用了本地传感技术和互联网基础设施实现了跨地域的信息共享能力进一步拓宽了产品的适用范围。 --- ### 总结 综上所述,围绕 Air724UG 开展的 UG 后处理定制命令工作主要包括三个核心环节:一是做好基础环境搭建确保各部件能够正常运转;二是确立有效的沟通桥梁使得不同种类的消息得以顺畅传递;三是精心策划整体架构力求达到预期效果最大化的同时兼顾灵活性与稳定性两者兼备才是成功之道[^2]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值