Paso 3: programa Arduino
Ahora necesitamos programar el Arduino para controlar la pantalla jejeje.
Se recomienda utilizar el Diavolino para controlar la pantalla jejeje para evitar efectos "fantasma" en los LEDs debido a la superficie verde montaje LED conectado al pin 13 de Arduino estándar, pero una Arduino estándar funcionará bien.
Esto requiere dos bibliotecas de Arduino:
-la biblioteca de la FFT en el foro de Arduino
-la biblioteca de Charlieplexing para el escudo jajaja
Instalación de las bibliotecas de Arduino puede ser un poco intimidante si no has hecho antes, pero que vas a hacer bien!
Siga las instrucciones sobre la instalación de las bibliotecas de Arduino aquí:
http://www.Arduino.CC/en/Guide/Libraries
La biblioteca FFT rompe la señal de audio en bandas de frecuencia de 64.
El escudo de LoL es 14 x 9 LEDs. Tenemos un promedio de las bandas de frecuencia de 64 juntos en 14 bandas de frecuencia. Nos estamos tirando algunos datos ya que 14 no dividir 64 uniformemente, pero jajajajaja.
El valor de cada intervalo de frecuencia es reasignar de 0 a 9.
Puedes copiar el código de Arduino, a continuación, obtener el código en GitHub (recomendado) o descargar el. Archivo ZIP, que incluye las librerías y el código de Arduino.
Aquí está el enlace de GitHub:
https://github.com/andydoro/LoLShield-FFT
Abajo está el código de Arduino:
/*
FFT para v0.9 escudo jajaja
por Andy Doro
http://andydoro.com/
basado en FFT biblioteca y código de los foros de Arduino y
la biblioteca de Charlieplexing para el escudo de LoL.
* / #include
#include
#define AUDIOPIN 5
char la im [128], datos [128];char data_avgs [14];
int i = 0, val;
void setup() {}
LedSign::Init(); Initilizes el escudo jajaja
}void loop() {}
para (i = 0; i < 128; i ++) {}
Val = analogRead(AUDIOPIN);
datos [i] = val;
im [i] = 0;
};
fix_fft(Data,IM,7,0);
para (i = 0; i < 64; i ++) {}
datos [i] = sqrt (datos [i] * datos [i] + im [i] * im[i]); Esto obtiene el valor absoluto de los valores de la matriz, por lo que sólo tratamos con números positivos
};
promedio bares juntos
para (i = 0; i < 14; i ++) {}
data_avgs [i] = datos [me * 4] + datos [i * 4 + 1] + datos [me * 4 + 2] + datos [i * 4 + 3]; medio de Junta
data_avgs [i] = mapa (data_avgs [i], 0, 0, 30, 9); reasignación de valores para LoL
}
Set LoLShield
para (int x = 0; x < 14; x ++) {}
para (int y = 0 y < 9; y ++) {}
Si (y < data_avgs[13-x]) {/ / 13-x invierte los bares así que bajas a altas frecuencias se representan de izquierda a derecha.
LedSign::Set(x,y,1); prende el LED
} else {}
LedSign::Set(x,y,0); fijar el LED apagado
}
}
}
}