[PIC®/AVR®/dsPIC®产品] 【Curiosity Nano测评报告】+ PIC16F13145 Curiosity Nano的PWM实现呼吸灯

[复制链接]
5382|20
 楼主| gaoyang9992006 发表于 2024-9-8 17:04 | 显示全部楼层 |阅读模式
呼吸灯就是灯珠在明暗之间有规律的缓慢变化。
可以通过PWM来实现,PWM的占空比不同人眼看起来会觉得亮度不同,因此定时修改驱动LED引脚的PWM占空比即可实现呼吸灯的效果。
接下来我们使用PWM实现一个呼吸灯效果。
硬件PIC16F13145 Curiosity Nano 上的RC0引脚的橙色LED灯珠。
1、新建工程
2、启动MCC配置PWM


PWM1默认使用TMR2

所以在TMR2里配置PWM的周期

如上图所示,这里显示的就是TMR2中配置出来的结果,另外初始化的默认占空比可以修改成你需要的默认配置。
完成了这些配置即可编写我们的函数了,用以实现呼吸灯效果。
  1. #include "mcc_generated_files/system/system.h"
  2. #include"mcc_generated_files/timer/delay.h"

  3. int main(void)
  4. {

  5.     int brightness = 0; // 当前亮度
  6.     int step = 1;            // 亮度改变的步长
  7.     int delayTime = 25;      // 延时时间
  8.    
  9.     SYSTEM_Initialize();

  10.     DELAY_milliseconds(1000);

  11.     while(1)
  12.     {
  13.         for(brightness=0;brightness<100;brightness+=step)
  14.         {
  15.             PWM1_LoadDutyValue(brightness);
  16.             DELAY_milliseconds(delayTime);
  17.             if(brightness<50)
  18.             {
  19.                 step=1+(brightness/10);
  20.             }
  21.             else
  22.             {
  23.                 step=1+(100-brightness)/10;
  24.             }
  25.         }        
  26.         DELAY_milliseconds(50);
  27.         
  28.         for(brightness=100;brightness>=0;brightness-=step)
  29.         {
  30.             PWM1_LoadDutyValue(brightness);
  31.             DELAY_milliseconds(delayTime);
  32.             if(brightness>50)
  33.             {
  34.                 step=1+(100-brightness)/10;
  35.             }
  36.             else
  37.             {
  38.                 step=1 + brightness/10;
  39.             }        
  40.         }
  41.         DELAY_milliseconds(50);
  42.     }   
  43. }



本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
 楼主| gaoyang9992006 发表于 2024-9-8 17:20 | 显示全部楼层

示波器捕捉的PWM波形。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
wanduzi 发表于 2024-9-29 20:48 | 显示全部楼层
呼吸灯的效果不错。PWM挺好,好像不能连续,不然看着效果不连续,是有一个什么曲线。
21mengnan 发表于 2024-9-30 11:59 | 显示全部楼层
呼吸灯的伽马校正。
单片小菜 发表于 2024-9-30 13:53 | 显示全部楼层
呼吸灯最终的结果是什么样?
自己造声卡 发表于 2024-9-30 14:13 | 显示全部楼层
有没有视频,可以看一下效果
哈根达斯uz 发表于 2024-9-30 15:44 来自手机 | 显示全部楼层
定时修改驱动LED引脚的PWM占空比即可实现呼吸灯的效果
zhuotuzi 发表于 2024-11-28 22:18 | 显示全部楼层
有没有输出使能控制,这样就可以调速电机。
yiy 发表于 2024-11-29 15:29 | 显示全部楼层
如果有使能就可以控制电机。
yiy 发表于 2024-11-29 15:30 | 显示全部楼层
应该是有的,看着挺好用。
wahahaheihei 发表于 2024-11-29 21:08 | 显示全部楼层
可以试试DMA驱动的PWM,比如用DMA搬运ADC
xuanhuanzi 发表于 2024-12-26 14:05 | 显示全部楼层
真是太好用了。这个好玩。
wanduzi 发表于 2024-12-27 13:33 | 显示全部楼层
呼吸灯是PWM应用的最简单示例,很好理解。
稳稳の幸福 发表于 2024-12-29 11:43 | 显示全部楼层
PWM的占空比不同人眼看起来会觉得亮度不同,因此定时修改驱动LED引脚的PWM占空比即可实现呼吸灯的效果。
598330983 发表于 2025-1-12 18:09 | 显示全部楼层
这个呼吸灯效果是真不错
天灵灵地灵灵 发表于 2025-1-14 16:59 | 显示全部楼层
PWM的最大用处是做FOC控制。我觉得这个单片也可以。
wanduzi 发表于 2025-1-20 10:46 | 显示全部楼层
貌似可以使用多个定时器。
wanduzi 发表于 2025-1-25 16:55 | 显示全部楼层
灰色不能修改的是显示对应计算结果的吧
yiy 发表于 2025-1-26 15:22 | 显示全部楼层
波形看着不错。
稳稳の幸福 发表于 2025-1-26 17:56 | 显示全部楼层
PWM的频率越大是不是越细腻,也就约好呢?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:如果你觉得我的分享或者答复还可以,请给我点赞,谢谢。

2052

主题

16403

帖子

222

粉丝
快速回复 在线客服 返回列表 返回顶部