Skip to content

Circular menu in arduino

Creating menus for embedded devices is often challenging.
Usually you have very little resources and complicated menus can not be an option.

More buttons offer more possibilities but also a more complex user interface and more hardware resources.

Why more hardware resources?

Going back at the "arduino and memory how to" article we have used the button change example.
One button use one pin as input pin from our arduino processor.
So for more buttons you need more pins.

There are methods that you can "bypass" this problem as we will see in next articles but anyway more buttons = more cost.

One nice way to reduce the hardware interface is using the so called circular menus.

A circular menu is menu that rotates within it's options.
We can see at the photo below two kinds of circular menus. A horizontal and a vertical one.



Both of them are single level circular menus. But we can expand this principle  into more levels too.
You can see that with arrow buttons we can keep a low number of buttons and a nice clean user interface.
Below you can see some remote controls with the circular menu option.




As you can see cellphones tv and video remote controls have this circular - cross menu.

One level circular menu on a lcd tv
Multi level circular menu on a tv set





We can see from the remote controls that any circular menu is navigable with 5 buttons.
The up, down, left, right and the enter button.
This is valid even on multi level circular menus.
If you are a little watchful you can see that you can use the circularity at your own advantage. How ?
If you keep pressing the down button at the last element since the menu is circular you will get the first element.
The same effect is valid for the left/right option.

So in order to navigate a complex multilevel circular menu only three buttons are needed : The down the right and the enter button. And it is getting even better. If you want only one level for your menu only a down and an enter button is needed.

In the next page we will see a single level example.