Arduino ESP32利用PWM实现板载LED呼吸灯效果
Arduino ESP32利用PWM实现板载LED呼吸灯效果
LEDC简介
LED控制(LEDC)外围设备主要用于控制LED的强度,尽管它也可以用于生成PWM信号用于其他目的。它具有16个通道,可以生成独立的波形,这些波形可以用于驱动RGB LED器件。
LEDC通道分为两组,每组8个通道。一组LEDC通道以高速模式运行。此模式在硬件中实现,并提供PWM占空比的自动且无干扰的更改。另一组通道在低速模式下运行,PWM占空比必须由驱动程序在软件中进行更改。每组通道还能够使用不同的时钟源。
PWM控制器可以自动逐渐增加或减少占空比,从而允许淡入而不会受到任何处理器干扰。
相关函数
- ledcSetup()函数
ledcSetup()
函数原型如下所示,其功能为设置 LEDC通道对应的频率和计数位数(占空比分辨率)
double ledcSetup(uint8_t chan, double freq, uint8_t bit_num)
其第一个参数chan表示通道号,取值为0 ~ 15即可设置16个通道,其中高速通道(0 ~ 7)由80MHz时钟驱动,低速通道(8 ~ 15)由 1MHz 时钟驱动;第二个参数freq为期望设置的频率;第三个参数为占空比分辨率的计数位数,其取值为0 ~ 20(该值决定后面 ledcWrite 方法中占空比可写值,比如该值写10,则占空比最大可写1023 即(1<<bit_num)-1。
- ledcAttachPin()函数
ledcAttachPin()
函数原型如下所示,其功能为将指定的 LEDC 通道绑定到指定的 IO 口上以实现PWM的输出.
void ledcAttachPin(uint8_t pin, uint8_t channel);
第一个参数pin表示我们需要输出的IO口,第二个参数channel为我们指定的LEDC通道。
- ledcWrite()函数
ledcWrite()
函数原型如下所示,其功能为指定的 LEDC 通道的输出占空比.
void ledcWrite(uint8_t chan, uint32_t duty)
第一个参数chan为我们指定的LEDC通道,第二个参数duty表示占空比,其取值范围与ledcSetup()函数的bit_num有关。
实例代码
实现效果:板载led灯实现忽亮忽灭的呼吸灯效果。
#include <Arduino.h>/* 使用ledc通道1,设置频率为1kHz,分辨率为10位 */
int freq = 1000; // 频率
int channel = 0; // 通道
int resolution = 10; // 分辨率const int led = 2;
void setup()
{ledcSetup(channel, freq, resolution); // 设置通道ledcAttachPin(led, channel); // 将通道与对应的引脚连接
}void loop()
{// 逐渐变亮for (int dutyCycle = 0; dutyCycle <= 255; dutyCycle = dutyCycle + 5){ledcWrite(channel, dutyCycle); // 输出PWMdelay(20);}// 逐渐变暗for (int dutyCycle = 255; dutyCycle >= 0; dutyCycle = dutyCycle - 5){ledcWrite(channel, dutyCycle); // 输出PWMdelay(20);}
}
实例代码二
输出固定占空比:PWM频率为2KHz,分辨率为2的8次幂256,输出占空比为50%
#include <Arduino.h>
/* 设置led输出引脚号 */
uint8_t led_pin = 2;void setup()
{ Serial.begin(115200);delay(10); /* 1. 使用ledc通道1,设置频率为2kHz,分辨率为8位 */double f = ledcSetup(1, 2000, 8); Serial.print("F=");Serial.println(f); /* 打印实际设置的频率*//* 2. 将LED引脚绑定到ledc通道1 */ledcAttachPin(led_pin, 1);/* 3. 设置ledc通道占空比为128/256=50% */ledcWrite(1, 128);
}void loop()
{delay(100);
}
Arduino ESP32利用PWM实现板载LED呼吸灯效果相关推荐
- 嵌入式学习——使用定时器输出PWM波形,实现 LED呼吸灯的效果
嵌入式学习--使用定时器输出PWM波形,实现 LED呼吸灯的效果 目录 嵌入式学习--使用定时器输出PWM波形,实现 LED呼吸灯的效果 1. 任务要求 2 PWM波介绍, 2.1 什么是PWM(Pu ...
- STM32使用延时控制LED灯亮暗变换,LED呼吸灯效果
STM32F407ZE 使用延时控制LED灯亮暗变换,实现LED呼吸灯效果 具体代码如下: main.c部分 #include <stm32f4xx.h> #include "s ...
- 单片机实现led呼吸灯效果 宏定义函数
写了一个简单的LED呼吸灯效果代码,可作为C语言初学者for循环的练习,用宏定义方便调用. 四个变量可调亮灭时间,i大,灭的时间长: j大,灭得慢; m大,亮的时间长: n大,亮得慢. 用STM32F ...
- 使用STM32输出PWM波形并驱动LED呼吸灯
目录 前言 一.PWM 二.工程代码 1.用STM32CubeMx创建工程 创建新项目 配置RCC和SYS 配置定时器TIME3 配置定时器TIM4 配置时钟 生成项目 2.用Keil编写代码 3.硬 ...
- 嵌入式——使用定时器输出PWM波形,实现 LED呼吸灯的效果
一.实验要求: 使用TIM3和TIM4,分别输出一个PWM波形,PWM的占空比随时间变化,去驱动你外接的一个LED以及最小开发板上已焊接的LED(固定接在 PC13 GPIO端口),实现2个 LED呼 ...
- 嵌入式学习--使用定时器输出PWM波形,实现LED呼吸灯的效果
目录 1.任务要求 2.PWM介绍 关于PWM的定义 分频-计数时钟 计数器 定时器输出PWM的原理 定时器的初始化 3.配置STM32CubeMX 4.keil5的代码 5.运行结果 6.心得与体会 ...
- STM32输出PWM波形以及实现LED呼吸灯
目录 一.PWM的简介 1.PWM的定义 2.PWM的优点 3.PWM的几种控制方法 (1)等脉宽PWM法 (2)随机PWM (3)SPWM法 4.PWM的主要参数 (1)PWM占空比 (2)PWM的 ...
- 基于STM32F4实现LED呼吸灯效果(PWM)
文章目录 前言 一.定时器及PWM的概述 1.通用定时器 2.PWM 二.配置步骤及代码实现 总结 前言 今天我们来进行PWM的学习,今天使用到的是通用定时器TIM14 ,在此之前我们已经简单学习过定 ...
- stm32呼吸灯c语言程序,STM32使用PWM控制LED呼吸灯效果
实验的STM32型号: STM32F103C8T6 48引脚 涉及到的知识: RCC,GPIO,TIMER,PWM 设置 *RCC需打开外部时钟 *GPIO查表得知 PA3 默认复用引脚 TIM2 ...
最新文章
- pytorch:固定部分层参数,固定单个模型
- drbd(三):drbd的状态说明
- oracle12c 不添加host,Oracle12c部署,允许远程访问-Go语言中文社区
- Asp.net中web.config配置文件详解
- 90度旋转 flip opencv_基于Hu距的图像旋转矫正之OpenCV实现
- different intergers
- [漏洞案例]thinkcmf 2.x从sql注入到getshell实战
- 单例模式(懒汉模式)
- 从有赞UI组件库看CSS BEM命名规范的好处
- 聚合广告SDK开发(一)——基础知识
- CSS使用小操作(隐藏滚动,实现三角行等...)
- 素描嘴巴注意这几个点,轻松画出头像神韵~
- 客户数据平台(CDP)是什么?
- 记录一篇触发器的文章
- 到底什么是“被动收入”?
- 万丰科技机器人排名_中国机器人公司排名是怎样的?
- kali安装Aria2
- 基于Quartus II软件的FPGA综合实验——多功能数字钟
- DIY个人智能家庭网关——硬件篇之433M无线接收解码器(二)
- python scrapy 出现no more duplicates will be shown (see DUPEFILTER_DEBUG to show all duplicate