ESP32在Arduino开发环境中的PWM的使用方法
Posted perseverance52
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ESP32在Arduino开发环境中的PWM的使用方法相关的知识,希望对你有一定的参考价值。
ESP32在Arduino开发环境中的PWM的使用方法
ESP32在Arduino开发环境中,如需使用PWM功能,需要通过LEDC的功能来实现,替代了analogWrite(pin, value) 方法。
ESP32 的 LEDC 总共有16个路通道(0 ~ 15),分为高低速两组,高速通道(0 ~ 7)由80MHz时钟驱动,低速通道(8 ~ 15)由 1MHz 时钟驱动。
相关函数接收
double ledcSetup(uint8_t channel, double freq, uint8_t resolution_bits)
:设置 LEDC 通道对应的频率和计数位数(占空比分辨率),该方法返回最终频率。
通道最终频率 = 时钟 / ( 分频系数 * ( 1 << 计数位数 ) );(分频系数最大为1024)
参数 | 功能 |
---|---|
channel | 为通道号,取值范围:0 ~ 15 |
freq | 设置频率 |
resolution_bits | 计数位数,取值0 ~ 20(该值决定后面 ledcWrite 方法中占空比可写值,比如该值写10,则占空比最大可写1023 即 (1<<resolution_bits)-1 ) |
void ledcWrite(uint8_t channel, uint32_t duty)
:指定通道输出一定占空比波形。double ledcWriteTone(uint8_t channel, double freq)
:相当于 arduino 的 tone ,当外接无源蜂鸣器的时候可以发出某个声音(根据频率不同而不同)。double ledcWriteNote(uint8_t channel, note_t note, uint8_t octave)
:该方法是上面方法的进一步封装,可以直接输出指定调式和音阶声音的信号。uint32_t ledcRead(uint8_t channel)
:返回指定通道占空比的值。double ledcReadFreq(uint8_t channel)
:返回指定通道当前频率(如果当前占空比为0 则该方法返回0)。void ledcAttachPin(uint8_t pin, uint8_t channel)
:将 LEDC 通道绑定到指定 IO 口上以实现输出。void ledcDetachPin(uint8_t pin)
:解除 IO 口的 LEDC 功能。
示例程序
// the number of the LED pin
const int ledPin = 16; // 16 corresponds to GPIO16
// setting PWM properties
const int freq = 5000;//设置频率
const int ledChannel = 0;//通道号,取值0 ~ 15
const int resolution = 8;//计数位数,取值0 ~ 20
void setup(){
// configure LED PWM functionalitites
ledcSetup(ledChannel, freq, resolution);
// attach the channel to the GPIO to be controlled
ledcAttachPin(ledPin, ledChannel);//将 LEDC 通道绑定到指定 IO 口上以实现输出
}
void loop(){
// increase the LED brightness
for(int dutyCycle = 0; dutyCycle <= 255; dutyCycle++){
// changing the LED brightness with PWM
ledcWrite(ledChannel, dutyCycle);//指定通道输出一定占空比波形
delay(15);
}
// decrease the LED brightness
for(int dutyCycle = 255; dutyCycle >= 0; dutyCycle--){
// changing the LED brightness with PWM
ledcWrite(ledChannel, dutyCycle);
delay(15);
}
}
以上是关于ESP32在Arduino开发环境中的PWM的使用方法的主要内容,如果未能解决你的问题,请参考以下文章
Arduino ESP32 Web Service PWM控制led亮度
Arduino ESP32:PWM驱动LED的ledcWrite功能
Arduino ESP32 PWM 通过示波器对实际产生的波形测量