深度剖析 | 低功耗模组Air724UG的软件实例:KEYPAD教程!

news/2024/12/1 11:02:10/文章来源:https://www.cnblogs.com/luatos/p/18576481

本次我要要深度剖析的是低功耗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:\luatOS\Air724 路径中

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

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

五、代码示例介绍

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)不需另外配置。

分享完毕

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/844489.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

LaVita pg walkthrough Intermediate

nmap └─# nmap -p- -A 192.168.159.38 Starting Nmap 7.94SVN ( https://nmap.org ) at 2024-12-01 00:21 UTC Nmap scan report for 192.168.159.38 Host is up (0.071s latency). Not shown: 65533 closed tcp ports (reset) PORT STATE SERVICE VERSION 22/tcp open ss…

探索性测试及基本用例

目录1 测试决策5要素 2 缺陷检测 3 探索性测试3.1 探索性测试的定义 3.2 探索性测试方法 3.3 探索性测试的核心优势 3.4 如何评估探索性测试的测试效果4 传统的测试和精益与探索式测试区别4.1 传统的测试与探索式测试的区别 4.2 探索式测试与精益5 如何实施探索性测试 6 基本测…

String类的三种常见构造方法

1.根据构造方法创建字符串对象1.public String() 创建一个空字符串,里面不包含任何内容2.public String(char[] chs) 创建一个字符数组,将其拼接成字符串对象3.public String(String original) 根据输入的字符串,创建字符串对象2.疑惑: 1.我们原来创建了对象,将其直…

考研打卡(33)

开局(33) 开始时间 2024-12-01 09:36:12 结束时间 2024-12-01 10:27:50昨天快递是室友帮我取的数据结构带权有向图G用邻接矩阵A存储,则顶点i的入度等于A中_______(扬州大学 2013年) A 第i行非∞的元素之和 B 第i列非∞的元素之和 C 第i行非∞且非0的元素之和 D 第i列非∞且…

.NET Conf China 2024 AI相关内容解析

.NET Conf China 2024中国 .NET 开发者峰会即将在上海召开,这次大会是一届完全由社区组织举办的中国.NET 开发者盛会,我们筹备大会之初就定下了大会的主题是“智能、创新、开放”。我们将聚焦于人工智能和机器学习在 .NET 中的应用,将围绕“.NET x AI”这一议程展开,汇聚了…

人工智能:在传统行业中的挑战、机遇与数据科学家角色的演变

生成式人工智能(GenAI)为我们开启了更快的开发周期、更少的技术和维护工作,以及之前看起来无法实现的创新应用场景的大门。但与此同时,它也带来了新的风险——比如幻觉问题,以及对第三方API的依赖。 对于数据科学家和机器学习团队来说,这一变革直接影响了他们的工作方式。…

铁棍山药 怀山药 All In One

铁棍山药 怀山药 All In One 怀山药中最好的是垆土地种植的铁棍山药 ✅ 怀山药 vs 淮山药 “怀”和“淮”均指产地,“怀”是指河南怀庆府即焦作温县一带,“淮”指江淮地区,包括安徽、江苏、浙江。 “怀山药”是古医药典籍中记载的有丰富营养和药用价值的山药,又叫“药用山药…

RCC

网页主要用于学习交流作者:博客园 - 域出处:https://www.cnblogs.com/SeanRIchard本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须在文章页面给出原文链接,否则保留追究法律责任的权利。若内容有侵犯您权益的地方,请公告栏处联系本人,本人定积极配合处理解决。…

2024-2025-1 20241322 《计算机基础与程序设计》第十周学习总结

2024-2025-1 20241322 《计算机基础与程序设计》第十周学习总结 作业信息这个作业属于哪个课程 https://edu.cnblogs.com/campus/besti/2024-2025-1-CFAP这个作业要求在哪里 https://www.cnblogs.com/rocedu/p/9577842.html#WEEK10这个作业的目标 ①信息系统②数据库与SQL③人工…

# 学期2024-2025-1 学号20241428《计算机基础与程序设计》第10周学习总结

学期(如2024-2025-1) 学号(如:20241300) 《计算机基础与程序设计》第X周学习总结 作业信息这个作业属于哪个课程 <班级的链接>(如2024-2025-1-计算机基础与程序设计)这个作业要求在哪里 <作业要求的链接>(如2024-2025-1计算机基础与程序设计第一周作业)这个…

2024-2025-1 20241425 《计算机基础与程序设计》第10周学习总结

2024-2025-1 20241425 《计算机基础与程序设计》第10周学习总结 作业信息这个作业属于哪个课程 https://edu.cnblogs.com/campus/besti/2024-2025-1-CFAP)这个作业要求在哪里 https://www.cnblogs.com/rocedu/p/9577842.html#WEEK10这个作业的目标 信息系统、数据库与SQL、人工…

【人人都能学得会的NLP - 文本分类篇 04】层次化多标签文本分类如何做?

【人人都能学得会的NLP - 文本分类篇 04】层次化多标签文本分类如何做? NLP Github【人人都能学得会的NLP - 文本分类篇 04】层次化多标签文本分类如何做?NLP Github 项目:NLP 项目实践:fasterai/nlp-project-practice 介绍:该仓库围绕着 NLP 任务模型的设计、训练、优化、…