Menu Suggestion for PID controller

I've been playing with a PID heating simulation here:

And I was looking to add some more functionality congruent with commercial PID controllers. Before I roll my own, I know there are many menu libraries available that would be capable of this. and I am looking for suggestions about libraries that might have existing examples similar to the menu systems for these devices:

The Omega User manual (78 pages) and the MYPIN manual(2 pages) show that they squeeze a lot of functionality into a small UI:

The two-page MYPIN manual does a lot with a small screen a few buttons by using a state-machine menu system:

The Omron and Omega UIs are an excellent example of a state machine diagram for a menu design to control lots of parameters with 4-5 buttons:

Look how that Omron parameter table would map directly into a struct Parameters={int id; const char * displayName; const char * desc; int defaultValue; .... }; and an array of all the entries. Also see how the menu diagram would map directly to a state machine about which parameter is being displayed and how to transition between them with which button presses.

So, my question is: do any of the many Arduino menu libraries on offer have any examples that would map well onto this sort of UI?

Hello DaveX

Keep it simple and stupid and make an abstraction.

Take a look at the timer in your kitchen oven.

Play around with it and find out if this simple and intuitive menu navigation suits your project.

Have a nice day and enjoy coding in C++.

p.s.
The menues could be handled via structured arrays.

Imho the "beauty" of these menus is the fact that they have a nice documentation.
If you do the same and start designing your menu, the implementation in one of the menu libraries should be straight forward.

@paulpaulson: My old-school oven timer has a separate knob for each function. It has two 12-hour analog clocks, one for delayed on and one for delayed off, which are kept in-sync with the oven's clock. You enable the delayed on by pushing it's stem in and advancing the knob into the future, which inhibits the oven thermostat unit the time passes. The delayed off is similar. My microwave is more advanced, but it has many buttons, 10 for numbers, and one for for each separate function.

The MYPIN menu is a straightforward list of parameters that would fit easily into a single structured array. It cycles down through the list for viewing with the SET button press and modified with a "SHIFT" to select a digit, and then UP or DOWN to change it.

The others separate some parameters into couple extra menus, but they all could be stored in the same array, with the logic separating the "security" from the "operation" and "adjustments" and "initial settings" subsets of parameters.

Why I'm building this is to experiment with the interactions of the parameters of arduino PIDs and how they compare to the commercial PIDs. It is possible to edit the code and rerun, but it takes time for a real(simulated) process to spin up, and I'd like to make live tweaks to the parameters.

I only need a single array of parameters, like the MYPIN, and the easiest way forward I see would be to design the parameter array, use a 4-line screen for UI feedback, and use the Serial input to parse commands like "0.001 ki\n" or "10 I\n" per something like:

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.