14851| 2
|
[讨论] 来做一下ESP32的PWM调速 |
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] |
© 2013-2024 Comsenz Inc. Powered by Discuz! X3.4 Licensed