Arduino驱动WS2812B呼吸灯效果

准备工作

引入头文件和定义灯带参考以往文章,在这里不做赘述 传送门

主要代码

  • 定义状态常量
#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);写法;

效果调整

  1. 如果想要调整呼吸的最小亮度和最大亮度可以改变代码中的 100(最大值)和 0(最小值)
       if(val>=100)
       stat1 = SUB;
       if(val<=0)
       stat1 = ADD; 
  1. 如果想要调整呼吸灯的呼吸速度,可以调整代码中的//delay(20); sleep(20);中的20 直到达到想要的速度
  2. 如果想要调节呼吸过程中变化的幅度可以调节代码中的1,如果值设置过大可能会导致呼吸有明显的闪烁
 if(stat1==SUB){
     val -= 1;
    }
  else if(stat1==ADD) {
     val += 1;  
    }

实际效果如下图所示


©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容