ESPHome 2025.5.0
Loading...
Searching...
No Matches
rp2040_pwm.h
Go to the documentation of this file.
1#pragma once
2
3#ifdef USE_RP2040
4
8#include "esphome/core/hal.h"
9
10namespace esphome {
11namespace rp2040_pwm {
12
13class RP2040PWM : public output::FloatOutput, public Component {
14 public:
15 void set_pin(InternalGPIOPin *pin) { pin_ = pin; }
18 void update_frequency(float frequency) override {
19 this->set_frequency(frequency);
20 this->frequency_changed_ = true;
21 this->write_state(this->last_output_);
22 }
23
25 void setup() override;
26 void dump_config() override;
28 float get_setup_priority() const override { return setup_priority::HARDWARE; }
29
30 protected:
31 void write_state(float state) override;
32
33 void setup_pwm_();
34
36 float frequency_{1000.0};
37 uint16_t wrap_{65535};
39 float last_output_{0.0};
40 bool frequency_changed_{false};
41};
42
43template<typename... Ts> class SetFrequencyAction : public Action<Ts...> {
44 public:
45 SetFrequencyAction(RP2040PWM *parent) : parent_(parent) {}
47
48 void play(Ts... x) {
49 float freq = this->frequency_.value(x...);
50 this->parent_->update_frequency(freq);
51 }
52
54};
55
56} // namespace rp2040_pwm
57} // namespace esphome
58
59#endif // USE_RP2040
uint16_le_t frequency
Definition bl0942.h:6
Base class for all output components that can output a variable level, like PWM.
void write_state(float state) override
float get_setup_priority() const override
HARDWARE setup_priority.
Definition rp2040_pwm.h:28
void update_frequency(float frequency) override
Dynamically update frequency.
Definition rp2040_pwm.h:18
float last_output_
Cache last output level for dynamic frequency updating.
Definition rp2040_pwm.h:39
void set_pin(InternalGPIOPin *pin)
Definition rp2040_pwm.h:15
void setup() override
Initialize pin.
void set_frequency(float frequency)
Definition rp2040_pwm.h:16
bool state
Definition fan.h:0
const float HARDWARE
For components that deal with hardware and are very important like GPIO switch.
Definition component.cpp:18
Providing packet encoding functions for exchanging data with a remote host.
Definition a01nyub.cpp:7
uint16_t x
Definition tt21100.cpp:5