added constructor

This commit is contained in:
2021-12-14 18:54:30 +01:00
parent 20b30eee1f
commit ec06e9e4a8
2 changed files with 14 additions and 2 deletions

View File

@@ -24,8 +24,16 @@ Battery::Battery(uint16_t minVoltage, uint16_t maxVoltage, uint8_t sensePin) {
this->activationPin = 0xFF; this->activationPin = 0xFF;
this->minVoltage = minVoltage; this->minVoltage = minVoltage;
this->maxVoltage = maxVoltage; 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) { void Battery::begin(uint16_t refVoltage, float dividerRatio, mapFn_t mapFunction) {
this->refVoltage = refVoltage; this->refVoltage = refVoltage;
this->dividerRatio = dividerRatio; this->dividerRatio = dividerRatio;
@@ -64,9 +72,9 @@ uint16_t Battery::voltage() {
digitalWrite(activationPin, activationMode); digitalWrite(activationPin, activationMode);
delayMicroseconds(10); // copes with slow switching activation circuits delayMicroseconds(10); // copes with slow switching activation circuits
} }
analogRead(sensePin); readFunction(sensePin);
delay(2); // allow the ADC to stabilize 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) { if (activationPin != 0xFF) {
digitalWrite(activationPin, !activationMode); digitalWrite(activationPin, !activationMode);
} }

View File

@@ -22,6 +22,8 @@
#include <Arduino.h> #include <Arduino.h>
typedef uint8_t(*mapFn_t)(uint16_t, uint16_t, uint16_t); typedef uint8_t(*mapFn_t)(uint16_t, uint16_t, uint16_t);
typedef uint16_t (*readFn_t)(uint8_t); // type for conciseness
class Battery { class Battery {
public: 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);
Battery(uint16_t minVoltage, uint16_t maxVoltage, uint8_t sensePin, readFn_t readfunc);
/** /**
* Initializes the library by optionally setting additional parameters. * Initializes the library by optionally setting additional parameters.
* To obtain the best results use a calibrated reference using the VoltageReference library or equivalent. * 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 activationPin;
uint8_t activationMode; uint8_t activationMode;
mapFn_t mapFunction; mapFn_t mapFunction;
readFn_t readFunction;
}; };
// //