2018-10-30 19:38:20 [显示全部楼层]
14910浏览
查看: 14910|回复: 2

[讨论] 来做一下ESP32的PWM调速

[复制链接]
来做一下ESP32的PWM调速图1
ESP32有16口可以做PWM调速,0-15
然后要选PWM的信号频率控LED,5000Hz。
LED亮度调节用8位精度。也就是0-255来调节。
最后选定针脚来工作,命令如下:
ledcAttachPin(GPIO, channel)
控制亮度用另一个函数
ledcWrite(channel, dutycycle)
来做一下ESP32的PWM调速图2
举个例,我用一个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]

同样道理,可以一次调好几个灯
来做一下ESP32的PWM调速图3
[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]

佳佳Julie  学徒

发表于 2021-11-27 22:49:10

请问,能不能一次调的三个灯都是不同的频率呢?
回复

使用道具 举报

佳佳Julie  学徒

发表于 2021-11-28 11:50:12

佳佳Julie 发表于 2021-11-27 22:49
请问,能不能一次调的三个灯都是不同的频率呢?

我知道了,在channel那里设置不同的号数就可以了
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

为本项目制作心愿单
购买心愿单
心愿单 编辑
[[wsData.name]]

硬件清单

  • [[d.name]]
btnicon
我也要做!
点击进入购买页面
上海智位机器人股份有限公司 沪ICP备09038501号-4

© 2013-2024 Comsenz Inc. Powered by Discuz! X3.4 Licensed

mail