DIY FFT Audio Spectrum Analyzer

Introduction: DIY FFT Audio Spectrum Analyzer

FFT spectrum analyzer is an test equipment that uses Fourier analysis and digital signal processing techniques to provide spectrum analysis. Using Fourier analysis it is possible for one value in, for example, the continuous time domain to be converted into the continuous frequency domain, in which both magnitude and phase information are included.

Step 1: Building

The described device is exactly such a Spectral Analyzer that is made with the help of an Arduino microcontroller. Аs you can see the device is very simple and contains only a few components :

- Arduino nano

- LCD display with a resolution of 128 by 64 pixels (ST7920 128x64 LCD)

- Two resistors (10KOhm)

- potentiometer (10KOhm) and

- capacitor (1 microF)

The audio input to the Arduino is on A0, with bias at the mid point by 10K to Ground and 10K to +5V. At the input we can also set a potentiometer to control the amplitude of the input signal.
Code is also simple and it uses "fix_fft" libray which was created for this purpose

Step 2: Testing

The video describes several cases where different types of signals have been analyzed:

When analyzing a sinusoidal input signal, the carrier is clearly visible and By changing the frequency of the signal generator, the position of the carrier also changes. If we bring a rectangular signal to the input , on the spectral analyzer is clearly visible the fundamental signal, as well as the three odd harmonics x3, x5 & x7. If we bring an audio music signal to the input, this device is actually a graphics audio analyzer that can be found in more expensive audio equipments

Step 3: Schematic and Code

Finally, the entire assembly is housed in a suitable box. This is not a professional tool because it has low resolution and frequency range, but can serve as a great educational tool.


Arduino Contest 2020

Participated in the
Arduino Contest 2020

Be the First to Share


    • Plywood Contest

      Plywood Contest
    • Fandom Contest

      Fandom Contest
    • Teach With Tinkercad Contest

      Teach With Tinkercad Contest



    1 year ago

    Love it! It makes me wonder if it is possible to make an Arduino distortion analyzer. The Arduino can first find the largest signal (the fundamental) and then control a nulling filter to eliminate the fundamental, so the distortion can then be monitored...

    Alex in NZ
    Alex in NZ

    2 years ago

    That's kind of impressive managing that lot on an Arduino! Well done, and thank you for sharing your work :-)


    Reply 2 years ago

    Thanks a lot