Arduino ljud utgång (9 / 10 steg)

Steg 9:40 kHz samplingsfrekvens




För de av er som är intresserade av att producera ljud på 40kHz samplingsfrekvens, här är några kod som använder timern avbrott för att låta dig göra. Arduino timer avbrott kan du pausa vad du gör i din huvudsakliga loop() funktion och hoppa till en speciell funktion som kallas en "avbrott rutin." När denna rutin är klar kommer du tillbaka till där du slutade i loop(). Du ställer in och anger frekvensen för dessa avbrott i den setup() delen av din kod. Du kan lära sig detaljerna i ställa in avbrott här, men om du är endast intresserad av 40kHz avbrott, kan du bara kopiera delar av koden nedan.

För att ställa in avbrottet måste du kopiera följande rader till din setup() funktion:

(CLI); //disable avbrott
Set timer0 avbrott på 40kHz
TCCR0A = 0; / / Ställ in hela TCCR0A register till 0
TCCR0B = 0; / / samma för TCCR0B
TCNT0 = 0; //initialize värde till 0
Set jämför match registrera dig för 40khz steg
OCR0A = 49. / / = (16 * 10 ^ 6) / (40000 * 8) - 1 (måste vara < 256)
Aktivera CTC läge
TCCR0A | = (1 << WGM01);
Ange CS11 bit för 8 prescaler
TCCR0B | = (1 << CS11);
Aktivera timern jämför avbrott
TIMSK0 | = (1 << OCIE0A);
SEI (); //enable avbrott

innehållet i rutinen avbrott är inkapslade i följande funktion:

ISR(TIMER0_COMPA_vect) {//40kHz avbrott rutin
}

Du vill behålla rutinen avbrott så kort som möjligt, bara nödvändigaste. Du kan göra alla dina andra uppgifter (kontrollera på knappar, vrida på lysdioder, etc) i loop(). Tänk också på att ställa in avbrott kan påverka andra Arduino funktioner som analogWrite och dröjsmål.

I koden nedan använder jag avbryta funktionen Skicka ett nytt värde för sine [] till PORTD med en hastighet av 40 kHz och ökar värdet för variabeln "t." Figurerna 1 och 2 visar (ofiltrerade) produktionen av koden på ett oscilloskop. Vi kan beräkna den förväntade frekvensen enligt följande:

frekvens = (samplingsfrekvens) / (steg per cykel)
frekvens = 40.000 / 100 = 400 hz

Vi förväntar oss en samplingsfrekvens på 40kHz och varaktigheten av varje steg vara:

varaktigheten av varje prov steg = 1 / (samplingsfrekvens)
varaktigheten av varje prov steg = 1/40 000 = 25us

Sine ut w / 40kHz 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.
*
*/

byte sine [] = {127, 134, 142, 150, 158, 166, 173, 181, 188, 195, 201, 207, 213, 219, 224, 229, 234, 238, 241, 245, 247, 250, 251, 252, 253, 254, 253, 252, 251, 250, 247, 245, 241, 238, 234, 229, 224, 219, 213, 207, 201, 195, 188, 181, 173, 166, 158, 150, 142, 134, 127, 119, 111, 103, 95, 87, 80, 72, 65 58, 52, 46, 40, 34, 29, 24, 19, 15, 12, 8, 6, 3, 2, 1, 0, 0, 0, 1, 2, 3, 6, 8, 12, 15, 19, 24, 29, 34, 40, 46, 52, 58, 65, 72, 80, 87, 95, 103, 111, 119,};
int t = 0; //time

void setup() {
ställa in digital stift 0-7 som utgångar
för (int jag = 0; jag < 8; i ++) {
pinMode(i,OUTPUT);
}

(CLI); //disable avbrott
Set timer0 avbrott på 40kHz
TCCR0A = 0; / / Ställ in hela TCCR0A register till 0
TCCR0B = 0; / / samma för TCCR0B
TCNT0 = 0; //initialize värde till 0
Set jämför match registrera dig för 40khz steg
OCR0A = 49. / / = (16 * 10 ^ 6) / (40000 * 8) - 1 (måste vara < 256)
Aktivera CTC läge
TCCR0A | = (1 << WGM01);
Ange CS11 bit för 8 prescaler
TCCR0B | = (1 << CS11);
Aktivera timern jämför avbrott
TIMSK0 | = (1 << OCIE0A);
SEI (); //enable avbrott

}

ISR(TIMER0_COMPA_vect) {//40kHz avbrott rutin
PORTD = sine [t]; //send sinusvåg till DAC, centrerad kring (127/255) * 5 = 2.5V
t ++; //increment t
om (t > 99) {//reset t till noll
t = 0;
}
}

void loop() {
göra andra saker här
}

Se Steg
Relaterade Ämnen

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...

Min bullriga jacka (Arduino ljud maskin jacka)

Som ett projekt för en av mina college klasser, blev vi ombedda att skapa något med Arduino. Efter några olika idéer fast jag på att sätta en Arduino ljud maskin i en kavaj. Den använder delar av jackan för att få att fungera, så att det framgår att...

Arduino ljud Sensor Control

Arduino ljud sensor controlYouTube-VideoDokument...

Arduino ljud Demos

det här är att visa upp min arduino ljud demos :)Det använder en RTTTL för att spela ljud...

Hur man gör en Arduino ljud synthesizer med MIDI-gränssnittet

Med denna synt kan du göra Arduino reproducera helt anpassade vågformer. På grund av MIDI-gränssnittet, kan det anslutas till alla instrument som sådan har och spela det med det ljud som du vill.Steg 1: materialArduino (i detta fall Arduino UNO)Instr...

ARDUINO ljud aktiverat flash eller kamera avtryckare

Detta instructable visar dig hur man bygger en enkel krets för anslutning till en ARDUINO micro controller som kommer att upptäcka ljud och utlösa kameran eller flash för hög hastighet fotografering. Detta är lätt att montera och kostar bara några $$...

WT588D fristående / Arduino ljud spelare

Denna tutorial är för WTD588D-du kan användas i fristående lägeI detta instructable jag visar dig de nödvändiga verktygen och steg för att ladda några ljudfiler och har dem spela på tryckning.Perfekt för att testa modulen innan den läggs till din Ard...

Lätt Arduino ljud Annoyatron

denna enkla anordning enkla spelar en liten melodi slumpmässiga intervall, mellan 5 och 30 sekunder när lamporna i ett rum går bort. Det kan vara skickligt dold inuti en vävnad box, eller inuti eller enligt valfritt antal hushållsföremål. Detta är et...

Arduino ljud utlöst strömbrytaren

Ever wanted din hemunderhållning eller ljudsystem till förmåga upp sig när du sätter i din iPod eller annan bärbar MP3-spelare?Titta på denna video att se hur det fungerar. Vänd sedan igenom stegen för att ta reda på hur man gör en med Arduino-styren...

Göra din Arduino ljud och flytta som en fågel

I detta Instructable ska jag visa hur man skapar ett djur beter sig objekt, med hjälp av mycket enkla delar och en Arduino ombord. Instructable är avsett för personer som har viss erfarenhet med Arduino.Du kanske vill kontrollera detta refererar på d...

Arduino ljud reaktiva LED Pyramid

Belysa din favorit hot spot med våra ljud reaktiva LED Pyramid. Gör din favorit plats att sparka tillbaka hot spot för alla dina vänner och familj. Med ett brett utbud av färger dessa lampor kommer att lägga till en ny smak på något. I år har färger...

Högt objekt buller leksak (AKA The Arduino ljud maskin)

okej, okej, jag vet att ni alla undrade vad jag hittills.Jag älskar syntar och så, jag byggde detta. Det finns tre saker som kan fånga min uppmärksamhet: syntar, förstärkare och gratis. Häromdagen (egentligen var det bara torsdag) var jag cruising ru...

Kodgenerator för anpassade Android/Arduino menyer att slå Arduino utgångar på och av. Android/Arduino för nybörjare. Absolut ingen programmering krävs

Uppdatering: användare frågade för undermeny support. pfodApp alltid stött sub-menyerna men jag har lagt undermenyer till pfodDesigner. Den instructable Design A Custom menysystemet visar hur du använder pfodDesigner för att bygga en meny med underme...

Mellanliggande Arduino: Ingångar och utgångar

Fortsätter från min Intro till Arduino inlägg, går detta Instructable över vissa något mer avancerade ämnen med Arduino, särskilt om att styra och hantera många ingångar och utgångar. Nästa klass omfattar hur du ansluter den Arduino ingångar och utgå...

Cwik klocka v1.0 - An Arduino binär klocka

ÖversiktDetta är en guide till att bygga en Arduino-driv klocka som använder lysdioder för att Visa 24-timmarsformat (timmar och minuter) som binära siffror, en analog mätare att Visa sekunderna, en switch för att växla mellan tidsvisning och tidsins...

Swarmbots: Autonoma Arduino bilar som spelar musikaliska stolar

Vår avsikt med detta projekt var att slå samman två banbrytande fält av teknik: autonoma fordon och swarmbots. I ett samarbete med Fremont akademin för teknik och Design's Femineer studenter monteras tio medlemmar i klassen Pomona College elektronik...

Arduino UNO gitarr Pedal - öppen hårdvara.

pedalSHIELD UNO är en öppen källkod programmerbara gitarr pedal i Arduino/Genuino UNO. En plattform att utveckla ditt intresse för gitarr pedaler, effekter, elektronik eller digitalt ljud.Syftet är att bygga en gitarr pedal med Arduino UNO och lätt a...

Hur man ger du Arduino en röst

RaspiVoice kicken project är ett incitament att ge Arduino användare möjlighet att utnyttja superb ljuduppspelning hos Raspberry Pi i alla Arduino projekt. Det uppnår detta genom att låta Arduino användare att använda en låg kostnad Raspberry Pi seri...

En guide för att styra saker med varierande input (via arduino)

hjärtat i detta projekt är en) koppla upp en sensor till arduino analog ingång och b) programmering med if... else-sats.Detta projekt visar en dator kylsystemet för att behålla viss temperatur inom ett dator torn.Jag använde följande produkter och sj...