Kazalo:

Digitalizacija pesmi z Arduinom: 6 korakov
Digitalizacija pesmi z Arduinom: 6 korakov

Video: Digitalizacija pesmi z Arduinom: 6 korakov

Video: Digitalizacija pesmi z Arduinom: 6 korakov
Video: Настройка 3D-принтера с помощью MKS sGen L v1.0 Часть 3 2024, November
Anonim
Digitalizirajte pesem z Arduinom
Digitalizirajte pesem z Arduinom

Želel sem ustvariti projekt, ki bi združil dva moja najljubša predmeta: znanost in glasbo. Pomislil sem na vse načine, kako lahko združim ti dve domeni, in mislil sem, da bi bilo zanimivo narediti Arduino, da igra Fur Elise, medtem ko prikazuje višino note v Hertzu. Zdaj pa začnimo graditi!

Potrebovali boste en Arduino Uno ali Mega, veliko mostičnih kablov, piezo zvočni signal, ploščo, LCD zaslon velikosti 16*2 z vsemi nameščenimi zatiči brisalcev in 10k potenciometer (morda jih boste slišali tudi kot potmetre)). Najbolje je, da vse te zaloge sestavite, preden začnemo gradnjo.

1. korak: Pretvorite glasbeno glasbo v digitalne opombe: vrednosti zamude

Pretvorite glasbeno glasbo v digitalne zapiske: zakasnitvene vrednosti
Pretvorite glasbeno glasbo v digitalne zapiske: zakasnitvene vrednosti

Obstajata dva koraka za digitalno prepis note iz partiture v njen digitalni ekvivalent. Najprej bomo morali v milisekundah zapisati čas, ko zapisek traja. Za to nalogo sem uporabil grafikon, ki sem ga našel na spletu. Glede na to, ali je nota polovična, četrtinska, osma itd., Sem dolžino note prepisal v milisekunde. Te številke lahko vidite v moji kodi kot delay (); funkcijo in število v oklepajih bo vrednost zakasnitve v milisekundah, ki smo jo določili v tem koraku.

2. korak: Pretvorite glasbo v digitalne zapiske: Hertz vrednosti

Pretvorite glasbeno partituro v digitalne zapiske: Hertz vrednosti
Pretvorite glasbeno partituro v digitalne zapiske: Hertz vrednosti

Preden začnem ta korak, naj opredelim nekaj tehničnih izrazov. "Vrednost" note se lahko zamenljivo uporablja z besedami "višina", "vrednost" in "nota". Zdaj morate prebrati vsako noto pesmi iz partiture. Nato boste morali vsako noto prevesti v Hertz z uporabo glasbene tabele Hertz, ki jo lahko preprosto najdete na spletu. Ne pozabite si, da je srednji C na mizi naveden kot C4, oktava višja pa je C5 itd. Ko bodo vse zapiske prepisane v Hertz, boste vrednosti vnesli v funkcijski ton (x, y, z); kjer je X številka pin ali const int, način definiranja spremenljivk, ki ga bom razložil kasneje. Y bo vrednost Herca, ki ste jo pravkar prepisali, Z pa trajanje note v milisekundah, zaokroženo na najbližjo stotino. Zamuda(); vrednosti bodo trajanje zapiska. Zdaj pa oblikujmo vezje, ki lahko predvaja glasbo.

3. korak: Oblikovanje vezja

Oblikovanje vezja
Oblikovanje vezja

Zdaj, ko smo vse zapiske prevedli v digitalne vrednosti, ki jih računalnik lahko razume, je čas za izgradnjo vezja. Začnite tako, da vzamete ploščico in LCD zaslon s prvim zatičem (GND) postavite v vrstico 14. Zvočnik postavite kamor koli želite, poleg njega pa potenciometer. Cilj je vse poravnati in zmanjšati nered žic. Arduino postavite poleg mize in priključite 5v zatič na pozitivno vodilo plošče, ozemljitveni zatič pa na negativno tirnico. Zdaj smo pripravljeni povezati skakalce med Arduinom in komponentami.

Zdaj pa se pogovorimo o zatičih na LCD -ju in o tem, kako jih povezati.

GND pomeni ozemljitev, to je negativna žica v enosmernem toku. Priključite GND na negativno tirnico plošče.

VCC pomeni napetost na skupnem zbiralniku in tu priključite 5-voltni vir napajanja (pozitivni vodnik).

VO pomeni Contrast, priklopite ga na srednji zatič potenciometra. Levi zatič potenciometra priključite na pozitivno vodilo, desni pa na ozemljitveni vodnik.

RS pomeni Register Select, ki ga Arduino uporablja za prikaz zaslona, kje naj shrani podatke. Priključite ta pin na pin 12 na Arduinu.

RW pomeni pin za branje/pisanje, s katerim Arduino preveri, ali zaslon prikazuje tisto, kar ste programirali. Ta pin priklopite na negativno vodilo na plošči.

E pomeni Omogoči, ki LCD -ju pove, katere slikovne pike naj omogoči (vklopi) ali onemogoči (izklopi). Priključite ta pin na Arduino pin 11.

D4, D5, D6 in D7 so prikazni zatiči, ki nadzorujejo prikazane znake in črke. Povežite jih z zatiči Arduino 5, 4, 3 in 2.

Pin A, včasih označen kot LED, je LED anoda za osvetlitev ozadja. To povežite s pozitivnim vodilom z žico ali z 220-ohmskim uporom. Upor je boljši za daljšo uporabo, saj prihrani LCD, če pa naprave ne boste uporabljali podnevi in ponoči, upora ne potrebujete.

Pin K, včasih tudi (zmedeno) označen kot LED, je ozemljitveni zatič LED. Priključite ga na ozemljitveno tirnico.

4. korak: Nalaganje kode: kako

Arduino priključite na USB računalnika. Naložite naslednjo kodo s programerjem Arduino IDE.

#vključi

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

void setup () {

// nastavimo število stolpcev in vrstic LCD -ja: lcd.begin (16, 2); // Natisnite sporočilo na LCD. lcd.print ("Hertz Pitch:!"); zamuda (1000); void loop () {// predvajanje e4 zakasnitve (600); // zaustavitev za 0,6 sekunde ton (10, 329,63, 300); // predvajanje e do brenčalnika na pin 10, zadnja 0,3 sekunde lcd.print (" 329,63 "); // prikaže sporočilo na LCD -ju" 329,63"

zakasnitev (350); // zakasnitev 0,35 sekunde

lcd.clear (); // počistite LCD in ponastavite za naslednje sporočilo // predvajajte d4# ton (10, 311.13, 300); lcd.print ("311.13"); zamuda (350); lcd.clear (); // predvajaj ton e4 (10, 329.63, 300); lcd.print ("329,63"); zamuda (350); lcd.clear (); // predvajaj d4# ton (10, 311.13, 300); lcd.print ("311.13"); zamuda (350); lcd.clear (); // predvajaj ton e4 (10, 329.63, 300); lcd.print ("329,63"); zamuda (350); lcd.clear (); // predvajaj ton b3 (10, 246.94, 300); lcd.print ("246,94"); zamuda (400); lcd.clear (); // predvajaj ton d4 (10, 293.66, 300); lcd.print ("293.66"); zamuda (400); lcd.clear (); // predvajaj ton c4 (10, 261.63, 300); lcd.print ("261,63"); zamuda (400); lcd.clear (); // predvajaj ton a3 (10, 220, 900); lcd.print ("220.0"); zamuda (1000); lcd.clear (); // line60 // helpave // avrdude.failure.eeprom // predvaja d3 ton (10, 146.83, 300); lcd.print ("146,63"); zamuda (350); lcd.clear (); // predvajaj ton f3 (10, 174.61, 300); lcd.print ("174,61"); zamuda (400); lcd.clear (); // predvajaj ton a3 (10, 220, 300); lcd.print ("220"); zamuda (400); lcd.clear (); // predvajaj ton b3 (10, 246.94, 900); lcd.print ("246,94"); zamuda (1000); lcd.clear ();

// predvajaj e3

ton (10, 164,81, 300); lcd.print ("164,81"); zamuda (400); lcd.clear (); // predvajaj ton g3# (10, 207.65, 300); lcd.print ("207.65"); zamuda (400); lcd.clear (); // predvajaj ton b3 (10, 246.94, 300); lcd.print ("246,94"); zamuda (400); lcd.clear (); // predvajaj ton c4 (10, 261.63, 900); lcd.print ("261,63"); zamuda (1000); lcd.clear (); // predvajaj e ton (10, 164.81, 300); lcd.print ("164,81"); zamuda (400); lcd.clear (); // predvajaj ton e4 (10, 329.63, 300); lcd.print ("329,63"); zamuda (400); lcd.clear (); // predvajaj d4# ton (10, 311.13, 300); lcd.print ("311.13"); zamuda (400); lcd.clear (); // predvajaj ton e4 (10, 329.63, 300); lcd.print ("329,63"); zamuda (400); lcd.clear (); // predvajaj d4# ton (10, 311.13, 300); lcd.print ("311.13"); zamuda (400); lcd.clear (); // predvajaj ton e4 (10, 329.63, 300); lcd.print ("329,63"); zamuda (400); lcd.clear (); // predvajaj ton b3 (10, 246.94, 300); lcd.print ("246,94"); zamuda (400); lcd.clear (); // predvajaj ton d4 (10, 293.66, 300); lcd.print ("293.66"); zamuda (400); lcd.clear (); // predvajaj ton c4 (10, 261.63, 300); lcd.print ("261,63"); zamuda (400); lcd.clear (); // predvajaj ton a3 (10, 220, 900); lcd.print ("220.0"); zamuda (1000); lcd.clear (); // predvajaj ton d3 (10, 146.83, 300); lcd.print ("146,83"); zamuda (400); lcd.clear (); // predvajaj ton f3 (10, 174.61, 300); // eeprom 20–6 yesno, bliskavica 65–0 noyes lcd.print ("174,61"); zamuda (400); lcd.clear (); // predvajaj ton a3 (10, 220, 300); lcd.print ("220.0"); zamuda (400); lcd.clear (); // predvajaj ton b3 (10, 246.94, 900); lcd.print ("246,94"); zamuda (1000); lcd.clear (); // predvajaj ton f3 (10, 174.61, 300); lcd.print ("174,61"); zamuda (400); lcd.clear (); // predvajaj ton c4 (10, 261.63, 300); lcd.print ("261,63"); zamuda (400); lcd.clear (); // predvajaj ton b3 (10, 246.94, 300); lcd.print ("246,94"); zamuda (400); lcd.clear (); // predvajaj ton a3 (10, 220, 900); lcd.print ("220,0"); zamuda (1000); lcd.clear (); // predvajaj ton b3 (10, 246.94, 300); lcd.print ("246,94"); zamuda (400); lcd.clear (); // predvajaj ton c4 (10, 261.63, 300); lcd.print ("261,63"); zamuda (400); lcd.clear (); // predvajaj ton d4 (10, 293.66, 300); lcd.print ("293.66"); zamuda (400); lcd.clear (); // predvajaj ton e4 (10, 329.63, 900); lcd.print ("329,63"); zamuda (1000); lcd.clear (); // predvajaj ton g3 (10, 196, 300); lcd.print ("196,0"); zamuda (400); lcd.clear (); // predvajaj ton f4 (10, 349.23, 300); lcd.print ("349.23"); zamuda (400); lcd.clear (); // predvajaj ton e4 (10, 329.23, 300); lcd.print ("329,23"); zamuda (400); lcd.clear (); // predvajaj ton d4 (10, 293.63, 900); lcd.print ("293.63"); zamuda (1000); lcd.clear (); // predvajaj ton e3 (10, 164.81, 300); lcd.print ("164,81"); zamuda (400); lcd.clear (); // predvajaj ton e4 (10, 329.63, 300); lcd.print ("329,63"); zamuda (400); lcd.clear (); // predvajaj ton d4 (10, 293.63, 300); lcd.print ("293.63"); zamuda (400); lcd.clear (); // predvajaj ton c4 (10, 261.63, 900); lcd.print ("261,63"); zamuda (1000); lcd.clear (); // predvajaj ton d3 (10, 146.83, 300); lcd.print ("146,83"); zamuda (400); lcd.clear (); // predvajaj ton d4 (10, 293.63, 300); lcd.print ("293.63"); zamuda (400); lcd.clear (); // predvajaj ton c4 (10, 261.63, 300); lcd.print ("261,63"); zamuda (400); lcd.clear (); // predvajaj ton b3 (10, 246.94, 900); lcd.print ("246,94"); zamuda (1000); lcd.clear (); // predvajaj ton e4 (10, 329.63, 300); lcd.print ("329,63"); zamuda (400); lcd.clear (); // predvajaj d4# ton (10, 311.13, 300); lcd.print ("311.13"); zamuda (350); lcd.clear (); // predvajaj ton e4 (10, 329.63, 300); lcd.print ("329,63"); zamuda (350); lcd.clear (); // predvajaj d4# ton (10, 311.13, 300); lcd.print ("311.13"); zamuda (350); lcd.clear (); // predvajaj ton e4 (10, 329.63, 300); lcd.print ("329,63"); zamuda (350); lcd.clear (); // predvajaj ton b3 (10, 246.94, 300); lcd.print ("246,94"); zamuda (400); lcd.clear (); // predvajaj ton d4 (10, 293.66, 300); lcd.print ("293.66"); zamuda (400); lcd.clear (); // predvajaj ton c4 (10, 261.63, 300); lcd.print ("261,63"); zamuda (400); lcd.clear (); // predvajaj ton a3 (10, 220, 900); lcd.print ("220.0"); zamuda (1000); lcd.clear (); // predvajaj ton d3 (10, 146.83, 300); lcd.print ("146,83"); zamuda (350); lcd.clear (); // predvajaj ton f3 (10, 174.61, 300); lcd.print ("174,61"); zamuda (400); lcd.clear (); // predvajaj ton a3 (10, 220, 300); lcd.print ("220.0"); zamuda (400); // predvajaj b3 lcd.clear (); ton (10, 246,94, 900); lcd.print ("246,94"); zamuda (1000); lcd.clear (); // predvajaj ton e3 (10, 164.81, 300); lcd.print ("164,81"); zamuda (400); lcd.clear (); // predvajaj ton#3 (10, 207.65, 300); lcd.print ("207.65"); zamuda (400); lcd.clear (); // predvajaj ton b3 (10, 246.94, 300); lcd.print ("246,94"); zamuda (400); lcd.clear (); // predvajaj ton c4 (10, 261.63, 900); lcd.print ("261,63"); zamuda (1000); zamuda (300); lcd.clear (); // predvajaj ton e3 (10, 164.81, 300); lcd.print ("164,81"); zamuda (400); lcd.clear (); // predvajaj ton e4 (10, 329.63, 300); lcd.print ("329,63"); zamuda (400); lcd.clear (); // predvajaj d4# ton (10, 311.13, 300); lcd.print ("311.13"); zamuda (400); lcd.clear (); // predvajaj ton e4 (10, 329.63, 300); lcd.print ("329,63"); zamuda (400); lcd.clear (); // predvajaj d4# ton (10, 311.13, 300); lcd.print ("311.13"); zamuda (400); lcd.clear (); // predvajaj ton e4 (10, 329.63, 300); lcd.print ("329,63"); zamuda (400); lcd.clear (); // predvajaj ton b3 (10, 246.94, 300); lcd.print ("246,94"); zamuda (400); lcd.clear (); // predvajaj ton d4 (10, 293.66, 300); lcd.print ("293.66"); zamuda (400); lcd.clear (); // predvajaj ton c4 (10, 261.63, 300); lcd.print ("261,63"); zamuda (400); lcd.clear (); // predvajaj ton a3 (10, 220, 900); lcd.print ("220.0"); zamuda (1000); lcd.clear (); // predvajaj ton d3 (10, 146.83, 300); lcd.print ("146,83"); zamuda (400); lcd.clear (); // predvajaj ton f3 (10, 174.61, 300); lcd.print ("174,61"); zamuda (400); lcd.clear (); // predvajaj ton a3 (10, 220, 300); lcd.print ("220.0"); zamuda (400); lcd.clear (); // predvajaj ton b3 (10, 246.94, 900); lcd.print ("246,94"); zamuda (1000); lcd.clear (); // predvajaj ton f3 (10, 174.61, 300); lcd.print ("174,61"); zamuda (400); lcd.clear (); // predvajaj ton c4 (10, 261.63, 300); lcd.print ("261,63"); zamuda (400); lcd.clear (); // predvajaj ton b3 (10, 246.94, 300); lcd.print ("246,94"); zamuda (400); lcd.clear (); // predvajaj ton a3 (10, 220, 900); lcd.print ("220.0"); zamuda (1000); lcd.clear (); }

5. korak: Nalaganje kode: kaj vse to pomeni?

Določimo nekatere funkcije v angleščini, da boste razumeli kodo.

ton (x, y, z); = predvajajte ton z višino y Hertz, do brenčal na pin x, za z milisekunde.

lcd.print ("XYZ"); = natisnite sporočilo z znaki XYZ na LCD zaslon. (na primer prikaz Hertz smole)

zamuda (x); = pavza za x milisekunde.

const int X = Y = nastavite konstantno spremenljivko X na pin Y in uporabite X ali Y za dodelitev nalog napravi.

lcd.clear (); = počistite LCD zaslon in ponastavite na nov zaslon

pinMode (X, OUTPUT); = nastavite pin X za način izhoda

Ko razumete vse te funkcije, lahko spremenljivke enostavno zamenjate s podatki, ki jih zberete pri prevajanju pesmi, nato pa kodirate svojo pesem!

6. korak: Končano !!

Dokončano!!!
Dokončano!!!
Dokončano!!!
Dokončano!!!

Ali imate Arduino, ki igra Fur Elise in prikazuje notne vrednosti v Hertzu, ali pa ste naredili Arduino, ki predvaja melodijo pesmi, ki ste jo izbrali, in prikazuje besedilo, ki ste ga želeli prikazati. Hvala, ker ste obiskali to vadnico, in upam, da vam bom predstavil ta projekt na Arduinu.

Priporočena: