keypad(键盘矩阵)指南

keypad(键盘矩阵)指南目录keyPad简介API说明示例常见问题相关资料以及开发板购买链接keyPad简介Air724UG支持6X6键盘矩阵,可以在luat二次开发的方式应用,但注意AT版本不支持键盘功能。API说明API接口描述powerKey.setup(longPrd,longCb,shortCb)开机键功能配置常用api_1介绍常用api_2介绍示例1.创建一个tKeypad表,储存所有按键值(16个键盘元素+1个开关机键元素)–每个元素的索引为行列值拼接而成的字符

大家好,又见面了,我是你们的朋友全栈君。

keyPad

简介

Air724UG支持6X6键盘矩阵,可以在luat二次开发的方式应用,但注意AT版本不支持键盘功能。

API说明

API接口 描述
powerKey.setup(longPrd, longCb, shortCb) 开机键功能配置

常用api_1介绍
常用api_2介绍

示例

1.创建一个tKeypad表,储存所有按键值(16个键盘元素+1个开关机键元素)

--每个元素的索引为行列值拼接而成的字符串,值为按键名的字符串
--例如:按键名为"1"的行值为5,列值为3,则["53"] = "1"
local tKeypad =
{ 
   
    ["53"] = "1",["52"] = "2",["51"] = "3",["50"] = "A",
    ["43"] = "4",["42"] = "5",["41"] = "6",["40"] = "B",
    ["33"] = "7",["32"] = "8",["31"] = "9",["30"] = "C",
    ["23"] = "*",["22"] = "0",["21"] = "#",["20"] = "D",
    ["255255"] = "开关机"
}

2.定义某个keyName按键的长按下消息处理函数

local function keyLongPressTimerCb(keyName)
    log.info("keypad.keyLongPressTimerCb",keyName)

3.定义一个按键消息处理函数

--按键消息处理函数
local function keyMsg(msg)
    --保存按键名
    --msg.key_matrix_row:行索引
    --msg.key_matrix_col:列索引

    local keyName = tKeypad[msg.key_matrix_row..msg.key_matrix_col]  
    log.info("keyMsg",msg.key_matrix_row,msg.key_matrix_col,msg.pressed,keyName)  
    if msg.pressed then      
        --第一个参数:keyName按键的长按消息处理函数
        --第二个参数:超时时间为3秒
        --第三个参数:按键名
        sys.timerStart(keyLongPressTimerCb,300,keyName)
    end
end

4.注册按键消息处理函数

rtos.on(rtos.MSG_KEYPAD,keyMsg)

5.初始化键盘阵列

--第一个参数:固定为rtos.MOD_KEYPAD,表示键盘  
--第二个参数:目前无意义,固定为0  
--第三个参数:键盘阵列keyin标记,例如使用了keyin2、keyin3、keyin4、keyin5,则第三个参数为1<<2|1<<3|1<<4|1<<5 = 0x3C    行
--第四个参数:键盘阵列keyout标记,例如使用了keyout0、keyout1、keyout2、keyout3,则第四个参数为1<<0|1<<1|1<<2|1<<3 = 0x0F  列
rtos.init_module(rtos.MOD_KEYPAD,0,0x3c,0x0F)

6.把键盘阵列keyin标记和keyout标记软排线接口插入模块相对印引脚,比如键盘的keyin2对印模块的keyin2脚


7.在了解并修改了DEMO后将demo和对应的底包下载到开发板,下载的方式这里不详细说明请参考环境搭建中的烧录章节。


8.下载完成后重启,我们随便按一个按键,可以在luatools工具上看到打印的数据。


比如按下1键时:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-FSeNWzYu-1624771263903)(http://openluat-luatcommunity.oss-cn-hangzhou.aliyuncs.com/images/20210328182956060_微信截图_20210328161906.png “undefined”)]

按下A键时:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-79nptfPX-1624771263906)(http://openluat-luatcommunity.oss-cn-hangzhou.aliyuncs.com/images/20210328183038808_微信截图_20210328163505.png “undefined”)]


常见问题

为什么按下按键时没反应?
看下按键引脚是否与模块引脚是否接对?键盘是不是ok?

相关资料以及开发板购买链接

Air724UG开发板
Air724 开发板使用说明

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/137620.html原文链接:https://javaforall.net

赞 (0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 树莓派python编程自学-树莓派Python编程指南 中文PDF扫描版

    《树莓派Python编程指南》共12章:第1~3章深入介绍如何在树莓派上使用Python,为学习其他知识打下基础;第4章介绍使用Qt工具包开发图形用户界面;第5章介绍在Python中创建游戏;第6章介绍如何利用GPU来使用OpenGL创建3D场景;第7章讲解如何从网页上抓取信息或使用树莓派为全世界提供内容和服务;第8章介绍使用Python在树莓派中构建自己的游戏世界;第9章使用Python在树莓派…

    2022年4月8日
  • 基于MATLAB的矩阵及元素赋值[通俗易懂]

    *内容摘要:该代码用于实现在MATLAB中矩阵及元素的赋值*文件标识:无*作者:*完成日期:2019-3-10*问题描述:给矩阵a赋值>>a=[147;258;369]a=147258369*问题描述:给矩阵全行赋予值…

    2022年4月8日
  • unity3d在工业仿真中的应用_虚拟现实例子

    unity3d在工业仿真中的应用_虚拟现实例子JonathanLinowes(作者),童明(译者)文中示例代码下载亚马逊京东China-Pub当当目录列表内容译者序审校者简介前言第1章万物皆可虚拟11.1虚拟现实对你来说意味着什么21.2头戴式显示器的类型41.2.1桌面VR41.2.2移动VR41.3虚拟现实与增强现实的区别51.4应用与游戏51.5本书涵盖的内容81.6VR体

    2022年9月12日
  • 破坏ice的服务器消息,我的世界:ICE服务器炸,矛头指向Mn,但真相另有隐情!…

    破坏ice的服务器消息,我的世界:ICE服务器炸,矛头指向Mn,但真相另有隐情!…在游戏界中,有一场游戏玩家之间的“战争”,那就是《我的世界》和《迷你世界》。这场战争本来已经停息了很久,但是又因为某些事情,让它快速的发酵了起来。这件事情的原由是因为《我的世界》的ICE服务器被炸,具体经过小编下面为大家讲解。3月25号(大约时间),一个名为ICE的《我的世界》服务器被其他玩家恶意毁坏了,里面的建筑变得残破不堪,而服务器的存档也仅仅只有数天前的。要知道,这些建筑是很多玩家用大量的时…

    2022年6月12日
  • FinSH控制台「建议收藏」

    FinSH控制台「建议收藏」RT-ThreadFinSH使用一、FinSH内置命令二、自定义FinSH命令2.1自定义msh命令2.2自定义C-style命令三、FinSH功能配置  shell是用户与操作系统间接口的程序,它允许用户向操作系统输入需要执行的命令,并将操作系统的运行结果返回给用户。  FinSH就是RT-Thread的shell(命令行组件),在读取输入命令后,解析并自动扫描内部函数表,寻找对应函数…

    2022年5月11日
  • Django 模型_django反向生成model

    Django 模型_django反向生成model前言随着项目越来越大,采用写原生SQL的方式在代码中会出现大量的SQL语句,那么问题就出现了:1.SQL语句重复利用率不高,越复杂的SQL语句条件越多,代码越长。会出现很多相近的SQL语句。2.

    2022年7月30日

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号