Slå Sync (4 / 8 steg)
Steg 4: Koden
Här är koden som i Arduino 1.0.1
//
Slå Sync
En musikenhet visualiztion.
Skapad av
Carl Smith
penguinmagic
//
#include < fix_fft.h >
int ledde [] = {5,6,7,8,9,10,11,12}.
int x = 0;
char im [128], data [128];
char data_avgs [14].
int jag = 0, val;
#define AUDIOPIN 3
void setup()
{
för (int jag = 0; jag < 8; i ++)
{
pinMode (ledde [i], utgång);
}
Serial.BEGIN(9600);
}
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 de
array, 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
}
int värde = data_avgs [0]; //0 för bas
ledArray(value);
}
void ledArray(int input)
{
//
om (ingång > 8)
{
för (int jag = 0; jag < 8; i ++)
{
digitalWrite (ledde [i], högt);
}
}
annars om (ingång > 7)
{
för (int jag = 0; jag < 7; i ++)
{
digitalWrite (ledde [i], högt);
}
för (int jag = 7; jag < 8; i ++)
{
digitalWrite (ledde [i], låg);
}
}
annars om (ingång > 6)
{
för (int jag = 0; jag < 6; i ++)
{
digitalWrite (ledde [i], högt);
}
för (int jag = 6; jag < 8; i ++)
{
digitalWrite (ledde [i], låg);
}
}
annars om (ingång > 5)
{
för (int jag = 0; jag < 5; i ++)
{
digitalWrite (ledde [i], högt);
}
för (int jag = 5; jag < 8; i ++)
{
digitalWrite (ledde [i], låg);
}
}
annars om (ingång > 4)
{
för (int jag = 0; jag < 4; i ++)
{
digitalWrite (ledde [i], högt);
}
för (int jag = 4; jag < 8; i ++)
{
digitalWrite (ledde [i], låg);
}
}
annars om (ingång > 3)
{
för (int jag = 0; jag < 3; i ++)
{
digitalWrite (ledde [i], högt);
}
för (int jag = 3; jag < 8; i ++)
{
digitalWrite (ledde [i], låg);
}
}
annars om (ingång > 2)
{
för (int jag = 0; jag < 2; i ++)
{
digitalWrite (ledde [i], högt);
}
för (int jag = 2; jag < 8; i ++)
{
digitalWrite (ledde [i], låg);
}
}
annars om (ingång > 1)
{
för (int jag = 0; jag < 1; i ++)
{
digitalWrite (ledde [i], högt);
}
för (int jag = 1; jag < 8; i ++)
{
digitalWrite (ledde [i], låg);
}
}
annat
{
för (int jag = 0; jag < 8; i ++)
{
digitalWrite (ledde [i], låg);
}
}
}