基于Arduino和WS2812B灯带的随机呼吸灯

这篇文章详细描述了一个使用Arduino和WS2812B灯带的项目,通过Adafruit_NeoPixel库实现灯带的随机亮灭效果,灯珠亮度随随机数变化而变化,模拟呼吸灯效果。
摘要由CSDN通过智能技术生成

  基于Arduino和WS2812B灯带的随机呼吸灯,设定随机数,程序启动灯带会亮,随机数目灯珠会逐渐亮起,然后逐渐变暗,如此循环

  利用了Adafruit_NeoPixel库,定义了12个变量,可以根据需求增加


#include <Adafruit_NeoPixel.h>

Adafruit_NeoPixel rgb_display_12 = Adafruit_NeoPixel(24,12,NEO_GRB + NEO_KHZ800);//定义管脚12输出(颗数、管脚、类型)
volatile int l1;
volatile int l2;
volatile int l3;
volatile int l4;
volatile int l5;
volatile int l6;
volatile int l7;
volatile int l8;
volatile int l9;
volatile int l10;
volatile int l11;
volatile int l12;//定义12个变量
void setup(){
  rgb_display_12.begin();//初始化值为0
  l1 = 0;
  l2 = 0;
  l3 = 0;
  l4 = 0;
  l5 = 0;
  l6 = 0;
  l7 = 0;
  l8 = 0;
  l9 = 0;
  l10 = 0;
  l11 = 0;
  l12 = 0;
}

void loop(){
  for (int i = 1; i <= 24; i = i + (1)) {//设置灯号,从1-24,步长为1
    rgb_display_12.setPixelColor((i)-1, rgb_display_12.ColorHSV(50000,255,5));//12管脚(颜色、饱和度、亮度)
    rgb_display_12.show();//初始化灯亮度为5
  }
   l1 = random(1, 25);
    l2 = random(1, 25);
    l3 = random(1, 25);
    l4 = random(1, 25);
    l5 = random(1, 25);
    l6 = random(1, 25);
    l7 = random(1, 25);
    l8 = random(1, 25);
    l9 = random(1, 25);
    l10 = random(1, 25);
    l11 = random(1, 25);
    l12 = random(1, 25);//12个变量分别取1-25的随机值(不包括25)
  for (int brightness = 1; brightness <= 255; brightness = brightness + (5)) {//亮度从1到255、步长5
      rgb_display_12.setPixelColor((l1)-1, rgb_display_12.ColorHSV(50000,255,brightness));
      rgb_display_12.setPixelColor((l2)-1, rgb_display_12.ColorHSV(50000,255,brightness));
      rgb_display_12.setPixelColor((l3)-1, rgb_display_12.ColorHSV(50000,255,brightness));
      rgb_display_12.setPixelColor((l4)-1, rgb_display_12.ColorHSV(50000,255,brightness));
      rgb_display_12.setPixelColor((l5)-1, rgb_display_12.ColorHSV(50000,255,brightness));
      rgb_display_12.setPixelColor((l6)-1, rgb_display_12.ColorHSV(50000,255,brightness));
      rgb_display_12.setPixelColor((l7)-1, rgb_display_12.ColorHSV(50000,255,brightness));
      rgb_display_12.setPixelColor((l8)-1, rgb_display_12.ColorHSV(50000,255,brightness));
      rgb_display_12.setPixelColor((l9)-1, rgb_display_12.ColorHSV(50000,255,brightness));
      rgb_display_12.setPixelColor((l10)-1, rgb_display_12.ColorHSV(50000,255,brightness));
      rgb_display_12.setPixelColor((l11)-1, rgb_display_12.ColorHSV(50000,255,brightness));
      rgb_display_12.setPixelColor((l12)-1, rgb_display_12.ColorHSV(50000,255,brightness));//RGB设置;12个随机生成值作为灯号,亮度渐增(颜色、饱和度、亮度)
    rgb_display_12.show();//RGB设置生效
  }
  for (int brightness = 255; brightness >= 1; brightness = brightness + (-5)) {//亮度从255到1、步长-5
      rgb_display_12.setPixelColor((l1)-1, rgb_display_12.ColorHSV(50000,255,brightness));
      rgb_display_12.setPixelColor((l2)-1, rgb_display_12.ColorHSV(50000,255,brightness));
      rgb_display_12.setPixelColor((l3)-1, rgb_display_12.ColorHSV(50000,255,brightness));
      rgb_display_12.setPixelColor((l4)-1, rgb_display_12.ColorHSV(50000,255,brightness));
      rgb_display_12.setPixelColor((l5)-1, rgb_display_12.ColorHSV(50000,255,brightness));
      rgb_display_12.setPixelColor((l6)-1, rgb_display_12.ColorHSV(50000,255,brightness));
      rgb_display_12.setPixelColor((l7)-1, rgb_display_12.ColorHSV(50000,255,brightness));
      rgb_display_12.setPixelColor((l8)-1, rgb_display_12.ColorHSV(50000,255,brightness));
      rgb_display_12.setPixelColor((l9)-1, rgb_display_12.ColorHSV(50000,255,brightness));
      rgb_display_12.setPixelColor((l10)-1, rgb_display_12.ColorHSV(50000,255,brightness));
      rgb_display_12.setPixelColor((l11)-1, rgb_display_12.ColorHSV(50000,255,brightness));
      rgb_display_12.setPixelColor((l12)-1, rgb_display_12.ColorHSV(50000,255,brightness));//RGB设置;12个随机生成值作为灯号,亮度渐减(颜色、饱和度、亮度)
    rgb_display_12.show();
  }

}

  • 12
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值