fix issue with overlapping display of sensor and date by allowing them to be displayed only when time is being displayed

This commit is contained in:
Nicu Hodos 2025-02-07 21:40:39 +01:00
parent b7b8fc603d
commit 06cdca9036

View File

@ -16,7 +16,7 @@
#define MILLISECONDS(value) value*TASK_MILLISECOND #define MILLISECONDS(value) value*TASK_MILLISECOND
#define SECONDS(value) value*TASK_SECOND #define SECONDS(value) value*TASK_SECOND
#define MINUTES(value) value*TASK_MINUTE #define MINUTES(value) value*TASK_MINUTE
#define DISPLAY_SENSOR_ITERATIONS 2 #define DISPLAY_SENSOR_ITERATIONS 2+1
#define DISPLAY_DELAY (SECONDS(2)) #define DISPLAY_DELAY (SECONDS(2))
namespace Display { namespace Display {
@ -35,23 +35,25 @@ namespace Display {
[]() { []() {
drawColon(false); drawColon(false);
}); });
Task tDisplaySensor(SECONDS(5), DISPLAY_SENSOR_ITERATIONS, displayTemp, &ts, false, Task tDisplaySensor(SECONDS(5), DISPLAY_SENSOR_ITERATIONS, nullptr, &ts, false,
[]() { []() {
if (!tDisplayTime.isEnabled()) return false;
tDisplayTime.disable(); tDisplayTime.disable();
tDisplaySensor.setCallback(displayTemp);
return true; return true;
}, },
[]() { []() {
tDisplaySensor.setIterations(DISPLAY_SENSOR_ITERATIONS * 2); tDisplaySensor.setIterations((DISPLAY_SENSOR_ITERATIONS - 1) * 2 + 1);
tDisplayTime.enableDelayed(tDisplaySensor.getInterval()); tDisplayTime.enable();
}); });
Task tDisplayDate(TASK_IMMEDIATE, TASK_ONCE, displayDate, &ts, false, Task tDisplayDate(SECONDS(5), TASK_ONCE + 1, displayDate, &ts, false,
[]() { []() {
if (!tDisplayTime.isEnabled()) return false;
tDisplayTime.disable(); tDisplayTime.disable();
tDisplaySensor.disable();
return true; return true;
}, },
[]() { []() {
tDisplayTime.enableDelayed(SECONDS(5)); tDisplayTime.enable();
}); });
bool hourFormat24 = false; bool hourFormat24 = false;
@ -204,5 +206,6 @@ namespace Display {
void setup() { void setup() {
clockDisplay.begin(DISPLAY_ADDRESS); clockDisplay.begin(DISPLAY_ADDRESS);
clockDisplay.setBrightness(Brightness::current); clockDisplay.setBrightness(Brightness::current);
tDisplayTime.enable();
} }
} }