改变部分代码,使灯带根据音量忽亮忽灭。#include <Adafruit_NeoPixel.h> #define PIN 6 // 灯带数据-Arduino引脚 #define NUMPIXELS 60 // 灯珠数量 #define MIC_PIN A0 // 声音传感器-Arduino引脚 Adafruit_NeoPixel pixels = Adafruit_NeoPixel(NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800); void setup() { pixels.begin(); // 初始化 灯带 Serial.begin(9600); // 串口9600 } void loop() { int micValue = analogRead(MIC_PIN); // 读 声音传感器值 if(micValue > 50){ // 判断声音传感器的值是否大于50 int brightness = map(micValue, 0, 1023, 0, 255); // 将数值映射到0-255范围内 int a = random(0,255); int b = random(0,255); for(int i=0; i<NUMPIXELS; i++) { pixels.setPixelColor(i, pixels.ColorHSV(a, b, brightness)); // 灯珠亮度 } pixels.show(); // 显示 } else{ pixels.clear(); // 关闭所有灯珠 pixels.show(); // 显示 } delay(100);//0.01秒 }
时间: 2024-03-07 15:46:56 浏览: 55
你可以尝试使用随机数让灯带忽亮忽灭,具体的代码实现如下:
```
#include <Adafruit_NeoPixel.h>
#define PIN 6 // 灯带数据-Arduino引脚
#define NUMPIXELS 60 // 灯珠数量
#define MIC_PIN A0 // 声音传感器-Arduino引脚
Adafruit_NeoPixel pixels = Adafruit_NeoPixel(NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800);
void setup() {
pixels.begin(); // 初始化 灯带
Serial.begin(9600); // 串口9600
}
void loop() {
int micValue = analogRead(MIC_PIN); // 读 声音传感器值
if (micValue > 50) { // 判断声音传感器的值是否大于50
int brightness = map(micValue, 0, 1023, 0, 255); // 将数值映射到0-255范围内
for (int i = 0; i < NUMPIXELS; i++) {
int randomNum = random(0, 100); // 生成0-99的随机数
if (randomNum < 50) { // 随机数小于50时,灯珠关闭
pixels.setPixelColor(i, pixels.Color(0, 0, 0)); // 关闭灯珠
} else { // 随机数大于等于50时,灯珠忽亮忽灭
int a = random(0, 255);
int b = random(0, 255);
pixels.setPixelColor(i, pixels.ColorHSV(a, b, brightness)); // 灯珠亮度
}
}
pixels.show(); // 显示
} else {
pixels.clear(); // 关闭所有灯珠
pixels.show(); // 显示
}
delay(100); //0.01秒
}
```
在这段代码中,我们使用了随机数来控制灯珠的亮灭。具体来说,我们生成了一个0-99的随机数,当随机数小于50时,灯珠是关闭的;当随机数大于等于50时,灯珠就会忽亮忽灭。这样可以让灯带的效果更加有趣。
阅读全文