ESP32 LEDC 输出
LEDC 输出组件将 ESP32 的 LEDC PWM 通道暴露为输出组件。
LEDC 的频率范围为 10Hz 到 40MHz——但是,较高频率需要较小的位深度,这意味着对于约 300kHz 以上的频率,输出不是很精确。
-
pin (必填, Pin):使用 LEDC 的引脚。只能是 GPIO0-GPIO33。
-
id (必填, ID):此输出组件使用的 id。
-
frequency (可选, 频率):运行 LEDC 通道定时器的频率。默认为
1kHz。 -
所有其他选项来自 Output。
高级选项:
- channel (可选, 整数):手动设置要使用的 LEDC 通道。 两个相邻的通道共享同一个定时器。默认为自动选择。
注意:为两个或更多输出配置自定义频率时,请确保为每个输出手动指定通道 0、2、4、6。这将避免自动选择产生的问题,自动选择会选择具有共享定时器的相邻通道。详见 issues#3114。
- phase_angle (可选, 浮点数):为此定时器的另一个通道设置相角。 范围 0-360°,默认为 0°
灯光使用示例
Section titled “灯光使用示例”# 示例配置条目output: - platform: ledc pin: GPIOXX id: gpio_
# 在灯光中的示例用法light: - platform: monochromatic output: gpio_19 name: "Kitchen Light"压电蜂鸣器使用示例
Section titled “压电蜂鸣器使用示例”# 配置输出output: - platform: ledc ###################################################### # 蜂鸣器的一只脚连接到 GPIO12,另一只脚连接到 GND ###################################################### pin: GPIO12 id: buzzer
# 在自动化中的示例用法on_press: then: ###################################################### # 必须在设置频率和电平之前开启 ###################################################### - output.turn_on: buzzer ###################################################### # 频率设置波形大小 ###################################################### - output.ledc.set_frequency: id: buzzer frequency: "1kHz" ###################################################### # level 设置 PWM 开启的时间百分比 ###################################################### - output.set_level: id: buzzer level: "50%"要获得最高可用频率同时保持相同的位深度,建议选择以下频率之一。
较高的位深度意味着灯光有更多可用的步骤从一个值变化到另一个值。这在灯光低于 10% 且需要长时间过渡时尤其明显,例如缓慢关闭。
| 频率 | 位深度 | 过渡可用步数 |
|---|---|---|
| 1220Hz | 16 | 65536 |
| 2441Hz | 15 | 32768 |
| 4882Hz | 14 | 16384 |
| 9765Hz | 13 | 8192 |
| 19531Hz | 12 | 4096 |
例如,ESP8266 通常的频率为 1000Hz,分辨率为 10 位。 这意味着每个值之间只有 4 个步骤。
output.ledc.set_frequency 动作
Section titled “output.ledc.set_frequency 动作”此动作允许您在运行时手动更改 LEDC 通道的频率。使用场景包括控制无源蜂鸣器(用于音调控制)。
on_...: - output.ledc.set_frequency: id: ledc_output frequency: 100Hz配置变量: