LED speldosa / ljus Instrument (4 / 8 steg)
Steg 4: Arduino kod
Vid denna punkt, hoppas jag du fick Arduino kompilatorn jag berättade om tidigare. Hur som helst, här jag kommer att publicera min slutbehandlad kod för hela musik boxas mekanismen. Vet att inga förändringar behöver göras till koden för att ändra till instrumental anpassning.
Jag kommer även min fil som hjälpt mig lära dig hur man skriver enkla musikaliska jinglar med funktionen tonar. I den som jag gjorde, utvecklade jag låten Fur Elise. Du kan ändra tempo, hur många noterar du vill, hur länge du vill, precis vad frekvens varje not är, etc. Du har en massa kontroll, men det innebär också att det finns ganska lite att röra upp. Så jag kommer beskriver vad kunde gå fruktansvärt fel så du inte känner min sorg.
Bara i fall du inte kan öppna kodfilerna Arduino, bifogade jag några dokument som du kan bara kopiera och klistra in koden från istället. Det bör fungera på samma sätt. (FinalFinalFinal_attempt2 = slutbehandlad Arduino koden... De är samma sak så inte blir förvirrade.)
Så ska jag bara låta dig veta hur du ändrar vad du behöver ändra för att göra andra låtar och göra andra saker med den.
Jag ska börja med den avslutade Arduino kod del eftersom det är våra viktigaste skiss här trots allt (jag ska be du har koden öppna medan du läser detta så kan du se vad jag talar om). Överst på skissen ser du stift för din stepper, en fördröjning för stepper, sensor värden för foto motstånden och PIN-koden för din piezo. ALLA behöver inte vidröras nödvändigtvis. Men bara under den PIN-kod för piezo "const int buzzerPin = 5;", kommer du att se alla viktiga heltal för den musikaliska delen.
int längd gör att du kan ändra varaktigheten för anteckningar och hur länge de hålls. dvs hur länge varje slinga tar till processen.
int tröskeln gör att du kan ändra mängden ljus intag som är nödvändig för foto motstånden till aktivera och spela en anteckning. Ju högre det går, den mer ljus de behöver för att aktivera. Om du behöver ändra det här värdet eftersom dess inte svarar på ljuset du behöver det, kan du kontrollera de seriella tryck avläsningarna och kontrollera vilken mängd motstånd de läser på en nivå utan ljus, och sedan med ljus. Sedan kan du placera tröskeln på någon nivå mellan det.
int photoResistPins [6] = {A0, A1, A2, A3, A4, A5}; Theres ett par saker du vill notera här. Först och främst, vet jag inte säkert om du kan använda någon mer än sex foto motstånd för projektet om du använder en Arduino UNO. Av den enkla anledningen att ett foto motstånd körningar av av en analog PIN-kod och det finns inte tillräckligt analoga pins på UNO. Kanske med en micro controller med flera av dem kan vi skapa ännu mer Obs möjligheter, men från och med detta projekt med en UNO, använder vi endast sex motstånd. Men fortfarande, det lämnar oss med något runt 30 till 40 anteckningar eller mer. Dess fortfarande ganska bra. Så kommer denna funktion att vara den där du tilldelar foto motstånden sina egna stift. Anordning dess en analog stift på Arduino.
int onValue [6] = {1, 2, 4, 8, 16, 32}; Raden tilldelar bara bool värdena för varje kombination av anteckningar så senare koden kan avgöra vilka foto motstånd aktiveras. Inte tuff detta såvida inte du lägger till eller subtrahera foto motstånd av någon anledning.
Så i void setup behöver vi verkligen inte ändra något eftersom det finns inget där som skulle kunna ändras för att få nya anteckningar eller något. Så vi bara inte kommer att bry sig om att. Emellertid i void loopen vi kan beröra switch fallet funktion som går igenom och avgör vilka Obs att spela baserat på input det mottar. Du bör se en lång lista med saker som kallas "mål 1... case2... ärendet3... osv" som detalj varje möjligt Obs frekvens baserat på vad foto motstånd utsätts för ljus. Här kan du ändra frekvenser av anteckningar samt hur många anteckningar det finns tillgängliga för att spelas, samt vilka kombinationer av foto motstånd krävs för varje not.
VIKTIGT: Kom ihåg att kodrad upp på toppen där vi tilldelats bool värden varje foto motstånd? Det är här det blir viktigt. För varje not kombination måste vi lägga till tillsammans bool värdena för varje foto motstånd vi vill ska aktiveras för att spela frekvensen i det specifika fallet. Så till exempel, är skillnaden mellan "mål 1" och "case 7" som "mål 1" är bara den första foto resistorn (A0 som har bool värdet 1) utsatt att ljus medan "case 7" är en kombination av tre foto motstånd (A0, A1 och A2 = bool värdena 1, 2 och 4). Om du lägger till att det hade ett värde av 7. Thats varför dess "fall 7" och bara aktiveras när de tre foto motstånd utsätts för ljus.
Att veta allt, du kan gå vidare och göra fler Obs kombinationer genom att lägga olika kombinationer av bool värden för varje foto motstånd. Du kan också ändra frekvensvärde bara under den.
Det är allt du verkligen behöver oroa i denna skiss så ha kul att experimentera med det!
Och bara för skojs skull jag kommer att inkludera min päls Elise skiss som du kan använda för att bara ha en piezo spela en låt för dig. I den, kan du ange hur många anteckningar du vill, för hur ofta du vill att anteckningar, hur länge du vill att låten ska i beats, det tempo du vill, och det kan du skriva låten i en enda lång rad kod. som sett på toppen. Så småningom började jag växla mellan stora och små bokstäver eftersom de kan räknas som olika variabler. Ha lite kul spela med det också. Jag tror för att börja arbeta på att jag tog bas kod från Arduino biblioteket av exempel. Du hittar den här vid går till arkivera, exempel, sedan 02.Digital, och du ser ton funktioner på botten.