Automatisk hörlurar Equalizer (12 / 14 steg)
Steg 12: MATLAB server
Vår MATLAB server kommunicerar via protokollet att vi skisserat i sista steget. 5 filer finns:
runserver.m är den huvudsakliga serverloopen. Det ständigt lyssnar till en seriell in, bearbetar de kommandon som skickas till och från Arduino. Den hanterar också skicka och ta emot olika pre-kalibrerad hörlurar uppställningar. Som standard ansluter vår kod på port "COM8". Detta kan vara olika för alla datorer som du använder.
build_basis.m anropas en gång för en körning av servern. Det bygger "grund vektorer" av vad hörlurar är för närvarande på mikrofonen. Det gör detta genom att ange värdet för alla digitala krukor till 255 (alla 0 vinna), utom en, och att erhålla överföringsfunktionen för hörlurarna med dem att tas bort. Det gör detta för alla 6 kanaler, och sedan bygger en "grund" matris A som ska användas för de minsta kvadratmetoden passande steg.
networkAnalyze_chirp körs en frekvens svep, i form av en lograithmic kvittra funktion, och spelar det resulterande ljudet från datorhögtalarna. Därefter griper värdet av toppdetektor (som sänds av Arduino), och returnerar amplituderna och förskjutningen av svaret.
target_fit tar en grund matris A, och passar det att målet hörlurar A via minstakvadratmetoden. Därefter anger digial krukor till monterade värdena, och utför en sista frekvens svep på hörlurarna för kontroll.
write_pots publicerar värdena som väljs (en matris med värden, längd 6, värden 0 - 255) till Arduino. Det gör en paus mellan varje skicka med ett belopp som anges i dröjsmål för att säkerställa Arduino är klar skriver till SPI.
Vänligen ladda ner och leka med koden!
Obs: Detta kan också genomföras på Arduino - vi utmanar den avancerade Arduino användaren att göra det!