Paso 2: Notas de programa
En este programa participan tres tareas principales:
1) obtener el voltaje de entrada. Los 16 MHz Arduino lleva 100uS a leer la entrada, lo que significa que incluso si no hace nada más, la máxima frecuencia puede detectar confiablemente es 3 kHz, para que usar algo llamado aliasing de la señal, a partir de un número de lecturas tan rápidamente como sea posible (5 en nuestro programa) y la suma de ellos en separan lugares. Tomando promedios de diversas gamas de las muestras, podemos aproximar la baja y mediados de gama de frecuencias, la diferencia se supone que es la lectura alta. Esto no es ciencia exacta pero aquí, nosotros sólo necesitamos áspero proporciones, por lo que la exactitud no es crítica.
2) nos va a hacer el análisis estadístico de un conjunto grande de números, así que todo se reduce a números enteros para ahorrar espacio de almacenamiento y velocidad de cálculos. No habrá ninguna conversión de la entrada de 10-bit básica del puerto de entrada analógica.
3) traducción y visualización en la LMP. Cada LED está encendido sobre el tiempo que toma para leer el pin analógico, y cada 'frame' (la matriz de 6 x 5) aparece dos veces, para que podamos Mostrar 1.5db pasos. Esto tarda aproximadamente 100mS. El tiempo aquí es crítico - todo más lento, el ojo se empieza a ver parpadeo, demasiado rápidos, los 'patrones' se ven débil y mal formado.
AGC es incluido, de modo que el programa puede trabajar con una amplia gama de volumen y la música. Se requiere de un mínimo de 150mV, pero no debería ser ningún problema para regulares niveles de escucha. La "escala ' variable para más sensibilidad, se puede bajar pero hacer el programa más susceptible a ruido eléctrico - en que casee, puente de la entrada con un 0.1uF condensador a tierra...
Para maximizar el dinamismo de la música, se cayó el 2bits más significativos, y los 4 restantes son 'estirados' para caber los 6 LEDs horizontales.