Audio Schateiland (5 / 14 stap)

Stap 5: De Code van de Arduino


Hier is een kopie van de Code van de Arduino. U kunt ofwel het bijgevoegde codebestand downloaden, of u kunt kopiëren en plak deze tekst in een nieuwe schets.

Vervolgens sluit de Arduino board op uw computer en uploaden van de code.

#include
#include #include #include "WaveUtil.h" #include "WaveHC.h"

Kaart van de SdReader; Dit object bevat de gegevens voor de kaart FatVolume vol; Dit bevat de informatie voor de partitie op de kaart FatReader wortel; Dit bevat de gegevens voor het bestandssysteem op de kaart FatReader f; Dit bevat de gegevens voor het bestand we aan het spelen bent

WaveHC Golf; Dit is de enige Golf (audio) object, omdat we zullen slechts één filter tegelijk spelen

#define DEBOUNCE 100 / / button debouncer

deze handige functie geeft het aantal bytes in het RAM, momenteel gratis groot voor debugging! int freeRam(void) {extern int __bss_end; extern int * __brkval; int free_memory; als (__brkval (int) == 0) {free_memory = ((int) & free_memory)-((int) & __bss_end);} anders {free_memory = ((int) & free_memory)-(__brkval (int));} return free_memory;}

VOID sdErrorCheck(void) {als (! card.errorCode()) terugkeer; putstring ("\n\rSD I/O fout:"); Serial.Print(Card.ErrorCode(), HEX); putstring (","); Serial.println(Card.errorData(), HEX); while(1); }

<---void Setup void setup {/ / instellen van seriële poort Serial.begin(9600) putstring_nl ("WaveHC met 6 knoppen"); putstring ("vrije RAM:"); Dit kan helpen met het opsporen van fouten, lopen uit RAM is slechte Serial.println(freeRam()); Als dit onder 150 bytes kan het problemen magie! De pennen voor de DAC-besturingselement instellen Deze pennen worden gedefinieerd in de bibliotheek pinMode (2, OUTPUT); pinMode (3, OUTPUT); pinMode (4, OUTPUT); pinMode (5, OUTPUT); pin13 LED pinMode (13, OUTPUT); inschakelen van pull-up weerstanden op schakelaar pinnen (analoge ingangen) digitalWrite (14, hoge); digitalWrite (15, hoge); digitalWrite (16, hoge); digitalWrite (17, hoge); digitalWrite (18, hoge); digitalWrite (19, hoge); Als (! card.init(true)) {//play met 4 MHz spi als 8MHz niet voor u werkt als (! card.init()) {//play met 8 MHz spi (standaard sneller!) putstring_nl ("Card init. mislukt!"); Er ging iets mis, laat uitprinten waarom sdErrorCheck(); while(1); vervolgens 'stoppen' - niets doen! } / / inschakelen optimaliseren lees - sommige kaarten kunnen timeout. Uitschakelen als u problemen card.partialBlockRead(true) ondervindt; Nu gaan we voor een FAT-partitie! uint8_t deel; voor (deel = 0; deel < 5; deel ++) {/ / Wij hebben maximaal 5 "slots" om te zoeken in als (vol.init (kaart, deel)) onderbreking; / / wij één gevonden, laat borgtocht} als (deel == 5) {/ / als we uiteindelijk niet het vinden van een :(putstring_nl ("geen geldige FAT-partitie!"); sdErrorCheck(); / / iets misgegaan, laat uitprinten waarom while(1); / / vervolgens 'stoppen' - niets doen!} / / laat de gebruiker te vertellen over wat we gevonden putstring ("Using partitie"); Serial.Print (deel, DEC); putstring (", type is vet"); Serial.println(vol.fatType(),DEC); FAT16 of FAT32? Probeert te openen van de root directory als (! root.openRoot(vol)) {putstring_nl ("kan niet openen root dir!"); / / er ging iets mis, while(1); / / vervolgens 'stoppen' - niets doen!} / / Oef! Daar kregen we voorbij de harde delen. putstring_nl("Ready!"); }

//<------------------------------------------------------------------------------------- Void Loop

void loop {/ / putstring("."); / / uncomment dit om te zien als de lus niet actief int secretCodeOne [6] = {1, 2, 3, 4, 5, 6}; int secretCodeTwo [6] = {1, 1, 2, 2, 3, 3}; int secretCodeThree [6] = {2, 4, 6, 1, 3, 5}; int secretCodeFour [6] = {1, 2, 3, 5, 5, 5}; int secretCodeFive [6] = {1, 2, 3, 3, 2, 1}; int secretCodeSix [6] = {1 2, 3, 4, 5, 1};

int enteredCode [6] = {0, 0, 0, 0, 0, 0}; int correctKeys = 0; int succes = 0; byte gedrukt; opgeslagen waarden van knop ingedrukt int i = 0; iteratie van de lus

voor (ik = 0; ik < 6; i ++) //stores gedrukt van waarden in een matrix {doen {ingedrukt = check_switches();} terwijl (geperste < 1); enteredCode [i] = ingedrukt; //stores ingedrukt waarden in een matrix delay(500); Serial.println(enteredCode[i]); Print knop ingedrukt}

voor (ik = 0; ik < 6; i ++) //Check Code één {als (enteredCode [i] == secretCodeOne[i]) {correctKeys = correctKeys + 1; //counts juiste toetsen aantal}} als (correctKeys == 6) //if de ingevoerde code overeenkomt met code een, nummer één afspelen {Serial.println ("Code één juiste"); playcomplete("1.WAV"); succes = 1;} correctKeys = 0; juiste belangrijke teller instellen

voor (ik = 0; ik < 6; i ++) //Check Code twee {als (enteredCode [i] == secretCodeTwo[i]) {correctKeys = correctKeys + 1; //counts juiste toetsen aantal}} als (correctKeys == 6) //if de ingevoerde code overeenkomt met code een, nummer één afspelen {Serial.println ("Code twee Correct"); playcomplete("2.WAV"); succes = 1;} correctKeys = 0; juiste belangrijke teller instellen

voor (ik = 0; ik < 6; i ++) //Check Code drie {als (enteredCode [i] == secretCodeThree[i]) {correctKeys = correctKeys + 1; //counts juiste toetsen aantal}} als (correctKeys == 6) //if de ingevoerde code overeenkomt met code een, nummer één afspelen {Serial.println ("Code drie Correct"); playcomplete("3.WAV"); succes = 1;} correctKeys = 0; juiste belangrijke teller instellen

voor (ik = 0; ik < 6; i ++) //Check Code vier {als (enteredCode [i] == secretCodeFour[i]) {correctKeys = correctKeys + 1; //counts juiste toetsen aantal}} als (correctKeys == 6) //if de ingevoerde code overeenkomt met code een, nummer één afspelen {Serial.println ("Code vier Correct"); playcomplete("4.WAV"); succes = 1;} correctKeys = 0; juiste belangrijke teller instellen

voor (ik = 0; ik < 6; i ++) //Check Code vijf {als (enteredCode [i] == secretCodeFive[i]) {correctKeys = correctKeys + 1; //counts juiste toetsen aantal}} als (correctKeys == 6) //if de ingevoerde code overeenkomt met code een, nummer één afspelen {Serial.println ("Code vijf Correct"); playcomplete("5.WAV"); succes = 1;} correctKeys = 0; juiste belangrijke teller instellen

voor (ik = 0; ik < 6; i ++) //Check Code zes {als (enteredCode [i] == secretCodeSix[i]) {correctKeys = correctKeys + 1; //counts juiste toetsen aantal}} als (correctKeys == 6) //if de ingevoerde code overeenkomt met code een, nummer één afspelen {Serial.println ("Code zes juiste"); playcomplete("6.WAV"); succes = 1;} correctKeys = 0; juiste belangrijke teller instellen

if(success == 1) {Serial.println ("You Got een juiste Code"); succes = 0;} else {playcomplete("0.WAV"); Serial.println ("u mislukt"); } }

byte check_switches() {statische byte vorige [6] statische lange tijd [6] byte lezen; byte ingedrukt; byte index; gedrukt = 0;

voor (byte index = 0; index < 6; ++ index) {lezen = digitalRead (14 + index); als (lezen == LOW & & Vorige [index] == HIGH & & millis() - tijd [index] > DEBOUNCE) {/ / schakelaar ingedrukt tijd [index] = millis(); gedrukt = index + 1; breken;} vorige [index] = lezing;} / / terug schakelaar nummer (1-6) terugkeer (gedrukt); }

Speelt een volledige bestand van begin tot eind met geen pauze. ongeldig playcomplete(char *name) {/ / Bel onze helper te vinden en spelen deze naam playfile(name); terwijl (wave.isplaying) {/ / niets te doen tijdens het spelen van haar} / / nu zijn gedaan spelen}

ongeldig playfile(char *name) {/ / zien als de Golf-object is momenteel bezig met iets als (wave.isplaying) {/ / al het spelen van iets, dus stoppen! wave.stop(); / / stoppen} / / kijken in de root directory en open het bestand als (! f.open (root, naam)) {putstring ("kon niet open bestand"); Serial.Print(name); terugkeer; } / / OK lezen van het bestand en zet hem in een golf-object als (! wave.create(f)) {putstring_nl ("niet een geldig WAV"); terugkeer;} / / ok tijd om te spelen! Start afspelen wave.play(); }

Gerelateerde Artikelen

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
Arduino Schateiland

Arduino Schateiland

Ik heb altijd graag films zoals National Treasure en dergelijke. Degenen die beschikt over een team van mensen die worden uitgevoerd over de hele probeert op te lossen een raadsel of een tekenreeks van raadsels om, het goud, krijgen het meisje, behal
High-End Audio kabels

High-End Audio kabels

Maken van high-end RCA Audio interconnect kabels is niet erg moeilijk en niet hoeft te veel geld kosten als u de stappen hieronder.Stap 1: Knippen uw kabel lengteDe eerste stap was om te snijden twee lengtes van draad tot ongeveer 2 meter in lengte.V
Draagbare Audio borst

Draagbare Audio borst

Gebruik een oude audio kast om te bouwen van een draagbare audio borst.Stap 1: materialen Ik vond een oude borst voor het kabinet en de opslag van audio.Stap 2: demonteren Demonteren van de audio kabinet en redden van het hout en de elektronica.Stap
Audio Server en Recorder met Intel Edison

Audio Server en Recorder met Intel Edison

Een van de grote dingen over de Intel Edison is dat het als een server fungeren kan. Dit betekent dat u kunt opslaan van bestanden en deel ze als je wilt. Dit een geweldige kans voor curating afspeellijsten en andere audio-bestanden op te slaan. Dit
Modulerende audio op een LED

Modulerende audio op een LED

[Bracht ik sommige veranderingen ter ook een microfoon]In deze tutorial, zal ik aantonen hoe audio (muziek of geluid) via een lichtstraal die zijn gegenereerd door een LED kan worden verzonden. Dit project bestaat uit 2 delen:De zender, die ervoor zo
Dual Input Audio Switching Circuit

Dual Input Audio Switching Circuit

hebt u ooit het probleem van het hebben van een luidsprekersysteem en meerdere "inputs" die vereisen dat u steek en haal uw audio leidt telkens wanneer u wilt luisteren naar een bron? Nou, ik heb een oplossing voor u! Dit Instructable is over he
DIY Audio gecontroleerde Laser-Show!

DIY Audio gecontroleerde Laser-Show!

Dankzij Instructables kreeg onze hackerspace The Rabbit-Hole 2 Wicked EVO laser pointers. Ze zijn vrij krachtige groene lasers en we dachten dat het zou cool om het gebruik van een van hen met een soort van audiotoepassing.Dit leidde uiteraard tot on
WiFi Audio Receiver Aicer A900: Airplay & DLNA naam wijzigen

WiFi Audio Receiver Aicer A900: Airplay & DLNA naam wijzigen

Hallo dames & heren! Dit instructable behandelt sommige goedaardige hacken van de Chinese Wifi Audio ontvanger Model A900 van "Aicer". Want, natuurlijk, toestaand gebruikers om te wijzigen heet de ontvanger AirPlay en DLNA via de webgebaseer
PIR motie geactiveerde Audio Switch

PIR motie geactiveerde Audio Switch

Een vriend van mij stak zijn hand uit over sociale media vragen of iemand wist van een product dat audio van een TV spelen zou alleen wanneer iemand was kijken. Ze was willen zetten een looping video in een lobby, maar wilde niet de redundantie van d
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
Professionele Video en Audio voor Podcasting

Professionele Video en Audio voor Podcasting

Ziet er goed uit op een shoestring en niet in een professionele studio biedt vele uitdagingen aan de pod-caster zelfs met een budget. Ruimte en kosten hebben daar eigen kwesties samen met de beperkingen van de apparatuur.Meestal is het meest kritieke
Basisprincipes - DVD Audio voor de hoorzitting uitgedaagd

Basisprincipes - DVD Audio voor de hoorzitting uitgedaagd

Het probleem is dat ik uitgedaagd ten bedrage van ongeveer 30% gehoorverlies heb gehoord alle van mijn leven. Naarmate ik ouder--jaren zeventig nu--mijn hoorzitting groeit veel, veel erger. Bij mijn laatste bezoek vertelde mijn otolaryngologist me da
Sony PSP audio docking station

Sony PSP audio docking station

enige tijd geleden, ik heb een Sony PSP bij toeval. Eigenlijk, won mijn ouders het als een prijs op een feest van de stad.Ik ben niet dol op video games, maar ik hou van de PSP capaciteiten als speler van verschillende media (video, MP3-bestanden en