ESP8266 sm16703 拾音音频频谱灯渐变代码
时间: 2024-08-17 15:01:44 浏览: 68
ESP8266模块配合SM16703音频传感器通常用于制作语音识别或音频分析的小项目,如音乐节拍灯、声音特效等。SM16703是一种集成了麦克风阵列和音频处理的IC,可以实时采样音频并转换成频率信息。
以下是一个简单的代码示例,它会根据音频频谱的变化驱动LED灯渐变,模拟频谱灯效果:
```c++
#include <Adafruit_SoundSensor.h>
#include <FastLED.h>
// SM16703 音频传感器实例化
Adafruit_SoundSensor soundSensor(SM16703_DEFAULT_I2C_ADDR);
#define NUM_LEDS 16 // LED的数量
CRGB leds[NUM_LEDS];
void setup() {
FastLED.begin(leds, NUM_LEDS);
Serial.begin(9600); // 初始化串口通信
}
void loop() {
// 获取音频信号强度,范围通常是0-255
int audioLevel = soundSensor.audioLevel();
// 将音频强度映射到LED颜色
float colorValue = map(audioLevel, 0, 255, 0.0, 1.0);
CRGB ledColor = CRGB(colorValue, colorValue, colorValue);
// 更新LED颜色,渐变效果
for (int i = 0; i < NUM_LEDS; i++) {
leds[i] = InterpolateColor(leds[i], ledColor, i / (NUM_LEDS - 1));
}
// 发送音频级别到串口
Serial.print("Audio Level: ");
Serial.println(audioLevel);
// 更新LED状态
FastLED.show();
// 渲染延时,让动画更平滑
delay(10);
}
// RGB色彩线性插值函数
CRGB InterpolateColor(CRGB color1, CRGB color2, float t) {
return CRGB(
color1.r + (color2.r - color1.r) * t,
color1.g + (color2.g - color1.g) * t,
color1.b + (color2.b - color1.b) * t
);
}
```
阅读全文