当前位置: 代码迷 >> 综合 >> 【LuatOS-air105】input:4*4键盘矩阵
  详细解决方案

【LuatOS-air105】input:4*4键盘矩阵

热度:93   发布时间:2023-12-05 20:29:43.0

前言

硬件准备

合宙air105开发板
4*4键盘矩阵

资料

keyboard接口:https://wiki.luatos.com/api/keyboard.html

根据官方的air105文档,标注了keyboard0/1
在这里插入图片描述
我使用的是4*4,也就是要keyboard(0~7),其他的没有找到

bsp

在这里插入图片描述
LuatOS-master\LuatOS\luat\modules\luat_lib_keyboard.c

demo

LuatOS-master\LuatOS\demo\keyboard\Air105

-- LuaTools需要PROJECT和VERSION这两个信息
PROJECT = "keyboarddemo"
VERSION = "1.0.0"-- 引入必要的库文件(lua编写), 内部库不需要require
local sys = require "sys"if wdt then--添加硬狗防止程序卡死,在支持的设备上启用这个功能wdt.init(15000)--初始化watchdog设置为15ssys.timerLoopStart(wdt.feed, 10000)--10s喂一次狗
endsys.taskInit(function ()sys.wait(1000)keyboard.init(0, 0x1F, 0x14) --2*3sys.subscribe("KB_INC", function(port, data, state)-- port 当前固定为0, 可以无视-- data, 需要配合init的map进行解析-- state, 1 为按下, 0 为 释放log.info("keyboard", port, data, state)end)while true dosys.wait(1000)log.info("gpio", "Go Go Go", "https//wiki.luatos.com", rtos.bsp())end
end)-- 用户代码已结束---------------------------------------------
-- 结尾总是这一句
sys.run()
-- sys.run()之后后面不要加任何语句!!!!!

代码

参照demo编写,只修改init

-- LuaTools需要PROJECT和VERSION这两个信息
PROJECT = "keyboarddemo"
VERSION = "1.0.0"-- 引入必要的库文件(lua编写), 内部库不需要require
local sys = require "sys"if wdt then--添加硬狗防止程序卡死,在支持的设备上启用这个功能wdt.init(15000)--初始化watchdog设置为15ssys.timerLoopStart(wdt.feed, 10000)--10s喂一次狗
endsys.taskInit(function ()sys.wait(1000)keyboard.init(0, 0xFF, 0xF0) --4*4sys.subscribe("KB_INC", function(port, data, state)-- port 当前固定为0, 可以无视-- data, 需要配合init的map进行解析-- state, 1 为按下, 0 为 释放log.info("keyboard", port, data, state)end)while true dosys.wait(1000)log.info("gpio", "Go Go Go", "https//wiki.luatos.com", rtos.bsp())end
end)-- 用户代码已结束---------------------------------------------
-- 结尾总是这一句
sys.run()
-- sys.run()之后后面不要加任何语句!!!!!

剩下就差如何连接了,待确认其他哪些gpio作为keyboard口。

keyboard口

找到电路图
https://cdn.openluat-luatcommunity.openluat.com/attachment/20220110133139675_CORE-Air105-V1.1.pdf
定义了keyboard的0-8口

再结合
在这里插入图片描述

在这里插入图片描述
发现这里只有keyboard0、1可以外接,对应PIN19/20
2/3 对应led
在这里插入图片描述
4对应camera的data7

5/6对应VSYNC/HSYNC
在这里插入图片描述
7对应camera的data5

小结

目前看起来air105,光根据芯片引脚定义名字,从硬件来看只能从芯片飞线出来。当然如果其他的引脚可以配的话能实现,待后续询问下合宙的大佬们。

  相关解决方案