Arduino synkronisering för musik (3 / 7 steg)
Steg 3: kod
Du behöver inte läsa detta om du inte vill bråka med vad det är att spela eller gör din egen. Om du gillar engelska rundor, sedan kan du hoppa över detta.
Instructables kommer inte bifoga min .ino filer. I stället kommer jag att använda patebin.com. Det är en sval plats där du bara sätta text eller kod och människor kan se den och kopiera den. Det är bra.
Del 5: den synkar en: http://pastebin.com/uUEDBbew
Delarna 1-4: http://pastebin.com/UZHmVzSr
http://pastebin.com/Xi8sRSUB
http://pastebin.com/qeh4tXz2
http://pastebin.com/HZNFxEya
Och del 6: http://pastebin.com/7MK8h4tQ
Del 5 är kontrollerande styrelsen. Det sänder ut en synkpuls kortaste löptid noterna.
Det finns två stora matriser som innehåller noterna. Den första som innehåller frekvensen i Hz. Andra innehåller varaktigheten i form av puls synktid. Det finns extra blanksteg i matrisen eftersom på den sista anmärkningen, programmet kommer fortfarande att leta nästa anteckning att stoppa starttid. Programmet omvandlar detta till starttid för varje not eftersom som bara verkar fungera bättre. Jag är inte så bra av programmerare, om du inte kunde berätta.
Del 5 väntar på ett tag loop tills alla andra brädor sända en klar signal när de är klar bearbetar de stora matriserna.
Okej, vi är klara väntar andra styrelser. Funktionen microseconds() returnerar mikrosekunder sedan programmet startade. Den konverterar frekvens in i perioden. Det kommer att skriva högt till talaren för en bråkdel av tid, skriva låg och sedan vänta för perioden till slut. Detta kommer att göra en fyrkantsvåg (med justerbar månadskapacitet). När den totala körning av programmet når vissa multipel av sync pulse perioden, skriver del 5 högt till de andra styrelserna att signalera i nästa takt. Det skriver låg igen efter ett tag. När rätt antal slag passerar, det går vidare till nästa tonhöjden.
De andra styrelserna är lättare. De räknar slag i stället för mikrosekunder. Använda samma fyrkantsvåg process, de vänta tills rätt antal beats pass, sedan flytta till nästa anteckning.