用Arduino和ws2812拾音氛围灯

您所在的位置:网站首页 arduino上面的灯 用Arduino和ws2812拾音氛围灯

用Arduino和ws2812拾音氛围灯

2023-11-16 14:42| 来源: 网络整理| 查看: 265

用Arduino和ws2812拾音氛围灯 材料功能逐个点亮逐个熄灭呼吸灯拾音灯炫彩光环 总代码

材料

1、ws2812环形灯带 请添加图片描述 2、声音传感器(带模拟量输出) 请添加图片描述 3、Arduino开发板(全系列可用) 请添加图片描述

功能

因为ws2812灯带全彩特性,可以实现很多效果,这里我实现了逐个点亮、逐个熄灭、呼吸灯、拾音氛围灯、炫彩光环的功能。这里控制RGB灯带所用到的库为Adafruit_NeoPixel库。

逐个点亮 void onebyl() //逐个熄灭 { pixels.setBrightness(0); for(int i=0;i 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 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 pixels.setPixelColor(iz, pixels.Color(0,255,200)); pixels.setPixelColor(iy, pixels.Color(0,255,200)); } else if(i>3&&i pixels.setPixelColor(iz, pixels.Color(255,0,0)); } pixels.setBrightness(lumm); pixels.show(); //delay(10); } }

这里需要调几个参数,我们通过读取声音传感器输出的模拟量来控制灯带显示,所以需要对声音传感器的输出量,也就是灵敏度进行设置,通过以下代码读取声音传感器数据:

int Din=2; //DOUT接引脚2 int Ain=A0; //AOUT接引脚A0 int value; void setup() { pinMode(Din,INPUT); pinMode(Ain,INPUT); Serial.begin(115200); } void loop() { value=analogRead(Ain); Serial.println(value); delay(100); }

打开串口根据安静环境与音乐环境对比结合波动得出最大值和最小值。 在这里插入图片描述

发现数据不稳定时可以适当的通过声音传感器上自带的旋钮更改灵敏度。 请添加图片描述 通过调节得到的数据在代码中更改

int ix=map(fre,490,600,0,6);

这里我做的是两边往中间靠的显示效果,所以映射的只有一半灯珠数量。

炫彩光环 void colorful() //炫彩光效 { pixels.setBrightness(lumm); for(int i=1;i Serial.begin(115200); pixels.begin(); //初始化灯带 } void loop() { lumsz(5); //全局亮度设置 pickup(); //拾音 } void lumsz(int lum) //全局亮度设置 { //lum=analogRead(A0); //Serial.println(lum); if(lum!=lumm) { pixels.setBrightness(lum); pixels.show(); lumm=lum; } } void onebyl() //逐个点亮 { pixels.setBrightness(0); for(int i=0;i 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 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 pixels.setPixelColor(iz, pixels.Color(0,255,200)); pixels.setPixelColor(iy, pixels.Color(0,255,200)); } else if(i>3&&i pixels.setPixelColor(iz, pixels.Color(255,0,0)); } pixels.setBrightness(lumm); pixels.show(); //delay(10); } } void colorful() //炫彩光效 { pixels.setBrightness(lumm); for(int i=1;i lumsz(5); //全局亮度设置 pickup(); //拾音 }

显示效果如视频所示:

WS2812彩色灯环效果



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3