From ec06e9e4a89813f58c80cd4dc8f76f16f070936d Mon Sep 17 00:00:00 2001 From: Willem Oldemans Date: Tue, 14 Dec 2021 18:54:30 +0100 Subject: [PATCH] added constructor --- src/Battery.cpp | 12 ++++++++++-- src/Battery.h | 4 ++++ 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/src/Battery.cpp b/src/Battery.cpp index 1e32103..ee700db 100644 --- a/src/Battery.cpp +++ b/src/Battery.cpp @@ -24,8 +24,16 @@ Battery::Battery(uint16_t minVoltage, uint16_t maxVoltage, uint8_t sensePin) { this->activationPin = 0xFF; this->minVoltage = minVoltage; this->maxVoltage = maxVoltage; + readFunction = &analogRead; } +Battery::Battery(uint16_t minVoltage, uint16_t maxVoltage, uint8_t sensePin, readFn_t readfunc) +{ + Battery(minVoltage, maxVoltage, sensePin); + readFunction = readfunc; +} + + void Battery::begin(uint16_t refVoltage, float dividerRatio, mapFn_t mapFunction) { this->refVoltage = refVoltage; this->dividerRatio = dividerRatio; @@ -64,9 +72,9 @@ uint16_t Battery::voltage() { digitalWrite(activationPin, activationMode); delayMicroseconds(10); // copes with slow switching activation circuits } - analogRead(sensePin); + readFunction(sensePin); delay(2); // allow the ADC to stabilize - uint16_t reading = analogRead(sensePin) * dividerRatio * refVoltage / 1024; + uint16_t reading = readFunction(sensePin) * dividerRatio * refVoltage / 1024; if (activationPin != 0xFF) { digitalWrite(activationPin, !activationMode); } diff --git a/src/Battery.h b/src/Battery.h index ccd283a..94160ff 100644 --- a/src/Battery.h +++ b/src/Battery.h @@ -22,6 +22,8 @@ #include typedef uint8_t(*mapFn_t)(uint16_t, uint16_t, uint16_t); +typedef uint16_t (*readFn_t)(uint8_t); // type for conciseness + class Battery { public: @@ -35,6 +37,7 @@ class Battery { */ Battery(uint16_t minVoltage, uint16_t maxVoltage, uint8_t sensePin); + Battery(uint16_t minVoltage, uint16_t maxVoltage, uint8_t sensePin, readFn_t readfunc); /** * Initializes the library by optionally setting additional parameters. * To obtain the best results use a calibrated reference using the VoltageReference library or equivalent. @@ -81,6 +84,7 @@ class Battery { uint8_t activationPin; uint8_t activationMode; mapFn_t mapFunction; + readFn_t readFunction; }; //