Stap 3: Code
Dit is de code die we voor de visualizer gebruikten, upload het enkel aan u arduino/*
FFT voor LoL Shield v0.9
door Andy Doro
http://andydoro.com/
op basis van FFT bibliotheek en code uit de Arduino forums en
de Charlieplexing bibliotheek voor de LoL Shield.
*/
#include < Charliplexing.h >
#include < fix_fft.h >
#define AUDIOPIN 4
char im [128], gegevens [128];
char data_avgs [14];
int i = 0, val;
VOID Setup {}
LedSign::Init(); Initilizes het schild LoL
}
void loop {}
voor (ik = 0; ik < 128; i ++) {}
Val = analogRead(AUDIOPIN);
gegevens [i] = val;
im [i] = 0;
};
fix_fft(Data,im,7,0);
voor (ik = 0; ik < 64; i ++) {}
gegevens [i] = sqrt (gegevens [i] * data [i] + im [i] * im[i]); Dit wordt de absolute waarde van de waarden in de matrix, zodat we alleen omgaan met positieve getallen
};
gemiddelde bars samen
voor (ik = 0; ik < 14; i ++) {}
data_avgs [i] = (gegevens [ik * 4] + data [ik * 4 + 1] + data [ik * 4 + 2] + data [ik * 4 + 3]); gemiddelde samen
data_avgs [i] = kaart (data_avgs [i], 30, 0, 0, 9); remap waarden voor LoL
}
set LoLShield
voor (int x = 0 x < 14; x ++) {}
voor (int y = 0; y < 9; y ++) {}
Als (y < data_avgs[13-x]) {/ / 13-x keert de bars, dus lage tot hoge frequenties worden weergegeven van links naar rechts.
LedSign::Set(x,y,1); de LED aangezet
} else {}
LedSign::Set(x,y,0); verrekening van de LED
}
}
}
vertraging (30);
}