ESP32 ‘ledcSetup‘ was not declared in this scope解决办法

一、报错解释

ledcsetup()和ledcattachpin()已经在3.0 arduino.h移除了

二、解决办法

使用ledcAttach:设置 LEDC 引脚的给定频率和分辨率。LEDC 通道将自动选择。
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返回,则发生错误,并且未设置占空比。
*/

三、呼吸灯PWM原代码

#define FREQ 2000 // 频率
#define CHANNEL 0 // 通道
#define RESOLUTION 8 // 分辨率
#define LED 12 // LED 引脚

void setup() {
    // 设置通道
    ledcSetup(CHANNEL, FREQ, RESOLUTION);
    // 绑定通道号与引脚
    ledcAttachPin(LED, CHANNEL);
}

void loop() {
    // 实现渐亮效果
    for (int i = 0; i < pow(2, RESOLUTION); i++) {
        // 输出 PWM
        ledcWrite(CHANNEL, i);
        delay(10);
    }
    // 实现渐灭效果
    for (int i = pow(2, RESOLUTION) - 1; i >= 0; i--) {
        // 输出 PWM
        ledcWrite(CHANNEL, i);
        delay(10);
    }
}

四、呼吸灯修改后的代码

#define FREQ 2000
#define RESOLUTION 8
#define LED 12

void setup() {
  // put your setup code here, to run once:
  ledcAttach(LED, FREQ, RESOLUTION);
}

void loop() {
  // put your main code here, to run repeatedly:
  for(int i=0;i<pow(2,RESOLUTION);i++){
    ledcWrite(LED, i);
    delay(10);
    }
  for(int i=pow(2,RESOLUTION);i>=0;i--){
    ledcWrite(LED, i);
    delay(10);
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值