ESPHome 2026.6.0-dev
Loading...
Searching...
No Matches
esp32_dac.cpp
Go to the documentation of this file.
1#include "esp32_dac.h"
3#include "esphome/core/log.h"
4
5#if defined(USE_ESP32_VARIANT_ESP32) || defined(USE_ESP32_VARIANT_ESP32S2)
6
8
9#ifdef USE_ESP32_VARIANT_ESP32S2
10static constexpr uint8_t DAC0_PIN = 17;
11#else
12static constexpr uint8_t DAC0_PIN = 25;
13#endif
14
15static const char *const TAG = "esp32_dac";
16
18 this->pin_->setup();
19 this->turn_off();
20
21 const dac_channel_t channel = this->pin_->get_pin() == DAC0_PIN ? DAC_CHAN_0 : DAC_CHAN_1;
22 const dac_oneshot_config_t oneshot_cfg{channel};
23 dac_oneshot_new_channel(&oneshot_cfg, &this->dac_handle_);
24}
25
26void ESP32DAC::on_safe_shutdown() { dac_oneshot_del_channel(this->dac_handle_); }
27
29 ESP_LOGCONFIG(TAG, "ESP32 DAC:");
30 LOG_PIN(" Pin: ", this->pin_);
31 LOG_FLOAT_OUTPUT(this);
32}
33
35 if (this->pin_->is_inverted())
36 state = 1.0f - state;
37
38 state = state * 255;
39
40 dac_oneshot_output_voltage(this->dac_handle_, state);
41}
42
43} // namespace esphome::esp32_dac
44
45#endif // USE_ESP32_VARIANT_ESP32 || USE_ESP32_VARIANT_ESP32S2
virtual void setup()=0
virtual uint8_t get_pin() const =0
virtual bool is_inverted() const =0
void on_safe_shutdown() override
Definition esp32_dac.cpp:26
dac_oneshot_handle_t dac_handle_
Definition esp32_dac.h:29
InternalGPIOPin * pin_
Definition esp32_dac.h:28
void write_state(float state) override
Definition esp32_dac.cpp:34
void setup() override
Initialize pin.
Definition esp32_dac.cpp:17
void dump_config() override
Definition esp32_dac.cpp:28
virtual void turn_off()
Disable this binary output.
bool state
Definition fan.h:2