KEMBAR78
2 Minute Read Published: 2015-08-16: Arduino-Menusystem | PDF | Menu | Menu (Computing)
100% found this document useful (2 votes)
178 views3 pages

2 Minute Read Published: 2015-08-16: Arduino-Menusystem

The document introduces the arduino-menusystem library which makes it easy to incorporate a menu system into an Arduino project. The library uses the composite design pattern. It allows the creation of Menu objects which contain MenuItems and other Menus. MenuItems represent actions and contain callbacks. The MenuSystem object contains functions to interact with the menu system, like selecting, navigating, and getting information about the current state. The document provides a tutorial on setting up menus, menu items, and the menu system, and defining callbacks to handle selections.

Uploaded by

Matt Venn
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
100% found this document useful (2 votes)
178 views3 pages

2 Minute Read Published: 2015-08-16: Arduino-Menusystem

The document introduces the arduino-menusystem library which makes it easy to incorporate a menu system into an Arduino project. The library uses the composite design pattern. It allows the creation of Menu objects which contain MenuItems and other Menus. MenuItems represent actions and contain callbacks. The MenuSystem object contains functions to interact with the menu system, like selecting, navigating, and getting information about the current state. The document provides a tutorial on setting up menus, menu items, and the menu system, and defining callbacks to handle selections.

Uploaded by

Matt Venn
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 3

Arduino menu system library

===========================

2 minute read Published: 2015-08-16

Introducing the arduino-menusystem library that makes it easy to incorporate a menu


system into an Arduino project.

Design
======

The library is implemented according to the composite design pattern . When using this
library you need to create `Menu`'s, `MenuItem`'s, and a single `MenuSystem`.

If you're interested in learning more about design patterns, I highly recommend Design
Patterns: Elements of Reusable Object-Oriented Software by Eric Gamma, Richard Helm,
Ralph Johnson, and John Vlissides.

Menu A `Menu` represents an item in the menu that contains other `Menu`'s and
`MenuItem`'s. Use `add_menu_item()` and `add_menu()` to build its
contents.

MenuItem A `MenuItem` represents an action. When `select()` is called the


`MenuItem`'s callback function is called.

MenuSystem The `MenuSystem` contains the core functions for interacting with the
menu system: `next()`, `prev()`, `select()`, and `back()`.

Tutorial
========

First create the various `Menu`'s, `MenuItem`'s, and `MenuSystem` at the top of your
source file. You will also need to create a root `Menu` to hold the top- level menu
items. The root item is never displayed.

#include <MenuSystem.h>

MenuSystem ms;
Menu mm("");
MenuItem mi_time("TIME");
MenuItem mi_date("DATE");
MenuItem mi_alarm("ALARM");
Menu mu_disp("DISP");
MenuItem mi_disp_brightness("BRTNS");

In your `Setup()` function, put the menu system together.

void setup()
{
// Menus
mm.add_item(&mi_time, &on_menu_set_time);
mm.add_item(&mi_date, &on_menu_set_date);
mm.add_item(&mi_alarm, &on_menu_set_alarm);
mm.add_menu(&mu_disp);
mu_disp.add_item(&mi_disp_brightness, &on_menu_set_brightness)
ms.set_root_menu(&mm);
}

Define your callback functions (only one is shown here).

void on_menu_set_alarm(MenuItem* pMenuItem)


{
// Set the alarm
}

And finally, interact with your menu system using the functions listed below. This will
usually happen when responding to user input.

ms.select(); // select the current menuitem/menu


ms.back(); // go back to the menu one level up
ms.next(); // go to the next item in the current menu
ms.prev(); // go to the previous item in the current menu
ms.get_current_menu_name(); // get the current menu name
ms.get_num_menu_items(); // get the number of menu items in the
ms.get_cur_menu_item(); // get the current menu item number in t

Examples
========

There are several examples in the examples folder in the repository , including one
using a Sure Electronics LED Matrix , as shown in the cover image.

-----------------------------------------------------------------------------------------

and tagged design patterns

You might also like