ESPHome 2025.5.0
Loading...
Searching...
No Matches
tm1637.h
Go to the documentation of this file.
1#pragma once
2
5#include "esphome/core/hal.h"
6#include "esphome/core/time.h"
7
8#include <vector>
9
10#ifdef USE_BINARY_SENSOR
12#endif
13
14namespace esphome {
15namespace tm1637 {
16
17class TM1637Display;
18#ifdef USE_BINARY_SENSOR
19class TM1637Key;
20#endif
21
22using tm1637_writer_t = std::function<void(TM1637Display &)>;
23
25 public:
26 void set_writer(tm1637_writer_t &&writer) { this->writer_ = writer; }
27
28 void setup() override;
29
30 void dump_config() override;
31
32 void set_clk_pin(GPIOPin *pin) { clk_pin_ = pin; }
33 void set_dio_pin(GPIOPin *pin) { dio_pin_ = pin; }
34
35 float get_setup_priority() const override;
36
37 void update() override;
38
40 uint8_t printf(uint8_t pos, const char *format, ...) __attribute__((format(printf, 3, 4)));
42 uint8_t printf(const char *format, ...) __attribute__((format(printf, 2, 3)));
43
45 uint8_t print(uint8_t pos, const char *str);
47 uint8_t print(const char *str);
48
49 void set_intensity(uint8_t intensity) { this->intensity_ = intensity; }
50 void set_inverted(bool inverted) { this->inverted_ = inverted; }
51 void set_length(uint8_t length) { this->length_ = length; }
52 void set_on(bool on) { this->on_ = on; }
53
54 void display();
55
56#ifdef USE_BINARY_SENSOR
57 void loop() override;
58 uint8_t get_keys();
59 void add_tm1637_key(TM1637Key *tm1637_key) { this->tm1637_keys_.push_back(tm1637_key); }
60#endif
61
63 uint8_t strftime(uint8_t pos, const char *format, ESPTime time) __attribute__((format(strftime, 3, 0)));
65 uint8_t strftime(const char *format, ESPTime time) __attribute__((format(strftime, 2, 0)));
66
67 protected:
68 void bit_delay_();
70 bool send_byte_(uint8_t b);
71 uint8_t read_byte_();
72 void start_();
73 void stop_();
74
77 uint8_t intensity_;
78 uint8_t length_;
80 bool on_{true};
82 uint8_t buffer_[6] = {0};
83#ifdef USE_BINARY_SENSOR
84 std::vector<TM1637Key *> tm1637_keys_{};
85#endif
86};
87
88#ifdef USE_BINARY_SENSOR
90 friend class TM1637Display;
91
92 public:
93 void set_keycode(uint8_t key_code) { key_code_ = key_code; }
94 void process(uint8_t data) { this->publish_state(static_cast<bool>(data == this->key_code_)); }
95
96 protected:
97 uint8_t key_code_{0};
98};
99#endif
100
101} // namespace tm1637
102} // namespace esphome
This class simplifies creating components that periodically check a state.
Definition component.h:301
Base class for all binary_sensor-type classes.
void publish_state(bool state)
Publish a new state to the front-end.
void set_writer(tm1637_writer_t &&writer)
Definition tm1637.h:26
optional< tm1637_writer_t > writer_
Definition tm1637.h:81
float get_setup_priority() const override
Definition tm1637.cpp:185
void dump_config() override
Definition tm1637.cpp:137
uint8_t strftime(uint8_t pos, const char *format, ESPTime time) __attribute__((format(strftime
Evaluate the strftime-format and print the result at the given position.
Definition tm1637.cpp:372
void set_clk_pin(GPIOPin *pin)
Definition tm1637.h:32
std::vector< TM1637Key * > tm1637_keys_
Definition tm1637.h:84
void set_inverted(bool inverted)
Definition tm1637.h:50
void set_length(uint8_t length)
Definition tm1637.h:51
void add_tm1637_key(TM1637Key *tm1637_key)
Definition tm1637.h:59
void set_dio_pin(GPIOPin *pin)
Definition tm1637.h:33
void set_intensity(uint8_t intensity)
Definition tm1637.h:49
uint8_t printf(uint8_t pos, const char *format,...) __attribute__((format(printf
Evaluate the printf-format and print the result at the given position.
Definition tm1637.cpp:351
void process(uint8_t data)
Definition tm1637.h:94
void set_keycode(uint8_t key_code)
Definition tm1637.h:93
struct @67::@68 __attribute__
std::function< void(TM1637Display &)> tm1637_writer_t
Definition tm1637.h:22
Providing packet encoding functions for exchanging data with a remote host.
Definition a01nyub.cpp:7
A more user-friendly version of struct tm from time.h.
Definition time.h:15
std::string print()
uint16_t length
Definition tt21100.cpp:0