Spelen met een Arduino audio geluidsbestanden (wav) (9 / 9 stap)

Stap 9: Interrupts en dubbele Buffering


Op 22 Khz is een byte van audiogegevens elke 0.045 ms output

512 bytes (de buffergrootte) wordt ingelezen 2,08 ms.

De buffer kan dus niet worden gelezen vanaf de SDCard in één schrijven cyclus.

512 bytes zijn echter geschreven op de poort van 23.22ms.

Dus alles wat we moeten doen is hebben setup een nieuw bestand lezen elke keer dat de buffer wordt leeggemaakt en we genoeg tijd om de gegevens voordat een nieuw gegevensblok met nodig is... Ervan uitgaande dat we gebruiken twee buffers, een leegmaken als we vullen een ander.

Dit is dubbele buffering.

Het bestand lezen zal worden vertraagd door de herhaalde interrupt, maar men zal krijgen.

.

Ik heb setup twee 512 byte buffers bufa en bufb genoemd.

Als de vlag aready klopt dat we lezen van porta anders wij van portb

Als de positie van de buffer (bufcount) de buffergrootte (BUF_SIZE 512) bereikt instellen wij een vlag met de naam readit op true.

De routine nietig lus zoekt deze vlag en begint een blok lezen:

if(Readit) {}
Als (! aready) {}

starten SDCard blok voorlezen bufa

tempfile.Read (bufa, BUF_SIZE);

} else {}

starten SDCard blok te bufb lezen

tempfile.Read (bufb, BUF_SIZE);

}

Readit = false;

}

Wanneer het klaar is met de routine vlaggen readit = false.

Binnen de interrupt routine moeten we controleren dat de leegte lus door het controleren is voltooid als readit == false.

Dit is het geval we het signaal dat andere Lees is vereist en de vlag aready om over te schakelen van buffers in-/ uitschakelen.

Als de SDcard is nog steeds het lezen dat we hebben terug één lezing (teller--; bufcount--;) bijhouden en verlaten van de interrupt probeer het later opnieuw. (Klikken in het audio output signaal impliceren dat dit heeft plaatsgevonden.)

Wanneer alle gegevens wordt gelezen de interrupt wordt geannuleerd, wordt de poort opnieuw ingesteld op de mid spanning waarde van 128 en het audiobestand gesloten.

.

Voordat u het dac2.ino script uitvoert voor de eerste keer, het volume op 50% instelt. Dit is te luid, maar het is beter dan 100%!

Als uw volumecontrole in omgekeerde werkt ruilen de leads op tegenovergestelde uiteinden van de potentiometer van 10K.

Laat me weten hoe het klinkt.

Gerelateerde Artikelen

Een spelletje spelen met een kale Arduino

Een spelletje spelen met een kale Arduino

"Push-It"Interactieve spel met behulp van een kale Arduino board, geen externe onderdelen of bedrading nodig.Push-It heeft twee doelen.Te schets snel tonen/Controleer je Arduino board werkt en dat u setup goed voor het downloaden van een nieuwe
Knoppen toevoegen aan uw X52-Pro-joystick met een Arduino Micro

Knoppen toevoegen aan uw X52-Pro-joystick met een Arduino Micro

Ik heb een Saitek X52-Pro HOTAS setup die ik gebruik voor Elite: gevaarlijk. Het is een fantastische joystick maar het kon doen met slechts een paar meer knoppen. Met een Arduino Micro kunt u uitbreiden deze (of enige andere) joystick voor elk spel d
Controle LED's met een Arduino van een C# programma

Controle LED's met een Arduino van een C# programma

heb je ooit wilde om te controleren enkele LED's met je Arduino vanuit een programma dat u hebt geschreven? Nou ben ik hier om u te helpen met dat.. Dit is mijn eerste ' kunnen dus please help me uit als ik langs de weg omhoog knoeien. En voel je vri
Programmering Arduino met een Arduino

Programmering Arduino met een Arduino

Dit is mijn eerste Instructable. In dit Instructable ga ik u tonen hoe te programmeren van een Arduino met een Arduino. Er zijn geen stuurprogramma's nodig! Dit Instructable is ook handig voor het uploaden van schetsen aan de Chinese ArduinoStap 1: D
Hoe te meten van de temperatuur zeer nauwkeurig met een Arduino en een TSYS01 Temperatuur Sensor Board.

Hoe te meten van de temperatuur zeer nauwkeurig met een Arduino en een TSYS01 Temperatuur Sensor Board.

Tijdens zijn studie in de Universiteit werden we uitgedaagd als onderdeel van een cursus werken in het ontwerpen van een doos met zeer nauwkeurige temperatuurregeling. Mocht het project te doen slagen, moesten meerdere vakken worden gebouwd en gebrui
Beheersing van een stappenmotor met een Arduino

Beheersing van een stappenmotor met een Arduino

Dit leerprogramma zal u tonen hoe te bedienen van een stappenmotor die werd gered van een oude printer met een Arduino.Stap 1: Wat is een Stepper Motor? Een stappenmotor bestaat uit twee delen, een rotor en een stator. De rotor is het deel van de mot
Lage hoogte milieubewaking met een Arduino gebaseerd weer Instrument en Remote Sensing Platform van Aeropod

Lage hoogte milieubewaking met een Arduino gebaseerd weer Instrument en Remote Sensing Platform van Aeropod

ProjectoverzichtStudenten op New Lothrop High School in Michigan hebben samengewerkt om te bouwen van een lage hoogte remote sensing platform genaamd een "Aeropod" en het uitgerust met een "Arduino" gebaseerd weer instrument om sfeervo
ARD-e: de robot met een Arduino als een brein

ARD-e: de robot met een Arduino als een brein

het maken van een opensource gecontroleerd Arduino robot voor onder $100.Hopelijk na het lezen van dit instructable u zal zitten kundig Neem uw eerste stap in de robotica. ARD-e kost ongeveer 90 dollar tot $130 afhankelijk van hoeveel vrije elektroni
Beheersing van een MIDI-CC in Ableton Live met een Arduino Uno

Beheersing van een MIDI-CC in Ableton Live met een Arduino Uno

In dit instructable zullen we gebruiken een potentiometer op een Arduino Uno om controle van een MIDI-CC in Ableton Live. Een MIDI CC staat voor continue Controller, dat wil zeggen een getal in het bereik van 0 tot 127 inclusieve te moduleren iets me
Controle van EL draad met een Arduino

Controle van EL draad met een Arduino

In dit instructable ik zal u tonen hoe u kunt besturen van EL draad met een Arduino.Wat u zult moeten:EL Wire en omvormer - adviseer ik http://ez-el.com/ez-el-wire/10ft-ez-el-wire-3v-inverter-kit/Arduino of een micro-controller die een relay kunt bep
Controle van een Camera met een Arduino en RS232 Shield

Controle van een Camera met een Arduino en RS232 Shield

Dit leerprogramma zal u tonen hoe u kunt controleren vele verschillende aspecten van de werking van een camera's met een Arduino. Deze bewerking kan worden de pan en tilt camera, zoom en focus van de lens, en RGB kenmerken. De Arduino zal gebruik mak
Uitvoeren van een stappenmotor met een Arduino

Uitvoeren van een stappenmotor met een Arduino

Hi Guys,Dit artikel over How to Run een Stepper Motor met een Arduino. Deze dagen stappenmotor in vele elektronikaapparaat zoals, Camera autofocus systeem gebruikt, CD-ROM voor lens beweging, 3D-printer en CNCs. de stappenmotor is beschikbaar in vele
Bijhouden van uw auto met een Arduino gebaseerde Lojack

Bijhouden van uw auto met een Arduino gebaseerde Lojack

De autodiefstal van de is een echte slepen! Verhoog uw kansen van het herstellen van uw auto door het installeren van deze eenvoudige Arduino gebaseerde tracker in uw auto.Dit project is vrij eenvoudig, en zou een goed project voor een nieuwe Arduino
Hoe u kunt besturen een RGB LED met een Arduino

Hoe u kunt besturen een RGB LED met een Arduino

In dit Instructable, zal ik tonen u hoe u kunt besturen een RGB LED met een Arduino.Ter voltooiing van dit project, hebt u het volgende nodig:1 x Arduino (ik ben met behulp van de Arduino Uno R3)1 x RGB LED3 x 150-220 ohm weerstanden4 x Jumper draden