0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

利用ESP32 PWM信号控制LED的亮度

科技观察员 来源:circuitdigest 作者:Ashish Choudhary 2022-08-12 15:21 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

在本教程中,我们将讨论ESP32 开发板的 PWM(脉冲宽度调制)引脚。ESP32 开发板的所有 GPIO 引脚(Power、GND、Tx、Rx 和 EN 除外)均可用于获取 PWM 信号。作为ESP32 PWM 示例,我们将构建一个简单的电路,根据 PWM 信号改变 LED 亮度。

所需组件

ESP32

引领

330Ω电阻

10k 锅

面包板

PWM 生成

在解释 ESP32 上的 PWM 生成之前,让我们讨论一些与 PWM 相关的术语。

TON(开启时间):信号为高电平的持续时间。

TOFF(关闭时间):信号为低电平的持续时间。

周期:它是 PWM 信号的开启时间和关闭时间的总和。

TotalPeriod = T ON + T OFF

占空比:在 PWM 信号周期内信号为高电平的时间百分比。

占空比 = T ON /T总计* 100

例如,如果一个总周期为 10ms 的脉冲保持 ON(高)5ms。然后,占空比将是:

占空比 = 5/10 * 100 = 50% 占空比

poYBAGL1_vKAZrAIAAAw58nUBWk412.png

PWM的频率:PWM 信号的频率决定了 PWM 完成一个周期的速度。一个周期是完成一个 PWM 信号的 ON 和 OFF,如上图所示。

ESP32 上的 PWM 生成

Arduino和 NodeMCU 中,我们使用模拟写入()函数将 0 到 254 之间的值“写入”到 LED 引脚。但是ESP32开发板不支持analogWrite()函数。所以我们将使用另一个函数而不是analogWrite(),即ledcWrite()函数。ledcWrite ()与analogWrite()非常相似。它还需要两个参数:我们想要“写入”PWM 值的 PWM 通道和我们想要写入所选通道的 PWM 值。ESP32 有 16 个 PWM 通道,您可以使用任何 GPIO 来生成 PWM 输出。ESP32 提供了三个函数来分配一个 PWM 通道到一个引脚,以及配置 PWM 信号的分辨率、频率和占空比。这些功能是:

ledcAttachPin(gpio, channel)

ledcSetup(channel, frequency, resolution)

ledcWrite(channel, dutycycle)

电路原理

ESP32 PWM的电路图如下所示。

poYBAGL1_u2ATfKJAAFu9_BvnC8196.png

该电路包含一个 LED、一个电阻器和一个 10K 电位器。LED 的负极通过一个 330 Ω 的电阻连接到 ESP32 的 GND。您可以使用 230 Ω 和 500 Ω 之间的任何电阻值。将 LED 正极引脚连接到 GPIO 16,将 Pot 的信号引脚连接到 ESP32 的 ADC1 (VP) 引脚。

ESP32 PWM 代码说明

完整的代码在页面末尾给出。

此代码不需要任何库,因此通过定义引脚开始您的代码,LED 连接到。就我而言,我使用 GPIO 16 连接 LED。

常量 int ledPin = 16; // 16对应GPIO16

之后,在下一行设置 PWM 信号属性。我将 PWM 频率设置为 9000,分辨率设置为 10,您可以更改它以生成不同的 PWM 信号。ESP32 板支持从 1 位到 16 位的 PWM 分辨率。您还需要选择一个 PWM 通道。ESP32 共有 16 个(0 到 15)个 PWM 通道。

常量 int 频率 = 9000;
常量 int ledChannel = 0;
常量 int 分辨率 = 10;

现在在void setup()函数中,使用ledcSetup()函数使用您之前设置的属性配置 LED PWM。在下一行中,定义连接 LED 的 GPIO 引脚。ledcAttachPin()函数用于定义 GPIO 引脚和生成信号的通道。在我的例子中,我使用了 GPIO 16 的 ledPin 和对应于通道 0 的 ledChannel。

无效设置(){
  序列号.开始(9600);
  ledcSetup(ledChannel, 频率, 分辨率);
  ledcAttachPin(ledPin, ledChannel);
}

在void 循环中,读取连接 Pot 的模拟引脚并将读数存储在名为'dutyCycle'的变量中。LED 亮度会随着电位器的旋转而增加或减少。ledcWrite()与analogWrite()非常相似。

无效循环(){
   dutyCycle = 模拟读取(A0);
   ledcWrite(ledChannel, dutyCycle);
   延迟(15);
  }

测试 ESP32 PWM 信号

要测试 ESP32 PWM 信号,请按照电路图连接 LED 和电位器,然后将代码上传到您的 ESP32。确保您选择了正确的板和 COM 端口。现在旋转电位器来增加或减少 LED 亮度。

poYBAGL1_uiASq7nAAS5d-ZcL-E172.png

常量 int ledPin = 16; // 16对应GPIO16
uint16_t 占空比;
// 设置 PWM 属性
常量 int 频率 = 15000;
常量 int ledChannel = 0;
常量 int 分辨率 = 13;
无效设置(){
序列号.开始(9600);
// 配置 LED PWM 功能
ledcSetup(ledChannel, 频率, 分辨率);
// 将通道附加到要控制的 GPIO
ledcAttachPin(ledPin, ledChannel);
}
无效循环(){
dutyCycle = 模拟读取(A0);
Serial.print(dutyCycle);
// 使用 PWM 改变 LED 亮度
ledcWrite(ledChannel, dutyCycle);
延迟(15);
}

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • led
    led
    +关注

    关注

    244

    文章

    24703

    浏览量

    692371
  • PWM
    PWM
    +关注

    关注

    116

    文章

    5890

    浏览量

    226495
  • ESP32
    +关注

    关注

    26

    文章

    1222

    浏览量

    22308
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    乐鑫科技新品ESP32-H4亮点速递!

    近期,乐鑫科技新品发布节奏持续加快。作为乐鑫科技一级代理商,启明云端为您带来最新芯片产品ESP32-H4的详细解读。ESP32-H4隶属于乐鑫科技ESP32-H系列,在低功耗物联网应用领域展现出显著
    的头像 发表于 04-16 18:05 242次阅读
    乐鑫科技新品<b class='flag-5'>ESP32</b>-H4亮点速递!

    ESP32/ESP8266开发板单向多对一ESP-NOW无线通信

    本实验通过ESP-NOW无线通信协议实现多个ESP32/ESP 8266开发板向ESP32开发板发送数据。例如可以应用于从多个远程传感器上收集数据。
    的头像 发表于 03-30 10:14 160次阅读
    <b class='flag-5'>ESP32</b>/<b class='flag-5'>ESP</b>8266开发板单向多对一<b class='flag-5'>ESP</b>-NOW无线通信

    ESP32开发板单向点对点ESP-NOW无线通信

    本例程通过两个ESP32开发板实现单向点对点ESP-NOW无线通信,一个ESP32开发板作为Sender发送方,另一个开发板作为Receiver接收方接收发送方的数据。
    的头像 发表于 03-19 09:21 284次阅读
    <b class='flag-5'>ESP32</b>开发板单向点对点<b class='flag-5'>ESP</b>-NOW无线通信

    ESP32/ESP8266开发板单向一对多ESP-NOW无线通信

    通过ESP-NOW无线通信协议实现ESP32开发板向多个ESP32/ESP 8266开发板发送数据。
    的头像 发表于 03-13 09:23 272次阅读
    <b class='flag-5'>ESP32</b>/<b class='flag-5'>ESP</b>8266开发板单向一对多<b class='flag-5'>ESP</b>-NOW无线通信

    ESP-Hi:基于ESP32-C3的开源低成本AI机器狗技术解析与应用展望

    ESP-Hi是基于ESP32-C3芯片的开源AI机器狗项目,通过创新设计实现超低成本智能交互。项目利用芯片ADC与I2S接口实现语音功能,以PWM
    的头像 发表于 01-14 16:30 2456次阅读
    <b class='flag-5'>ESP</b>-Hi:基于<b class='flag-5'>ESP32</b>-C3的开源低成本AI机器狗技术解析与应用展望

    ESP32 Wi-Fi 控制 LED 灯的原理

    在智能家居、物联网设备中,用手机通过Wi-Fi控制灯光、风扇或插座,已经非常普遍。而在嵌入式开发中,ESP32是最常用的Wi-Fi模块之一。本文将带你系统理解:ESP32是如何通过Wi-Fi实现远程
    的头像 发表于 01-09 19:04 550次阅读
    <b class='flag-5'>ESP32</b> Wi-Fi <b class='flag-5'>控制</b> <b class='flag-5'>LED</b> 灯的原理

    PWM经典应用:LED亮度控制及呼吸灯实战

    生成: 加热控制: 本文特别分享PWM相关基础知识,并以Air8000核心板为例,演示LuatOS开发中如何使用PWM功能实现LED亮度
    的头像 发表于 01-05 20:50 419次阅读
    <b class='flag-5'>PWM</b>经典应用:<b class='flag-5'>LED</b><b class='flag-5'>亮度</b><b class='flag-5'>控制</b>及呼吸灯实战

    ESP32蓝牙驱动MAX98357对音频音乐播放

    本文介绍了MAX98357音频模块的基本特性,并利用ESP32的蓝牙功能程序驱动此模块,最后用手机蓝牙连接ESP32播放手机音乐
    的头像 发表于 12-19 19:55 3143次阅读
    <b class='flag-5'>ESP32</b>蓝牙驱动MAX98357对音频音乐播放

    基于PWMLED调光技术与呼吸灯实现方法!

    利用PWM技术控制LED亮度,不仅效率高、响应快,还能实现细腻的视觉过渡。系统介绍PWM的工作机
    的头像 发表于 12-15 13:03 635次阅读
    基于<b class='flag-5'>PWM</b>的<b class='flag-5'>LED</b>调光技术与呼吸灯实现方法!

    LuatOS中PWM实现LED亮度调节与呼吸灯的实战教程

    PWMLED亮度调节和呼吸灯效果实现方面有着广泛应用。在LuatOS环境中,如何高效运用PWM功能是开发者需要掌握的关键。本实战教程将通过具体案例,引导开发者快速上手,轻松实现
    的头像 发表于 11-11 19:05 8607次阅读
    LuatOS中<b class='flag-5'>PWM</b>实现<b class='flag-5'>LED</b><b class='flag-5'>亮度</b>调节与呼吸灯的实战教程

    ESP32­WROOM­32 技术规格书

    电子发烧友网站提供《ESP32­WROOM­32 技术规格书.pdf》资料免费下载
    发表于 11-11 17:27 0次下载

    乐鑫ESP32-C6和ESP32-C61究竟该如何选择?一文读懂本质区别

    乐鑫科技推出的ESP32-C6和ESP32-C61均支持Wi-Fi6,但定位不同。ESP32-C6是多协议枢纽,集成Wi-Fi6、蓝牙5、Zigbee和Thread,适合智能家居网关和Matter
    的头像 发表于 10-28 14:17 2599次阅读
    乐鑫<b class='flag-5'>ESP32</b>-C6和<b class='flag-5'>ESP32</b>-C61究竟该如何选择?一文读懂本质区别

    乐鑫科技ESP32-S3开发板配单色LED,竟能玩出这么多花样!代码开源,速来白嫖!

    从闪烁到呼吸,从流水到追逐,一文掌握所有LED特效技巧本文将带领大家从零开始,使用ESP32-S3开发板实现多种单色LED效果控制。无论你是刚入门的小白,还是有一定经验的开发者,都能轻
    的头像 发表于 10-23 18:02 2480次阅读
    乐鑫科技<b class='flag-5'>ESP32</b>-S3开发板配单色<b class='flag-5'>LED</b>,竟能玩出这么多花样!代码开源,速来白嫖!

    一文读懂 PWM控制背光亮度原理

    的优缺点 优点: 色彩精准:由于LED始终在最佳额定电流下工作(“开”的时候),避免了模拟调光可能带来的颜色偏色问题。 调光精确:通过数字信号控制占空比,可以实现非常精细和线性的亮度
    发表于 09-03 08:48

    ESP32开发板元件资料

    ESP32开发板元件
    发表于 07-21 14:47 17次下载