帮我写一个适合arduino的音乐声控灯,灯珠随着音乐音量的增加而递进增加,如果音乐声音减小则逆向减少灯珠的数量到音量值对应的灯那就行,每个灯亮变化可以加个50毫秒的延迟,最多10个,灯珠的颜色随机,变化频率适当增加,光线柔和其中麦克风的接口为A2,ws2812接口为D6
时间: 2024-05-07 16:20:07 浏览: 17
好的,这里给你一个简单的代码实现:
```C++
#include <Adafruit_NeoPixel.h>
#define LED_PIN 6
#define LED_COUNT 10
Adafruit_NeoPixel strip(LED_COUNT, LED_PIN, NEO_GRB + NEO_KHZ800);
const int micPin = A2;
int micValue = 0;
void setup() {
strip.begin();
strip.show(); // 初始化所有灯珠为关闭状态
}
void loop() {
micValue = analogRead(micPin); // 获取麦克风声音大小
int numLEDs = map(micValue, 0, 1023, 0, LED_COUNT); // 映射灯珠数量
for (int i = 0; i < LED_COUNT; i++) {
if (i < numLEDs) {
strip.setPixelColor(i, random(0, 256), random(0, 256), random(0, 256)); // 设置灯珠颜色
} else {
strip.setPixelColor(i, 0, 0, 0); // 关闭多余灯珠
}
strip.show(); // 更新灯光
delay(50); // 等待50毫秒
}
}
```
这个代码中用到了 `Adafruit_NeoPixel` 库,它可以控制 WS2812 灯珠的颜色和亮度。我们通过 `analogRead()` 函数获取麦克风的声音大小,并将其映射到灯珠数量,然后循环遍历每个灯珠,设置其颜色和亮度,最后通过 `strip.show()` 函数更新灯光。注意,我们在循环中加入了 `delay(50)` 延迟,以便让灯光变化更加柔和。
相关推荐
![ino](https://img-home.csdnimg.cn/images/20210720083646.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)