准备工作
引入头文件和定义灯带参考以往文章,在这里不做赘述 传送门
主要代码
- 定义状态常量
#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;
}