Arduino Audio-uitgang (10 / 10 stap)

Stap 10: Extra Tips


Deze DAC maakt gebruik van nogal wat van de Arduino beschikbare digitale pinnen, waaronder enkele die normaal gesproken worden gebruikt voor seriële communicatie en PWM, dus hier zijn een paar tips die u zullen helpen pin conflicten aanpakken.

Als u wilt doen van seriële communicatie: Seriële software is een Arduino-bibliotheek waarmee u om te zetten of de pennen van de Arduino in seriële pinnen.  Meestal wanneer je een Arduino project waarvoor seriële communicatie doet, vermijd je het gebruik van digitale pinnen 0 en 1 omdat zij moeten vrij zijn om seriële gegevens te verzenden.  Ik vind om ze te gebruiken voor de 8-bit DAC omdat pinnen 0-7 allemaal deel uit van het PORTD op van de Arduino Atmel328 chip zijn, dit kan ik al van hen in een enkele lijn van code.  PORTB heeft slechts 6 pinnen (digitale pinnen 8-13) en PORTC heeft slechts 6 pins (analoog pins 0-5), dus hoeft u geen een 8 bit DAC met deze poorten alleen maken.

Als u wilt gebruik maken van de PWM-pinnen, of anders moet gebruiken verschillende pinnen als de DAC: Als u de PWM-pinnen moet gebruiken kunt u bits manipulatie vrijmaken pinnen 3, 5 en 6 en vervang ze met pinnen 8, 12 en 13.  Dat u wilt het nummer 36 verzenden PORTD.  U kunt de volgende regels:

variabelen definiëren:
boolean bit3state;
Booleaanse bit5state;
Booleaanse bit6state;

in uw belangrijkste loop:

bit3state = (36 & B00001000) >> 3, //get de derde bit van 36
bit5state = (36 & B00100000) >> 5, //get de vijfde bit van 36
bit6state = (36 & B01000000) >> 6; //get de zesde bit van 36

gegevens verzenden portd w/o verstoren pinnen 3, 5 en 6
PORTD | = (36 & B10010111); //set hoge pinnen hoog met behulp van het nummer 36 met nullen ter vervanging van de bits 3, 5 en 6
PORTD & (36| = B01101000); //set lage pinnen laag met behulp van het nummer 36 met enen vervangen van bits 3, 5 en 6

gegevens verzenden portb w/o pinnen 9, 10 en 11 te verstoren
PORTB | = 0 | (bit3state) | (bit5state << 4) | (bit6state << 5); //set hoge pinnen
PORTB & = 255, ~(1-bit3state) & ~((1-bit5state) << 4) & ~((1-bit6state) << 5); //set lage pinnen

Zorg ervoor dat deze lijnen van het PORTD en PORTB naast elkaar in uw code, wilt u de pinnen op poort d en poort b om over te schakelen op zo dicht bij de dezelfde tijd mogelijk.

Hier is de code van de vorige stap, bewerkt zodat het gebruikt geen elke PWM pinnen.  Zoals u in fig 1 zien, heeft de ongefilterde output van de DAC vele discontinuïteiten veroorzaakt door de lag tussen het verzenden van gegevens naar poort d en poort b, evenals het opsplitsen van de opdrachten voor de hoge en lage vaststelling van de pinnen.  U kunt zich te ontdoen van de meeste van deze winstdeling met het low-pass filter (fig 2).  Als je wilde gebruiken deze techniek overwegen kunt u het verhogen van de cutoff frequentie van uw low-pass filter.  Als je wilde maken dit echt goed, kon u uw 5 meest significante bits op d-poort en uw 3 minste significante beetjes naar poort b.  Dit zou afnemen, de amplitude van een aantal van de winstdeling, vermindering van de omvang van het lawaai.  Ik laat je dat een uitzoeken op uw eigen.

 //Sine out, 40kHz sampling rate, w/o using PWM pins //by Amanda Ghassaei 

Als u van digitale pinnen uitgeput en meer nodig:  Vergeet niet dat u kunt altijd de pinnen van uw analoge als digitale i/o.  De volgende functies uitproberen, ze werken net als u te maken met een gewone digitale pin.

digitalWrite (A0, hoge); //set pin A0 hoge
digitalWrite (A0, laag); //set pin A0 laag
digitalRead (A0); de digitale gegevens van de //read van pin A0

Anders, probeer een multiplexer.  Wenst u meer digitale uitgangen, kunt de 74HC595 u drie van de Arduino van digitale pinnen omzetten in 8 uitgangen.  U kunt zelfs daisy chain meerdere 595 van samen maken veel meer uitgangen pinnen.  U kunt uw hele DAC op een van deze chips instellen als u wilde (hoewel het een paar lijnen van code te pakken nemen en zou kunnen vertragen u teveel voor hogere samplingfrequenties zou).  De Arduino website is een goede plek om te beginnen te leren over het gebruik van de 595.

Als u meer digitale ingangen nodig, laat de 74HC165 of de CD4021B u drie van de Arduino van digitale pinnen omzetten in 8 ingangen.  Nogmaals, de Arduino website is een goede plek om te beginnen met het leren van het gebruik van deze chips.

Wilt u de info gebruiken in dit Instructable met de Mega of andere boards: In dit Instructable sprak ik uitsluitend over de Arduino Uno met Atmel328.  Dezelfde code werkt prima op een bord met een Atmel328 of Atmel168 chip op het.  U kunt ook dezelfde ideeën met een Mega.  Je moet proberen om het koppelen van uw DAC naar elke willekeurige poort die heeft 8 beschikbare pinnen, op die manier kunt u uw DAC met één coderegel richten ("PORTD =") op de Uno, de enige havenstad met 8 beschikbare pinnen is poort d.  



foto geeft aan dat de Mega verschillende poorten met 8 pinnen heeft: poorten a, b, c, en l zijn de hand liggende keuzes.  Als u geen zorg over het verspillen van analoge pinnen zou ook u poorten f of k.

Gerelateerde Artikelen

Arduino Audio Input

Arduino Audio Input

Geluid in je Arduino sturen. Dit Instructable zal u tonen hoe om audio te bereiden, zodat het kan worden bemonsterd en verwerkt door een Arduino sound responsieve projecten en audio-effecten te maken. (Dit artikel is een aanvulling op een ander Instr
Arduino audio switch

Arduino audio switch

Ik heb binnen mijn schuilplaats een 5.1 Bose surround systeem en een paar van Yamaha NS - 10M Studio luidsprekers. Ik nodig had om ze te rijden met slechts één eindversterker, dus ik nodig een aangepaste audio schakelen tussen luidsprekers en LFE ook
Synthesizer: Een toetsenbord UI met Audio uitgang

Synthesizer: Een toetsenbord UI met Audio uitgang

We bouwden een toetsenbord UI met vijf synthese wijzen allemaal in Javascript, zodat de kracht van het gebruik van de audio-uitgang hardware pinnen van Kinoma maken. U kunt het open source project nu downloaden als u wilt uitvoeren in de simulator Ki
Arduino Audio Shield

Arduino Audio Shield

In deze video laten we de eenvoudige stappen voor montage van uw zaak Arduino audio schild. Om te kopen een van deze gevallen, gewoon terug mijn kickstarter-project op: Arduino Audio ShieldStap 1: Hoe Assemble uw zaak Arduino Audio DSP ShieldDe eerst
Arduino Audio DSP Shield

Arduino Audio DSP Shield

De Arduino Audio DSP schild heeft Ringmodulatie, echo, reverb, een oscope, oscillator, willekeurige golfvorm generator, enz. Het is een software- en hardware-systeem, een goede man, in een blikje!Stap 1: Krijgen een arduino audio schildDe schilden zi
Arduino Audio geactiveerd / uit-schakelaar

Arduino Audio geactiveerd / uit-schakelaar

ooit wilde uw huisvermaak of geluidsinstallatie aan power up zelf toen inpluggen in uw iPod of andere draagbare MP3-speler?Bekijk deze video om te zien hoe het werkt. Dan flip door de stappen om erachter te komen hoe maak je met behulp van de Arduino
Spelen met een Arduino audio geluidsbestanden (wav)

Spelen met een Arduino audio geluidsbestanden (wav)

Afspelen van wav bestand Audio van uw Audino SD-kaart.Dit Instructable zal u tonen hoe een wav-bestand op je SdCard kan worden afgespeeld via een eenvoudige schakeling aan een spreker.Het wav-bestand moet 8 bits mono. Ik heb geen probleem 44 KHz-best
Gemakkelijk Arduino Audio Annoyatron

Gemakkelijk Arduino Audio Annoyatron

zulks simpel eenvoudig apparaat speelt een kleine tune op een willekeurige interval, tussen 5 en 30 seconden wanneer de lichten op een kamer afgaan. Het kan slim worden vermomd in een doos van weefsels, of binnen of onder een willekeurig aantal huish
Stereo Audio met Arduino

Stereo Audio met Arduino

Onlangs heb ik zijn detachering een heleboel projecten die een 8 bit weerstand ladderdigitaal naar analoog converter (DAC) en een Arduino gebruiken om geluid te maken. (Zie het vocale effecten Arduino, de Arduino drum sampler en mijn audio-uitgang-tu
Toezending van gegevens van Android aan Arduino via audio-aansluiting

Toezending van gegevens van Android aan Arduino via audio-aansluiting

Met dit project kunt u bytes van android naar arduino met behulp van alleen een audio jack connector.Hoe het werkt?Principe, signaal android een "morse" audio naar arduino. Arduino in de andere hand decoderen de morse-code aan een byte. Zo eenvo
How to convert een Nvidia-videokaart DVI-uitgang naar HDMI met Audio voor HTPC

How to convert een Nvidia-videokaart DVI-uitgang naar HDMI met Audio voor HTPC

In dit Instructable zal ik laten zien hoe de DVI-uitgang op de Nvidia-videokaart omzetten in een HDMI-uitgang die geluid op uw HTPC zal voeren.   Eenvoudig met behulp van een DVI-HDMI-adapter is genoeg om video-uitgang op uw televisie maar als u het
Sleutels toe te voegen aan een Arduino Synth de harde manier-het Blacklord: het Organ Donor Project deel 2

Sleutels toe te voegen aan een Arduino Synth de harde manier-het Blacklord: het Organ Donor Project deel 2

(Opmerking-Dit is mijn 20e instructable! Dank aan iedereen volgende en commenting.on mijn projecten en aan de medewerkers die dit mogelijk maken. Deze site heeft zeker maakte me brengen mijn A game aan de workbench.)De Auduino granulaire synth door P
Arduino gebaseerd Desktop lijn volgeling - jolliBot

Arduino gebaseerd Desktop lijn volgeling - jolliBot

Een van de klassieke projecten die vermelding niveau robotica hobbyist kunnen interesseren is de regel die volgt robot die is meer algemeen bekend als een volgeling van de lijn. Er zijn veel kit beschikbaar om te bouwen van volgelingen van de lijn in
Arduino gebaseerde Bi-color LED Matrix Tetris Game

Arduino gebaseerde Bi-color LED Matrix Tetris Game

Een van de elektronica DIY kit jolliFactory kwam omhoog met is de Bi-color LED Matrix Driver Module Kit. Deze module is ontworpen om kunnen keten-zodat u kan serieschakeling de modules samen aan het aantal modules moet u past bij uw project.De volgen