改变部分代码,使灯带在声音传感器的值是小于30的2秒后,呈流水灯样。#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 > 30){ // 判断声音传感器的值是否大于30 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(50);//0.01秒 }
时间: 2024-03-08 09:51:13 浏览: 27
修改后的代码如下:
```C++
#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);
unsigned long lastTriggerTime = 0;
bool isWaterfall = false;
void setup() {
pixels.begin(); // 初始化 灯带
Serial.begin(9600); // 串口9600
}
void loop() {
int micValue = analogRead(MIC_PIN); // 读 声音传感器值
if (micValue > 30) { // 判断声音传感器的值是否大于30
int brightness = map(micValue, 0, 1023, 0, 255); // 将数值映射到0-255范围内
int a = random(0, 255);
int b = random(0, 255);
if (isWaterfall) {
for (int i = NUMPIXELS - 1; i >= 0; i--) {
pixels.setPixelColor(i, pixels.ColorHSV(a, b, brightness)); // 灯珠亮度
pixels.show(); // 显示
delay(20); // 0.02秒
pixels.setPixelColor(i, 0); // 关闭灯珠
}
} else {
for (int i = 0; i < NUMPIXELS; i++) {
pixels.setPixelColor(i, pixels.ColorHSV(a, b, brightness)); // 灯珠亮度
}
pixels.show(); // 显示
}
lastTriggerTime = millis(); // 记录最后一次触发时间
isWaterfall = true;
} else {
if (millis() - lastTriggerTime >= 2000 && isWaterfall) {
pixels.clear(); // 关闭所有灯珠
pixels.show(); // 显示
isWaterfall = false;
} else {
pixels.clear(); // 关闭所有灯珠
pixels.show(); // 显示
}
}
delay(50); // 0.01秒
}
```
修改的主要思路是:当声音传感器的值大于30时,记录下当前时间,并将灯带设置成流水灯样式。当声音传感器的值小于等于30时,判断当前时间与上次记录的时间间隔是否超过2秒,如果超过2秒则将灯带恢复成普通灯光,否则保持关闭状态。
相关推荐
![](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)