Have you ever developed something with display and noticed that it is very uncomfortable to program a menu? As I developed the Firmware for the new reflow-control-firmware i wrote about 300 lines of switch-case and then decided to do the menu dynamically. And this is what came out, a library für dotmatrix-menus for AVR-Controllers.

Everything is documented in the package.

DOWNLOAD (released under GPLv3)

Here some Video…

Instructions (todo.txt)

LCDmenu Library Version 0.1
An easy way to provide a menu to your project.

by Tobias Schlegel – www.tobias-schlegel.de

READ THIS (THIS _is_ the RTFM-Part… 😉

How to set up your menu.

1) lcdmenu.h
– Change ui_Max_Menu_Depth to the maximum amount of possible submenu-layers: Mainmenu + 2 submenu + 1 subsubmenu = 3
– define ui_init_LCD_on_init_menu 1 if you wish for lcdmenu to init the lcd when calling init_menu()
– Change the key codes to your liking. Lcdmenu wirks with a 2d + 2 key layout. The codes for these buttons can be changed.
-> If you like define unique IDs for every menu entry (later used for translation)

2) lcdmenu.c
– For every submenu, create an array (one element per entry) of the type Menu_Entry.
See lcdmenu.c for proper initialization.
– Change init_menu() accordingly. An example is already implemented in lcdmenu.c
Note:     MainMenu doesn’t need a parent-pointer.
Care about the execution type (exec = execute CallMe-function / Following = display submenu) of each entry!.
– Add CallMe functions. These are the functions called by lcdmenu when clicking an entry which has an exec-flag and a proper set up
CallMe-pointer. These functions have to be void name(void) !

3) lcd/lcd.h
– Configure your hardware setup according to the file and documentation contained in lcd/doc

– You have to link the following files to your project:
– lcdmenu.c
– lcd/lcd.c
– On startup call init_menu();
– Call menu($keycode) to actualize the Menu and displayMenu() to put it on the screen.

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.