在本教程中,我们将讨论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% 占空比
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的电路图如下所示。
该电路包含一个 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 亮度。
常量 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);
}
这里还没有内容,您有什么问题吗?
电子电路资源推荐
- 国标 GB 9706.1~GB 9706.20 医用电气设备标准 (全套) 484页 22.7M pdf版
来源:下载中心
- 国标 GB 9706.1~GB 9706.20 医用电气设备标准 (全套) 484页 22.7M pdf版
来源:下载中心
- 运算放大器视频教程
来源:大学堂
- 动画解析各种电动机工作原理
来源:大学堂
- 单片机运行原理的一点点总结
来源:电路图
- 电工基础:电路的组成
来源:电路图
推荐帖子 最新更新时间:2024-11-13 09:10
- 51精通的情况下,再学STM32需要多长时间
- 51精通的情况下,再学STM32需要多长时间 51精通的情况下,再学STM32需要多长时间 如果你真的达到精通地步,根本不用再学任何其他体系的MCU,所有型号的MCU都可以拿来直接用,事先看看器件手册就是。当然,这指的是 裸奔 型设计,如果是基于嵌入式操作系统则需要学习有关操
- 深圳小花单片机
- 求助C语言变成汇编语言
- 老师的作业是要求用汇编语言写 可是没有学过汇编 就用C写了 只是很短的一点 哪位大哥大姐可以 帮忙 翻译成汇编语言 先谢谢各位了(用的是AT89C52) 第一个: //利用2个独立按键分别控制2组8位 LED 灯闪烁 #include reg51.h #define LE
- 我来学习51单片机
- 科技创作
- 请问谁有一些创意作品,资料可以共享,谢谢! 科技创作 您需要那些创意作品啊:victory: 例如自动印钞机,
- 奔跑1DIY/开源硬件专区
- 【国民技术M4内核热销款N32G45XVL评估】第五篇 低功耗性能评估
- 今天花了点时间研究了一下N32G45XVL的低功耗模式,并且实测了功耗数据。 先对手册上介绍的N32G457低功耗模式总结了一下,列了一个表: 模式 描述 手册上功耗数据
- oxygen_sh国产芯片交流
- 元芳,你对此电路有何看法?(7-终结)
- 元芳:大人,听说玉渊潭的樱花开的正好,不知大人要不要带我等同去观玩一番?狄:元芳,还是先把前日问题说完。樱花明年还会带开,先练就一身本领,明年樱花更艳……元芳:大人……狄:照数据手册推荐,高于500Hz使用III型反馈网络,即反馈电阻高端并电容Cff。此电容会引入一个较小的零点,
- zjd01模拟与混合信号
- 基于SensorTag的库房湿度实时监测系统
- 此应用适用于库管人员或车间人员在被测房间中或附近。 基于SensorTag的库房湿度实时监测系统
- 瓷娃娃无线连接
- 张朝阳质疑5G:这么高频的电磁波对人体危害很大
- 招聘嵌入式软/硬件工程师若干名,可考虑应届研究生
- 我在stc89c52数据保存区中,没法保存两个数据
- msp430在4Mhz时,运行一条nop指令要多长时间?
- 南京A.O.SMITH诚招传感器工程师
- TI BLE CC2541的SPI主模式
- 【SAMR21新玩法】32. CPU相关功能
- TFT LCD使用心得TFT LCD使用心得
- vb vc里的精确延时问题
- 使用LM3S串口与AVR单片机串口设置
- STM32F103Zxx的TIM3、TIM4为什么不正常?
- 小白一个,求KP
- I2C总线的多机通信调度指挥系统设计方案
- DE1-SoC开发板使用————求助
- STM32103RC不能下程序了版主帮忙看看
- 基于MP2303芯片的电源模块设计
- 关于霍尔接近开关的几个问题
- USB传输的是模拟信号还是数字信号?
- 【求助】设计一台数字电子钟
- 新能源汽车充电桩的内部结构、充电原理知识
- LT3066EDE-5 LED 驱动器和电流源的典型应用电路
- LT3433、8V60V 至 12V 转换器
- TB62730WLG 白光 LED 升压型 DC/DC 转换器的典型应用
- MC34074ADR2G快速建立逆变器的典型应用
- DC1759A,使用 LTM4620A 高效率、高密度、双路 13A、开关模式降压电源模块稳压器的演示板
- 使用 Analog Devices 的 LTC4076EDD 的参考设计
- 使用 Analog Devices 的 LT3467AES67 的参考设计
- LTC3403EDD 演示板、WCDMA 蜂窝电话降压稳压器、2.7V 至 5V 输入、600mA 输出
- LT3990HMSE-3.3 1.8V 降压转换器的典型应用
- 【训练营】物联网RGB灯+5v灯带接口--836140A