呼吸灯就是灯珠在明暗之间有规律的缓慢变化。
可以通过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);
}
}
|