改变部分代码,使灯的亮灭变得平缓,#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 21:46:46 浏览: 117
可以在代码中使用渐变的方式控制灯带的亮度变化。可以使用一个变量来保存当前亮度值,每次循环时将亮度值缓慢地朝目标亮度值变化,并将变化后的亮度值作为参数设置到灯带中。代码如下:
```
#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); // 读 声音传感器值
int targetBrightness = map(micValue, 0, 1023, 0, 255); // 将数值映射到0-255范围内
if(micValue > 50){ // 判断声音传感器的值是否大于50
static int currentBrightness = 0; // 当前亮度值,初始为0
int step = (targetBrightness - currentBrightness) / 10; // 计算每次变化的亮度差值
for(int i=0; i<NUMPIXELS; i++) {
pixels.setPixelColor(i, pixels.ColorHSV(random(0,255), random(0,255), currentBrightness)); // 灯珠亮度
}
pixels.show(); // 显示
currentBrightness += step; // 更新当前亮度值
}
else{
static int currentBrightness = 0; // 当前亮度值,初始为0
int step = (0 - currentBrightness) / 10; // 计算每次变化的亮度差值
for(int i=0; i<NUMPIXELS; i++) {
pixels.setPixelColor(i, pixels.Color(0, 0, 0)); // 关闭所有灯珠
}
pixels.show(); // 显示
currentBrightness += step; // 更新当前亮度值
}
delay(100);//0.01秒
}
```
在这个代码中,我设置每次变化的亮度差值为目标亮度值和当前亮度值的1/10,你也可以根据实际情况调整这个值,使灯带的亮度变化更加平缓。
阅读全文