mirror of
https://github.com/wled/WLED.git
synced 2025-07-08 19:36:33 +00:00
bug fixes
This commit is contained in:
parent
3cc60fa4d4
commit
a13f1a9bee
@ -32,7 +32,14 @@ class Battery
|
|||||||
this->setCalibration(USERMOD_BATTERY_CALIBRATION);
|
this->setCalibration(USERMOD_BATTERY_CALIBRATION);
|
||||||
}
|
}
|
||||||
|
|
||||||
virtual void update(batteryConfig cfg) = 0;
|
virtual void update(batteryConfig cfg)
|
||||||
|
{
|
||||||
|
if(cfg.minVoltage) this->setMinVoltage(cfg.minVoltage);
|
||||||
|
if(cfg.maxVoltage) this->setMaxVoltage(cfg.maxVoltage);
|
||||||
|
if(cfg.level) this->setLevel(cfg.level);
|
||||||
|
if(cfg.calibration) this->setCalibration(cfg.calibration);
|
||||||
|
if(cfg.voltageMultiplier) this->setVoltageMultiplier(cfg.voltageMultiplier);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Corresponding battery curves
|
* Corresponding battery curves
|
||||||
@ -49,10 +56,10 @@ class Battery
|
|||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
*
|
*
|
||||||
* Getter and Setter
|
* Getter and Setter
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Get lowest configured battery voltage
|
* Get lowest configured battery voltage
|
||||||
@ -63,26 +70,26 @@ class Battery
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Set lowest battery voltage
|
* Set lowest battery voltage
|
||||||
* can't be below 0 volt
|
* can't be below 0 volt
|
||||||
*/
|
*/
|
||||||
virtual void setMinVoltage(float voltage)
|
virtual void setMinVoltage(float voltage)
|
||||||
{
|
{
|
||||||
this->minVoltage = max(0.0f, voltage);
|
this->minVoltage = max(0.0f, voltage);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Get highest configured battery voltage
|
* Get highest configured battery voltage
|
||||||
*/
|
*/
|
||||||
virtual float getMaxVoltage()
|
virtual float getMaxVoltage()
|
||||||
{
|
{
|
||||||
return this->maxVoltage;
|
return this->maxVoltage;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Set highest battery voltage
|
* Set highest battery voltage
|
||||||
* can't be below minVoltage
|
* can't be below minVoltage
|
||||||
*/
|
*/
|
||||||
virtual void setMaxVoltage(float voltage)
|
virtual void setMaxVoltage(float voltage)
|
||||||
{
|
{
|
||||||
this->maxVoltage = max(getMinVoltage()+.5f, voltage);
|
this->maxVoltage = max(getMinVoltage()+.5f, voltage);
|
||||||
@ -110,43 +117,43 @@ class Battery
|
|||||||
|
|
||||||
void setLevel(float level)
|
void setLevel(float level)
|
||||||
{
|
{
|
||||||
this->level = constrain(level, 0.0f, 110.0f);;
|
this->level = constrain(level, 0.0f, 110.0f);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Get the configured calibration value
|
* Get the configured calibration value
|
||||||
* a offset value to fine-tune the calculated voltage.
|
* a offset value to fine-tune the calculated voltage.
|
||||||
*/
|
*/
|
||||||
virtual float getCalibration()
|
virtual float getCalibration()
|
||||||
{
|
{
|
||||||
return calibration;
|
return calibration;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Set the voltage calibration offset value
|
* Set the voltage calibration offset value
|
||||||
* a offset value to fine-tune the calculated voltage.
|
* a offset value to fine-tune the calculated voltage.
|
||||||
*/
|
*/
|
||||||
virtual void setCalibration(float offset)
|
virtual void setCalibration(float offset)
|
||||||
{
|
{
|
||||||
calibration = offset;
|
calibration = offset;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Get the configured calibration value
|
* Get the configured calibration value
|
||||||
* a value to set the voltage divider ratio
|
* a value to set the voltage divider ratio
|
||||||
*/
|
*/
|
||||||
virtual float getVoltageMultiplier()
|
virtual float getVoltageMultiplier()
|
||||||
{
|
{
|
||||||
return voltageMultiplier;
|
return voltageMultiplier;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Set the voltage multiplier value
|
* Set the voltage multiplier value
|
||||||
* a value to set the voltage divider ratio.
|
* a value to set the voltage divider ratio.
|
||||||
*/
|
*/
|
||||||
virtual void setVoltageMultiplier(float multiplier)
|
virtual void setVoltageMultiplier(float multiplier)
|
||||||
{
|
{
|
||||||
voltageMultiplier = voltageMultiplier;
|
voltageMultiplier = multiplier;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -19,14 +19,6 @@ class Lion : public Battery
|
|||||||
this->setMaxVoltage(USERMOD_BATTERY_LION_MAX_VOLTAGE);
|
this->setMaxVoltage(USERMOD_BATTERY_LION_MAX_VOLTAGE);
|
||||||
}
|
}
|
||||||
|
|
||||||
void update(batteryConfig cfg)
|
|
||||||
{
|
|
||||||
if(cfg.minVoltage) this->setMinVoltage(cfg.minVoltage);
|
|
||||||
if(cfg.maxVoltage) this->setMaxVoltage(cfg.maxVoltage);
|
|
||||||
if(cfg.level) this->setLevel(cfg.level);
|
|
||||||
if(cfg.calibration) this->setCalibration(cfg.calibration);
|
|
||||||
}
|
|
||||||
|
|
||||||
float mapVoltage(float v, float min, float max) override
|
float mapVoltage(float v, float min, float max) override
|
||||||
{
|
{
|
||||||
return this->linearMapping(v, min, max); // basic mapping
|
return this->linearMapping(v, min, max); // basic mapping
|
||||||
|
@ -19,14 +19,6 @@ class Lipo : public Battery
|
|||||||
this->setMaxVoltage(USERMOD_BATTERY_LIPO_MAX_VOLTAGE);
|
this->setMaxVoltage(USERMOD_BATTERY_LIPO_MAX_VOLTAGE);
|
||||||
}
|
}
|
||||||
|
|
||||||
void update(batteryConfig cfg)
|
|
||||||
{
|
|
||||||
if(cfg.minVoltage) this->setMinVoltage(cfg.minVoltage);
|
|
||||||
if(cfg.maxVoltage) this->setMaxVoltage(cfg.maxVoltage);
|
|
||||||
if(cfg.level) this->setLevel(cfg.level);
|
|
||||||
if(cfg.calibration) this->setCalibration(cfg.calibration);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* LiPo batteries have a differnt discharge curve, see
|
* LiPo batteries have a differnt discharge curve, see
|
||||||
* https://blog.ampow.com/lipo-voltage-chart/
|
* https://blog.ampow.com/lipo-voltage-chart/
|
||||||
|
@ -264,6 +264,7 @@ class UsermodBattery : public Usermod
|
|||||||
battery[F("min-voltage")] = bat->getMinVoltage();
|
battery[F("min-voltage")] = bat->getMinVoltage();
|
||||||
battery[F("max-voltage")] = bat->getMaxVoltage();
|
battery[F("max-voltage")] = bat->getMaxVoltage();
|
||||||
battery[F("calibration")] = bat->getCalibration();
|
battery[F("calibration")] = bat->getCalibration();
|
||||||
|
battery[F("voltage-multiplier")] = bat->getVoltageMultiplier();
|
||||||
battery[FPSTR(_readInterval)] = readingInterval;
|
battery[FPSTR(_readInterval)] = readingInterval;
|
||||||
|
|
||||||
JsonObject ao = battery.createNestedObject(F("auto-off")); // auto off section
|
JsonObject ao = battery.createNestedObject(F("auto-off")); // auto off section
|
||||||
@ -283,6 +284,7 @@ class UsermodBattery : public Usermod
|
|||||||
getJsonValue(battery[F("min-voltage")], cfg.minVoltage);
|
getJsonValue(battery[F("min-voltage")], cfg.minVoltage);
|
||||||
getJsonValue(battery[F("max-voltage")], cfg.maxVoltage);
|
getJsonValue(battery[F("max-voltage")], cfg.maxVoltage);
|
||||||
getJsonValue(battery[F("calibration")], cfg.calibration);
|
getJsonValue(battery[F("calibration")], cfg.calibration);
|
||||||
|
getJsonValue(battery[F("voltage-multiplier")], cfg.voltageMultiplier);
|
||||||
|
|
||||||
setReadingInterval(battery[FPSTR(_readInterval)] | readingInterval);
|
setReadingInterval(battery[FPSTR(_readInterval)] | readingInterval);
|
||||||
|
|
||||||
@ -459,6 +461,7 @@ class UsermodBattery : public Usermod
|
|||||||
setMinBatteryVoltage(battery[F("min-voltage")] | bat->getMinVoltage());
|
setMinBatteryVoltage(battery[F("min-voltage")] | bat->getMinVoltage());
|
||||||
setMaxBatteryVoltage(battery[F("max-voltage")] | bat->getMaxVoltage());
|
setMaxBatteryVoltage(battery[F("max-voltage")] | bat->getMaxVoltage());
|
||||||
setCalibration(battery[F("calibration")] | calibration);
|
setCalibration(battery[F("calibration")] | calibration);
|
||||||
|
setVoltageMultiplier(battery[F("voltage-multiplier")] | voltageMultiplier);
|
||||||
setReadingInterval(battery[FPSTR(_readInterval)] | readingInterval);
|
setReadingInterval(battery[FPSTR(_readInterval)] | readingInterval);
|
||||||
|
|
||||||
getUsermodConfigFromJsonObject(battery);
|
getUsermodConfigFromJsonObject(battery);
|
||||||
@ -537,7 +540,25 @@ class UsermodBattery : public Usermod
|
|||||||
return USERMOD_ID_BATTERY;
|
return USERMOD_ID_BATTERY;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* get currently active battery type
|
||||||
|
*/
|
||||||
|
batteryType getBatteryType()
|
||||||
|
{
|
||||||
|
return cfg.type;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set currently active battery type
|
||||||
|
*/
|
||||||
|
batteryType setBatteryType(batteryType type)
|
||||||
|
{
|
||||||
|
cfg.type = type;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
*/
|
||||||
unsigned long getReadingInterval()
|
unsigned long getReadingInterval()
|
||||||
{
|
{
|
||||||
return readingInterval;
|
return readingInterval;
|
||||||
@ -561,7 +582,7 @@ class UsermodBattery : public Usermod
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Set lowest battery voltage
|
* Set lowest battery voltage
|
||||||
* cant be below 0 volt
|
* can't be below 0 volt
|
||||||
*/
|
*/
|
||||||
void setMinBatteryVoltage(float voltage)
|
void setMinBatteryVoltage(float voltage)
|
||||||
{
|
{
|
||||||
@ -622,6 +643,24 @@ class UsermodBattery : public Usermod
|
|||||||
bat->setCalibration(offset);
|
bat->setCalibration(offset);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set the voltage multiplier value
|
||||||
|
* A multiplier that may need adjusting for different voltage divider setups
|
||||||
|
*/
|
||||||
|
void setVoltageMultiplier(float multiplier)
|
||||||
|
{
|
||||||
|
bat->setVoltageMultiplier(multiplier);
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Get the voltage multiplier value
|
||||||
|
* A multiplier that may need adjusting for different voltage divider setups
|
||||||
|
*/
|
||||||
|
float getVoltageMultiplier()
|
||||||
|
{
|
||||||
|
return bat->getVoltageMultiplier();
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get auto-off feature enabled status
|
* Get auto-off feature enabled status
|
||||||
* is auto-off enabled, true/false
|
* is auto-off enabled, true/false
|
||||||
@ -727,7 +766,7 @@ class UsermodBattery : public Usermod
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get low-power-indicator status when the indication is done thsi returns true
|
* Get low-power-indicator status when the indication is done this returns true
|
||||||
*/
|
*/
|
||||||
bool getLowPowerIndicatorDone()
|
bool getLowPowerIndicatorDone()
|
||||||
{
|
{
|
||||||
|
Loading…
x
Reference in New Issue
Block a user