ESPHome 2026.5.0-dev
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"
8
9#include <vector>
10
11#ifdef USE_BINARY_SENSOR
13#endif
14
15namespace esphome {
16namespace tm1637 {
17
18class TM1637Display;
19#ifdef USE_BINARY_SENSOR
20class TM1637Key;
21#endif
22
24
26 public:
27 void set_writer(tm1637_writer_t &&writer) { this->writer_ = writer; }
28
29 void setup() override;
30
31 void dump_config() override;
32
33 void set_clk_pin(GPIOPin *pin) { clk_pin_ = pin; }
34 void set_dio_pin(GPIOPin *pin) { dio_pin_ = pin; }
35
36 float get_setup_priority() const override;
37
38 void update() override;
39
41 uint8_t printf(uint8_t pos, const char *format, ...) __attribute__((format(printf, 3, 4)));
43 uint8_t printf(const char *format, ...) __attribute__((format(printf, 2, 3)));
44
46 uint8_t print(uint8_t pos, const char *str);
48 uint8_t print(const char *str);
49
51 void set_buffer(const uint8_t *data, uint8_t length);
52
55 void set_brightness(float brightness);
56 void set_intensity(uint8_t intensity) { this->intensity_ = intensity; }
57 void set_inverted(bool inverted) { this->inverted_ = inverted; }
58 void set_length(uint8_t length) { this->length_ = length; }
59 void set_on(bool on) { this->on_ = on; }
60
61 void display();
62
63#ifdef USE_BINARY_SENSOR
64 void loop() override;
65 uint8_t get_keys();
66 void add_tm1637_key(TM1637Key *tm1637_key) { this->tm1637_keys_.push_back(tm1637_key); }
67#endif
68
70 uint8_t strftime(uint8_t pos, const char *format, ESPTime time) __attribute__((format(strftime, 3, 0)));
72 uint8_t strftime(const char *format, ESPTime time) __attribute__((format(strftime, 2, 0)));
73
74 protected:
75 void bit_delay_();
77 bool send_byte_(uint8_t b);
78 uint8_t read_byte_();
79 void start_();
80 void stop_();
81
84 uint8_t intensity_;
85 uint8_t length_;
87 bool on_{true};
89 uint8_t buffer_[6] = {0};
90#ifdef USE_BINARY_SENSOR
91 std::vector<TM1637Key *> tm1637_keys_{};
92#endif
93};
94
95#ifdef USE_BINARY_SENSOR
97 friend class TM1637Display;
98
99 public:
100 void set_keycode(uint8_t key_code) { key_code_ = key_code; }
101 void process(uint8_t data) { this->publish_state(static_cast<bool>(data == this->key_code_)); }
102
103 protected:
104 uint8_t key_code_{0};
105};
106#endif
107
108} // namespace tm1637
109} // namespace esphome
This class simplifies creating components that periodically check a state.
Definition component.h:602
Base class for all binary_sensor-type classes.
void publish_state(bool new_state)
Publish a new state to the front-end.
void set_writer(tm1637_writer_t &&writer)
Definition tm1637.h:27
void set_brightness(float brightness)
Set the display brightness.
Definition tm1637.cpp:351
float get_setup_priority() const override
Definition tm1637.cpp:185
void dump_config() override
Definition tm1637.cpp:135
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:385
tm1637_writer_t writer_
Definition tm1637.h:88
void set_clk_pin(GPIOPin *pin)
Definition tm1637.h:33
std::vector< TM1637Key * > tm1637_keys_
Definition tm1637.h:91
void set_inverted(bool inverted)
Definition tm1637.h:57
void set_length(uint8_t length)
Definition tm1637.h:58
void set_buffer(const uint8_t *data, uint8_t length)
Set raw buffer bytes from data array up to length bytes.
Definition tm1637.cpp:359
void add_tm1637_key(TM1637Key *tm1637_key)
Definition tm1637.h:66
void set_dio_pin(GPIOPin *pin)
Definition tm1637.h:34
void set_intensity(uint8_t intensity)
Definition tm1637.h:56
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:364
void process(uint8_t data)
Definition tm1637.h:101
void set_keycode(uint8_t key_code)
Definition tm1637.h:100
struct @65::@66 __attribute__
Wake the main loop task from an ISR. ISR-safe.
Definition main_task.h:32
Providing packet encoding functions for exchanging data with a remote host.
Definition a01nyub.cpp:7
const char int const __FlashStringHelper * format
Definition log.h:74
size_t size_t pos
Definition helpers.h:1082
A more user-friendly version of struct tm from time.h.
Definition time.h:23
std::string print()
uint16_t length
Definition tt21100.cpp:0