Stereo Audio met Arduino (4 / 7 stap)

Stap 4: Stereo Audio-uitgang met 8 Bit DAC en 44,1 kHz Sampling Rate


In deze code ben ik sturen een sinusgolf uit DACA en een zaag Golf uit DACB op hetzelfde moment en met een snelheid van 44,1 kHz. Dit is de stereo-audio, twee aparte kanalen voor audio. Om dit te laten werken, ik gecombineerd elementen sinus zag mono code uit de laatste stap en de WR en DACA/DACB pinnen gebruikt om te schakelen tussen de twee uitgangen van de DAC.

Mij troep opwaarts een interrupt zoals in de vorige stap, maar dit keer ik het opzette met een snelheid van 2 * 44,1 = 88,2 kHz. Vervolgens telkens de interrupt uitgevoerd, ik afgewisseld tussen het verzenden van iets aan DACA en DACB, zodat elk een steekproef tijdens elke andere interrupt ontvangen. Dit maakt de samplefrequentie op beide van de uitgangen 44,1 kHz. De inhoud van de interrupt routine worden gekopieerd hieronder:

digitalWrite (WR, hoge); //hold uitgangen-dus nieuwe DAC-gegevens niet krijgen verzonden doet totdat wij gereed zijn
Als (kanaal) {}
PORTD = sinus [index]; //send sinus naar digitale pinnen 0-7
digitalWrite (outputSelector, laag); //select DACA
index ++; //increment indexwaarde door een
Als (index 100 ==) {//reset index als het bereikt 100
index = 0;
}
}
else {}
PORTD = zagen; //send zag naar digitale pinnen 0-7
digitalWrite (outputSelector, hoge); //select DACB
zaag ++; //increment zag waarde door een
Als (zag == 255) {//reset zag als het bereikt 256 (houdt output binnen altijd 0-255)
zagen = 0;
}
}
digitalWrite (WR, laag); //enable uitgang weer
kanaal ^ = 1; //toggle kanaal

Wanneer de interrupts wordt gestart, de Arduino sets de WR pin HIGH, dit tijdelijk houdt de DAC-uitgangen op hun huidige spanningen en laat ons toe om het verzenden van gegevens naar de DAC zonder de huidige geselecteerde DAC-uitgang wijzigen. De variabele "kanaal" wordt geschakeld tussen de waarden van 0 en 1 telkens de interrupt wordt uitgevoerd, afwisselend van de sinus en zag uitvoer. Wanneer "channel" = 1, een waarde uit de matrix "sinus" is ingesteld op de DAC via PORTD. In de volgende regel wordt de outputSelector pin (pin-nummer DACA/DACB) laag, waardoor DACA worden geselecteerd. Dan is WR laag, waardoor de nieuwwaarde van de sinus uitgang via DACA ingesteld. In de volgende interrupt routine veroorzaakt een soortgelijke reeks gebeurtenissen een zaag-waarde aan de output van DACB.

 <pre>//stereo audio out, sampling rate <=44.1kHz //by Amanda Ghassaei //Nov 2012 

Net als in de laatste stap, mijn samplefrequentie was niet precies 88,2 kHz, het was eigenlijk 88.398 kHz (iets beter dan 88,2), dus ik gebruik dat aantal in de volgende berekeningen:

duur van elk monster = 2 * 1/Samplingsnelheid
duur van elk monster = 2 * 1/88398 Hz = 22.6us

Als de laatste stap in de periode van de sinus en zag zijn als volgt:

periode zag = 22.6us * 256 = 5.8ms
sinus periode = 22.6us * 100 = 2.3ms

maar als je kijkt naar vijgen 2 en 3 u zult zien dat de steekproef duur en periode van de golven van de uitvoer is veel langer. Dit is omdat de code in de interrupt routine inefficiënt is en langer dan de 22.6us uit te voeren. Om dit te bevestigen die ik moest vervangen de Arduino library commando "digitalWrite" met veel efficiënter directe pin manipulatie commando's in de onderstaande code. U kunt meer lezen over hoe ze werken hier, u kunt ook het lezen van de opmerkingen die ik heb gezet in de onderstaande code. Vijgen 4 en 5 tonen de output van deze geoptimaliseerde code, kunt u zien dat de duur van de periode en steekproef zijn wat we verwachten van de berekeningen.

 <pre>//stereo audio out with 44.1kHz sampling rate //by Amanda Ghassaei //Nov 2012 

Ik zal ook Let hier, sinds de CS pin wordt laag gehouden voor de duur van deze code (instelling hoog zal onbruikbaar nieuwe gegevens schrijven naar of uitvoer), u kan een extra pin van de Arduino vrijmaken door CS aan grond permanent te verwijderen van de exemplaren van CS in de code van de Arduino.

Gerelateerde Artikelen

Vertegenwoordigen van audio via trillingen met Arduino

Vertegenwoordigen van audio via trillingen met Arduino

Dit project werkt om weer te geven geluid met behulp van de trillingen.  U sluit uw iPod, computer of TV erin en tactiele feedback vertegenwoordigt van het volume van de audio te krijgen.  Het kan helpen dove mensen ervaren van geluid.Tools:Draad str
Bedien uw Tv, Dvd en Audio systeem met Arduino en Android

Bedien uw Tv, Dvd en Audio systeem met Arduino en Android

Hallo iedereen, dit is mijn tweede instructable en mijn eerste in het Engels, dus, sorry voor de fouten.Ik wil delen dit project die het gaat over hoe u kunt uw Tv, DVD en uw audiosysteem met Arduino en een app voor Android gemaakt met app uitvinder.
Stereo Audio-versterker met IC TEA2025

Stereo Audio-versterker met IC TEA2025

Bent u het denken over het maken van een stereo versterker? Als u bent, dan is de juiste plaats! Dit project is over het maken van een 5 Watt stereo audio versterker met behulp van de IC TEA2025.Speciale dank aan deze website.OPMERKING: DE MEESTE FOT
3D Stereo Audio Spectrum Visualizer

3D Stereo Audio Spectrum Visualizer

In een van onze eerdere instructables, bouwden we een Arduino gebaseerd Audio Spectrum Visualizer met behulp van onze bi-color LED Matrix modules voor de weergave. Je kan check it out opEen paar maanden geleden, ontwierpen we jolliCube, een 8 x 8 x 8
RC auto RC Tank conversie met Arduino

RC auto RC Tank conversie met Arduino

Ik heb altijd al gefascineerd door grote machines, tanks in het bijzonder. De Duitse Tiger Tank, zoals in de film Fury!, is een ontzagwekkende machine. Ik wilde een! Ik heb wat zoeken en gevonden dat RC Tiger Tank replica's meer dan $150 kosten, en z
Aan de slag met Arduino - twee speler Arduino Pong

Aan de slag met Arduino - twee speler Arduino Pong

In deze tutorial gaan we een arduino gebaseerde controller die we gebruiken kunnen om te bepalen van een spel voor 2 spelers van pong bouwen.We gaan een paar van dial potentiometers (het draaien van knoppen) gebruiken om te controleren de pong vleerm
DIY Bluetooth telefoon gecontroleerd BB-8 Droid met Arduino UNO

DIY Bluetooth telefoon gecontroleerd BB-8 Droid met Arduino UNO

Ik ben een grote fan van Star Wars en toen zag ik de Star Wars: The Force ontwaakt dacht ik dat ik behoefte aan een BB-8 droid. Het was geweldig hoe dit kleine gebied verplaatst in de film. Dus heb ik besloten dat ik moet dit droid die is gebaseerd o
Streaming video van SD-kaart naar Nokia LCD met Arduino

Streaming video van SD-kaart naar Nokia LCD met Arduino

Voor een lange tijd, ik dacht dat het afspelen van video met kon audio niet op de Arduino. Toen op een dag besloot ik te geven het een schot en het bleek eenvoudiger dan ik dacht.Ik besloot te schrijven van de stappen in een instructable ten behoeve
Gemotoriseerd, geluid reageren Star Wars At-St Bandai Model, met Arduino.

Gemotoriseerd, geluid reageren Star Wars At-St Bandai Model, met Arduino.

Gemaakt van Star Wars bij-St-Model van Bandai.Reageert op geluid en draait zijn hoofd naar toe.Gemaakt met Arduino Nano, een aangepast onderdeel van 3dprinted, microfoons, micro servo.Dit instructable is gemaakt om te delen van de wijzigingen die nod
Ongebonden van spraakherkenning en spraaksynthese met Arduino

Ongebonden van spraakherkenning en spraaksynthese met Arduino

MOVI staat voor 'Mijn eigen Interface van de stem' en is een kickstarter-backed Arduino schild dat maakt het zeer eenvoudig om te bouwen van uw eigen toespraak dialogen aan controle-apparaten binnen de Arduino IDE. Dit instructable snel ziet u hoe aa
32W Stereo Audio versterker

32W Stereo Audio versterker

speciale dank aan ALAMGIR NASIRhttps://www.Facebook.com/profile.php?id=100001497433614Die hielp me dit project makenIntroductieHet doel van het project was om een stereo audio versterker. Naast dit moet extra functies dat moet volumeregeling, bass co
Krabben met Arduino

Krabben met Arduino

MIT heeft een fantastische visuele programmeertaal genaamd Scratchontwikkeld. Het is ook een geweldig leermiddel voor kinderen, want het is eenvoudig, leuk, en door interactie met de echte wereld een bord 'Scratch Sensor Board' genoemd.Dit Instructab
Spraakherkenning en -synthese met Arduino

Spraakherkenning en -synthese met Arduino

In mijn vorige Instructable toonde ik hoe om te controleren enkele LED's met behulp van een Arduino board en de BitVoicer Server. In dit Instructable ga ik om dingen een beetje ingewikkelder te maken. Ik ben ook gaan te synthetiseren toespraak met be
Bouwen van uw FM-transmissie Station met Arduino

Bouwen van uw FM-transmissie Station met Arduino

Hi elk lichaam.Voordat een 3 maanden geleden, een van mijn vriend me om te bouwen van een eenvoudige FM-zender vraagt, zou hij een audiobestand verzenden vanaf computer en spelen op elke radiozender, door het aanpassen van de frequentie van de ontvan