当我想用ESP32-WROOM-32进行PWM调速时,我发现编译报错了,我以为代码有问题,换了个很简单的测试代码,发现还是报错
#define FREQ 2000 // 频率
#define CHANNEL 0 // 通道
#define RESOLUTION 8 // 分辨率
#define LED 32 // LED引脚
void setup() {
// 设置频率
ledcSetup(CHANNEL, FREQ, RESOLUTION);
// 绑定通道号与引脚
ledcAttachPin(LED, CHANNEL);
}
void loop() {
}
后查阅官方资料发现,在新版本中arduino中这两个函数已经被弃用(官方链接)
解决方案:直接用ledcAttach函数即可
ledcSetup等同于ledcAttach原型为:
bool ledcAttach(uint8_t pin, uint32_t freq, uint8_t resolution);
/*
·pin选择 LEDC 引脚。
·freq选择 pwm 的频率。
·resolution选择LEDC通道的分辨率。范围是 1-14 位(ESP32 为 1-20 位)。
·true如果配置成功,此函数将返回。如果false返回,则发生错误,LEDC 通道未配置。
*/
绑定通道与引脚用ledcWrite:设置LEDC引脚占空比
bool ledcWrite(uint8_t pin, uint32_t duty);
/*
·pin选择 LEDC 引脚。
·duty选择要为选定的 LEDC 引脚设置的占空比。
·true如果设置占空比成功,此函数将返回。如果false返回,则发生错误,并且未设置占空比。
*/
目前版本不需要进行通道与引脚的绑定
修改代码如下:
#define FREQ 2000 // 频率
#define PIN 32 // 通道
#define RESOLUTION 8 // 分辨率
#define LED 1 // LED引脚
void setup() {
// 设置频率
ledcAttach(PIN, FREQ,RESOLUTION);
}
void loop() {
//设置占空比
ledcWrite(PIN, 127);
}