ESPHome 2025.9.0-dev
Loading...
Searching...
No Matches
tm1651.h
Go to the documentation of this file.
1#pragma once
2
5#include "esphome/core/hal.h"
6
7namespace esphome {
8namespace tm1651 {
9
15
16class TM1651Display : public Component {
17 public:
18 void set_clk_pin(InternalGPIOPin *pin) { clk_pin_ = pin; }
19 void set_dio_pin(InternalGPIOPin *pin) { dio_pin_ = pin; }
20
21 void setup() override;
22 void dump_config() override;
23
24 void set_brightness(uint8_t new_brightness);
25 void set_brightness(TM1651Brightness new_brightness) { this->set_brightness(static_cast<uint8_t>(new_brightness)); }
26
27 void set_level(uint8_t new_level);
28 void set_level_percent(uint8_t percentage);
29
30 void turn_off();
31 void turn_on();
32
33 protected:
34 uint8_t calculate_level_(uint8_t percentage);
35 void display_level_();
36
37 uint8_t remap_brightness_(uint8_t new_brightness);
38 void update_brightness_(uint8_t on_off_control);
39
40 // low level functions
41 bool write_byte_(uint8_t data);
42
43 void half_cycle_clock_low_(bool data_bit);
46
47 void start_();
48 void stop_();
49
50 void delineate_transmission_(bool dio_state);
51
54
55 bool display_on_{true};
56 uint8_t brightness_{};
57 uint8_t level_{0};
58};
59
60template<typename... Ts> class SetBrightnessAction : public Action<Ts...>, public Parented<TM1651Display> {
61 public:
62 TEMPLATABLE_VALUE(uint8_t, brightness)
63
64 void play(Ts... x) override {
65 auto brightness = this->brightness_.value(x...);
66 this->parent_->set_brightness(brightness);
67 }
68};
69
70template<typename... Ts> class SetLevelAction : public Action<Ts...>, public Parented<TM1651Display> {
71 public:
72 TEMPLATABLE_VALUE(uint8_t, level)
73
74 void play(Ts... x) override {
75 auto level = this->level_.value(x...);
76 this->parent_->set_level(level);
77 }
78};
79
80template<typename... Ts> class SetLevelPercentAction : public Action<Ts...>, public Parented<TM1651Display> {
81 public:
82 TEMPLATABLE_VALUE(uint8_t, level_percent)
83
84 void play(Ts... x) override {
85 auto level_percent = this->level_percent_.value(x...);
86 this->parent_->set_level_percent(level_percent);
87 }
88};
89
90template<typename... Ts> class TurnOnAction : public Action<Ts...>, public Parented<TM1651Display> {
91 public:
92 void play(Ts... x) override { this->parent_->turn_on(); }
93};
94
95template<typename... Ts> class TurnOffAction : public Action<Ts...>, public Parented<TM1651Display> {
96 public:
97 void play(Ts... x) override { this->parent_->turn_off(); }
98};
99
100} // namespace tm1651
101} // namespace esphome
virtual void play(Ts... x)=0
Helper class to easily give an object a parent of type T.
Definition helpers.h:656
TEMPLATABLE_VALUE(uint8_t, brightness) void play(Ts... x) override
Definition tm1651.h:62
TEMPLATABLE_VALUE(uint8_t, level) void play(Ts... x) override
Definition tm1651.h:72
TEMPLATABLE_VALUE(uint8_t, level_percent) void play(Ts... x) override
Definition tm1651.h:82
void set_brightness(TM1651Brightness new_brightness)
Definition tm1651.h:25
InternalGPIOPin * clk_pin_
Definition tm1651.h:52
void update_brightness_(uint8_t on_off_control)
Definition tm1651.cpp:175
void set_level_percent(uint8_t percentage)
Definition tm1651.cpp:124
void set_brightness(uint8_t new_brightness)
Definition tm1651.cpp:108
void set_clk_pin(InternalGPIOPin *pin)
Definition tm1651.h:18
void delineate_transmission_(bool dio_state)
Definition tm1651.cpp:245
uint8_t calculate_level_(uint8_t percentage)
Definition tm1651.cpp:145
void set_dio_pin(InternalGPIOPin *pin)
Definition tm1651.h:19
bool write_byte_(uint8_t data)
Definition tm1651.cpp:183
uint8_t remap_brightness_(uint8_t new_brightness)
Definition tm1651.cpp:165
void half_cycle_clock_low_(bool data_bit)
Definition tm1651.cpp:196
InternalGPIOPin * dio_pin_
Definition tm1651.h:53
void set_level(uint8_t new_level)
Definition tm1651.cpp:115
void dump_config() override
Definition tm1651.cpp:102
void play(Ts... x) override
Definition tm1651.h:97
void play(Ts... x) override
Definition tm1651.h:92
Providing packet encoding functions for exchanging data with a remote host.
Definition a01nyub.cpp:7
uint16_t x
Definition tt21100.cpp:5