呼吸灯就是灯珠在明暗之间有规律的缓慢变化。
可以通过PWM来实现,PWM的占空比不同人眼看起来会觉得亮度不同,因此定时修改驱动LED引脚的PWM占空比即可实现呼吸灯的效果。
接下来我们使用PWM实现一个呼吸灯效果。
硬件PIC16F13145 Curiosity Nano 上的RC0引脚的橙色LED灯珠。
1、新建工程
2、启动MCC配置PWM
PWM1默认使用TMR2
所以在TMR2里配置PWM的周期
如上图所示,这里显示的就是TMR2中配置出来的结果,另外初始化的默认占空比可以修改成你需要的默认配置。
完成了这些配置即可编写我们的函数了,用以实现呼吸灯效果。
- #include "mcc_generated_files/system/system.h"
- #include"mcc_generated_files/timer/delay.h"
- int main(void)
- {
- int brightness = 0; // 当前亮度
- int step = 1; // 亮度改变的步长
- int delayTime = 25; // 延时时间
-
- SYSTEM_Initialize();
- DELAY_milliseconds(1000);
- while(1)
- {
- for(brightness=0;brightness<100;brightness+=step)
- {
- PWM1_LoadDutyValue(brightness);
- DELAY_milliseconds(delayTime);
- if(brightness<50)
- {
- step=1+(brightness/10);
- }
- else
- {
- step=1+(100-brightness)/10;
- }
- }
- DELAY_milliseconds(50);
-
- for(brightness=100;brightness>=0;brightness-=step)
- {
- PWM1_LoadDutyValue(brightness);
- DELAY_milliseconds(delayTime);
- if(brightness>50)
- {
- step=1+(100-brightness)/10;
- }
- else
- {
- step=1 + brightness/10;
- }
- }
- DELAY_milliseconds(50);
- }
- }
|