Stap 2: Programma notities
Er zijn drie primaire taken betrokken bij dit programma:
1) krijgen de ingangsspanning. De 16 MHz Arduino neemt 100uS te lezen van de input, die dat zelfs als het doet niets anders betekent, de maximale frequentie op annuleerteken speurder betrouwbaar is 3 kHz, dus we iets genaamd signaal aliasing gebruiken, beginnen met het nemen van een aantal lezingen zo spoedig mogelijk (5 in ons programma) en tellen ze in aparte locaties. Door middel van gemiddelden van verschillende reeksen van monsters, we kunnen bij benadering van de lage en mid range frequenties, het verschil wordt ervan uitgegaan dat de hoge lezing. Dit absoluut geen exacte wetenschap maar hier, we gewoon moeten ruwe verhoudingen, zodat de nauwkeurigheid is niet kritisch.
2) we zullen doen statistische analyse van een grote verzameling van getallen, zodat alles is gereduceerd tot gehele getallen om opslagruimte te besparen en om berekeningen te versnellen. Er zullen geen conversie van de fundamentele 10-bit input van de analoge ingang poort.
3) vertaling en weergave op de LMP. Elke LED is ingeschakeld voor over de tijd die het duurt om te lezen van de analoge pin, en elk 'frame' (de 6 x 5 matrix) twee keer wordt, zodat we 1.5dB kunt weergeven stappen. Dit duurt ongeveer 100mS. De tijd hier is kritiek - ieder langzamer, het oog zal beginnen te zien flikkeren, te snel, de 'patronen' ziet er dim en slecht gevormde.
AGC is bijgeleverd, zodat het programma met een breed scala van volume en muziek werken kan. Een minimum van 150mV is vereist, maar het mag geen probleem met regelmatige luisterniveaus. De "schaal" variabele kan worden verlaagd voor meer gevoeligheid, maar zal het programma meer vatbaar voor elektrische ruis - maken in welke casee, omzeilen de ingang met een 0.1uF condensator op grond...
Maximaliseren van de 'dynamische' aard van de muziek, de belangrijkste 2bits worden neergezet, en de resterende 4 zijn 'uitgerekt' aanpassen aan de 6 horizontale LEDs.