来做一下ESP32的PWM调速
2018-10-302.1万
AI 快速预览详细
本文介绍了如何使用ESP32的PWM功能来控制LED亮度。首先,通过设置5000Hz的信号频率和8位精度,可以实现0-255范围内的亮度调节。然后,通过选择GPIO引脚并使用ledcAttachPin和ledcWrite函数,可以实现LED亮度的渐变效果。此外,还展示了如何同时控制多个LED的亮度。
![]() ESP32有16口可以做PWM调速,0-15 然后要选PWM的信号频率控LED,5000Hz。 LED亮度调节用8位精度。也就是0-255来调节。 最后选定针脚来工作,命令如下: ledcAttachPin(GPIO, channel) 控制亮度用另一个函数 ledcWrite(channel, dutycycle) ![]() 举个例,我用一个16脚来控制LED。 那程序如下: [mw_shl_code=applescript,true]// Done by gada888 //设定LED脚 const int ledPin = 16; // 16 = GPIO16 // 设PWM参数 const int freq = 5000; const int ledChannel = 0; const int resolution = 8; void setup(){ // 设LED PWM 功能 ledcSetup(ledChannel, freq, resolution); // 指定选的GPIO位LED控制脚 ledcAttachPin(ledPin, ledChannel); } void loop(){ // 调亮 for(int dutyCycle = 0; dutyCycle <= 255; dutyCycle++){ // PWM调节 ledcWrite(ledChannel, dutyCycle); delay(15); } // 调暗 for(int dutyCycle = 255; dutyCycle >= 0; dutyCycle--){ // PWM调节 ledcWrite(ledChannel, dutyCycle); delay(15);缓冲 } }[/mw_shl_code] 同样道理,可以一次调好几个灯 ![]() [mw_shl_code=applescript,true]//done by gada888 // 设定LED 脚 const int ledPin = 16; // 16=GPIO16 const int ledPin2 = 17; // 17=GPIO17 const int ledPin3 = 5; // 5=GPIO5 // 设PWM参数 const int freq = 5000; const int ledChannel = 0; const int resolution = 8; void setup(){ // 设定LED调速功能 ledcSetup(ledChannel, freq, resolution); //指定要干活的GPIO ledcAttachPin(ledPin, ledChannel); ledcAttachPin(ledPin2, ledChannel); ledcAttachPin(ledPin3, ledChannel); } void loop(){ // 调亮 for(int dutyCycle = 0; dutyCycle <= 255; dutyCycle++){ // PWM调速 ledcWrite(ledChannel, dutyCycle); delay(15); } // 调暗 for(int dutyCycle = 255; dutyCycle >= 0; dutyCycle--){ // PWM 调速 ledcWrite(ledChannel, dutyCycle); delay(15);缓冲 } }[/mw_shl_code] |








