From bc76604d6871ab2f69ae3c096c5d911b5a4d1b25 Mon Sep 17 00:00:00 2001 From: Willem Oldemans Date: Tue, 14 Dec 2021 19:20:34 +0100 Subject: [PATCH] Add logging --- src/Battery.cpp | 50 +++++++++++++++++++++++++++++++++---------------- 1 file changed, 34 insertions(+), 16 deletions(-) diff --git a/src/Battery.cpp b/src/Battery.cpp index ee700db..d13a4ce 100644 --- a/src/Battery.cpp +++ b/src/Battery.cpp @@ -3,8 +3,8 @@ Copyright (c) 2014 Roberto Lo Giacco. This program is free software: you can redistribute it and/or modify - it under the terms of the GNU Lesser General Public License as - published by the Free Software Foundation, either version 3 of the + it under the terms of the GNU Lesser General Public License as + published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, @@ -19,7 +19,8 @@ #include "Battery.h" #include -Battery::Battery(uint16_t minVoltage, uint16_t maxVoltage, uint8_t sensePin) { +Battery::Battery(uint16_t minVoltage, uint16_t maxVoltage, uint8_t sensePin) +{ this->sensePin = sensePin; this->activationPin = 0xFF; this->minVoltage = minVoltage; @@ -33,19 +34,22 @@ Battery::Battery(uint16_t minVoltage, uint16_t maxVoltage, uint8_t sensePin, rea readFunction = readfunc; } - -void Battery::begin(uint16_t refVoltage, float dividerRatio, mapFn_t mapFunction) { +void Battery::begin(uint16_t refVoltage, float dividerRatio, mapFn_t mapFunction) +{ this->refVoltage = refVoltage; this->dividerRatio = dividerRatio; pinMode(this->sensePin, INPUT); - if (this->activationPin < 0xFF) { + if (this->activationPin < 0xFF) + { pinMode(this->activationPin, OUTPUT); } this->mapFunction = mapFunction ? mapFunction : &linear; } -void Battery::onDemand(uint8_t activationPin, uint8_t activationMode) { - if (activationPin < 0xFF) { +void Battery::onDemand(uint8_t activationPin, uint8_t activationMode) +{ + if (activationPin < 0xFF) + { this->activationPin = activationPin; this->activationMode = activationMode; pinMode(this->activationPin, OUTPUT); @@ -53,30 +57,44 @@ void Battery::onDemand(uint8_t activationPin, uint8_t activationMode) { } } -uint8_t Battery::level() { +uint8_t Battery::level() +{ return this->level(this->voltage()); } -uint8_t Battery::level(uint16_t voltage) { - if (voltage <= minVoltage) { +uint8_t Battery::level(uint16_t voltage) +{ + if (voltage <= minVoltage) + { return 0; - } else if (voltage >= maxVoltage) { + } + else if (voltage >= maxVoltage) + { return 100; - } else { + } + else + { return (*mapFunction)(voltage, minVoltage, maxVoltage); } } -uint16_t Battery::voltage() { - if (activationPin != 0xFF) { +uint16_t Battery::voltage() +{ + if (activationPin != 0xFF) + { digitalWrite(activationPin, activationMode); + log_i("activationPin on"); delayMicroseconds(10); // copes with slow switching activation circuits } readFunction(sensePin); delay(2); // allow the ADC to stabilize uint16_t reading = readFunction(sensePin) * dividerRatio * refVoltage / 1024; - if (activationPin != 0xFF) { + if (activationPin != 0xFF) + { digitalWrite(activationPin, !activationMode); + log_i("activationPin off"); } + log_i("BatteryRead: %d", reading); + return reading; }