基于魔改的逐飞屏幕驱动,拙劣地模仿了稚晖君的 MonoUI 实现方式,参考了 createskyblue / OpenT12 项目UI所编写的一个UI。其中的按键库参考了 Zhewana / CommonKey 开源按键库,该按键库的链表结构给了我很大的启发。
本来想重构一下做个v1.6,可惜我太懒了,v1.5b大概率是最终版本了orz
基于逐飞屏幕库,不再需要魔改屏幕库;删去所有动画,仅保留框架,专为智能车竞赛设计的通用版本。
目的是为了解决正常菜单开发中需要为每个条目单独写很多代码,删减菜单内容会非常耗时。
推荐使用 6x8 字体大小获得更好的体验。
抱歉过了这么久才完整开源,总之开源了!
使用IPS096屏幕,参考逐飞库修改而来,同时更新UI使用的CH32V307VCT6芯片掉电存储方案。
实际菜单应用可见十八届智能车单车开源库
菜单页面、项目、按键实现均采用链表方式,理论可无限扩展;
AddItem
/ AddPage
采用可变参数函数实现,实现输入不同func
时获取不同的后续参数以初始化菜单。
在逐飞的IPS114屏幕驱动基础上增加缓冲区,删除断言函数改为break
处理;
参照u8g2
增加部分显示函数,如绘制圆角方框
等;
增加可设置颜色模式,支持正常与异或绘制,用以绘制反色指示器等;
每次系统初始化时判断flash
内相应区域是否为空,若非空则读取一次数据。
‼️ 每次增减菜单结构请先擦除全片再进行烧录
为了实现变量值修改时可更改步长,适配不同数量按键时统一的一套保存/放弃修改操作,我放弃了进度条的实现,更改后界面如下:
导航条原来是显示该页面所具有的栏目数量及当前所在栏目,但若栏目众多或屏幕像素高度 / 栏目数量的结果不为整数时出来的效果我感觉不尽如人意,因此我将其更改为与反色指示器具有相同的位置计算,仅显示当前屏幕上指示器所在位置,也在一定程度上方便了在宽屏上,使用者一一对应左侧标题右侧状态的难易度。