From 507864b22a3705ebfe803abfda5d6e6c008b946c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?L=C3=BCbbe=20Onken?= Date: Tue, 19 Aug 2025 20:56:39 +0200 Subject: [PATCH] Fixes #748 - use the BATTERY_PIN define to trigger reading the battery - rename SENSORS_STABLE to BATTERY_READING_STABLE - Add comments to better indicate the purpose of the variable --- src/Globals.cpp | 2 +- src/Globals.h | 4 +++- src/MQTTManager.cpp | 2 +- src/PeripheryManager.cpp | 11 ++++------- 4 files changed, 9 insertions(+), 10 deletions(-) diff --git a/src/Globals.cpp b/src/Globals.cpp index 4390b762..b02cf528 100644 --- a/src/Globals.cpp +++ b/src/Globals.cpp @@ -428,7 +428,7 @@ bool BLOCK_NAVIGATION = false; bool UPDATE_CHECK = false; float GAMMA = 0; bool SENSOR_READING = true; -bool SENSORS_STABLE = false; +bool BATTERY_READING_STABLE = false; bool DFPLAYER_ACTIVE = false; bool ROTATE_SCREEN = false; uint8_t TIME_MODE = 1; diff --git a/src/Globals.h b/src/Globals.h index 87b344a4..c941392a 100644 --- a/src/Globals.h +++ b/src/Globals.h @@ -117,7 +117,9 @@ void saveSettings(); extern bool BLOCK_NAVIGATION; extern bool UPDATE_CHECK; extern bool SENSOR_READING; -extern bool SENSORS_STABLE; +// This boolean is used to indicate that the battery sensor readings via the ADC are stable. +// If your device dosn't have a battery, make sure that BATTERY_PIN in PeripheryManager.cpp is undefined +extern bool BATTERY_READING_STABLE; extern bool ROTATE_SCREEN; extern long STATS_INTERVAL; extern uint8_t TIME_MODE; diff --git a/src/MQTTManager.cpp b/src/MQTTManager.cpp index 6dba2c97..16759ad2 100644 --- a/src/MQTTManager.cpp +++ b/src/MQTTManager.cpp @@ -746,7 +746,7 @@ void MQTTManager_::tick() mqtt.loop(); } unsigned long currentMillis_Stats = millis(); - if ((currentMillis_Stats - previousMillis_Stats >= STATS_INTERVAL) && (SENSORS_STABLE)) + if ((currentMillis_Stats - previousMillis_Stats >= STATS_INTERVAL) && (BATTERY_READING_STABLE)) { previousMillis_Stats = currentMillis_Stats; sendStats(); diff --git a/src/PeripheryManager.cpp b/src/PeripheryManager.cpp index 3371231d..fe22c949 100644 --- a/src/PeripheryManager.cpp +++ b/src/PeripheryManager.cpp @@ -484,7 +484,8 @@ void PeripheryManager_::tick() if (currentMillis_BatTempHum - previousMillis_BatTempHum >= interval_BatTempHum) { previousMillis_BatTempHum = currentMillis_BatTempHum; -#ifndef awtrix2_upgrade +// Only try to read the battery when BATTERY_PIN is defined +#ifdef BATTERY_PIN uint16_t ADCVALUE = analogRead(BATTERY_PIN); // Discard values that are totally out of range, especially the first value read after a reboot. // Meaningful values for an Ulanzi clock are in the range 400..700 @@ -493,10 +494,10 @@ void PeripheryManager_::tick() // Send ADC values through median filter to get rid of the remaining spikes and then calculate the average BATTERY_RAW = meanFilterBatt.AddValue(medianFilterBatt.AddValue(ADCVALUE)); BATTERY_PERCENT = max(min((int)map(BATTERY_RAW, MIN_BATTERY, MAX_BATTERY, 0, 100), 100), 0); - SENSORS_STABLE = true; + BATTERY_READING_STABLE = true; } #else - SENSORS_STABLE = true; + BATTERY_READING_STABLE = true; // Always set this to true, when there is no battery #endif if (SENSOR_READING) { @@ -526,10 +527,6 @@ void PeripheryManager_::tick() CURRENT_TEMP += TEMP_OFFSET; CURRENT_HUM += HUM_OFFSET; } - else - { - SENSORS_STABLE = true; - } } unsigned long currentMillis_LDR = millis();