Add logging

This commit is contained in:
2021-12-14 19:20:34 +01:00
parent 672e44a7cb
commit bc76604d68

View File

@@ -3,8 +3,8 @@
Copyright (c) 2014 Roberto Lo Giacco. Copyright (c) 2014 Roberto Lo Giacco.
This program is free software: you can redistribute it and/or modify This program is free software: you can redistribute it and/or modify
it under the terms of the GNU Lesser General Public License as it under the terms of the GNU Lesser General Public License as
published by the Free Software Foundation, either version 3 of the published by the Free Software Foundation, either version 3 of the
License, or (at your option) any later version. License, or (at your option) any later version.
This program is distributed in the hope that it will be useful, This program is distributed in the hope that it will be useful,
@@ -19,7 +19,8 @@
#include "Battery.h" #include "Battery.h"
#include <Arduino.h> #include <Arduino.h>
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->sensePin = sensePin;
this->activationPin = 0xFF; this->activationPin = 0xFF;
this->minVoltage = minVoltage; this->minVoltage = minVoltage;
@@ -33,19 +34,22 @@ Battery::Battery(uint16_t minVoltage, uint16_t maxVoltage, uint8_t sensePin, rea
readFunction = readfunc; 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;
pinMode(this->sensePin, INPUT); pinMode(this->sensePin, INPUT);
if (this->activationPin < 0xFF) { if (this->activationPin < 0xFF)
{
pinMode(this->activationPin, OUTPUT); pinMode(this->activationPin, OUTPUT);
} }
this->mapFunction = mapFunction ? mapFunction : &linear; this->mapFunction = mapFunction ? mapFunction : &linear;
} }
void Battery::onDemand(uint8_t activationPin, uint8_t activationMode) { void Battery::onDemand(uint8_t activationPin, uint8_t activationMode)
if (activationPin < 0xFF) { {
if (activationPin < 0xFF)
{
this->activationPin = activationPin; this->activationPin = activationPin;
this->activationMode = activationMode; this->activationMode = activationMode;
pinMode(this->activationPin, OUTPUT); 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()); return this->level(this->voltage());
} }
uint8_t Battery::level(uint16_t voltage) { uint8_t Battery::level(uint16_t voltage)
if (voltage <= minVoltage) { {
if (voltage <= minVoltage)
{
return 0; return 0;
} else if (voltage >= maxVoltage) { }
else if (voltage >= maxVoltage)
{
return 100; return 100;
} else { }
else
{
return (*mapFunction)(voltage, minVoltage, maxVoltage); return (*mapFunction)(voltage, minVoltage, maxVoltage);
} }
} }
uint16_t Battery::voltage() { uint16_t Battery::voltage()
if (activationPin != 0xFF) { {
if (activationPin != 0xFF)
{
digitalWrite(activationPin, activationMode); digitalWrite(activationPin, activationMode);
log_i("activationPin on");
delayMicroseconds(10); // copes with slow switching activation circuits delayMicroseconds(10); // copes with slow switching activation circuits
} }
readFunction(sensePin); readFunction(sensePin);
delay(2); // allow the ADC to stabilize delay(2); // allow the ADC to stabilize
uint16_t reading = readFunction(sensePin) * dividerRatio * refVoltage / 1024; uint16_t reading = readFunction(sensePin) * dividerRatio * refVoltage / 1024;
if (activationPin != 0xFF) { if (activationPin != 0xFF)
{
digitalWrite(activationPin, !activationMode); digitalWrite(activationPin, !activationMode);
log_i("activationPin off");
} }
log_i("BatteryRead: %d", reading);
return reading; return reading;
} }