ESPHome 2026.11.0-dev
Loading...
Searching...
No Matches
rp2040_pwm.h
Go to the documentation of this file.
1#pragma once
2
3#ifdef USE_RP2
4
7#include "esphome/core/hal.h"
8
9namespace esphome::rp2040_pwm {
10
11class RP2040PWM final : public output::FloatOutput, public Component {
12 public:
13 void set_pin(InternalGPIOPin *pin) { pin_ = pin; }
16 void update_frequency(float frequency) override {
17 this->set_frequency(frequency);
18 this->frequency_changed_ = true;
19 this->write_state(this->last_output_);
20 }
21
23 void setup() override;
24 void dump_config() override;
26 float get_setup_priority() const override { return setup_priority::HARDWARE; }
27
28 protected:
29 void write_state(float state) override;
30
31 void setup_pwm_();
32
34 float frequency_{1000.0};
35 uint16_t wrap_{65535};
37 float last_output_{0.0};
38 bool frequency_changed_{false};
39};
40
41} // namespace esphome::rp2040_pwm
42
43#endif // USE_RP2
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:26
void update_frequency(float frequency) override
Dynamically update frequency.
Definition rp2040_pwm.h:16
float last_output_
Cache last output level for dynamic frequency updating.
Definition rp2040_pwm.h:37
void set_pin(InternalGPIOPin *pin)
Definition rp2040_pwm.h:13
void setup() override
Initialize pin.
void set_frequency(float frequency)
Definition rp2040_pwm.h:14
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:43