diff --git a/src/WatchFeatures/Battery.cpp b/src/WatchFeatures/Battery.cpp index c3ff043..c3705e8 100644 --- a/src/WatchFeatures/Battery.cpp +++ b/src/WatchFeatures/Battery.cpp @@ -2,6 +2,9 @@ #include "Battery.h" #include #include +#include + +float WatchFeatures::Battery::m_previousVoltage = std::numeric_limits::infinity(); WatchFeatures::Battery::Battery() { @@ -9,13 +12,20 @@ WatchFeatures::Battery::Battery() float WatchFeatures::Battery::GetVoltage() { - return analogReadMilliVolts(BATT_ADC_PIN) / 1000.0f * 2.0f; + float voltage = analogReadMilliVolts(BATT_ADC_PIN) / 1000.0f * 2.0f; + + if (m_previousVoltage == std::numeric_limits::infinity()) { + m_previousVoltage = voltage; + } + + float averageVoltage = (m_previousVoltage + voltage) / 2.0f; + m_previousVoltage = voltage; + return averageVoltage; } uint8_t WatchFeatures::Battery::GetPercentage() { float voltage = GetVoltage(); - Serial.println(voltage); float level = (GetVoltage() - 3.6f) / 0.6f; if (level < 0.0f) { diff --git a/src/WatchFeatures/Battery.h b/src/WatchFeatures/Battery.h index 5a6ad1f..8e70149 100644 --- a/src/WatchFeatures/Battery.h +++ b/src/WatchFeatures/Battery.h @@ -13,4 +13,7 @@ public: Battery(); float GetVoltage(); uint8_t GetPercentage(); + +private: + static float m_previousVoltage; }; \ No newline at end of file