8static const uint8_t BP5758D_MODEL_ID = 0b10000000;
9static const uint8_t BP5758D_ADDR_STANDBY = 0b00000000;
14static const uint8_t BP5758D_ADDR_START_3CH = 0b00010000;
15static const uint8_t BP5758D_ADDR_START_2CH = 0b00100000;
16static const uint8_t BP5758D_ADDR_START_5CH = 0b00110000;
17static const uint8_t BP5758D_ALL_DATA_CHANNEL_ENABLEMENT = 0b00011111;
19static const uint8_t BP5758D_DELAY = 2;
32 ESP_LOGCONFIG(TAG,
"BP5758D:");
44 for (
int i = 1; i < 17; i++)
48 data[0] = BP5758D_MODEL_ID + BP5758D_ADDR_START_5CH;
51 data[0] = BP5758D_MODEL_ID + BP5758D_ADDR_STANDBY;
56 data[0] = BP5758D_MODEL_ID + BP5758D_ADDR_START_2CH;
57 data[1] = BP5758D_ALL_DATA_CHANNEL_ENABLEMENT;
63 for (
int i = 7, j = 0; i <= 15; i += 2, j++) {
71 data[0] = BP5758D_MODEL_ID + BP5758D_ADDR_START_3CH;
72 data[1] = BP5758D_ALL_DATA_CHANNEL_ENABLEMENT;
78 for (
int i = 7, j = 0; i <= 15; i += 2, j++) {
85 data[0] = BP5758D_MODEL_ID + BP5758D_ADDR_START_5CH;
86 data[1] = BP5758D_ALL_DATA_CHANNEL_ENABLEMENT;
92 for (
int i = 7, j = 0; i <= 15; i += 2, j++) {
137 for (uint8_t mask = 0x80; mask; mask >>= 1) {
virtual void pin_mode(gpio::Flags flags)=0
virtual void digital_write(bool value)=0
std::vector< uint8_t > channel_current_
void dump_config() override
void write_byte_(uint8_t data)
void set_channel_current_(uint8_t channel, uint8_t current)
void set_channel_value_(uint8_t channel, uint16_t value)
void write_buffer_(uint8_t *buffer, uint8_t size)
void write_bit_(bool value)
void loop() override
Send new values if they were updated.
uint8_t correct_current_level_bits_(uint8_t current)
std::vector< uint16_t > pwm_amounts_
ESPHOME_LOG_TAG(TAG, "bp5758d")
void IRAM_ATTR HOT delayMicroseconds(uint32_t us)