diff --git a/esphome/components/mcp4461/output/mcp4461_output.cpp b/esphome/components/mcp4461/output/mcp4461_output.cpp index 75fd60097a..477b789536 100644 --- a/esphome/components/mcp4461/output/mcp4461_output.cpp +++ b/esphome/components/mcp4461/output/mcp4461_output.cpp @@ -9,14 +9,16 @@ namespace mcp4461 { static const char *const TAG = "mcp4461.output"; +// floats from other components (like light etc.) are passed as "percentage floats" +// this function converts them to the 0.0 - 0.256 range used by the MCP4461 void Mcp4461Wiper::write_state(float state) { - if (this->parent_->set_wiper_level_(this->wiper_, static_cast(state * 1000))) { + if (this->parent_->set_wiper_level_(this->wiper_, static_cast(state * 256))) { this->state_ = state; } } float Mcp4461Wiper::read_state() { - return (static_cast(this->parent_->get_wiper_level_(this->wiper_)) / 1000.0); + return (static_cast(this->parent_->get_wiper_level_(this->wiper_)) / 256.0); } float Mcp4461Wiper::update_state() {