Stap 1: Concept en theorie
Vóór het starten van een project moet je een ruwe concept wat het zou kunnen doen. Het basisidee is eenvoudig: een stereo audio signaal wordt gelezen door een controller, die vervolgens doet wat wiskunde en uitgangen een patroon op een LED-matrix. Bovendien moet er een display voor feedback een andere manier om te controleren van het systeem.
Hardware concept
De controller voor dit project moet zitten kundig voor 2 analoge waarden lezen een keer, wat betekent dat de controller 2 ADC eenheden moet. Het moet ook steun DMA, de data-acquisitie om onafhankelijk te maken van de CPU. De DMA zou ook bijdragen tot de uitvoer van de gegevens naar de LED-drivers. Terwijl een Cortex M4-controller meer rekenkracht geven zou, heb ik besloten om het gebruik van een atxmega128A3U-controller, omdat het zijn goedkoper en makkelijker te verkrijgen (ze worden verkocht met een voorgeprogrammeerde bootloader op de Duitse ebay-pagina voor mensen die niet over een programmeur beschikken) terwijl nog het verstrekken van alle benodigde functies.
Het audio signaal moet worden versterkt en op een niveau gebracht goed worden gelezen door de controller. Bovendien moet het signaal worden gefilterd om te elimineren rekenfouten in de FFT. Hoewel niet strikt noodzakelijk is een AGC toegevoegd. Deze servers als een bescherming van de audio input toneel- en hiermee extreme veranderingen in het signaalniveau.
Ik kies als LED WS2812 LED, vooral omdat ik had nog steeds sommige van hen, maar ook omdat ze gemakkelijk te gebruiken. De LED werden geplaatst achter ping-pong ballen, die dienen als diffusor voor het licht. De LED's zijn ingedeeld als een 7 x 6-matrix.
Tot slot voegde ik een OLED-display met I2C gebaseerde en een roterende encoder met knop als input-output interface voor de gebruiker. Daardoor kunnen we gemakkelijk debuggen van het programma en implementeren van een eenvoudig menu om het voltooide project.
Deze opstelling kan we genieten van de audiogegevens, verwerkt een een mooie animatie op de LED-matrix te maken.
Op de foto ziet u ook een audioversterker met luidsprekers. Dit wordt gebruikt om te horen van het signaal, dat wordt bemonsterd door de controleur. Voor de definitieve versie van het project wordt niet gebruikt.
Het basisidee van functionaliteit
Real-time audio analyse gebruikt veel van de middelen, die de gebruikte controller hoeft niet. Met het huidige systeem is het mogelijk om te proeven van de gegevens en alle berekeningen 20 keer per seconde. Terwijl dit genoeg is om bepaalde reacties kijken vrij goed, complexere zal animaties kijken slordig, als je het met 20 beelden per seconde presenteren zou.
De controleur Hiermee vernieuwt u de weergave met een snelheid van 60 beelden per seconde. Dit maakt animaties kijken erg glad, vooral als u de kleur vervagen. Het animatie-systeem wordt gevoed met nieuwe gegevens 20 keer per seconde en deze gegevens worden gebruikt als sjabloon voor de animatie. Hoewel deze benadering is verre van real-time reactie op de muziek, is het genoeg om de truc van de menselijke waarneming in een onmiddellijke reactie.