在血压计项目中,要实现呼吸灯效果,就是让灯在某种颜色下,逐步从暗到亮,然后在逐步变暗直到熄灭。在实际项目中使用了STM32的PWM功能,通过逐步调整驱动信号的占空比来实现这种渐变效果。
首先假设初始颜色值为RGBi,终止颜色值为RGBe,三色灯的步长分别为STEPr,STEPg,STEPb。
于是
STEPr = (Re-Ri)/4
STEPg = (Ge-Gi)/4
STEPb = (Be-Bi)/4
那么在中断中每次设置CCR的值为Ri+STEPr×i,每发生一次PWM中断,i的值加1,到Re时,STEPr变为负值,递减到Ri时,熄灭R灯,其它的两个灯以此类推。
实验效果证明,这种算法效果不错
|