ESPHome 2026.6.0-dev
Loading...
Searching...
No Matches
hbridge_fan.h
Go to the documentation of this file.
1#pragma once
2
7
8namespace esphome::hbridge {
9
14
15class HBridgeFan : public Component, public fan::Fan {
16 public:
17 HBridgeFan(int speed_count, DecayMode decay_mode) : speed_count_(speed_count), decay_mode_(decay_mode) {}
18
19 void set_pin_a(output::FloatOutput *pin_a) { pin_a_ = pin_a; }
20 void set_pin_b(output::FloatOutput *pin_b) { pin_b_ = pin_b; }
21 void set_enable_pin(output::FloatOutput *enable) { enable_ = enable; }
22 void set_preset_modes(std::initializer_list<const char *> presets) { this->set_supported_preset_modes(presets); }
23
24 void setup() override;
25 void dump_config() override;
27 this->wire_preset_modes_(this->traits_);
28 return this->traits_;
29 }
30
32
33 protected:
41
42 void control(const fan::FanCall &call) override;
43 void write_state_();
44
45 void set_hbridge_levels_(float a_level, float b_level);
46 void set_hbridge_levels_(float a_level, float b_level, float enable);
47};
48
49template<typename... Ts> class BrakeAction : public Action<Ts...> {
50 public:
51 explicit BrakeAction(HBridgeFan *parent) : parent_(parent) {}
52
53 void play(const Ts &...x) override { this->parent_->brake(); }
54
56};
57
58} // namespace esphome::hbridge
void set_supported_preset_modes(std::initializer_list< const char * > preset_modes)
Set the supported preset modes (stored on Fan, referenced by FanTraits via pointer).
Definition fan.h:133
void wire_preset_modes_(FanTraits &traits)
Wire the Fan-owned preset modes pointer into the given traits object.
Definition fan.h:178
void play(const Ts &...x) override
Definition hbridge_fan.h:53
BrakeAction(HBridgeFan *parent)
Definition hbridge_fan.h:51
output::FloatOutput * pin_a_
Definition hbridge_fan.h:34
output::BinaryOutput * oscillating_
Definition hbridge_fan.h:37
void set_hbridge_levels_(float a_level, float b_level)
void set_enable_pin(output::FloatOutput *enable)
Definition hbridge_fan.h:21
output::FloatOutput * enable_
Definition hbridge_fan.h:36
void set_pin_b(output::FloatOutput *pin_b)
Definition hbridge_fan.h:20
void set_preset_modes(std::initializer_list< const char * > presets)
Definition hbridge_fan.h:22
HBridgeFan(int speed_count, DecayMode decay_mode)
Definition hbridge_fan.h:17
fan::FanTraits get_traits() override
Definition hbridge_fan.h:26
void control(const fan::FanCall &call) override
void set_pin_a(output::FloatOutput *pin_a)
Definition hbridge_fan.h:19
output::FloatOutput * pin_b_
Definition hbridge_fan.h:35
Base class for all output components that can output a variable level, like PWM.
uint16_t x
Definition tt21100.cpp:5