Sadržaj:

Digitaliziranje pjesme s Arduinom: 6 koraka
Digitaliziranje pjesme s Arduinom: 6 koraka

Video: Digitaliziranje pjesme s Arduinom: 6 koraka

Video: Digitaliziranje pjesme s Arduinom: 6 koraka
Video: Биология Цифр часть 02 | Профессор Сергей Вячеславович Савельев 2024, Studeni
Anonim
Digitalizirajte pjesmu s Arduinom
Digitalizirajte pjesmu s Arduinom

Htio sam stvoriti projekt koji je kombinirao dva moja omiljena predmeta: znanost i glazbu. Razmišljao sam o svim načinima na koje mogu kombinirati ove dvije domene i mislio sam da bi bilo zanimljivo napraviti Arduino da igra Fur Elise dok prikazuje visinu note u Hertzu. A sada počnimo graditi!

Trebat će vam jedan Arduino Uno ili Mega, puno kratkospojnih kabela, Piezo zujalica, matična ploča, LCD zaslon veličine 16*2 sa svim iglama brisača i potenciometar od 10 k (možete ih čuti i kao potmetre)). Najbolje je prikupiti sve ove zalihe prije nego počnemo s izgradnjom.

Korak 1: Pretvorite glazbenu partituru u digitalne note: Vrijednosti kašnjenja

Pretvorite glazbenu partituru u digitalne bilješke: Vrijednosti kašnjenja
Pretvorite glazbenu partituru u digitalne bilješke: Vrijednosti kašnjenja

Postoje dva koraka za digitalno prepisivanje note iz partiture u njezin digitalni ekvivalent. Prvo ćemo morati zapisati vrijeme trajanja bilješke u milisekundama. Za ovaj sam zadatak upotrijebio grafikon pronađen na internetu. Na temelju toga je li nota pola note, četvrtine, osma nota itd., Prepisao sam duljinu note u milisekunde. Ove brojeve možete vidjeti u mom kodu kao delay (); funkcija i broj unutar zagrada bit će vrijednost kašnjenja u milisekundama koju smo odredili u ovom koraku.

Korak 2: Pretvorite glazbenu partituru u digitalne note: Hertz vrijednosti

Pretvorite glazbenu partituru u digitalne note: Hertz vrijednosti
Pretvorite glazbenu partituru u digitalne note: Hertz vrijednosti

Prije nego započnem ovaj korak, dopustite mi da definiram neke tehničke pojmove. "Vrijednost" note može se naizmjenično koristiti s riječima "visina tona", "vrijednost" i "nota". Sada morate pročitati svaku notu pjesme iz partiture. Morat ćete zatim svaku notu prevesti u Hertz pomoću glazbene tablice u Hertzu, koju možete lako pronaći na internetu. Treba zapamtiti da je srednji C na tablici naveden kao C4, a za oktavu veći je C5 itd. Nakon što se sve ove bilješke prepišu u Hertz, vrijednosti ćete postaviti u ton funkcije (x, y, z); gdje je X pin broj ili const int, način definiranja varijabli koji ću objasniti kasnije. Y će biti vrijednost Hertza koju ste upravo prepisali, a Z će trajanje note u milisekundama zaokruženo na najbližu stotinu. Odgoda(); vrijednosti će biti trajanje note. Sada, dizajnirajmo krug koji može reproducirati glazbu.

Korak 3: Dizajn kruga

Dizajn sklopa
Dizajn sklopa

Sada kada smo sve bilješke preveli u digitalne vrijednosti koje računalo može razumjeti, vrijeme je za izgradnju sklopa. Počnite tako što ćete uzeti ploču za postavljanje plohe i postaviti LCD zaslon s prvom iglom (GND) u red 14. Postavite zujalicu gdje god želite, a uz nju postavite potenciometar. Cilj je sve poravnati, minimizirati nakupljanje žica. Postavite Arduino pored matične ploče i spojite iglu od 5 V na pozitivnu vodilicu ploče, a iglu za uzemljenje na negativnu vodilicu. Sada smo spremni za spajanje kratkospojnika između Arduina i komponenti.

Hajde sada razgovarati o pinovima na LCD -u i kako ih spojiti.

GND označava uzemljenje, ovo je negativna žica u istosmjernoj struji. Spojite GND na negativnu vodilicu ploče.

VCC označava napon na zajedničkom kolektoru i tu spajate svoj 5-voltni izvor napajanja (pozitivna razvodna traka).

VO označava kontrast, spojite ga na srednji pin potenciometra. Spojite lijevi pin potenciometra na pozitivnu vodilicu, a desnu iglu na uzemljenu vodilicu.

RS znači Register Select, a to Arduino koristi za prikaz na zaslonu gdje pohraniti podatke. Spojite ovaj pin na pin 12 na Arduinu.

RW je kratica za Read/Write pin, koju Arduino koristi za provjeru prikazuje li zaslon ono što ste programirali za prikaz. Spojite ovaj pin na negativnu vodilicu na ploči.

E označava Omogući, što govori LCD -u koje piksele treba omogućiti (uključiti) ili onemogućiti (isključiti). Spojite ovaj pin na Arduino pin 11.

D4, D5, D6 i D7 su prikazivači koji kontroliraju prikazane znakove i slova. Spojite ih na Arduino pinove 5, 4, 3 i 2, respektivno.

Pin A, ponekad označen kao LED, je LED anoda za pozadinsko osvjetljenje. Spojite ga na pozitivni vod sa žicom ili s otpornikom od 220 ohma. Otpornik je bolji za dulju uporabu jer štedi LCD, ali ako se uređaj neće koristiti danju i noću, otpornik vam ne treba.

Pin K, ponekad također (zbunjujuće) označen sa LED, je LED uzemljenje LED. Spojite ga na uzemljenje.

Korak 4: Prijenos koda: upute

Priključite svoj Arduino na USB računala. Prenesite sljedeći kod pomoću programatora za Arduino IDE.

#uključi

const int rs = 12, en = 11, d4 = 5, d5 = 4, d6 = 3, d7 = 2; LCD tekući kristal (rs, en, d4, d5, d6, d7);

void setup () {

// postavljanje broja stupaca i redaka LCD -a: lcd.begin (16, 2); // Ispis poruke na LCD -u. lcd.print ("Hertz korak:!"); kašnjenje (1000); void loop () {// reprodukcija e4 kašnjenja (600); // pauziranje za 0,6 sekundi ton (10, 329,63, 300); // reprodukcija e do zujalice na pinu 10, zadržite 0,3 sekunde lcd.print (" 329.63 "); // prikazuje poruku na LCD -u" 329.63"

delay (350); // kašnjenje 0,35 sekundi

lcd.clear (); // očistiti LCD i resetirati za sljedeću poruku // reproducirati d4# ton (10, 311.13, 300); lcd.print ("311.13"); kašnjenje (350); lcd.clear (); // pusti e4 ton (10, 329.63, 300); lcd.print ("329,63"); kašnjenje (350); lcd.clear (); // reproduciranje d4# tona (10, 311.13, 300); lcd.print ("311.13"); kašnjenje (350); lcd.clear (); // pusti e4 ton (10, 329.63, 300); lcd.print ("329,63"); kašnjenje (350); lcd.clear (); // reproduciranje b3 tona (10, 246.94, 300); lcd.print ("246.94"); kašnjenje (400); lcd.clear (); // reproduciranje d4 tona (10, 293.66, 300); lcd.print ("293.66"); kašnjenje (400); lcd.clear (); // reproduciranje c4 tona (10, 261.63, 300); lcd.print ("261.63"); kašnjenje (400); lcd.clear (); // pusti a3 ton (10, 220, 900); lcd.print ("220.0"); kašnjenje (1000); lcd.clear (); // line60 // helpave // avrdude.failure.eeprom // reproducira d3 ton (10, 146.83, 300); lcd.print ("146,63"); kašnjenje (350); lcd.clear (); // reproduciranje f3 tona (10, 174.61, 300); lcd.print ("174,61"); kašnjenje (400); lcd.clear (); // pusti a3 ton (10, 220, 300); lcd.print ("220"); kašnjenje (400); lcd.clear (); // reproduciranje b3 tona (10, 246.94, 900); lcd.print ("246.94"); kašnjenje (1000); lcd.clear ();

// igraj e3

ton (10, 164.81, 300); lcd.print ("164.81"); kašnjenje (400); lcd.clear (); // pusti g3# ton (10, 207.65, 300); lcd.print ("207.65"); kašnjenje (400); lcd.clear (); // pusti b3 ton (10, 246.94, 300); lcd.print ("246.94"); kašnjenje (400); lcd.clear (); // pusti c4 ton (10, 261.63, 900); lcd.print ("261.63"); kašnjenje (1000); lcd.clear (); // pusti e ton (10, 164.81, 300); lcd.print ("164.81"); kašnjenje (400); lcd.clear (); // pusti e4 ton (10, 329.63, 300); lcd.print ("329,63"); kašnjenje (400); lcd.clear (); // reproduciranje d4# tona (10, 311.13, 300); lcd.print ("311.13"); kašnjenje (400); lcd.clear (); // pusti e4 ton (10, 329.63, 300); lcd.print ("329,63"); kašnjenje (400); lcd.clear (); // reproduciranje d4# tona (10, 311.13, 300); lcd.print ("311.13"); kašnjenje (400); lcd.clear (); // pusti e4 ton (10, 329.63, 300); lcd.print ("329,63"); kašnjenje (400); lcd.clear (); // pusti b3 ton (10, 246.94, 300); lcd.print ("246.94"); kašnjenje (400); lcd.clear (); // reproduciranje d4 tona (10, 293.66, 300); lcd.print ("293.66"); kašnjenje (400); lcd.clear (); // reproduciranje c4 tona (10, 261.63, 300); lcd.print ("261.63"); kašnjenje (400); lcd.clear (); // pusti a3 ton (10, 220, 900); lcd.print ("220.0"); kašnjenje (1000); lcd.clear (); // reproduciranje d3 tona (10, 146.83, 300); lcd.print ("146.83"); kašnjenje (400); lcd.clear (); // reproduciranje f3 tona (10, 174.61, 300); // eeprom 20--6 yesno, bljeskalica 65-00 noyes lcd.print ("174,61"); kašnjenje (400); lcd.clear (); // pusti a3 ton (10, 220, 300); lcd.print ("220.0"); kašnjenje (400); lcd.clear (); // reproduciranje b3 tona (10, 246.94, 900); lcd.print ("246.94"); kašnjenje (1000); lcd.clear (); // reproduciranje f3 tona (10, 174.61, 300); lcd.print ("174,61"); kašnjenje (400); lcd.clear (); // reproduciranje c4 tona (10, 261.63, 300); lcd.print ("261.63"); kašnjenje (400); lcd.clear (); // pusti b3 ton (10, 246.94, 300); lcd.print ("246.94"); kašnjenje (400); lcd.clear (); // pusti a3 ton (10, 220, 900); lcd.print ("220.0"); kašnjenje (1000); lcd.clear (); // pusti b3 ton (10, 246.94, 300); lcd.print ("246.94"); kašnjenje (400); lcd.clear (); // reproduciranje c4 tona (10, 261.63, 300); lcd.print ("261.63"); kašnjenje (400); lcd.clear (); // reproduciranje d4 tona (10, 293.66, 300); lcd.print ("293.66"); kašnjenje (400); lcd.clear (); // reproduciranje tona e4 (10, 329.63, 900); lcd.print ("329,63"); kašnjenje (1000); lcd.clear (); // pusti g3 ton (10, 196, 300); lcd.print ("196.0"); kašnjenje (400); lcd.clear (); // reproduciranje f4 tona (10, 349.23, 300); lcd.print ("349.23"); kašnjenje (400); lcd.clear (); // pusti e4 ton (10, 329.23, 300); lcd.print ("329,23"); kašnjenje (400); lcd.clear (); // reproduciranje d4 tona (10, 293.63, 900); lcd.print ("293.63"); kašnjenje (1000); lcd.clear (); // pusti e3 ton (10, 164.81, 300); lcd.print ("164.81"); kašnjenje (400); lcd.clear (); // pusti e4 ton (10, 329.63, 300); lcd.print ("329,63"); kašnjenje (400); lcd.clear (); // reproduciranje d4 tona (10, 293.63, 300); lcd.print ("293.63"); kašnjenje (400); lcd.clear (); // pusti c4 ton (10, 261.63, 900); lcd.print ("261.63"); kašnjenje (1000); lcd.clear (); // reproduciranje d3 tona (10, 146.83, 300); lcd.print ("146.83"); kašnjenje (400); lcd.clear (); // reproduciranje d4 tona (10, 293.63, 300); lcd.print ("293.63"); kašnjenje (400); lcd.clear (); // reproduciranje c4 tona (10, 261.63, 300); lcd.print ("261.63"); kašnjenje (400); lcd.clear (); // reproduciranje b3 tona (10, 246.94, 900); lcd.print ("246.94"); kašnjenje (1000); lcd.clear (); // pusti e4 ton (10, 329.63, 300); lcd.print ("329,63"); kašnjenje (400); lcd.clear (); // reproduciranje d4# tona (10, 311.13, 300); lcd.print ("311.13"); kašnjenje (350); lcd.clear (); // pusti e4 ton (10, 329.63, 300); lcd.print ("329,63"); kašnjenje (350); lcd.clear (); // reproduciranje d4# tona (10, 311.13, 300); lcd.print ("311.13"); kašnjenje (350); lcd.clear (); // pusti e4 ton (10, 329.63, 300); lcd.print ("329,63"); kašnjenje (350); lcd.clear (); // reproduciranje b3 tona (10, 246.94, 300); lcd.print ("246.94"); kašnjenje (400); lcd.clear (); // reproduciranje d4 tona (10, 293.66, 300); lcd.print ("293.66"); kašnjenje (400); lcd.clear (); // reproduciranje c4 tona (10, 261.63, 300); lcd.print ("261.63"); kašnjenje (400); lcd.clear (); // pusti a3 ton (10, 220, 900); lcd.print ("220.0"); kašnjenje (1000); lcd.clear (); // reproduciranje d3 tona (10, 146.83, 300); lcd.print ("146.83"); kašnjenje (350); lcd.clear (); // reproduciranje f3 tona (10, 174.61, 300); lcd.print ("174,61"); kašnjenje (400); lcd.clear (); // pusti a3 ton (10, 220, 300); lcd.print ("220.0"); kašnjenje (400); // pusti b3 lcd.clear (); ton (10, 246,94, 900); lcd.print ("246.94"); kašnjenje (1000); lcd.clear (); // pusti e3 ton (10, 164.81, 300); lcd.print ("164.81"); kašnjenje (400); lcd.clear (); // pusti g#3 ton (10, 207.65, 300); lcd.print ("207.65"); kašnjenje (400); lcd.clear (); // pusti b3 ton (10, 246.94, 300); lcd.print ("246.94"); kašnjenje (400); lcd.clear (); // pusti c4 ton (10, 261.63, 900); lcd.print ("261.63"); kašnjenje (1000); kašnjenje (300); lcd.clear (); // pusti e3 ton (10, 164.81, 300); lcd.print ("164.81"); kašnjenje (400); lcd.clear (); // pusti e4 ton (10, 329.63, 300); lcd.print ("329,63"); kašnjenje (400); lcd.clear (); // reproduciranje d4# tona (10, 311.13, 300); lcd.print ("311.13"); kašnjenje (400); lcd.clear (); // pusti e4 ton (10, 329.63, 300); lcd.print ("329,63"); kašnjenje (400); lcd.clear (); // reproduciranje d4# tona (10, 311.13, 300); lcd.print ("311.13"); kašnjenje (400); lcd.clear (); // pusti e4 ton (10, 329.63, 300); lcd.print ("329,63"); kašnjenje (400); lcd.clear (); // pusti b3 ton (10, 246.94, 300); lcd.print ("246.94"); kašnjenje (400); lcd.clear (); // reproduciranje d4 tona (10, 293.66, 300); lcd.print ("293.66"); kašnjenje (400); lcd.clear (); // reproduciranje c4 tona (10, 261.63, 300); lcd.print ("261.63"); kašnjenje (400); lcd.clear (); // pusti a3 ton (10, 220, 900); lcd.print ("220.0"); kašnjenje (1000); lcd.clear (); // reproduciranje d3 tona (10, 146.83, 300); lcd.print ("146.83"); kašnjenje (400); lcd.clear (); // reproduciranje f3 tona (10, 174.61, 300); lcd.print ("174,61"); kašnjenje (400); lcd.clear (); // pusti a3 ton (10, 220, 300); lcd.print ("220.0"); kašnjenje (400); lcd.clear (); // reproduciranje b3 tona (10, 246.94, 900); lcd.print ("246.94"); kašnjenje (1000); lcd.clear (); // reproduciranje f3 tona (10, 174.61, 300); lcd.print ("174,61"); kašnjenje (400); lcd.clear (); // reproduciranje c4 tona (10, 261.63, 300); lcd.print ("261.63"); kašnjenje (400); lcd.clear (); // pusti b3 ton (10, 246.94, 300); lcd.print ("246.94"); kašnjenje (400); lcd.clear (); // pusti a3 ton (10, 220, 900); lcd.print ("220.0"); kašnjenje (1000); lcd.clear (); }

Korak 5: Prijenos koda: što sve to znači?

Definirajmo neke funkcije na engleskom jeziku kako biste razumjeli kôd.

ton (x, y, z); = puštanje tona s visinom y Hertz, do zujalice na pin x, z milisekundi.

lcd.print ("XYZ"); = ispis poruke s znakovima XYZ na LCD zaslon. (npr. prikaz Hertz tona)

kašnjenje (x); = pauza x milisekundi.

const int X = Y = postavite konstantnu varijablu X na pin Y i koristite X ili Y za dodjeljivanje zadataka uređaju.

lcd.clear (); = očistite LCD zaslon i resetirajte novi zaslon

pinMode (X, OUTPUT); = postavite pin X za način rada izlaza

Nakon što razumijete sve ove funkcije, možete jednostavno zamijeniti varijable podacima koje prikupljate prilikom prevođenja pjesme, a zatim možete kodirati svoju pjesmu!

Korak 6: Završeno !

Završeno !!!
Završeno !!!
Završeno !!!
Završeno !!!

Ili imate Arduino koji svira Fur Elise i prikazuje notne vrijednosti u Hertzu, ili ste napravili Arduino koji svira melodiju pjesme koju ste odabrali i prikazuje tekst koji želite prikazati. Hvala vam što ste posjetili ovaj vodič i nadam se ovom projektu na Arduinu.

Preporučeni: