2023-11-29 10:04:40 +00:00
|
|
|
|
# MultMenu
|
2024-04-06 18:31:40 +00:00
|
|
|
|
这是一个用于单色OLED屏幕的单片机多级菜单,采用双向链表结构,移植方便、在容量足够的情况下可无限扩展。
|
2024-04-11 15:58:00 +00:00
|
|
|
|
- 菜单支持类型有:
|
2024-06-21 14:24:29 +00:00
|
|
|
|
1. PARENTS:内含子菜单项
|
2024-06-24 05:29:40 +00:00
|
|
|
|
2. LOOP_FUNCTION:循环运行某项自定义功能
|
|
|
|
|
3. ONCE_FUNCTION: 单次运行某项自定义功能
|
2024-07-14 06:10:01 +00:00
|
|
|
|
4. DATA:可调参数型(包括开关数据、整型数据、浮点数据),在菜单中可显示数据变化
|
|
|
|
|
5. _TEXT_:文本型,用于显示某些文本内容
|
|
|
|
|
6. WAVE: 波形型,可在屏幕中显示某个变量的数值变化波形
|
2024-06-24 05:28:27 +00:00
|
|
|
|
7. RETURN: 用于上级返回
|
2024-06-21 05:52:28 +00:00
|
|
|
|
- 全局使用非线性动画(类PID控制器)
|
2024-06-22 04:01:26 +00:00
|
|
|
|
在菜单数据结构上参考开源项目:https://github.com/morepray/MorepUI 感谢!
|
2024-04-06 18:31:40 +00:00
|
|
|
|
# 移植准备
|
2024-06-21 14:28:30 +00:00
|
|
|
|
1. 在menuConfig.h中配置你的屏幕分辨率与菜单字体。
|
|
|
|
|
2. 往dispDirver.c中替换你的屏幕驱动,亦可使用example中的移植的u8g2库。
|
2024-06-21 14:30:39 +00:00
|
|
|
|
3. 在Menu_State BtnScan(void)函数中放入你的按键扫描程序。
|
2024-06-22 04:02:01 +00:00
|
|
|
|
4. 在image.c中写入你需要显示的项目logo,否则图形界面的logo为预设logo。推荐开源图标库:[https://github.com/hugeicons/hugeicons-react](https://github.com/hugeicons/hugeicons-react),图片取模工具:[https://javl.github.io/image2cpp/](https://github.com/javl/image2cpp)。
|
2024-08-07 10:37:29 +00:00
|
|
|
|
5. 在menuConfig.c中建立需要的数据类、文本类、波形类以及菜单的页面(page)和项(item)。
|
|
|
|
|
6. 建立一个xMenu类型的全局结构体
|
|
|
|
|
7. 将Menu_Init和Menu_Loop放入你的程序中(若使用RTOS,建议给予10ms运行周期)。
|
2024-04-06 18:31:40 +00:00
|
|
|
|
# Example
|
2024-10-07 04:57:53 +00:00
|
|
|
|
基于STM32F103C8T6,使用硬件I2C2驱动0.96寸OLED(SSD1306),I2C的SCL引脚为PB10,SDA引脚为PB11,按键为串口虚拟按键。
|
2024-04-06 18:31:40 +00:00
|
|
|
|
其中:
|
2024-04-21 08:09:27 +00:00
|
|
|
|
- 0x01为上移按键
|
|
|
|
|
- 0x02为下移按键
|
|
|
|
|
- 0x03为确认按键
|
2024-07-14 15:44:59 +00:00
|
|
|
|
- Arduino也类似。
|
2024-04-06 18:31:40 +00:00
|
|
|
|
# 效果如下
|
2024-03-31 15:39:32 +00:00
|
|
|
|

|
|
|
|
|

|
2024-06-21 14:30:39 +00:00
|
|
|
|
- 视频演示地址:https://b23.tv/TOwmuKL
|
2024-06-28 10:41:01 +00:00
|
|
|
|
# 最后
|
2024-07-14 06:10:01 +00:00
|
|
|
|
项目还在优化中,如果有遇到问题欢迎issue
|