mirror of
https://github.com/esphome/esphome.git
synced 2024-11-25 16:38:16 +01:00
MAX7219 - Update intensity (#5477)
This commit is contained in:
parent
506c2ba6c7
commit
4e8cba49f1
2 changed files with 13 additions and 2 deletions
|
@ -164,6 +164,10 @@ void MAX7219Component::send_to_all_(uint8_t a_register, uint8_t data) {
|
||||||
this->disable();
|
this->disable();
|
||||||
}
|
}
|
||||||
void MAX7219Component::update() {
|
void MAX7219Component::update() {
|
||||||
|
if (this->intensity_changed_) {
|
||||||
|
this->send_to_all_(MAX7219_REGISTER_INTENSITY, this->intensity_);
|
||||||
|
this->intensity_changed_ = false;
|
||||||
|
}
|
||||||
for (uint8_t i = 0; i < this->num_chips_ * 8; i++)
|
for (uint8_t i = 0; i < this->num_chips_ * 8; i++)
|
||||||
this->buffer_[i] = 0;
|
this->buffer_[i] = 0;
|
||||||
if (this->writer_.has_value())
|
if (this->writer_.has_value())
|
||||||
|
@ -217,7 +221,13 @@ uint8_t MAX7219Component::printf(const char *format, ...) {
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
void MAX7219Component::set_writer(max7219_writer_t &&writer) { this->writer_ = writer; }
|
void MAX7219Component::set_writer(max7219_writer_t &&writer) { this->writer_ = writer; }
|
||||||
void MAX7219Component::set_intensity(uint8_t intensity) { this->intensity_ = intensity; }
|
void MAX7219Component::set_intensity(uint8_t intensity) {
|
||||||
|
intensity &= 0xF;
|
||||||
|
if (intensity != this->intensity_) {
|
||||||
|
this->intensity_changed_ = true;
|
||||||
|
this->intensity_ = intensity;
|
||||||
|
}
|
||||||
|
}
|
||||||
void MAX7219Component::set_num_chips(uint8_t num_chips) { this->num_chips_ = num_chips; }
|
void MAX7219Component::set_num_chips(uint8_t num_chips) { this->num_chips_ = num_chips; }
|
||||||
|
|
||||||
uint8_t MAX7219Component::strftime(uint8_t pos, const char *format, ESPTime time) {
|
uint8_t MAX7219Component::strftime(uint8_t pos, const char *format, ESPTime time) {
|
||||||
|
|
|
@ -52,7 +52,8 @@ class MAX7219Component : public PollingComponent,
|
||||||
void send_byte_(uint8_t a_register, uint8_t data);
|
void send_byte_(uint8_t a_register, uint8_t data);
|
||||||
void send_to_all_(uint8_t a_register, uint8_t data);
|
void send_to_all_(uint8_t a_register, uint8_t data);
|
||||||
|
|
||||||
uint8_t intensity_{15}; /// Intensity of the display from 0 to 15 (most)
|
uint8_t intensity_{15}; // Intensity of the display from 0 to 15 (most)
|
||||||
|
bool intensity_changed_{}; // True if we need to re-send the intensity
|
||||||
uint8_t num_chips_{1};
|
uint8_t num_chips_{1};
|
||||||
uint8_t *buffer_;
|
uint8_t *buffer_;
|
||||||
bool reverse_{false};
|
bool reverse_{false};
|
||||||
|
|
Loading…
Reference in a new issue