Arduino vu-meter med förstärkare (3 / 4 steg)
Steg 3: kod
Detta är koden som vi används för bildeffekter, ladda upp bara den till du arduino/*
FFT för LoL sköld v0.9
av Andy Doro
http://andydoro.com/
baserat på FFT bibliotek och koden från Arduino forum och
Charlieplexing biblioteket för LoL Shield.
*/
#include < Charliplexing.h >
#include < fix_fft.h >
#define AUDIOPIN 4
char im [128], data [128];
char data_avgs [14].
int jag = 0, val;
void setup() {
LedSign::Init(); Initilizes LoL sköld
}
void loop() {
för (jag = 0; jag < 128; i ++) {
Val = analogRead(AUDIOPIN);
data [i] = val;
im [i] = 0;
};
fix_fft(data,im,7,0);
för (jag = 0; jag < 64; i ++) {
data [i] = sqrt (data [i] * data [i] + im [i] * im[i]); Detta blir det absoluta värdet av värdena i matrisen, så vi bara handlar med positiva tal
};
genomsnittliga barer tillsammans
för (jag = 0; jag < 14; i ++) {
data_avgs [i] = (data [jag * 4] + data [jag * 4 + 1] + data [jag * 4 + 2] + data [jag * 4 + 3]); genomsnittlig tillsammans
data_avgs [i] = karta (data_avgs [i], 0, 30, 0, 9); mappa om värden för LoL
}
ställa in LoLShield
för (int x = 0, x < 14, x ++) {
för (int y = 0; y < 9; y ++) {
om (y < data_avgs[13-x]) {/ / 13-x vänder barer så låg att höga frekvenser är representerade från vänster till höger.
LedSign::Set(x,y,1); ställa in lysdioden på
} annat {
LedSign::Set(x,y,0); iväg för LED
}
}
}
fördröjning (30);
}