基于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();
}
}