mirror of
https://github.com/esphome/esphome.git
synced 2024-12-25 23:14:54 +01:00
Float output: Fix min_power and max_power adjusting when output is inverted (#1250)
This patch fixes faulty behaviour when both, invert and min_power/max_power are set for a float output (e.g. PWM). The current code scales the output level to the range [min_power, max_power] and subsequently inverts the value. This leads to values that are outside the range [min_power, max_power]. This patch fixes the problem by inverting the requested level first and then scaling it to the interval [min_power, max_power]. Co-authored-by: Thomas Niederprüm <niederp@physik.uni-kl.de>
This commit is contained in:
parent
dbec3d7c50
commit
002861f13b
1 changed files with 2 additions and 3 deletions
|
@ -29,10 +29,9 @@ void FloatOutput::set_level(float state) {
|
|||
this->power_.unrequest();
|
||||
}
|
||||
#endif
|
||||
|
||||
float adjusted_value = (state * (this->max_power_ - this->min_power_)) + this->min_power_;
|
||||
if (this->is_inverted())
|
||||
adjusted_value = 1.0f - adjusted_value;
|
||||
state = 1.0f - state;
|
||||
float adjusted_value = (state * (this->max_power_ - this->min_power_)) + this->min_power_;
|
||||
this->write_state(adjusted_value);
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue