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:
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?
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: