How To Create Multi Layered Menu System (LCD)

We are trying to create a multi-layered menu system for the LCD:

Startup LCD Screen:

///////////////////////////////////////
// Welcome //
// //
//////////////////////////////////////

if Left Button is clicked, go to Specs side:
////////////////////////////////////////
// Primary: 7.20V //
// Backup: 0.12V //
//////////////////////////////////////

Then we can click the Right button and view the Gyro and IME sensor values. We then want to hold the center button for 2sec and it will go back to the home menu.

If we click the Right button on the Home Menu it will let us scroll through all of our autonomous.

//////////////////////////////////////
/// Blue Hanging Zone //
/// //
//////////////////////////////////////
etc for the other ones. We would just go left and right to see the other ones and click enter to select the autonomous.

We have the portion for scrolling through the autonomous. Are there any examples of multi layered menu systems we can look? What tips would you have? Is this a good idea?

Thanks!

We’ve done it a few ways.

Have a bumper switch on the robot near the LCD Screen that switches the menus.

Have it go to the sensor display after selecting an LCD Screen.

When the left and right buttons are held, switch modes.

Put an IME/potentiometer on a wheel and have it switch when you spin it. If value is positive show one menu. If it’s negative, show the other one.

I like 2 and 3. But the other things will work, too.

You could start with the code in this thread.

ROBOTC LCD autonomous selection

or get really crazy and use this code (although it’s a bit out of date now, may not work correctly as ROBOTC has changed a bit, need to rewrite it sometime).

https://vexforum.com/showpost.php?p=315448&postcount=120

AFAIK, both Jordan and I have very intricate menu code for our robots, although JPearman would probably hurl at my coding style :stuck_out_tongue:

I would be happy to share it with you! (Gmail)

I have not done much with multi-layered menu systems, mostly because they tend to be complicated, and I have never found them necessary.

I suggest a single-layer like this:
On the “Main Level”, you select Autonomous, battery, or sensors with Left and Right buttons.

Center button switches between “Selection Level” and “Main Level”.
In the “Selection Level”, the Left and Right buttons change the current item.

(Code tags to preserve formatting.)


Main Level:
====================
||  Autonomous:  >|| (Main level, Left and right buttons select this)
||    Red Mid     || (Selection Level)
====================
Press right to go to battery. (Note the arrow, ">".)

====================
||<   Battery:   >||
|| Primary: 7.20  ||
====================
Press left to go to autonomous.
Press right to go to sensors.

====================
||<   Sensors:    ||
||   Gyro: 1200   ||
====================
Press left to go to battery.

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

Selection Level:
====================
||  Autonomous:   || (Main level)
||<   Red Mid    >|| (Selection Level, Left and right buttons select this)
====================
Press left or right to go to different routines.

====================
||    Battery:    ||
|| Primary: 7.20 >||
====================
Press right to go to different battery.

====================
||    Sensors:    ||
||  IME 1: 1200  >||
====================
Press left to go to gyro.
Press right to go to IME 2.

Does this make sense?


Unfortunately, you would probably have to change your current autonomous selection code, if you did decide to use this interface.
I do find this much easier to code than multi level.

If you want the lcd selection code with this interface, you can PM me. I might end up posting it in a new thread sometime, anyway; I am not sure.

Cool! Thanks guys for all of your input! I’m one of our main programmers so I’m the one working on this task specifically. Sweet! I’ll let you guys know if our menu system works after I add in some of the ideas you guys have stated. Thanks again!