加入一段代码,使灯带在没有声音时不亮。#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 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(); // 显示 delay(100);//0.01秒 }
时间: 2024-03-07 10:46:42 浏览: 94
灯带控制,利用Arduino
5星 · 资源好评率100%
可以在代码中加入一个if语句,判断声音传感器的值是否大于一定的阈值,如果大于阈值则执行灯带亮起的代码,否则不执行。代码如下:
```
#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秒
}
```
在这个代码中,我设置阈值为50,也就是当声音传感器的值大于50时,执行灯带亮起的代码,否则执行关闭所有灯珠的代码。你也可以根据实际情况调整阈值。
阅读全文