材料
1、ws2812环形灯带
2、声音传感器(带模拟量输出)
3、Arduino开发板(全系列可用)
功能
因为ws2812灯带全彩特性,可以实现很多效果,这里我实现了逐个点亮、逐个熄灭、呼吸灯、拾音氛围灯、炫彩光环的功能。这里控制RGB灯带所用到的库为Adafruit_NeoPixel库。
逐个点亮
void onebyl() //逐个熄灭
{
pixels.setBrightness(0);
for(int i=0;i<=NUMPIXELS;i++)
{
pixels.setBrightness(lumm);//亮度
pixels.setPixelColor(i, pixels.Color(0,200,200)); //颜色设置
pixels.show(); // 更新灯带显示
delay(500);
}
}
逐个熄灭
逐个熄灭就是逐个点亮反过来
void onebym() //逐个熄灭
{
pixels.setBrightness(lumm);//亮度
for(int i=NUMPIXELS;i>=0;i--)
{
pixels.setPixelColor(i, pixels.Color(0,0,0)); //颜色设置
pixels.show(); // 更新灯带显示
delay(500);
}
}
呼吸灯
void breathing() //呼吸灯
{
for(int i=1;i<=200;i=i+5)
{
pixels.setBrightness(i);
pixels.show();
delay(10);
}
for(int i=200;i>=10;i=i-5)
{
pixels.setBrightness(i);
pixels.show();
delay(10);
}
}
拾音灯
void pickup() //拾音灯
{
pixels.setBrightness(0);
fre=analogRead(ain);
Serial.println(fre);
int ix=map(fre,490,600,0,6);
for(int i=-1;i<=ix;i++)
{
int iz,iy;
iz = i;
iy = map(i,1,6,11,6);
if(i<=3)
{
pixels.setPixelColor(iz, pixels.Color(0,255,200));
pixels.setPixelColor(iy, pixels.Color(0,255,200));
}
else if(i>3&&i<6)
{
pixels.setPixelColor(iz, pixels.Color(170,255,0));
pixels.setPixelColor(iy, pixels.Color(170,255,0));
}
else if(i==6)
{
pixels.setPixelColor(iz, pixels.Color(255,0,0)