老宇哥带你玩转 ESP32:06 输出你想要的PWM波形
liuian 2024-12-08 16:25 54 浏览
今天我们来玩儿PWM。
概述
脉宽调制(PWM)是一种可以自由控制的产生可控数字信号波形的技术,说直白一点就是占空比不同的数字信号,下面用一幅图简单介绍一下微控制器实现PWM的原理:
我们以STM32内部的定时器讲一讲原理,如上图,当TIMER向上计时时,计数值会跟比较通道的CCR去比较,如果低于比较值,通道输出高电平,高于比较值,则输出低电平,这个只是打个比方,具体输出什么可以自由配置。到设置的最大值之后,重新从0开始计时,如此不停的循环,就产生了PWM信号了。我们如果控制不同的占空比,就可以控制输出的平均电压,也就可以控制灯的亮度了。
ESP32 不同于普通的PWM,它这里叫LED PWM,主要用于控制LED的亮度与颜色,当然,也可以用于其它用途,一共有16路通道,8路高速8低速,这16路通道可以分配给任意一个IO(某些只有输入功能的除外)。
16个通道,根据速度分,分为两组,每组有4个定时器对应8个通道,两个通道共享一个定时器,所以,最多能输出8个不同频率的PWM。
硬件
PWM输出引脚可以分配给任意一个IO,如下图所示,红框内的为可配置PWM的引脚,GPIO34-35,GPIO36,GPIO39除外。
软件
分配通道到GPIO引脚
确定好要使用的PWM通道PWM_Ch,绑定到GPIO_Pin。
ledcAttachPin(GPIO_Pin, PWM_Ch);
频率,分辨率设置
配置选择通道的PWM频率,分辨率可以设置1位到16位,比如我们设置成8位,占空比范围就是0-255,设置成10位,就是0-1023这样,函数也很简单。
/*
* PWM_Ch PWM通道 0-15
* PWM_Freq PWM频率
* PWM_Res PWM分辨率 1-16
* */
ledcSetup(PWM_Ch, PWM_Freq, PWM_Res);;
设置占空比
直接写入对应占空比即可在对应IO上输出PWM。
ledcWrite(PWM_Ch, DutyCycle);
完整程序
#define LED_GPIO 4
#define PWM1_Ch 0
#define PWM1_Res 10
#define PWM1_Freq 1000
int PWM1_DutyCycle = 0;
void setup()
{
ledcAttachPin(LED_GPIO, PWM1_Ch);
ledcSetup(PWM1_Ch, PWM1_Freq, PWM1_Res);
}
void loop()
{
while(PWM1_DutyCycle < 1023)
{
ledcWrite(PWM1_Ch, PWM1_DutyCycle++);
delay(10);
}
while(PWM1_DutyCycle > 0)
{
ledcWrite(PWM1_Ch, PWM1_DutyCycle--);
delay(10);
}
}
我们这里使用1kHz的PWM频率,将PWM通道0绑定到GPIO4,选择10位的分辨率,我们可以看下视频,PWM变化还是非常丝滑的。然后在主循环中将占空比逐渐从最小到最大,再从最大到最小,一直循环。
视频效果
对于ESP32,还有专门用于电机控制的脉宽调制器PWM,后面我们项目中再细说,整体来说使用还是非常简单的,大家快去试一试吧!
感谢大家,关于ESP32的学习,希望大家Enjoy!
欢迎点分享、收藏、点赞。
相关推荐
-
- 超好看的动态手机壁纸(超好看的动态手机壁纸图片)
-
可以进入【手机i主题--右上角人形图标--壁纸】,设置动态壁纸。其它情况下手机本身不支持将动态图片和视频设置成桌面壁纸和锁屏。您可以尝试使用第三方软件实现。备注:抖音的参考设置方法:【抖音界面-登录抖音账号-找到视频-点击右下角的“分享”按...
-
2025-12-24 12:05 liuian
- chrome安卓版2025最新版本(chrome稳定版 安卓)
-
手机谷歌地球打不开,一直转圈的话,可能是因为你的网络不太稳定,你可以换一个网络googleearth大概1~2年更新一次。用户可以通过googleearth来查看更新时间。将earth放大到一...
- win10精简版msdn(win10精简版是哪个版本)
-
这个问题只能由技术人员或有使用经验的人回答,无法准确回答“哪个好”。因为msdn官网提供的win7精简版,有不同的版本、不同的功能和不同的定制化程度。选择哪个版本、哪个标准或哪种方案,需要根据具体需...
- 笔记本电脑硬盘分区教程图解
-
第一步:进入磁盘管理器。 在笔记本电脑的桌面找到“计算机”图标,然后点击右键,在下拉列表中找到“管理”选项,点击打开,进入到“计算机管理”界面。然后选择左侧列表中的“磁盘管理”选线,点击打开。 ...
- 还原精灵使用方法(还原精灵使用方法视频)
-
还原精灵是一种用于恢复被损坏或删除的文件的工具。使用方法如下:首先,打开还原精灵软件。然后,选择要恢复的文件类型或指定文件路径。接下来,点击“扫描”按钮,软件将开始扫描并列出可恢复的文件。在列表中选择...
- 装系统教程win7用u盘(用u盘win7系统安装教程)
-
首先,需要准备一个容量不小于4GB的U盘,并下载正版的Windows7系统镜像文件。接着,使用专业的U盘制作工具将系统镜像文件写入U盘中,并将U盘插入需要安装系统的电脑中。在开机时按下电脑的启动键,...
- 苹果16突然黑屏关机(苹果11突然黑屏)
-
苹果手机突然黑屏但是没关机的原因:一般情况下,死机黑屏都是软件系统原因造成的,可能是由于你安装的软件内部冲突所导致的。严重的时候还会花屏重启。还有可能就是手机使用时间长,热量散发不及时。只要同时按住关...
- 子网掩码和网关怎么填(子网掩码与网关怎么设置)
-
1、以WIN10系统为例,电脑的ip地址、默认网关以及子网掩码可以通过进入到该电脑的网络连接属性界面进行填写。打开属性界面以后,选择手动。然后输入正确的编码即可(其中的默认网关与路由器IP地址相同)。...
- windows10不激活影响使用吗(win 10不激活有什么影响)
-
windows10不激活能用一般情况下,不激活的确可以正常使用,但是会有一些功能受到限制。具体的限制如下所示:首先,您的屏幕右下角会显示“激活Windows”的水印;其次,您无法在“个性化”下使用任...
-
- pdf转换器免费(pdf转换器在线版)
-
1.可检索内容的PDF(内容可以用鼠标选中的非双层PDF)文件,推荐用下面软件转换:PDFToWordConverter,是一款将AdobePDF文档转换成Word文档的工具软件,它支持文字,图像及其它内容的输出。这款软件可以...
-
2025-12-24 06:55 liuian
- office2013激活工具win11(office2013激活工具toolkit)
-
用专门的激活工具就可以啦。1、待安装完Office2013后,解压并运行“MicrosoftToolkit.exe”程序,在弹出的程序界面中点击“OfficeButton”按钮以便打开“Office破...
- 手机登录126邮箱网页登录入口
-
www.126.com126邮箱拥有3G超大存储空间,支持超大2G附件,采用了创新Ajax技术,同等网络环境下,页面响应时间最高减少90%,垃圾邮件及病毒有效拦截率超过98%和99.8%。126邮箱采...
- 全国中高风险地区最新名单(全国中高风险地区最新名单7.29)
-
浦东新区康桥镇环桥路1488弄小区,黄浦区南京东路街道西藏中路180号高盛商厦5楼,静安区共和新路街道沪太路785号B座501西区天空音乐量贩式KTV,松江区小昆山镇平原街86弄平原新村,虹口区北外滩...
- 一周热门
- 最近发表
- 标签列表
-
- python判断字典是否为空 (50)
- crontab每周一执行 (48)
- aes和des区别 (43)
- bash脚本和shell脚本的区别 (35)
- canvas库 (33)
- dataframe筛选满足条件的行 (35)
- gitlab日志 (33)
- lua xpcall (36)
- blob转json (33)
- python判断是否在列表中 (34)
- python html转pdf (36)
- 安装指定版本npm (37)
- idea搜索jar包内容 (33)
- css鼠标悬停出现隐藏的文字 (34)
- linux nacos启动命令 (33)
- gitlab 日志 (36)
- adb pull (37)
- python判断元素在不在列表里 (34)
- python 字典删除元素 (34)
- vscode切换git分支 (35)
- python bytes转16进制 (35)
- grep前后几行 (34)
- hashmap转list (35)
- c++ 字符串查找 (35)
- mysql刷新权限 (34)
