From 429f82106bbb16a353d0aa5e86be8fbf18aa2972 Mon Sep 17 00:00:00 2001 From: Tomas P <128642216+tpp-at-idx@users.noreply.github.com> Date: Fri, 7 Nov 2025 09:48:57 +0100 Subject: [PATCH] tweak getBattMilliVolts to report battery more accurately --- variants/thinknode_m2/ThinknodeM2Board.cpp | 21 ++++++++++++++------- 1 file changed, 14 insertions(+), 7 deletions(-) diff --git a/variants/thinknode_m2/ThinknodeM2Board.cpp b/variants/thinknode_m2/ThinknodeM2Board.cpp index 3a2f067e..332f1f67 100644 --- a/variants/thinknode_m2/ThinknodeM2Board.cpp +++ b/variants/thinknode_m2/ThinknodeM2Board.cpp @@ -19,14 +19,21 @@ void ThinknodeM2Board::begin() { enterDeepSleep(0); } - uint16_t ThinknodeM2Board::getBattMilliVolts() { + uint16_t ThinknodeM2Board::getBattMilliVolts() { analogReadResolution(12); - delay(10); - float volts = (analogRead(PIN_VBAT_READ) * ADC_MULTIPLIER * AREF_VOLTAGE) / 4096; - analogReadResolution(10); - return volts * 1000; - } + analogSetPinAttenuation(PIN_VBAT_READ, ADC_11db); + + uint32_t mv = 0; + for (int i = 0; i < 8; ++i) { + mv += analogReadMilliVolts(PIN_VBAT_READ); + delayMicroseconds(200); + } + mv /= 8; + + analogReadResolution(10); + return static_cast(mv * ADC_MULTIPLIER ); +} const char* ThinknodeM2Board::getManufacturerName() const { return "Elecrow ThinkNode M2"; - } \ No newline at end of file + }