添加代码,加一个总开关。#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 previousMillis = 0; // 上一次流水灯时间 int interval = 2000; // 流水灯间隔时间 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(); // 重置流水灯时间 previousMillis = millis(); } else{ unsigned long currentMillis = millis(); // 获取当前时间 // 如果达到两秒 if(currentMillis - previousMillis >= interval){ // 开始流水灯 for(int i=0; i<NUMPIXELS; i++) { int a = random(0,255); int b = random(0,255); int c = random(0,255); pixels.setPixelColor(i, pixels.Color(a, b, c)); // 蓝 pixels.show(); delay(50); pixels.setPixelColor(i, pixels.Color(0, 0, 0)); // 关 int micValue = analogRead(MIC_PIN); if(micValue > 30){ i=60; } } pixels.show(); // 重置流水灯时间 previousMillis = millis(); } else{ pixels.clear(); // 关all pixels.show(); } } delay(50); }
时间: 2024-03-16 20:43:24 浏览: 160
好的,以下是添加了总开关的代码,请仔细查看:
```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 previousMillis = 0; // 上一次流水灯时间
int interval = 2000; // 流水灯间隔时间
bool isOn = true; // 总开关状态,默认为打开
void setup() {
pixels.begin(); // 初始化 灯带
Serial.begin(9600); // 串口9600
}
void loop() {
if(isOn){ // 总开关打开时才执行下面的代码
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();
// 重置流水灯时间
previousMillis = millis();
}
else{
unsigned long currentMillis = millis(); // 获取当前时间
// 如果达到两秒
if(currentMillis - previousMillis >= interval){
// 开始流水灯
for(int i=0; i<NUMPIXELS; i++) {
int a = random(0,255);
int b = random(0,255);
int c = random(0,255);
pixels.setPixelColor(i, pixels.Color(a, b, c)); // 蓝
pixels.show();
delay(50);
pixels.setPixelColor(i, pixels.Color(0, 0, 0)); // 关
int micValue = analogRead(MIC_PIN);
if(micValue > 30){
i=60;
}
}
pixels.show();
// 重置流水灯时间
previousMillis = millis();
}
else{
pixels.clear(); // 关all
pixels.show();
}
}
}
else{ // 总开关关闭时,关掉灯带
pixels.clear();
pixels.show();
}
delay(50);
}
// 总开关控制函数
void toggleOnOff() {
isOn = !isOn;
}
```
上述代码中,我们新增了一个 `isOn` 变量,表示总开关状态,默认为打开。在 `loop()` 函数中,我们增加了一个判断,只有当总开关打开时,才会执行下面的代码。
此外,我们增加了一个 `toggleOnOff()` 函数,用于控制总开关的打开和关闭。
阅读全文