Finally got the bugs out of the interface to the Adafruit RGB LCD module. Now there is a 5-button/LCD solution for MPGuino that uses only two pins instead of 10.
Short demonstration of new idle timeout, EOC timeout, and park timeout. I think the Meelis code does something similar.
Idle timeout is engaged when MPGuino senses an idle condition, and activates an Idle screen after the idle timeout period elapses. The default setting is 15 seconds, but may be changed via stored parameter "Idle Timeout (s)"
EOC timeout is engaged when MPGuino senses an EOC condition, and activates a separate EOC screen after the EOC timeout period elapses. The default setting is 2 seconds, but may be changed via stored parameter "EOC Timeout (s)".
Both Idle and EOC timeouts can be temporarily overridden by pressing a button - this temporarily restores whatever screen was being displayed normally for a button-press timeout period. The normal screen is also displayed when the engine is running and the vehicle is moving, or if both the vehicle and engine are stopped. The default setting is 5 seconds, but may be changed via stored parameter "BtnPress T/O (s)".
The park timeout engages when MPGuino senses both the engine and the vehicle are stopped, and when the park timeout period elapses, the Current and Tank Trips are both saved to EEPROM (if configured). After this, the driver may safely remove power from the MPGuino. The default setting is 5 seconds, but may be changed via stored parameter "Park Timeout (s)".
After the park timeout period elapses, the traditional inactivity timeout engages. When the inactivity timeout elapses, MPGuino either enters deep sleep mode, or it shows a clock display. Either may be configured at compile-time. The default setting is 120 seconds, but may be changed via stored parameter "OFF Timeout (s)".