ESPHome 2026.6.0-dev
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::rp2040_pwm {
11
12class RP2040PWM : public output::FloatOutput, public Component {
13 public:
14 void set_pin(InternalGPIOPin *pin) { pin_ = pin; }
17 void update_frequency(float frequency) override {
18 this->set_frequency(frequency);
19 this->frequency_changed_ = true;
20 this->write_state(this->last_output_);
21 }
22
24 void setup() override;
25 void dump_config() override;
27 float get_setup_priority() const override { return setup_priority::HARDWARE; }
28
29 protected:
30 void write_state(float state) override;
31
32 void setup_pwm_();
33
35 float frequency_{1000.0};
36 uint16_t wrap_{65535};
38 float last_output_{0.0};
39 bool frequency_changed_{false};
40};
41
42template<typename... Ts> class SetFrequencyAction : public Action<Ts...> {
43 public:
44 SetFrequencyAction(RP2040PWM *parent) : parent_(parent) {}
46
47 void play(const Ts &...x) {
48 float freq = this->frequency_.value(x...);
49 this->parent_->update_frequency(freq);
50 }
51
53};
54
55} // namespace esphome::rp2040_pwm
56
57#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:27
void update_frequency(float frequency) override
Dynamically update frequency.
Definition rp2040_pwm.h:17
float last_output_
Cache last output level for dynamic frequency updating.
Definition rp2040_pwm.h:38
void set_pin(InternalGPIOPin *pin)
Definition rp2040_pwm.h:14
void setup() override
Initialize pin.
void set_frequency(float frequency)
Definition rp2040_pwm.h:15
bool state
Definition fan.h:2
constexpr float HARDWARE
For components that deal with hardware and are very important like GPIO switch.
Definition component.h:41
uint16_t x
Definition tt21100.cpp:5