Ljud skattjakt (5 / 14 steg)

Steg 5: Arduino koden



Här är kopia av Arduino koden. Du kan antingen ladda ner den bifogade fil, eller du kan kopiera och klistra in denna text i en ny skiss.

Sedan ansluter Arduino styrelsen till datorn och ladda upp koden.

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

SdReader kort; Detta objekt innehåller information för kort FatVolume vol; Detta innehåller information för partitionen på kort FatReader rot; Detta innehåller information för filsystemet på kort FatReader f; Detta innehåller information för filen vi är spelar

WaveHC våg; Detta är enda våg (audio)-objektet, eftersom vi bara kommer att spela en i taget

#define DÄMPNINGSTID 100 / / knappen debouncer

Denna behändiga funktionen returnerar antalet byte för närvarande gratis i RAM, bra för felsökning! int freeRam(void) {extern int __bss_end; extern int * __brkval; int free_memory; om ((int) __brkval == 0) {free_memory = ((int) & free_memory)-((int) & __bss_end);} annat {free_memory = ((int) & free_memory)-((int) __brkval);} återvända free_memory;}

void sdErrorCheck(void) {om (! card.errorCode()) avkastning, putstring ("\n\rSD I/O fel:"); Serial.Print(Card.ErrorCode(), HEX); putstring (","); Serial.println(Card.errorData(), HEX); While(1); }

<---installationsprogrammet för void void setup() {/ / ställa upp serial port Serial.begin(9600), putstring_nl ("WaveHC med 6 knappar"), putstring ("fri slå ned:"); Detta kan hjälpa till med felsökning, slut RAM är dålig Serial.println(freeRam()); om detta är under 150 byte kan det stava problem! Ställa in produktionen stift för DAC kontroll. Detta stift definieras i biblioteket pinMode (2, utgång); pinMode (3, OUTPUT); pinMode (4, OUTPUT); pinMode (5, OUTPUT); pin13 LED pinMode (13, OUTPUT); Aktivera pull-up motstånd på switch stift (analoga ingångar) digitalWrite (14, hög). digitalWrite (15, hög). digitalWrite (16, hög). digitalWrite (17, hög), digitalWrite (18, hög). digitalWrite (19, hög). om (! card.init(true)) {//play med 4 MHz spi om 8MHz inte fungerar för dig om (! card.init()) {//play med 8 MHz spi (standard snabbare!) putstring_nl ("kort init. misslyckades!"); Något gick fel, kan skriva ut varför sdErrorCheck(); While(1); sedan 'stoppa' - gör ingenting! } / / Aktivera optimera Läs - vissa kort kan timeout. Inaktivera om du har problem card.partialBlockRead(true); Nu söker vi en FAT-partition! uint8_t del; för (del = 0; del < 5; del ++) {/ / vi har upp till 5 platser att leta i om (vol.init (kort, del)) paus; / / Vi hittade en, låter borgen} om (del == 5) {/ / om vi slutade inte att hitta en :(putstring_nl ("ingen giltig FAT-partition!"); sdErrorCheck(); / / något gick fel, kan skriva ut varför while(1); / / sedan 'stoppa' - gör ingenting!} / / kan tala om för användaren om vad vi hittade putstring ("använda partition"); Serial.Print (del, DEC); putstring (", typ är FAT"); Serial.println(Vol.fatType(),dec); FAT16 eller FAT32? Försöker öppna rotkatalogen om (! root.openRoot(vol)) {putstring_nl ("kan inte öppna rotfästa dir!"); / / något gick fel, while(1); / / sedan 'stoppa' - gör ingenting!} / / Puh! Vi fick tidigare de hårda delarna. putstring_nl("ready!"); }

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

void loop() {/ / putstring("."); / / ta bort kommentar här för att se om slingan inte är kör 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 framgång = 0; byte pressade, lagrar värden för knappen intryckt int jag = 0; loopen upprepas

för (jag = 0; jag < 6; i ++) //stores tryckte värdena i en matris {göra {tryckte = check_switches();} medan (pressad < 1), enteredCode [i] = tryckte; //stores tryckte värdena i en array delay(500); Serial.println(enteredCode[i]); Tryck knappen intryckt}

för (jag = 0; jag < 6; i ++) //Check kod en {om (enteredCode [i] == secretCodeOne[i]) {correctKeys = correctKeys + 1; //counts antalet rätt tangenter}} om (correctKeys == 6) //if koden matchar kod en, spela spår en {Serial.println ("kod en korrekt"); playcomplete("1.WAV"); framgång = 1;} correctKeys = 0; återställa rätt nyckel counter

för (jag = 0; jag < 6; i ++) //Check koden två {om (enteredCode [i] == secretCodeTwo[i]) {correctKeys = correctKeys + 1; //counts antalet rätt tangenter}} om (correctKeys == 6) //if koden matchar kod en, spela spår en {Serial.println ("kod två korrekt"); playcomplete("2.WAV"); framgång = 1;} correctKeys = 0; återställa rätt nyckel counter

för (jag = 0; jag < 6; i ++) //Check kod tre {om (enteredCode [i] == secretCodeThree[i]) {correctKeys = correctKeys + 1; //counts antalet rätt tangenter}} om (correctKeys == 6) //if koden matchar kod en, spela spår en {Serial.println ("kod tre korrekt"); playcomplete("3.WAV"); framgång = 1;} correctKeys = 0; återställa rätt nyckel counter

för (jag = 0; jag < 6; i ++) //Check kod fyra {om (enteredCode [i] == secretCodeFour[i]) {correctKeys = correctKeys + 1; //counts antalet rätt tangenter}} om (correctKeys == 6) //if koden matchar kod en, spela spår en {Serial.println ("kod fyra korrekt"); playcomplete("4.WAV"); framgång = 1;} correctKeys = 0; återställa rätt nyckel counter

för (jag = 0; jag < 6; i ++) //Check kod fem {om (enteredCode [i] == secretCodeFive[i]) {correctKeys = correctKeys + 1; //counts antalet rätt tangenter}} om (correctKeys == 6) //if koden matchar kod en, spela spår en {Serial.println ("kod fem korrekt"); playcomplete("5.WAV"); framgång = 1;} correctKeys = 0; återställa rätt nyckel counter

för (jag = 0; jag < 6; i ++) //Check kod sex {om (enteredCode [i] == secretCodeSix[i]) {correctKeys = correctKeys + 1; //counts antalet rätt tangenter}} om (correctKeys == 6) //if koden matchar kod en, spela spår en {Serial.println ("kod sex korrekt"); playcomplete("6.WAV"); framgång = 1;} correctKeys = 0; återställa rätt nyckel counter

IF(Success == 1) {Serial.println ("du fick en kod korrekt"); framgång = 0;} annat {playcomplete("0.WAV"); Serial.println ("du inte"); } }

byte check_switches() {statisk byte tidigare [6], statiska lång tid [6], byte läsa; byte tryckte, byte index; tryckte = 0;

för (byte index = 0; index < 6; ++ index) {läsning = digitalRead (14 + indexet); om (läser == låg & & föregående [index] == hög & & millis() - tid [index] > DÄMPNINGSTID) {/ / växla pressad tid [index] = millis(); tryckte = index + 1; bryta;} tidigare [index] = läser;} / / tillbaka switch nummer (1-6) avkastning (pressad); }

Spelar en full fil från början till slut med ingen paus. void playcomplete(char *name) {/ / kalla våra hjälpare att hitta och spela detta namn playfile(name); samtidigt (wave.isplaying) {/ / gör ingenting när man dess spelar} / / nu dess gjort spelar}

void playfile(char *name) {/ / se om objektet våg för närvarande gör något om (wave.isplaying) {/ / redan spelar något, så sluta det! wave.stop(); / / stoppa det} / / titta i rotkatalogen och öppna filen om (! f.open (rot, namn)) {putstring ("kunde inte öppna filen"); Serial.Print(Name); hemkomst. } / / OK läsa filen och förvandla det till en våg objekt om (! wave.create(f)) {putstring_nl ("inte en giltig WAV"), återvänder;} / / ok tid att spela! starta uppspelning wave.play(); }

Se Steg
Relaterade Ämnen

HUR du planerar en kul SKATTJAKT

Även om denna skattkista fylld med godis är ett roligt för de flesta barn, hitta den riktiga skatten är i jakten!Från bild ledtrådar till ord klättrar och anagram njuta barnen av timmar av roligt under våra senaste skattjakt. Nu våra livliga ungdomli...

Ljud ben hörlurar

Tanken med projektet är att visa skönheten i snöflinga. Detta ljud ben hörlurar är inspirerad avsnöflinga, som snöflinga är en av de vackraste sakerna i världen. Här hörlurar använder ljud ben enhet, istället för att använda traditionella högtalare.S...

3D tryckt ljud smycken

Dessa bitar av smycken ser ut precis som de låter. Till exempel är formen på dessa örhängen baserad på formen på ljudet jag göra när säga ordet "örhängen". Du kan också göra ett halsband med att säga ordet "halsband". Detta projekt är...

0 till 500v ljud kort Osciloscope och sonder kostnad jordnötter (under 20)

jag är säker på att du har sett många av dessa, detta är min enkla version den använder 1 USB-port för makt och linje i ljudkortet. Om du inte har en USB-port fungerar fortfarande design om du hittar en lämplig enkel tillgång scource ett 9v batteri s...

Lägga till ljud till projekt.

Gör en Prop och behöver ljud? Detta instructable visar hur du lägger till ljud till alla projekt snabbt och enkelt sätt. Vi visar dig grunderna i hur detta ljudkort fungerar.Steg 1: Kan lägga vissa ljudDenna video visar dig en springa igenom hur grun...

Ändra gitarr ljud med telefonen :)

HejHar du en akustisk gitarr?Är du uttråkad gamla ljudet av detta instrument?Du kan använda en egen telefon att ändra denna gitarr röst, eller kanske du vill spela högre?-------------Du behöver:-Akustisk gitarr,- telefon- med dessa program:-Voicemod...

Byggnaden Christine (med ljus och ljud!)

Denna Halloween vi tema vårt parti runt Stephen Kings berättelser och vi beslutade att en full storlek Plymouth Fury från "Christine" skulle göra en stor samlingspunkt. Den lätta vägen kan innebära att kontakta en klassisk bil klubb och hyra ett...

Locutus av Borg kostym (Cyborg) med riktiga robotics, ljus och ljud och 36.000 mAh makt!

Hello,Jag har alltid varit ett stort fan av teknik! Jag har alltid varit bra med tråden (jag har tusentals random trådar jag har samlat genom åren) min andra talanger består av lödning, ändra komponenter, datorer och spelsystem, operativsystem etc.St...

Ägg-par sig synnerligen väl vuxen påskägg skattjakt

påskharen! Tandfen! Jultomten! Jag skulle älska att vara liten igen, skulle inte du?Få tillbaka magiskt och skicka någon du känner på en ägg-par sig synnerligen väl påskägg jaga!Eftersom denna påsk skattjakt är för vuxna eller äldre barn, vi kan inte...

Dekorativa ljud absorberar paneler

vad är bättre sätt att tillbringa en eftermiddag, än att ha dina barn hjälp uppgradera prestanda för din hemmabio? Om du är en geek pappa, är listan ganska liten.Det finns många sätt att förbättra din hemmabio, och lägga till ljudabsorberande paneler...

Surround ljud Simulator

denna surround ljud simulator är baserad på andra surroundljud ledningar jag sett, som förvandlar stereoljud till surround-ljud. Hur det fungerar är att den spelar olika ljud i främre och bakre högtalare, låter mycket som äkta surroundljud.Känn dig f...

Surround-ljud gratis (det kan rädda ditt äktenskap!)

Om du har fyra högtalare och inte vill att surra på en ny surround ljudsystem (eller 'er inomhus vägrar att ha någon mer AV-utrustning i sitt vardagsrum!), prova denna Hafler krets.Först hittade jag detta i vardagliga elektronik 1975 (Tack killar!),...

Sync Digital ljud till din 16mm Film projektor

i detta instructable jag ska visa dig hur du ändrar en projektor Elmo 16-CL att mata sync pulser. Dessa pulser övervakas av fri programvara jag gjort ("Film-O-synkronisering) som spelar upp en ljudfil i synk med projektorn.Traditionellt, måste 16mm f...

Otidsenlig ljud effekt enhet: Spring Reverb

Som en del av min hemvist på piren 9 Workshop utforskade jag analoga rötterna av vissa ljudeffekter som mycket är vardagsmat i världens nuvarande digital musik. Målet var att återskapa dessa effekter som de skulle ha utformats i florentinsk workshops...

Jorden-toning (jord-åldrande) cymbaler, (för att få en mörkare, varmare ljud)

detta Instructable syftar till utställning du hur till jord-ålder en cymbal, vilket ger det en mörkare och varmare ton. Många cymbal företag sälja redan jord åldern cymbaler, men extremt höga priser.Dessa cymbaler kan köra från $400 till $800 dollar....

Irriterande ljud Maker!

Lära sig att göra den mest irriterande ljud någonsin. Och möjligen det högst ljudet använda någonsin en liten bit papper....

Hur man skicka ljud med hjälp av en Laser

vi har alla hört talas om det, men de flesta av oss visste vad det var alla om, skicka ljud med hjälp av ljus channel? ... bra tekniskt... ja... men inte riktigt. Allt du egentligen gör är att ändra intensiteten av ljuset. Detta ljus träffar en solce...

En bärbar ljud till ljus display, utan en mikroprocessor - Musicator Junior.

Mindre än 9-volts batteri som driver det Musicator Jr visar ljudet den "hör" (genom Elektret mikrofon) som fluktuerande ljus barer.Liten nog att passa i din skjorta ficka, det kan också vara placerat på en plan yta att övervaka ljudnivåerna runt...

Elektroniska LEGO DL-44 Blaster (ljus & ljud)

Uppdatering: detta projekt är nu tillgänglig på LEGO idéer --så säker att stödja det om du skulle vilja se det säljas i butiker en dag!Byggdes ursprungligen för Star Wars dag 2014, presentera jag ett projekt att jag har varit ständigt revidera och gö...