Göra lampor reagera på ljud (1 / 5 steg)
Steg 1: Begrepp och teori
Innan ett projekt bör du göra en grov koncept vad det skulle kunna göra. Den grundläggande idén är enkel: en stereo audio signal läses av en styrenhet, som sedan gör lite matte och matar ut ett mönster på en LED-matris. Dessutom bör en display för feedback en något sätt att kontrollera systemet.
Hårdvara-konceptet
Registeransvarige för detta projekt behöver för att kunna läsa 2 analoga värden en gång, vilket innebär att registeransvarige behöver 2 ADC enheter. Det bör också stödja DMA, för att göra dataförvärvet oberoende från Processorn. DMA skulle också hjälpa för att mata ut data till LED-drivrutinerna. Medan en Cortex M4 styrenhet skulle ge mer datorkraft, jag beslutade att använda en atxmega128A3U styrenhet, eftersom är billigare och lättare att få (de säljs med en förprogrammerad bootloader på tyska ebay sida för människor som inte har en programmerare) samtidigt som man tillhandahåller alla nödvändiga funktioner.
Ljudsignalen måste förstärkas och kom på en nivå att läsas korrekt av registeransvarige. Signalen ska dessutom filtreras för att eliminera beräkningsfel i FFTEN. Även om inte absolut nödvändigt lades en AGC. Detta servrar som ett skydd av audio input scenen och jämnar ut extrema förändringar i nivån.
Som LED väljer jag WS2812 LED, främst eftersom jag hade fortfarande några av dem, men också eftersom de är bekväma att använda. LED placerades bakom ping-pong bollar, som tjänar som diffusor för ljuset. Lamporna var ordnade som en 7 x 6 matris.
Sist la jag en I2C-baserade OLED-display och en rotationsencoder med knapp som input-output gränssnitt för användaren. Detta tillåter oss att enkelt felsöka programmet och genomföra en enkel meny för att kontrollera det färdiga projektet.
Denna inställning tillåter oss att prova ljuddata, bearbeta den en göra en trevlig animering på LED matrix.
På bilden kan du också se en ljudförstärkare med högtalare. Detta används hörs signalen, som ingår i urvalet av styrenheten. För den slutliga versionen av projektet kommer inte att det användas.
Den grundläggande tanken med funktionalitet
Analys i realtid ljud använder mycket resurser, som begagnade styrenheten inte har. Med det nuvarande systemet är det möjligt att exempeldata och göra alla beräkningar 20 gånger per sekund. Även om detta är tillräckligt för att göra vissa reaktioner ser ganska bra, mer komplexa ser animeringar slarvig, om du vill presentera det med 20 bilder per sekund.
Registeransvarige uppdaterar med en hastighet av 60 bilder per sekund. Detta gör animationer ser mycket smidigt, särskilt om du tona färgen. Animation systemet får nog med nya data 20 gånger per sekund och använder denna data som mall för animeringen. Detta tillvägagångssätt är långt ifrån realtid reaktion till musik, räcker det att lura den mänskliga perceptionen i en omedelbar reaktion.