Arduino FHT on Atmega328 3.3v

Not much to go on. Here's what I see:

I do receive some kind of signal, see attachment (those are the 32 bins of a FHT analysis with FHT_N = 32).

If N = 32, then only the first [Edit: fix this] 15 16 bins have meaning. The 1617th bin shows a frequency that a 32-point FFT can't resolve. The other bins might have anything in them, as they appear to be what's left over after the magnitude function runs are outside the output array's bounds. My guess is that they're linear terms, and the lower bins have been converted to logarithmic. Whatever they are, they weren't intended as output.

What's the sampling rate? If it's the default rate, it'll be about 38 kHz. At 32 samples, the bins are a kHz wide. That might suit you.

The first 15 bins - the ones that mean anything - look suspiciously like the Hann-windowed FFT magnitudes of a sample that's all at some constant level, maybe half-scale. I don't think you're getting an AC signal through, and I don't think the DC level is where you think it is.

You have a fairly complicated system here for someone who says,

My electrical engineering skills are limited

I'll recommend that you simplify it, get a simple thing working, and, once a portion is complete and working solidly, build another feature onto that. It's hubris to think that you're going to assemble and program it, and it'll just work. It's folly to think that you'll successfully troubleshoot it by looking at the TFT.

Recommendation: Step back. First, read the usage information for the Open Music Labs FHT. It's not as trivial as you think. If you don't understand something, look it up. Read about aliasing. Then, disconnect, or ignore, the TFT, and run the FHT program. Modify the code to calculate, or fetch from memory, some predetermined data - something like a sine wave. That'll take analog acquisition out of the picture, and you'll be able to tell what's really going on. Then,

  • Print the acquired data without transforming it. Was it what you expected? If not, troubleshoot and test until it works.
  • Run the transform on calculated data. If it's a pure sine wave, you'll find a sharp peak at the wave frequency. Did you get what you expected? Troubleshoot until it works.

And so on. After that, if you have a way to input a clean sine signal, you can add analog acquisition. Then, you can try your radio input. If I were you, I'd be prepared to back up a couple of times, and revert to a clean input, or calculated data.

I'll suggest that you write a simple program to run the FHT on calculated or stored data. Keep it simple, and then, if you have trouble, when you post all the code to this forum, readers will be willing to look closely at it. If you post code that uses hardware that we don't have, or is unduly long, you'll get fewer and poorer responses.

Frankly, it looks to me that the input signal has a substantial DC component, that the windowing function is turned on in the FHT program, and that there's little or no AC component. But, it looks so much like that that I suspect that the TFT is doing what it should.