ESP32 LEDC 输出
LEDC 输出组件将 ESP32 的 LEDC PWM 通道 作为输出组件暴露出来。
LEDC 的频率范围从 10Hz 到 40MHz —— 然而,较高的频率需要较小 的位深,这意味着对于约 300kHz 以上的频率,输出精度并不高。
-
pin (必需, Pin): 必须是输出引脚。
-
id (必需, ID): 用于此输出组件的 id。
-
frequency (可选, frequency): LEDC 通道计时器运行的频率。默认为
1kHz。 -
所有其他选项请参见 输出。
高级选项:
-
phase_angle (可选, float): 为此计时器的另一个通道设置相位角。 范围 0-360°,默认为 0°
-
channel (可选, int): 手动设置要使用的 LEDC 通道 。默认为自动选择。有效通道范围取决于 ESP32 型号:
| ESP32 型号 | 有效通道 |
|---|---|
| ESP32 | 0-15 |
| ESP32-S2、ESP32-S3、ESP32-P4 | 0-7 |
| ESP32-C2、ESP32-C3、ESP32-C5、ESP32-C6、ESP32-C61、ESP32-H2 | 0-5 |
NOTE
两个相邻通道共享同一个硬件计时器。它们仍然可以使用不同的
占空比(灯光输出可以不同)并使用不同的相位,但不能使用不同的 PWM
频率。如果需要灯光通道使用不同的频率,请手动将
它们分配给未使用的 LEDC 输出,并避免选择相邻通道对,例如
0/1、2/3 等。
灯光的示例用法
Section titled “灯光的示例用法”# Example configuration entryoutput: - platform: ledc pin: GPIOXX id: gpio_
# Example usage in a lightlight: - platform: monochromatic output: gpio_19 name: "Kitchen Light"压电蜂鸣器的示例用法
Section titled “压电蜂鸣器的示例用法”# Configure the outputoutput: - platform: ledc ###################################################### # One buzzer leg connected to GPIO12, the other to GND ###################################################### pin: GPIO12 id: buzzer
# Example usage in an automationon_press: then: ###################################################### # Must be turned on before setting frequency & level ###################################################### - output.turn_on: buzzer ###################################################### # Frequency sets the wave size ###################################################### - output.ledc.set_frequency: id: buzzer frequency: "1kHz" ###################################################### # level sets the %age time the PWM is on ###################################################### - output.set_level: id: buzzer level: "50%"为了在保持相同位深的同时获得尽可能高的频率,建议 选择以下频率之一。
更高的位深意味着灯光在从一个值 更改为另一个值时可用更多步骤。这在灯光低于 10% 且需要 较长过渡时(例如缓慢关闭)尤为明显。
| 频率 | 位深 | 过渡可用步骤 |
|---|---|---|
| 1220Hz | 16 / 14* | 65536 / 16384* |
| 2441Hz | 15 / 14* | 32768 / 16384* |
| 4882Hz | 14 | 16384 |
| 9765Hz | 13 | 8192 |
| 19531Hz | 12 | 4096 |
* ESP32-S2、ESP32-S3、ESP32-C2 和 ESP32-C3 仅支持 14 位 LEDC 计时器。 原始 ESP32、ESP32-C5、ESP32-C6、ESP32-C61、ESP32-H2 和 ESP32-P4 支持 20 位 LEDC 计时器,这在有效的 LED PWM 范围内可获得最高 16 位分辨率 如上表所示。
例如,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配置变量: