ESPHome 2026.11.0-dev
Loading...
Searching...
No Matches
esp8266_pwm.h
Go to the documentation of this file.
1#pragma once
2
3#ifdef USE_ESP8266
4
6#include "esphome/core/hal.h"
8
9namespace esphome::esp8266_pwm {
10
11class ESP8266PWM final : public output::FloatOutput, public Component {
12 public:
13 // User provided, not "= default": `new(p) ESP8266PWM()` would zero-fill .bss that is already zero.
15
16 void set_pin(InternalGPIOPin *pin) { pin_ = pin; }
19 void update_frequency(float frequency) override {
20 this->set_frequency(frequency);
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
34 float frequency_{1000.0}; // Keep in sync with DEFAULT_FREQUENCY in output.py
36 float last_output_{0.0};
37};
38
39} // namespace esphome::esp8266_pwm
40
41#endif
uint16_le_t frequency
Definition bl0942.h:6
void set_frequency(float frequency)
Definition esp8266_pwm.h:17
float get_setup_priority() const override
HARDWARE setup_priority.
Definition esp8266_pwm.h:28
void set_pin(InternalGPIOPin *pin)
Definition esp8266_pwm.h:16
void update_frequency(float frequency) override
Dynamically update frequency.
Definition esp8266_pwm.h:19
float last_output_
Cache last output level for dynamic frequency updating.
Definition esp8266_pwm.h:36
void write_state(float state) override
void setup() override
Initialize pin.
Base class for all output components that can output a variable level, like PWM.
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