今天我们将使用 Arduino 在家制作一个 32 波段 LED 音频音乐频谱分析仪,它可以显示频谱并同时播放音乐。
max7219LED必须接在100k电阻前面,否则扬声器的噪音会很大。
► GitHub(方案和草图):https://github.com/DKARDU/spectrum-
► 组件
该项目使用了以下部件:
Arduino Nano,https://amzn.to/3hB8Pwf
两个 100K 电阻,https://amzn.to/2OSGlBW
三个 4.7K 电阻,https://amzn.to/2OSGlBW
两个104电容(104=100000pF=100nF=0.10μF),
4 合 1 Max7219 点阵 LED,https://amzn.to/3jcCL2G
PJ-320D 3.5MM音频插座,
跳线,https://amzn.to/3jCHhZd
面包板,https://amzn.to/33yEavN
3W PAM8403 D类音频放大器和两个扬声器,
使用的Arduino IDE版本是1.8.12



项目代码
#include <arduinoFFT.h>
#include <MD_MAX72xx.h>
#include <SPI.h>
#include <Adafruit_GFX.h>
#include <Max72xxPanel.h>
#define SAMPLES 64
#define HARDWARE_TYPE MD_MAX72XX::FC16_HW
#define MAX_DEVICES 4
#define CLK_PIN 13
#define DATA_PIN 11
#define CS_PIN 10
#define xres 32
#define yres 8
int MY_ARRAY[] = {0, 1, 3, 7, 15, 31, 63, 127, 255};
double vReal[SAMPLES];
double vImag[SAMPLES];
char data_avgs[xres];
int yvalue;
int displaycolumn , displayvalue;
int peaks[xres];
int pinCS = 10;
MD_MAX72XX mx = MD_MAX72XX(HARDWARE_TYPE, CS_PIN, MAX_DEVICES);
arduinoFFT FFT = arduinoFFT();
void setup() {
ADCSRA = 0b11100101;
ADMUX = 0b00000000;
mx.begin();
delay(50);
}
void loop() {
for (int i = 0; i < SAMPLES; i++)
{
while (!(ADCSRA & 0x10));
ADCSRA = 0b11110101 ;
int value = ADC - 512 ;
vReal[i] = value / 8;
vImag[i] = 0;
}
FFT.Windowing(vReal, SAMPLES, FFT_WIN_TYP_HAMMING, FFT_FORWARD);
FFT.Compute(vReal, vImag, SAMPLES, FFT_FORWARD);
FFT.ComplexToMagnitude(vReal, vImag, SAMPLES);
int step = (SAMPLES / 2) / xres;
int c = 0;
for (int i = 0; i < (SAMPLES / 2); i += step)
{
data_avgs[c] = 0;
for (int k = 0 ; k < step ; k++) {
data_avgs[c] = data_avgs[c] + vReal[i + k];
}
data_avgs[c] = data_avgs[c] / step;
c++;
}
for (int i = 0; i < xres; i++)
{
data_avgs[i] = constrain(data_avgs[i], 0, 40);
data_avgs[i] = map(data_avgs[i], 0, 40, 0, yres);
yvalue = data_avgs[i];
peaks[i] = peaks[i] - 1;
if (yvalue > peaks[i])
peaks[i] = yvalue ;
yvalue = peaks[i];
displayvalue = MY_ARRAY[yvalue];
displaycolumn = 31 - i;
mx.setColumn(displaycolumn, displayvalue);
}
}
【Arduino 动手做】如何DIY 32波段LED音频音乐频谱分析仪
项目链接:https://www.hackster.io/DKARDU/how-to-diy-32-band-led-audio-music-spectrum-analyzer-4d63d9
项目作者:德卡杜
项目视频 :https://hackster.imgix.net/uploads/attachments/1203962/mp3_hpVUzkkO9R. gif?auto=format%2Ccompress&gifq=35&w=900&h=675&fit=min&fm=mp4
项目代码:https://github.com/DKARDU/spectrum-

评论