Skip to content

TuriSc/Pico-Menu-System

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Pico-Menu-System

A C library for creating hierarchical menu systems on displays with Raspberry Pi Pico.

Features

  • Hierarchical menu structure
  • Support for action items and submenus
  • Scrolling support for long menus
  • Customizable draw callback for any display
  • Works with buttons, keypads, and rotary encoders

Available functions

// Create a new menu
menu_t *menu_create(const char *title);

// Add an action item to a menu
int menu_add_action(menu_t *menu, const char *label, menu_callback_t callback);

// Add a submenu item to a menu
int menu_add_submenu(menu_t *parent_menu, const char *label, menu_t *submenu);

// Initialize menu system
void menu_system_init(menu_system_t *menu_system, menu_t *root_menu, 
                     uint8_t visible_count, void (*draw_callback)(menu_system_t *));

// Navigate up in menu
void menu_system_up(menu_system_t *menu_system);

// Navigate down in menu
void menu_system_down(menu_system_t *menu_system);

// Select current menu item
void menu_system_select(menu_system_t *menu_system);

// Go back to parent menu
void menu_system_back(menu_system_t *menu_system);

// Get currently selected item
menu_item_t *menu_system_get_selected(menu_system_t *menu_system);

// Refresh menu display
void menu_system_refresh(menu_system_t *menu_system);

// Destroy menu and free resources
void menu_destroy(menu_t *menu);

Example usage

menu_t *root = menu_create("Main Menu");
menu_add_action(root, "Action 1", my_callback);
menu_add_submenu(root, "Settings", settings_menu);

menu_system_t menu_system;
menu_system_init(&menu_system, root, 4, draw_callback);

// In your input handler:
menu_system_up(&menu_system);      // Navigate up
menu_system_down(&menu_system);    // Navigate down
menu_system_select(&menu_system);  // Select item
menu_system_back(&menu_system);     // Go back

An example application is provided.

Version history

  • 2025.11.22 - v1.0.0 - First release

About

A C library for creating hierarchical menu systems on displays with Raspberry Pi Pico

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors