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