VU meter, with FFT libary using microphone and programmable led stripes

So Im new in arduino programming language, and I have an university project in which I need your help. I need to write a program with FFT libary to make VU meter using microphone and dependig of frequency which comes from microphone the led stripes will react(turn on from down to up). We need to have 10 led stripes which will be connected serial with arduino uno, each stripe contains 10 LED-s so that means we have 100 LED-s in total. Frequency ranges is in the spectrum from 50Hz to 16kHz per column(per stripe). I just need help or idea cause I searched on the interent and couldnt find something like this.

I guess you'll have to write it on your own. Have you looked up "Arduino FFT"?

I really doubt that anyone has written and posted exactly what you want and this is where you come into play. So, post your best try, in code tags, state what the code is supposed to do and what the code actually does.

Do you have google on your internets?

arduino spectrum analyzer fft led

a7

Search for "led matrix audio visualizer" for countless similar projects.

This one, for example: DIY Music/Audio Visualizer using 32x8 Dot Matrix Display and Arduino

1 Like

I saw some examples but still learning and searching how to set up FFT, thank you for reply :smiley:

Thank you very much, looks similar to what i nedd to do :smiley:

Disclaimer - I've never used the FFT library, but I know quite a bit about digital audio.

What's your major?

FFT is advanced math & programming, but you don't have to full understand the details to use the existing library. Technically, it's DFT (Digital Fourier Transform) for sampled-digitized data and there is also something called FHT which is supposed to be "easier" (and be able to process faster).

That's not a VU meter, it's a spectrum analyzer. :wink:

[quote]using microphone[/quote]The Arduino's analog input isn't sensitive enough for a direct microphone connection and the Arduino can't read negative voltages so you need a preamp and a biased output. The easiest solution is a microphone board. That's just an example. There are several compatible boards.

[quote] Frequency ranges is in the spectrum from 50Hz to 16kHz per column(per stripe).[/quote]The ADC in the standard Arduino looses resolution above a sample rate of abut 17kHz so that means your audio can only go up to around 8.5kHz (Nyquist sampling theory). I don't know how fast the FFT can run, but in this application it should be OK to loose resolution.

You'll also get aliasing (false frequencies) if you go over the Nyquist limit so you're supposed to have an analog low-pass ("anti-aliasing") filter in front of the ADC. But again, in this application the high frequencies are generally weak so the aliasing is will be "weak" and probably acceptable.

Addressable LEDs ("NeoPixels" etc. ) are processor intensive and they require quiet a bit of memory (and FFT is software intensive). Serial "shift register" addressed LEDs require less software (but more hardware).

From what I understand, FFT samples a short-bit of audio and then stops sampling while it analyzes. Then you'll have to update the LED display before sampling the audio again. It can still give a very good visual effect (and you can find examples on YouTube) but some audio is being skipped-over and you should be aware of that.

If you're not required to use FFT and if you can live with 7 frequency bands there is the nifty little MSGEQ7 chip. It takes care of the frequency filtering so you don't need FFT. That frees-up the processor to focus on the display.