odometer:
Are you sure that the elements of thatstructshould be constant? Including the character arrays for the numbers?
Right... I sort of copied and pasted that struct together as I went along, and didn't really give consideration to what I was typing there down to the last detail. But that's of course right, if I want to display variables that are actually variable, they should probably not be constant.
odometer:
In all seriousness, it might make more sense to "go all the way" with icons: that is, make a "number 0" icon, a "number 1" icon, and so forth, up to "number 9", and use those to display numbers.
That's exactly what I am doing already. All the numbers are 16-bit color PROGMEM images that are displayed using custom font libraries and the code that I posted at reply #2 further up in this thread.
Given that the ESP32 has oodles of memory, why not use that memory for stuff like that ![]()
Here's a live test screen of my trip computer from the other night... time and date are fully functional, but the "big" numbers are dummy values and don't show any actual sensor readings as yet. The issue with the temperature decimals at the bottom is fixed now.

I've fiddled with GIMP a little the last half hour, and I am thinking maybe this is a good way to structure the settings screens:

I am taking some inspiration here from my car radio (Kenwood BT-92SD), which has slightly similar looking settings menus. At least they behave in a similar way, with the arrows and the negative text.
At the moment, I am thinking that the negative effect of the characters as seen in the picture can maybe be done simply by swapping out red and white pixels when drawing the numbers. But I'll have to see how that looks. My Kenwood radio apparently uses 1 bpp font libraries, so that's naturally a lot easier for swapping out pixel colors.
I will probably keep the settings menu hidden in normal operation, i.e. when you skip through the different main menu categories "engine - fuel - speed", then "settings" will be omitted, and will only be entered if you keep the "set" button pressed for one second or something. You will probably not want to navigate through configuration settings in 16-pt font at 70 mph on the motorway ![]()
odometer:
Woah, woah, woah, woah!
Try something more like:1
1
2
230
0
....
if you don't want to make life too difficult for yourself. But what do I know. Maybe other people here will beg to differ.
No, I totally see your point. All I need to store in a configuration file is a handful of int or bool values. As I wrote, I was making that up off the top of my head, and maybe I was inspired a little by the about:config tab in Mozilla Firefox. ![]()
I will probably have another file in SPIFFS where temporary things will be stored, especially last known sensor values before the ignition is shut off. But they, too, should be no more than float, int and bool. The trip computer will get permanent +12V from the battery, but I want it to go into deep sleep when the ignition is turned off (after showing the analog clock from my first post in this thread for a while), so there will be a pin on which the ESP32 senses if the ignition is HIGH or LOW.