Coder Social home page Coder Social logo

jfeng-z / multmenu Goto Github PK

View Code? Open in Web Editor NEW
89.0 4.0 10.0 19.52 MB

这是一个用于单色OLED屏幕的单片机多级菜单。支持菜单扩展、图形界面、文本界面、调参、功能调用,全局使用非线性动画,动画可打断。

License: MIT License

C 71.24% Assembly 0.15% C++ 28.26% HTML 0.35%

multmenu's Introduction

MultMenu

这是一个用于单色OLED屏幕的单片机多级菜单,采用双向链表结构,移植方便、在容量足够的情况下可无限扩展。

  • 菜单支持类型有:
  1. PARENTS:内含子菜单项
  2. LOOP_FUNCTION:循环运行某项自定义功能
  3. ONCE_FUNCTION: 单次运行某项自定义功能
  4. DATA:可调参数型(包括开关数据、整型数据、浮点数据),在菜单中可显示数据变化
  5. TEXT:文本型,用于显示某些文本内容
  6. WAVE: 波形型,可在屏幕中显示某个变量的数值变化波形
  7. RETURN: 用于上级返回

移植准备

  1. 在menuConfig.h中配置你的屏幕分辨率与菜单字体。
  2. 往dispDirver.c中替换你的屏幕驱动,亦可使用example中的移植的u8g2库。
  3. 在Menu_State BtnScan(void)函数中放入你的按键扫描程序。
  4. 在image.c中写入你需要显示的项目logo,否则图形界面的logo为预设logo。推荐开源图标库:https://github.com/hugeicons/hugeicons-react,图片取模工具:https://javl.github.io/image2cpp/
  5. 在parameter.c中建立需要的数据类,并填入想控制的变量、变量名、上下限、步进值、在text.c中建立需要的文本类、在wave.c中建立需要的波形类。
  6. 在新增菜单项时,在menu.c中定义菜单所在页面(page)和菜单项(item),并建立所需要的元素类(数据、文本、波形),然后在Craete_MenuTree中通过AddPage、AddItem加入。
  7. 建立一个xMenu类型的全局结构体
  8. 将Menu_Init和Menu_Loop放入你的程序中(若使用RTOS,建议给予10ms运行周期)。

Example

基于STM32F103C8T6,使用硬件I2C2驱动0.96寸OLED(SSD1306),按键为串口虚拟按键。 其中:

  • 0x01为上移按键
  • 0x02为下移按键
  • 0x03为确认按键
  • Arduino也类似。

效果如下

image image

最后

项目还在优化中,如果有遇到问题欢迎issue

multmenu's People

Contributors

jfeng-z avatar

Stargazers

Wade Yang avatar  avatar  avatar sleepsheep avatar Seroto avatar 愿 avatar  avatar  avatar  avatar 马上回来 avatar  avatar  avatar iKalyes avatar Robot_V1 avatar Aerospace大土豆 avatar Qingchou avatar  avatar Ning Zhao avatar  avatar  avatar  avatar feb avatar  avatar  avatar  avatar  avatar LUANXYZ avatar  avatar  avatar 铁熊 avatar lu shifeng avatar James Pan avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar CoderEndING avatar  avatar  avatar  avatar  avatar  avatar foyu avatar Chen tuixin avatar LJ avatar fangxx3863 avatar DimStar avatar mmor avatar  avatar  avatar  avatar  avatar  avatar 0x7c18 avatar  avatar zhaoyang avatar BJX avatar Austin avatar  avatar 栗子悦悦 avatar YeFei avatar  avatar  avatar LUCK avatar 从小就瓜 avatar  avatar  avatar  avatar Sandbox avatar  avatar 板砖兔 avatar  avatar in-ni avatar  avatar intomf avatar wpillow87 avatar  avatar  avatar limbotian avatar  avatar  avatar  avatar Fox_xiaohuli avatar  avatar  avatar  avatar

Watchers

Lucian avatar 铁熊 avatar  avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.