前言
硬件准备
合宙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,光根据芯片引脚定义名字,从硬件来看只能从芯片飞线出来。当然如果其他的引脚可以配的话能实现,待后续询问下合宙的大佬们。