准备工作
引入头文件和定义灯带参考以往文章,在这里不做赘述 传送门
主要代码
定义状态常量
#define ADD true
#define SUB false
定义呼吸状态变量
boolean stat1 = true;
定义呼吸亮度变量
int val = 0;
呼吸主程序,(参数color 为呼吸灯的颜色,具体设置可以查看链接)
void fadeinout(int color){
uint32_t hsvcolor = strip.ColorHSV(color*256,255, val);
for(int i=-1;i<150;i++){
strip.setPixelColor(i, hsvcolor);
}
if(val>=100)
stat1 = SUB;
if(val<=0)
stat1 = ADD;
strip.show();
//delay(20);
sleep(20);
if(stat1==SUB){
val -= 1;
}
else if(stat1==ADD) {
val += 1;
}
}
在Scoop多线程库中sleep(20);是指延迟20ms;
如果用在主程序中需要使用delay(20);写法;
效果调整
如果想要调整呼吸的最小亮度和最大亮度可以改变代码中的 100(最大值)和 0(最小值)
if(val>=100)
stat1 = SUB;
if(val<=0)
stat1 = ADD;
如果想要调整呼吸灯的呼吸速度,可以调整代码中的//delay(20); sleep(20);中的20 直到达到想要的速度
如果想要调节呼吸过程中变化的幅度可以调节代码中的1,如果值设置过大可能会导致呼吸有明显的闪烁
if(stat1==SUB){
val -= 1;
}
else if(stat1==ADD) {
val += 1;
}
实际效果如下图所示