ESPHome 2025.9.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
7namespace esphome {
8namespace esp32_dac {
9
10#ifdef USE_ESP32_VARIANT_ESP32S2
11static constexpr uint8_t DAC0_PIN = 17;
12#else
13static constexpr uint8_t DAC0_PIN = 25;
14#endif
15
16static const char *const TAG = "esp32_dac";
17
19 this->pin_->setup();
20 this->turn_off();
21
22 const dac_channel_t channel = this->pin_->get_pin() == DAC0_PIN ? DAC_CHAN_0 : DAC_CHAN_1;
23 const dac_oneshot_config_t oneshot_cfg{channel};
24 dac_oneshot_new_channel(&oneshot_cfg, &this->dac_handle_);
25}
26
27void ESP32DAC::on_safe_shutdown() { dac_oneshot_del_channel(this->dac_handle_); }
28
30 ESP_LOGCONFIG(TAG, "ESP32 DAC:");
31 LOG_PIN(" Pin: ", this->pin_);
32 LOG_FLOAT_OUTPUT(this);
33}
34
36 if (this->pin_->is_inverted())
37 state = 1.0f - state;
38
39 state = state * 255;
40
41 dac_oneshot_output_voltage(this->dac_handle_, state);
42}
43
44} // namespace esp32_dac
45} // namespace esphome
46
47#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:27
dac_oneshot_handle_t dac_handle_
Definition esp32_dac.h:30
InternalGPIOPin * pin_
Definition esp32_dac.h:29
void write_state(float state) override
Definition esp32_dac.cpp:35
void setup() override
Initialize pin.
Definition esp32_dac.cpp:18
void dump_config() override
Definition esp32_dac.cpp:29
virtual void turn_off()
Disable this binary output.
bool state
Definition fan.h:0
Providing packet encoding functions for exchanging data with a remote host.
Definition a01nyub.cpp:7