Mercurial > public > ostc4
diff Discovery/Src/t7.c @ 984:41136649b90d GasConsumption
Improvment temperature measurent:
In the previous verion no plausibility check for over temperature values was done. In addition the temperature display switches fast between e.g. 24 and 25 in case the value is 24.9 because of measurement tolerances. To avoid this a hysterese was added to the display function.
author | Ideenmodellierer |
---|---|
date | Sat, 29 Mar 2025 14:56:08 +0100 (8 days ago) |
parents | 7149f372b0ba |
children | d9290c76b840 |
line wrap: on
line diff
--- a/Discovery/Src/t7.c Sun Mar 02 21:43:08 2025 +0100 +++ b/Discovery/Src/t7.c Sat Mar 29 14:56:08 2025 +0100 @@ -171,6 +171,7 @@ #define SHOW_AMBIENTE_SURFACE_DELTA (0.02f) #define SHOW_AMBIENTE_DEBOUNCE (0.003f) +#define SHOW_TEMPERATURE_DEBOUNCE (0.5f) #define MAX_NUM_SUMMARY_LINES 6 @@ -703,6 +704,7 @@ { static float debounceAmbientPressure = 0; static uint8_t lastChargeStatus = 0; + static float lastTemperature = 100.0; char text[256]; char timeSuffix; uint8_t hours; @@ -1026,10 +1028,14 @@ GFX_write_string(&FontT48,&t7surfaceL,text,3); + if(fabsf(stateUsed->lifeData.temperature_celsius - lastTemperature) > SHOW_TEMPERATURE_DEBOUNCE) + { + lastTemperature = stateUsed->lifeData.temperature_celsius; + } if(settingsGetPointer()->nonMetricalSystem) - snprintf(text,40,"%01.0f\140\022\016\016 fahrenheit",unit_temperature_float(stateUsed->lifeData.temperature_celsius)); + snprintf(text,40,"%01.0f\140\022\016\016 fahrenheit",unit_temperature_float(lastTemperature)); else - snprintf(text,30,"%01.0f\140\022\016\016 celsius",stateUsed->lifeData.temperature_celsius); + snprintf(text,30,"%01.0f\140\022\016\016 celsius",lastTemperature); GFX_write_string(&FontT48,&t7surfaceL,text,4); } else