摘要:
报错信息:
error: 'ledcSetup' was not declared in this scope
error: 'ledcAttachPin' was not declared in this scope; did you mean 'ledcAttach'?
原因:在新版的Arduino中,ledcSetup()和ledcAttachpin()已经在arduino.h移除了,因此不能继续使用。
解决办法:
初始化直接使用ledcAttach函数;
设置占空比还是ledcWrite函数。
//引脚号、频率、精度
bool ledcAttach(uint8_t pin, uint32_t freq, uint8_t resolution)
//引脚号、占空比
bool ledcWrite(uint8_t pin, uint32_t duty)
//示例代码
void setup() {
//pwm引脚, 频率, 精度
ledcAttach(2, 30000,8);
}
void loop() {
//设置占空比
ledcWrite(2, 127);
}
详细说明:
1.ledcAttach():
初始化直接使用ledcAttach函数即可,设置成功会返回1,设置失败会返回0;
通道数:
型号 | 通道数 |
---|---|
ESP32 | 16 |
ESP32-S2 | 8 |
ESP32-S3 | 8 |
ESP32-C3 | 6 |
ESP32-C6 | 6 |
ESP32-H2 | 6 |
函数会自动匹配空闲通道,如果没有空闲通道会返回0;
uint32_t freq:PWM频率要大于0,频率设为0会返回0;
uint8_t resolution:精度为1-14,ESP32为20,超出会返回0。
2.ledcWrite():
设置 LEDC 引脚的占空比,设置成功返回1,设置失败返回0;
uint8_t pin:选择要设置的引脚;
uint32_t duty:设置占空比,例如如果是8位,则范围是0-255。
参考资料: