4974|2

155

帖子

1

TA的资源

一粒金砂(高级)

楼主
 

【Beetle ESP32-C3】二、PWM呼吸灯(Arduino) [复制链接]

       本篇介绍Beetle ESP32-C3在Arduino IDE中进行PWM开发的过程,实现呼吸灯功能——实际是DFROBOT官网示例代码仅修改为IO7做输出。

1、PWM(Pulse Width Modulation):脉冲宽度调制

       调整PWM包括:周期调整和正脉冲调整。PWM就好比是“蹬自行车”——正脉冲时蹬车,负脉冲时不蹬让其滑行。PWM利用这个原理可以进行“直流电机调速”、“照明亮度调整(即呼吸灯)”等操作。

 

图2-1 PWM原理

 

       Arduino core for the ESP32并没有一般Arduino中用来输出PWM的analogWrite(pin, value)方法,Arduino-ESP32框架提供了一个LEDC(即LED control)库,是设计用来控制LED实现呼吸灯之类,当然也可以用作通用PWM输出。

 

图2-2 ESP32各系列PWM通道数

 

       乐鑫官方文档LEDC库链接:https://docs.espressif.com/projects/arduino-esp32/en/latest/api/ledc.html 。

       文档页开始给出的表格(图2-2为其截图),说明了ESP32各个系列MCU包含的PWM通道数,其中ESP32的LEDC总共有16个路通道(0 ~ 15),分为高低速两组,高速通道(0 ~ 7)由80MHz时钟驱动,低速通道(8 ~ 15)由1MHz时钟驱动。而ESP32-C3不亏为ESP32“阉割版”,提供了6个通道——话说通道多了也没有那么多IO。

2、呼吸灯——IO7控制LED

       话说本人选择用了IO7基于两个原因,一是板载的LED做呼吸灯亮度不明显,二是IO7在面包板上好连接(在核心板边上)省得接杜邦线了。

 

图2-3 呼吸灯案例的面包板连接

 

       下面是案例代码,注释加入了自己的两个理解(标注by Author):

const int ledPin = 7;  // PWM生成后实际输出引脚

//设置PWM参数
const int freq = 5000;//PWM频率
const int ledChannel = 0;//信号生成GPIO
const int resolution = 8;//8位分辨率,by Author. C3可设置1~14bits

void setup(){
  //PWM参数设置
  ledcSetup(ledChannel, freq, resolution);

  //将生成信号通道绑定到输出通道上
  ledcAttachPin(ledPin, ledChannel);
}

void loop(){
  //逐渐变亮,by Author. 8位分辨率因而到255
  for(int dutyCycle = 0; dutyCycle <= 255; dutyCycle++){   
    // changing the LED brightness with PWM
    ledcWrite(ledChannel, dutyCycle);
    delay(15);
  }

  //逐渐变暗
  for(int dutyCycle = 255; dutyCycle >= 0; dutyCycle--){
    // changing the LED brightness with PWM
    ledcWrite(ledChannel, dutyCycle);   
    delay(15);
  }
}

 

 

此帖出自无线连接论坛

最新回复

例程注释非常清楚,很好的一篇文章,期待更加精彩的作品!  详情 回复 发表于 2022-8-7 10:49
点赞(1) 关注
 

回复
举报

6856

帖子

0

TA的资源

五彩晶圆(高级)

沙发
 

乐鑫官方文档支持的还行

此帖出自无线连接论坛
 
 

回复

7096

帖子

11

TA的资源

版主

板凳
 
例程注释非常清楚,很好的一篇文章,期待更加精彩的作品!
此帖出自无线连接论坛
 
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
推荐帖子
电子设计大赛之“每天一起学”(每天更新)

本帖最后由 paulhyde 于 2014-9-15 04:17 编辑 有喜欢的就顶吧,继续哦!~! 电子设计大赛之“一起学模电”(每天更新) 电子 ...

友善之臂嵌入式浏览器中文支持移植成功

经过本人的改造,友善之臂的qtopia自带的浏览器终于支持中文网页了,也就是,如果能把应用程序再汉化下,就可以应用到开发中。空 ...

【安防开讲】:第一章 安全技术防范概念

跟许多教材一样,开始的那几页都很枯燥的,请原谅笨版主偷懒了:$ 36388 363883638836388 本帖最后由 zcgzanne 于 2010- ...

闲聊哈希表 (上)

经典数据结构教科书中,“表”是数据结构的一个大家族。其中,有顺序表(数组)、单向链表、双向链表、循环链表等等。我们今天聊 ...

留住身边的美景,2015年夏天和秋天

本帖最后由 mmmllb 于 2015-11-12 13:23 编辑 时间过得很快呀,不久前穿着半袖吃冰棍,现在就过着羽绒服吃火锅了。 2015年的 ...

【沁恒RISC-V内核 CH582】开发环境安装

最近因为深圳疫情原因,身体又有不适,一直没有合适机会继续研究开发板和安装开发环境,今天终于有时间可以安装开发环境了,在网 ...

有奖问答|告别冗长的手动测量,助力工程​师​解决测量​难题

40​多年​来,​NI ​开发​了​众多​自动​化​测试​和​自动R ...

求助各位大神,初学者,正在看汇编语言,开始接难住了,

求助各位大神,初学者,正在看汇编语言,开始接难住了, 机器语言二进制数与十进制十六进制到底是什么关系,怎么转换,十六进 ...

免费申请: 国民技术车规MCU N32A455开发板

开发板主MCU芯片为国民技术车规高性能32 位 N32A455VEL7 芯片,所有的功能接口都连接出来,方便客户开发,另外在板子上还布有电 ...

解析 ARMxy 嵌入式工业计算机中 ModbusTCP 与 MQTT 通信操作

引言 在工业自动化领域,实时数据采集对于优化生产流程和提高设备效率至关重要。Modbus RTU作为一种广泛应用的工业通信协议, ...

快速回复 返回顶部 返回列表