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->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);
}

View File

@@ -22,6 +22,8 @@
#include <Arduino.h>
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;
};
//