Sadržaj:
- Korak 1: Pretvorite glazbenu partituru u digitalne note: Vrijednosti kašnjenja
- Korak 2: Pretvorite glazbenu partituru u digitalne note: Hertz vrijednosti
- Korak 3: Dizajn kruga
- Korak 4: Prijenos koda: upute
- Korak 5: Prijenos koda: što sve to znači?
- Korak 6: Završeno !
Video: Digitaliziranje pjesme s Arduinom: 6 koraka
2024 Autor: John Day | [email protected]. Zadnja promjena: 2024-01-30 09:37
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
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
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
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 !
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:
Tekst pjesme/citat Gimp projekt: 8 koraka
Lyric/Quote Gimp Project: Pozdrav !! Dobrodošli u moj prvi EVER Instructable! Ja sam Maja, ali prolazim Kako ste ovdje na Instructables! Ovaj Instructable bi trebao biti dovršen korištenjem GIMP 2. Nikada nisam probao prvi GIMP pa nisam siguran hoće li sadržavati potrebne sposobnosti
Prilagodba zvona na vratima zvuku digitalne pjesme: 5 koraka
Prilagođavanje video zvona na zvono digitalnoj pjesmi: Ukratko, Best Buy mi je rekao da ne mogu instalirati zvono Simplisafe s zvonom na melodiji pjesme. Čitajući stotine postova rečeno je da se to ne može učiniti. Simplisafe je rekao da se to ne može učiniti, ali je svejedno isporučio komplet. Komplet konektora je za šipku
Reproducirajte pjesme s Arduinom pomoću ADC -a na PWM na Flyback transformatoru ili zvučniku: 4 koraka
Reproducirajte pjesme s Arduinom pomoću ADC -a na PWM -u na Flyback Transformer -u ili zvučniku: Zdravo dečki, ovo je drugi dio mog drugog uputstva (što je bilo mnogo teško), U osnovi, u ovom projektu sam koristio ADC i TIMERS na svom Arduinu za pretvoriti audio signal u PWM signal.Ovo je mnogo lakše od moje prethodne Instructa
Reproducirajte pjesme (MP3) s Arduinom pomoću PWM -a na zvučniku ili Flyback transformatoru: 6 koraka (sa slikama)
Reproducirajte pjesme (MP3) s Arduinom pomoću PWM -a na zvučniku ili Flyback transformatoru: Zdravo dečki, ovo je moje prvo uputstvo, nadam se da će vam se svidjeti !! U osnovi, u ovom projektu koristio sam serijsku komunikaciju između svog Arduina i prijenosnog računala, za prijenos glazbenih podataka s prijenosnog računala na Arduino. A pomoću Arduino TIMERS t
Snimanje pjesme na IPad: 11 koraka (sa slikama)
Snimanje pjesme na iPad: Moja prijateljica nedavno me pitala kako bi mogla snimiti neke svoje pjesme samo s gitarom i iPadom. Pitao sam je ima li još koji hardver za snimanje, poput mikrofona i sučelja za snimanje. Nažalost, odgovor je bio negativan, a ona nije