Jul 192010

I implemented a textbook FFT on the Arduino last night using regular floating point math. It’s not as slow as you would think. The arduino can do a 64 point FFT on a complex signal in only 25 ms. If you’re looking at a real signal, you can get the FFT in only 16 ms. That’s pretty good! You can do a 32 band spectrum analyzer that runs at 50 Hz without resorting to fixed point math or assembly language.

I threw together a quick and dirty color organ implemented with a 16 sample FFT. I’ll post a video shortly.

Hi Scott,

I've been looking for some straightforward 16-bit FFT code that I can use to evaluate signals up to 500Hz on an Arduino. Any suggestions?

Why 16 bit and not floating point? How many frequency bins do you need? How often do you need to update the FFT? There is a fixed point FFT for arduino somewhere on the web, but the direct implementation from Numerical Recipes worked fine for me. What, exactly, are you trying to do?

I thought floating-point on an Arduino was too slow, hence 16 or even 8-bit. Trying to do beat detection of music… not a simple color organ but an algorithm that can create a beat signal and trigger/sync sequences of light patterns to the beat. Not yet sure on # of bins and freq range and don't know how to config the FFT for specific ones. Maybe 128 bins up to 500Hz (4Hz wide)?

I am new to arduino but i am loving it ! This looks like a great project could you please send me schematics and code for it ? I would love to build it. Thank you in advance Bill D.