Pålitlig frekvens identifiering med hjälp av DSP tekniker (5 / 7 steg)
Steg 5: Här är all kod
#include "C4.h"// prov frekvens i Hzconstfloat sample_freq = 22050;
int längd = sizeof(rawData);
int i, k;
långa summa, sum_old;
int tröska = 0;
flyta freq_per = 0;
byte pd_state = 0;
Annullerasetup() {
Seriella.begin(115200);
summa = 0;
pd_state = 0;
int perioden = 0;
Autokorrelation
för (jag = 0; jag < len; i ++)
{
sum_old = summa;
summa = 0;
för (k = 0; k < len-i; k ++) summa += (\Data [k] nummer -128) *(rawData[k+i]-128)/256;
Peak upptäcka statliga maskin
om (pd_state == 2 & & (summa-sum_old) < = 0)
{
period = i.
pd_state = 3;
}
om (pd_state == 1 & & (summa > tröska) & & (summa-sum_old) > 0) pd_state = 2;
om (! jag) {
tröska = summa * 0,5;
pd_state = 1;
}
}
Frekvensen i Hz
freq_per = sample_freq/period.
Seriella.println(freq_per);
}
Ogiltigloop() {
sätta din huvudsakliga kod här, för att köra flera gånger:
}