I went ahead and implement my perception of the fft in the previous post with the following results: 1) peak frequency at 43 hz which I think equates to about 1.35 mph. I am attaching the charts for reference. Peaks are definitely not as pronounced but that may be because of the basic horn I am using. Here is the code if you want to give it a try:
Code:
// FFT to select freq. bins from signal on Teensy 3.2 pin A2 (ADC input)
// Set OUT_ALARM pin high if signal in some freq. bins over threshold
// Thanks to Teensy forum users: neutronned and Frank B.
#include <Audio.h>
AudioInputAnalog adc1;
AudioAnalyzeFFT1024 myFFT;
AudioConnection patchCord1(adc1, myFFT);
#define A_GAIN (5.0) // gain applied to analog input signal
#define THRESH (5) // threshold above which "movement" detected
#define LED1 (13) // onboard signal LED
#define OUT_ALARM (3) // alarm signal (motion detected)
#define CPRINT (12) // frequency bins (columns) to print
float level[16]; // frequency bins
float freq[16]; // frequencies
float frange[16]; //frequency ranges
float alarm;
static float fa = 0.10; // smoothing fraction for low-pass filter
int loops = 0; // how many times through loop
boolean motion = false; // if motion detected
void setDACFreq(int freq) { // change sampling rate of internal ADC and DAC
const unsigned config = PDB_SC_TRGSEL(15) | PDB_SC_PDBEN | PDB_SC_CONT | PDB_SC_PDBIE | PDB_SC_DMAEN;
PDB0_SC = 0; //<--add this line
PDB0_IDLY = 1;
PDB0_MOD = round((float)F_BUS / freq ) - 1;
PDB0_SC = config | PDB_SC_LDOK;
PDB0_SC = config | PDB_SC_SWTRIG;
PDB0_CH0C1 = 0x0101;
}
void setup() {
AudioMemory(12);
AudioNoInterrupts();
setDACFreq(11025);
myFFT.windowFunction(AudioWindowHanning1024);
AudioInterrupts();
Serial.begin(115200);
digitalWrite(LED1, false);
pinMode(LED1, OUTPUT);
digitalWrite(OUT_ALARM, false);
pinMode(OUT_ALARM, OUTPUT);
digitalWrite(LED1, true);
digitalWrite(OUT_ALARM, true);
delay(1000);
// single frequency bins
freq[0] = 10.75;
freq[1] = freq[0] * 2;
freq[2] = freq[0] * 3;
freq[3] = freq[0] * 4;
//multiple frequency bins
// frequency range /2 for mid point of range
frange[0] = freq[0] * 2 / 2.;
frange[1] = freq[0] * 3 / 2.;
frange[2] = freq[0] * 5 / 2.;
frange[3] = freq[0] * 5 / 2.;
frange[4] = freq[0] * 18 / 2.;
frange[5] = freq[0] * 26 / 2.;
frange[6] = freq[0] * 27 / 2.;
frange[7] = freq[0] * 38 / 2.;
//mid-point frequency
freq[4] = frange[0] + 5 * freq[0];
freq[5] = frange[1] + 7 * freq[0];
freq[6] = frange[2] + 10 * freq[0];
freq[7] = frange[3] + 15 * freq[0];
freq[8] = frange[4] + 24 * freq[0];
freq[9] = frange[5] + 42 * freq[0];
freq[10] = frange[6] + 68 * freq[0];
freq[11] = frange[7] + 95 * freq[0];
Serial.print("min");
Serial.print(",");
Serial.print("alm");
for (int i=0; i<CPRINT; i++) { // print column headers
Serial.print(",");
Serial.print("f");
Serial.print(freq[i]);
//Serial.print(i);
}
Serial.println();
Serial.println("# Doppler Microwave FFT on Teensy 3.1 5-AUG-2017");
digitalWrite(LED1, false); digitalWrite(OUT_ALARM, false);
} // end setup()
void loop() {
if (myFFT.available()) {
level[0] = ((1.0-fa)*level[0]) + fa * myFFT.read(0) * 0.5 * A_GAIN;
level[1] = ((1.0-fa)*level[1]) + fa * myFFT.read(1) * 1.5 * A_GAIN;
level[2] = ((1.0-fa)*level[2]) + fa * myFFT.read(2) * 2 * A_GAIN;
level[3] = ((1.0-fa)*level[3]) + fa * myFFT.read(3) * 3.5 * A_GAIN;
level[4] = (((1.0-fa)*level[4]) + fa * myFFT.read(4, 5) * 5 * A_GAIN) / 2.;
level[5] = (((1.0-fa)*level[5]) + fa * myFFT.read(6, 8) * 7 * A_GAIN) / 3.;
level[6] = (((1.0-fa)*level[6]) + fa * myFFT.read(9, 13) * 9 * A_GAIN) / 5.;
level[7] = (((1.0-fa)*level[7]) + fa * myFFT.read(14, 22) * 11.0 * A_GAIN) / 5.;
level[8] = (((1.0-fa)*level[8]) + fa * myFFT.read(23, 40) * 15 * A_GAIN) / 18.;
level[9] = (((1.0-fa)*level[9]) + fa * myFFT.read(41, 66) * 15 * A_GAIN) / 26.;
level[10] = (((1.0-fa)*level[10]) + fa * myFFT.read(67, 93) * 18 * A_GAIN) / 27.;
level[11] = (((1.0-fa)*level[11]) + fa * myFFT.read(94, 131) * 10 * A_GAIN) / 38.;
alarm = level[1] + level[2] + (2*level[3]) + (2*level[4]);
if (alarm > THRESH) {
motion = true;
digitalWrite(OUT_ALARM, true);
} else {
motion = false;
digitalWrite(OUT_ALARM, false);
}
if ( ((loops++)%10 == 0) ) {
Serial.print((float)millis()/60000.0);
Serial.print(",");
Serial.print(alarm);
for (int i=0; i<CPRINT; i++) {
Serial.print(",");
Serial.print(level[i]);
}
Serial.println();
}
}
} // end main loop()
EDIT 10/31: I made one more change. I changed the window to a Blackman Harris and here is a shot of me walking away and coming back

the first three peaks at 21.5 is me moving my hands on the mouse in front of the horn. The next two peaks is me walking away and coming back at 43 hz. Then again at the end you see the 21.5 hz line increasing, that the mouse moves again. Ok that's it until I figure out what I want to do with horn - a new one or play with this one some more 
Thanks
Mike