Arduino Audio Input (6 / 8 steg)

Steg 6: Samplingsfrekvens ~ 40 kHz



i koden nedan jag gick förbi den funktionen analogRead() för att öka min samplingsfrekvens. Koden krävs för att göra detta är ganska avancerad, kanske det kan vara föremål för en annan instructable om det finns intresse (lämna en kommentar om du är intresserad), men för nu är det bara viktigt att förstå hur till använda den här koden i funktionen loop(), inte hur jag ställa upp.

Här är enkel förklaring (allt du behöver veta för nu):
I princip i funktionen setup() har jag berättat Arduino att jag vill ha det att kontinuerligt mäta pin A0 och glömma de andra analoga ingångarna som alla tillsammans. Så medan andra saker pågår i funktionen loop(), Arduino ständigt uppdaterar en variabel som kallas "ADCH" med nya värden från A0 uppgå till 38,5 kHz (som är en prova på varje 26us, du kan se det i fig 2). När jag vill få en av dessa värden jag kan bara ställa in en variabel är lika till ADCH, eller som jag skrev i min kod:

incomingAudio = ADCH;

Jag var tvungen att sänka upplösningen av dessa analoga mätningar lite för att få en högre samplingsfrekvens. I det sista steget var vi med analogRead() för att mäta spänningen på signalen som ett värde mellan 0 och 1023, nu dessa värden kommer alltid vara mellan 0 och 255. Kontinuerlig övervakning av A0 innebär också, att andra analoga stiften är nu värdelösa, men om du verkligen behöver för att mäta en potentiometer eller sensor, kolla in hur du kan göra det med en digital pin med RCTime It är möjligt att analoga stiften kan fortfarande användas som digital I/O pins, men jag har inte faktiskt testat detta ännu, lämna en kommentar om du prova det!

Den komplicerade förklaringen (inte nödvändigt, men för de som är intresserade):
Jag manuellt ställa in den Arduino inre analog till digital omvandlare (ADC) mot 500kHz och läsa en 8 bitars värde från analog ingång 0 från ADCH direkt (jag läste bara de mest betydande 8 bitarna av de 10 bitars ADC att spara tid i koden). Jag ange ADC 500kHz eftersom ADC tar 13 klockcykler att läsa ett nytt analoga värde. 500/13 = ~ 38,5 kHz som får mig ganska nära 40 kHz (standard ljud samplingsfrekvens) utan att införa extra buller. Som ni kan se i figur 2, detta ger mig en prova varje 13/500000 = 26us. En hel del idéer här (prescalers och räknare) liknar setup för Arduino timer avbrott, och du kan läsa mer om hur det fungerar här.

Ljud ut med 38,5 kHz samplingsfrekvens
av Amanda Ghassaei

Sept 2012

/*
* Detta program är fri programvara; Du kan vidaredistribuera det och/eller ändra
* det enligt villkoren i GNU General Public License som offentliggjorts av
* den Free Software Foundation; antingen version 3 av licensen, eller
* (på ditt alternativ) någon senare version.
*
*/

int incomingAudio; //storage för A0 data

void setup() {

Ställ in kontinuerlig provtagning av analoga pin 0 (du inte behöver att förstå denna del, bara vet hur man använder det i loop())

Rensa ADCSRA och ADCSRB register
ADCSRA = 0;
ADCSRB = 0;

ADMUX | = (1 << REFS0); ange referens spänning
ADMUX | = (1 << ADLAR); Vänsterjustera ADC värde - så vi kan läsa högst 8 bitar från ADCH register endast

ADCSRA | = (1 << ADPS2) | (1 << ADPS0); ställa in ADC klockan med 32 prescaler - 16mHz/32 = 500 kHz
ADCSRA | = (1 << ADATE); enabble automatisk utlösare
ADCSRA | = (1 << ADEN); Aktivera ADC
ADCSRA | = (1 << ADSC); Starta ADC mätningar

Om du vill lägga till andra saker i setup(), göra det här

}

void loop() {
incomingAudio = ADCH; //get nytt värde från A0
göra andra saker här
}

Som i föregående steg skickade jag värdena för variabeln "incomingAudio" ut en 8 bitars DAC så att jag kunde Visualisera data som det var lagras i Arduino. Du kan se den inkommande signalen (gul) och utgång från DAC (blå) i bilderna ovan. Märke hur mycket bättre den Arduino följer signalen jämfört till den sista steg. I figur 2 kan du se att steget är ner till 26us (jämfört med 125us när du använder analogRead). Igen kan du se effekterna av klippning på 0V och 5v i fig 3.

Koden för samplingsfrekvens på 38,5 kHz med DAC utgång ges nedan.

Ljud ut med 38,5 kHz samplingsfrekvens och DAC utgång
av Amanda Ghassaei

Sept 2012

/*
* Detta program är fri programvara; Du kan vidaredistribuera det och/eller ändra
* det enligt villkoren i GNU General Public License som offentliggjorts av
* den Free Software Foundation; antingen version 3 av licensen, eller
* (på ditt alternativ) någon senare version.
*
*/

void setup() {

för (byte jag = 0; jag < 8; i ++) {
pinMode(i,OUTPUT);
}

Ställ in kontinuerlig provtagning av analoga pin 0

Rensa ADCSRA och ADCSRB register
ADCSRA = 0;
ADCSRB = 0;

ADMUX | = (1 << REFS0); ange referens spänning
ADMUX | = (1 << ADLAR); Vänsterjustera ADC värde - så vi kan läsa högst 8 bitar från ADCH register endast

ADCSRA | = (1 << ADPS2) | (1 << ADPS0); ställa in ADC klockan med 32 prescaler - 16mHz/32 = 500 kHz
ADCSRA | = (1 << ADATE); enabble automatisk utlösare
ADCSRA | = (1 << ADEN); Aktivera ADC
ADCSRA | = (1 << ADSC); Starta ADC mätningar

Om du vill lägga till andra saker i setup(), göra det här

}

void loop() {
PORTD = ADCH; //send 8 bitars värde från analoga stift 0 till DAC
}

Se Steg
Relaterade Ämnen

Hur du ansluter en Sensor med Audio Input och Output

en sensor är en av en grundläggande komponent för att fånga fysiska miljön. Du kan få förändringen av ljus med en CDS fotocell, kan du mäta utrymmet med en distansera sensor och du kan fånga din rörelse med en accelerometer.Det finns redan flera sätt...

Arduino audio switch

Inuti min skydd har jag en 5.1 Bose surround system och ett par högtalare Yamaha NS - 10M Studio. Jag behövde för att driva dem med bara en förstärkare, så jag behövde en anpassade ljud växla mellan högtalare och LFE alltför. Jag har hittat en enkel...

Hur du ansluter en tryckknapp med Audio Input och Output

en tryckknapp är en av en grundläggande komponent för att fånga din åtgärd. Dynamiskt kan du trycka en knapp för att göra något.Det finns redan flera sätt att använda tryckknappar i dina projekt (t.ex. hacka mus och tangentbord eller Arduino, gainer,...

Hur du ansluter en Fader med Audio Input och Output

en fader är en av en grundläggande komponent för mixerbord. Dynamiskt kan du styra din källa med rörelsen av en fader.Det finns redan flera sätt att använda tryckknappar i dina projekt (t.ex. hacka mus och tangentbord eller Arduino, gainer, MCK). Det...

Arduino Audio DSP sköld

Arduino Audio DSP sköld har ring modulering, echo, reverb, en oscope, oscillator, godtycklig vågform generator, etc. Det är ett program- och maskinvara system, en god man, i en burk!Steg 1: Skaffa en arduino ljud sköldSköldarna finns på kickstarter h...

6-kanals AUDIO INPUT

6-kanals AUDIO INPUT (audioin selector)Du kan gjorde det med, TIC106D tyristor och med några kondensatorer och LEDväljaren av den audio ina enkeltgenom att ansluta den här enheten, många musikinstrument, som enCableknock ut honom... Om vi vill göra a...

Hur du sätter din bil askfat till en Audio Input

detta är ett roligt projekt så länge som du inte en rökare. Räkna ut vad gränssnitt du behöver kommer att vara prioritet nummer ett. Detta är en bra ändring om du går på långa resor och Don 't för att få alla dina CD-skivor med dig.Du behöver...01. S...

Arduino frekvens identifiering

Som en uppföljning till den Arduino-Audio-ingång tutorial som jag postat förra veckan, skrev jag en skiss som analyserar en signal som kommer in den Arduino analog ingång och bestämmer hur ofta. Koden använder en samplingsfrekvens på 38,5 kHz och har...

Baserade Arduino Bi-color LED Matrix Audio Spectrum Visualizer

Efter att vi kom med Bi-color LED Matrix drivrutinsmodulen kit, har vi letat efter intressanta projekt att arbeta med den.Du kan vara intresserad av några av de projekt som vi har lagt upp på instructables använder detta ledde matrisen kit.Instructab...

Överföra data från Android till Arduino genom audio domkraft

Med detta projekt kan du skicka byte från android till arduino använder endast en audio jack-kontakt.Hur fungerar det?I princip, signal android en "morse" audio till arduino. Arduino i andra hand avkoda Morsealfabetet till en byte. Så enkelt.Del...

3D Stereo Audio Spectrum Visualizer

I en av våra tidigare instructables, byggde vi en Arduino baserade Audio Spectrum Visualizer med våra bi-color LED Matrix moduler för visning. Du kan kolla upp det påFör några månader sedan, designat vi jolliCube, en 8 x 8 x 8 LED cube. Vi är mycket...

Intellekten Edison driftigt bluetooth audio.

Introduktion.Jag ville ha en ny bilstereo och en Ogg Vorbis-spelare som spelade låtar i den ordning jag ville. Jag beslutade att använda de bästa funktionerna på en Intel Edison åstadkomma detta.Edison har Bluetooth HW och SW.Edison har Perl programm...

Arduino Dubstep Piano Keyboard

som musiker, jag ständigt skriver musik. En del av min kreativa process innebär spelar melodier eller ackord mönster på min gitarr eller piano så att jag kan vidareutveckla dem och (förhoppningsvis) förvandla dem till låtar. Jag har redan en ryggsäck...

Cykel - drivna arduino vattenreningssystem (med UVC ljus)

Detta instructable visar hur att driva en UV-C vattenreningssystem med en cykel och arduino kontroll. En dynamo i den bakre delen av cykeln laddar ett batteri (som vi har från början ut redan för detta projekt) som kör arduino och ljuset.De flesta av...

Arduino ljud sköld

I den här videon visar vi de enkla steg för montering av din Arduino ljud sköld fall. För att köpa en av dessa fall, bara tillbaka min kicken project på: Arduino ljud sköldSteg 1: Hur göra montera din Arduino Audio DSP sköld fallDet första steget är...

Uppgradera tube radio med nya mössor och IPOD/AUX input

Efter fastställande av upp skåpet till denna radio och njuta stirrade på det ett tag, är det äntligen dags för att ta en smäll på chassit. Det fungerade ganska bra som det var men det hade ett brummande som alltid i bakgrunden som blir ganska irriter...

ANT + och Arduino Integration med Cateye Ergociser utöva cykel

Detta instructable förklarar hur du integrerar ANT + transceivern med Arduino controller i en vintage 1987 motionscykel så att PC-baserade eller Garmin sport klocka/cykel dator inspelning av träningsdata som 1) kadens, 2) makt och 3) puls.Stegen inbl...

3.5 mm Audio adapter

3,5 mm till RCA och RCA till 3,5 mm Stereo/adapteranslutningDetta är en enkel adapter som jag gjorde för att ansluta min HDTV ljud till min 4.1 surround ljudsystem, den är liten, bara runt 1,5 inchesAnvändningsområden• Stereo Connectivity (vänster oc...

LED Strip styrenhet med LED Amp + Arduino

Glöm DIY LED drivers med mosfet transistorer! Det är extremt enkelt att köra hög driv LED-strips med Arduino till låg kostnad utan att gå in för mycket kretsar. Hemligheten är billigt mini LED förstärkare.Detta instructable är bara om körning LED str...