Skip to content

Commit

Permalink
BP1658CJ - Clear all channels before sleeping. (esphome#5525)
Browse files Browse the repository at this point in the history
  • Loading branch information
Cossid authored Oct 12, 2023
1 parent f5c12b5 commit da3e390
Showing 1 changed file with 6 additions and 2 deletions.
8 changes: 6 additions & 2 deletions esphome/components/bp1658cj/bp1658cj.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -37,10 +37,14 @@ void BP1658CJ::loop() {
uint8_t data[12];
if (this->pwm_amounts_[0] == 0 && this->pwm_amounts_[1] == 0 && this->pwm_amounts_[2] == 0 &&
this->pwm_amounts_[3] == 0 && this->pwm_amounts_[4] == 0) {
// Off / Sleep
data[0] = BP1658CJ_MODEL_ID + BP1658CJ_ADDR_STANDBY;
for (int i = 1; i < 12; i++)
data[i] = 0;

// First turn all channels off
data[0] = BP1658CJ_MODEL_ID + BP1658CJ_ADDR_START_5CH;
this->write_buffer_(data, 12);
// Then sleep
data[0] = BP1658CJ_MODEL_ID + BP1658CJ_ADDR_STANDBY;
this->write_buffer_(data, 12);
} else if (this->pwm_amounts_[0] == 0 && this->pwm_amounts_[1] == 0 && this->pwm_amounts_[2] == 0 &&
(this->pwm_amounts_[3] > 0 || this->pwm_amounts_[4] > 0)) {
Expand Down

0 comments on commit da3e390

Please sign in to comment.