6#if defined(ESP_PLATFORM)
7#include "driver/ledc.h"
13#if (defined ESP_ARDUINO_VERSION_MAJOR) && (ESP_ARDUINO_VERSION_MAJOR >= 3)
15class LedcBacklit :
public Backlit {
17 LedcBacklit(uint8_t pin) : pin_(pin) {}
20 void begin(uint16_t intensity = kMaxIntensity) {
21 DefaultGpio::setOutput(pin_);
23 CHECK(ledcAttach(pin_, 50000, 8));
24 CHECK(ledcWrite(pin_, intensity));
27 void setIntensity(uint16_t intensity)
override {
28 CHECK(ledcWrite(pin_, intensity));
35class LedcBacklitAtChannel :
public Backlit {
37 LedcBacklitAtChannel(uint8_t pin, uint8_t channel)
38 : pin_(pin), channel_(channel) {}
41 void begin(uint16_t intensity = kMaxIntensity) {
42 DefaultGpio::setOutput(pin_);
44 CHECK(ledcAttachChannel(pin_, 50000, 8, channel_));
45 CHECK(ledcWriteChannel(channel_, intensity));
48 void setIntensity(uint16_t intensity)
override {
49 CHECK(ledcWriteChannel(channel_, intensity));
61class LedcBacklitAtChannel :
public Backlit {
63 LedcBacklitAtChannel(uint8_t pin, uint8_t channel)
64 : pin_(pin), channel_(channel) {}
67 void begin(uint16_t intensity = kMaxIntensity) {
68 DefaultGpio::setOutput(pin_);
70 ledcSetup(channel_, 50000, 8);
71 ledcAttachPin(pin_, channel_);
72 ledcWrite(channel_, intensity);
75 void setIntensity(uint16_t intensity)
override {
76 ledcWrite(channel_, intensity);
89class LedcBacklit :
public Backlit {
91 explicit LedcBacklit(uint8_t pin)
92 : pin_(pin), channel_(LEDC_CHANNEL_0), timer_(LEDC_TIMER_0) {}
94 void begin(uint16_t intensity = kMaxIntensity) {
95 DefaultGpio::setOutput(pin_);
96 ledc_timer_config_t timer_config = {
97 .speed_mode = LEDC_LOW_SPEED_MODE,
98 .duty_resolution = LEDC_TIMER_8_BIT,
101 .clk_cfg = LEDC_AUTO_CLK,
103 ESP_ERROR_CHECK(ledc_timer_config(&timer_config));
105 ledc_channel_config_t channel_config = {
107 .speed_mode = LEDC_LOW_SPEED_MODE,
109 .intr_type = LEDC_INTR_DISABLE,
114 ESP_ERROR_CHECK(ledc_channel_config(&channel_config));
115 setIntensity(intensity);
118 void setIntensity(uint16_t intensity)
override {
119 ESP_ERROR_CHECK(ledc_set_duty(LEDC_LOW_SPEED_MODE, channel_, intensity));
120 ESP_ERROR_CHECK(ledc_update_duty(LEDC_LOW_SPEED_MODE, channel_));
125 ledc_channel_t channel_;
129class LedcBacklitAtChannel :
public Backlit {
131 LedcBacklitAtChannel(uint8_t pin, uint8_t channel)
133 channel_(static_cast<ledc_channel_t>(channel)),
134 timer_(LEDC_TIMER_0) {}
137 LedcBacklitAtChannel(uint8_t pin, ledc_channel_t channel,
138 ledc_timer_t timer = LEDC_TIMER_0)
140 channel_(static_cast<ledc_channel_t>(channel)),
143 void begin(uint16_t intensity = kMaxIntensity) {
144 DefaultGpio::setOutput(pin_);
145 ledc_timer_config_t timer_config = {
146 .speed_mode = LEDC_LOW_SPEED_MODE,
147 .duty_resolution = LEDC_TIMER_8_BIT,
150 .clk_cfg = LEDC_AUTO_CLK,
152 ESP_ERROR_CHECK(ledc_timer_config(&timer_config));
154 ledc_channel_config_t channel_config = {
156 .speed_mode = LEDC_LOW_SPEED_MODE,
158 .intr_type = LEDC_INTR_DISABLE,
163 ESP_ERROR_CHECK(ledc_channel_config(&channel_config));
164 setIntensity(intensity);
167 void setIntensity(uint16_t intensity)
override {
168 ESP_ERROR_CHECK(ledc_set_duty(LEDC_LOW_SPEED_MODE, channel_, intensity));
169 ESP_ERROR_CHECK(ledc_update_duty(LEDC_LOW_SPEED_MODE, channel_));
174 ledc_channel_t channel_;
Defines 140 opaque HTML named colors.