Sisukord:

Digiteerige laul Arduino abil: 6 sammu
Digiteerige laul Arduino abil: 6 sammu

Video: Digiteerige laul Arduino abil: 6 sammu

Video: Digiteerige laul Arduino abil: 6 sammu
Video: Машина дьявола ► 3 Прохождение The Beast Inside 2024, November
Anonim
Digiteerige laul Arduino abil
Digiteerige laul Arduino abil

Tahtsin luua projekti, mis ühendaks kaks minu lemmikteemat: teaduse ja muusika. Mõtlesin kõikidele viisidele, kuidas neid kahte domeeni ühendada, ja arvasin, et oleks huvitav teha Arduino näidend Fur Elise, näidates samal ajal Hertzi noodi helikõrgust. Nüüd hakkame ehitama!

Teil on vaja ühte Arduino Unot või Megat, palju hüppajakaableid, Piezo -helisignaali, leivaplaati, 16*2 LCD -ekraani, millel on kõik klaasipuhasti tihvtid, ja 10k potentsiomeetrit (võite kuulda, et neid nimetatakse ka potimeetriteks)). Parim on kõik need tarvikud enne ehituse alustamist kokku võtta.

Samm: teisendage muusikaskoor digitaalsetesse märkmetesse: viivitusväärtused

Muuda muusikaline skoor digitaalseteks märkmeteks: viivitusväärtused
Muuda muusikaline skoor digitaalseteks märkmeteks: viivitusväärtused

Noodi digitaalseks transkribeerimiseks partituurist selle digitaalseks ekvivalendiks on kaks sammu. Esiteks peame kirjutama aja, mil noot kestab millisekundites. Ma kasutasin selle ülesande jaoks Internetist leitud diagrammi. Lähtudes sellest, kas noot oli poolik, veerandnoot, kaheksas noot jne, kirjutasin noodi pikkuse millisekunditesse. Neid numbreid näete minu koodis kui viivitust (); funktsioon ja sulgudes olev number on selles etapis määratud viivituse väärtus millisekundites.

2. samm: teisendage muusikaline skoor digitaalsetesse märkmetesse: Hertsi väärtused

Muuda muusikaline skoor digitaalseteks märkmeteks: Hertsi väärtused
Muuda muusikaline skoor digitaalseteks märkmeteks: Hertsi väärtused

Enne selle sammu alustamist lubage mul määratleda mõned tehnilised terminid. Noodi "väärtust" saab kasutada vaheldumisi sõnadega "samm", "väärtus" ja "noot". Nüüd peate laulu iga noodi partituurist välja lugema. Seejärel peate iga noodi tõlkima hertsi, kasutades muusikat Hertzi tabelisse, mille leiate hõlpsalt veebist. Üks asi, mida meeles pidada, on see, et keskmine C on tabelis kirjas kui C4 ja oktaav kõrgemal on C5 jne. Kui need märkmed on kõik hertsi kirjutatud, paigutate väärtused funktsioonitooni (x, y, z); kus X on pin -number või const int, muutujate määratlemise viis, mida ma hiljem selgitan. Y on äsja transkribeeritud Hertzi väärtus ja Z on noodi kestus millisekundites, ümardatuna lähima sajandikuni. Hilinemine(); väärtused on märkme kestus. Nüüd kujundame vooluringi, mis suudab muusikat esitada.

3. samm: vooluahela kujundus

Vooluahela disain
Vooluahela disain

Nüüd, kui oleme kõik märkmed tõlkinud digitaalsetesse väärtustesse, millest arvuti saab aru, on aeg vooluahel üles ehitada. Alustuseks võtke leivaplaat ja asetage vedelkristallekraan esimese rea (GND) abil reale 14. Asetage sumin kõikjale, kuhu soovite, ja asetage selle kõrvale potentsiomeeter. Eesmärk on kõik ritta seada, et vähendada juhtmete segadust. Asetage Arduino leivaplaadi kõrvale ja ühendage 5v tihvt leivaplaadi positiivse rööpaga ja maandusnõel negatiivse rööpaga. Nüüd oleme valmis ühendama džemprid Arduino ja komponentide vahel.

Räägime nüüd LCD -ekraanil olevatest tihvtidest ja nende ühendamisest.

GND tähistab maandust, see on alalisvoolu negatiivne juhe. Ühendage GND leivaplaadi negatiivse rööpaga.

VCC tähistab ühise kollektori pinget ja siin ühendate oma 5-voldise toiteallika (positiivne toiteliin).

VO tähistab kontrasti, ühendage see potentsiomeetri keskmise tihvtiga. Ühendage potentsiomeetri vasak tihvt positiivse toitekaabliga ja parem tihvt maandusliistuga.

RS tähistab Register Select ja seda kasutab Arduino, et öelda ekraanile, kuhu andmeid salvestada. Ühendage see tihvt Arduino tihvtiga 12.

RW tähistab lugemis-/kirjutamisnõela, mille abil Arduino kontrollib, kas ekraanil kuvatakse see, mille olete selle programmeerinud. Ühendage see tihvt leivaplaadi negatiivse rööpaga.

E tähistab lubamist, mis ütleb vedelkristallekraanile, millised pikslid lubada (sisse lülitada) või keelata (välja lülitada). Ühendage see tihvt Arduino tihvtiga 11.

D4, D5, D6 ja D7 on kuvari nööpnõelad, mis juhivad kuvatavaid tähti ja tähti. Ühendage need vastavalt Arduino tihvtidega 5, 4, 3 ja 2.

Pin A, mõnikord märgistatud LED, on taustvalgustuse LED -anood. Ühendage see juhtmega või 220-oomise takistiga positiivse toitekaabliga. Takisti on pikemaks kasutamiseks parem, kuna säästab vedelkristallekraani, kuid kui seadet ei kasutata päeval ja öösel, ei vaja te takisti.

Pin K, mõnikord ka (segaselt) märgistatud LED, on LED -i maandusnõel. Ühendage see maandusjuhtmega.

4. samm: koodi üleslaadimine: juhised

Ühendage Arduino arvuti USB -kaabliga. Laadige Arduino IDE programmeerija abil üles järgmine kood.

#kaasake

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

tühine seadistus () {

// seadistage LCD veergude ja ridade arv: lcd.begin (16, 2); // Printige teade LCD -ekraanile. lcd.print ("Hertsi pigi:!"); viivitus (1000); void loop () {// esita e4 viivitus (600); // paus 0,6 sekundiks toon (10, 329,63, 300); // mängi e helinale tihvti 10 juures, kesta 0,3 sekundit lcd.print (" 329.63 "); // kuvatakse teade LCD -ekraanil" 329.63"

viivitus (350); // viivitus 0,35 sekundit

lcd.clear (); // tühjendage LCD ja lähtestage järgmise sõnumi jaoks // esitage d4# toon (10, 311.13, 300); lcd.print ("311.13"); viivitus (350); lcd.clear (); // esita e4 toon (10, 329,63, 300); lcd.print ("329,63"); viivitus (350); lcd.clear (); // esita d4# toon (10, 311.13, 300); lcd.print ("311.13"); viivitus (350); lcd.clear (); // esita e4 toon (10, 329,63, 300); lcd.print ("329,63"); viivitus (350); lcd.clear (); // esita b3 toon (10, 246,94, 300); lcd.print ("246,94"); viivitus (400); lcd.clear (); // mängida d4 tooni (10, 293,66, 300); lcd.print ("293,66"); viivitus (400); lcd.clear (); // mängida c4 tooni (10, 261,63, 300); lcd.print ("261.63"); viivitus (400); lcd.clear (); // mängida a3 tooni (10, 220, 900); lcd.print ("220.0"); viivitus (1000); lcd.clear (); // line60 // aitab päästa // avrdude.failure.eeprom // mängida d3 tooni (10, 146,83, 300); lcd.print ("146,63"); viivitus (350); lcd.clear (); // esita f3 toon (10, 174,61, 300); lcd.print ("174,61"); viivitus (400); lcd.clear (); // mängida a3 tooni (10, 220, 300); lcd.print ("220"); viivitus (400); lcd.clear (); // esita b3 toon (10, 246,94, 900); lcd.print ("246,94"); viivitus (1000); lcd.clear ();

// mängida e3

toon (10, 164,81, 300); lcd.print ("164,81"); viivitus (400); lcd.clear (); // esita g3# toon (10, 207,65, 300); lcd.print ("207,65"); viivitus (400); lcd.clear (); // esita b3 toon (10, 246,94, 300); lcd.print ("246,94"); viivitus (400); lcd.clear (); // mängida c4 tooni (10, 261,63, 900); lcd.print ("261.63"); viivitus (1000); lcd.clear (); // esita e toon (10, 164,81, 300); lcd.print ("164,81"); viivitus (400); lcd.clear (); // esita e4 toon (10, 329,63, 300); lcd.print ("329,63"); viivitus (400); lcd.clear (); // esita d4# toon (10, 311.13, 300); lcd.print ("311.13"); viivitus (400); lcd.clear (); // esita e4 toon (10, 329,63, 300); lcd.print ("329,63"); viivitus (400); lcd.clear (); // esita d4# toon (10, 311.13, 300); lcd.print ("311.13"); viivitus (400); lcd.clear (); // esita e4 toon (10, 329,63, 300); lcd.print ("329,63"); viivitus (400); lcd.clear (); // esita b3 toon (10, 246,94, 300); lcd.print ("246,94"); viivitus (400); lcd.clear (); // mängida d4 tooni (10, 293,66, 300); lcd.print ("293,66"); viivitus (400); lcd.clear (); // mängida c4 tooni (10, 261,63, 300); lcd.print ("261.63"); viivitus (400); lcd.clear (); // mängida a3 tooni (10, 220, 900); lcd.print ("220,0"); viivitus (1000); lcd.clear (); // esita d3 tooni (10, 146,83, 300); lcd.print ("146,83"); viivitus (400); lcd.clear (); // esita f3 toon (10, 174,61, 300); // eeprom 20--6 yesno, flash 65--0 noyes lcd.print ("174,61"); viivitus (400); lcd.clear (); // mängida a3 tooni (10, 220, 300); lcd.print ("220,0"); viivitus (400); lcd.clear (); // esita b3 toon (10, 246,94, 900); lcd.print ("246,94"); viivitus (1000); lcd.clear (); // esita f3 toon (10, 174,61, 300); lcd.print ("174,61"); viivitus (400); lcd.clear (); // mängida c4 tooni (10, 261,63, 300); lcd.print ("261.63"); viivitus (400); lcd.clear (); // esita b3 toon (10, 246,94, 300); lcd.print ("246,94"); viivitus (400); lcd.clear (); // mängida a3 tooni (10, 220, 900); lcd.print ("220.0"); viivitus (1000); lcd.clear (); // esita b3 toon (10, 246,94, 300); lcd.print ("246,94"); viivitus (400); lcd.clear (); // mängida c4 tooni (10, 261,63, 300); lcd.print ("261.63"); viivitus (400); lcd.clear (); // mängida d4 tooni (10, 293,66, 300); lcd.print ("293,66"); viivitus (400); lcd.clear (); // esita e4 toon (10, 329,63, 900); lcd.print ("329,63"); viivitus (1000); lcd.clear (); // mängida g3 tooni (10, 196, 300); lcd.print ("196,0"); viivitus (400); lcd.clear (); // esita f4 toon (10, 349.23, 300); lcd.print ("349,23"); viivitus (400); lcd.clear (); // esita e4 toon (10, 329,23, 300); lcd.print ("329,23"); viivitus (400); lcd.clear (); // mängida d4 tooni (10, 293,63, 900); lcd.print ("293,63"); viivitus (1000); lcd.clear (); // esita e3 toon (10, 164,81, 300); lcd.print ("164,81"); viivitus (400); lcd.clear (); // esita e4 toon (10, 329,63, 300); lcd.print ("329,63"); viivitus (400); lcd.clear (); // mängida d4 tooni (10, 293,63, 300); lcd.print ("293,63"); viivitus (400); lcd.clear (); // mängida c4 tooni (10, 261,63, 900); lcd.print ("261.63"); viivitus (1000); lcd.clear (); // esita d3 tooni (10, 146,83, 300); lcd.print ("146,83"); viivitus (400); lcd.clear (); // mängida d4 tooni (10, 293,63, 300); lcd.print ("293,63"); viivitus (400); lcd.clear (); // mängida c4 tooni (10, 261,63, 300); lcd.print ("261.63"); viivitus (400); lcd.clear (); // esita b3 toon (10, 246,94, 900); lcd.print ("246,94"); viivitus (1000); lcd.clear (); // esita e4 toon (10, 329,63, 300); lcd.print ("329,63"); viivitus (400); lcd.clear (); // esita d4# toon (10, 311.13, 300); lcd.print ("311.13"); viivitus (350); lcd.clear (); // esita e4 toon (10, 329,63, 300); lcd.print ("329,63"); viivitus (350); lcd.clear (); // esita d4# toon (10, 311.13, 300); lcd.print ("311.13"); viivitus (350); lcd.clear (); // esita e4 toon (10, 329,63, 300); lcd.print ("329,63"); viivitus (350); lcd.clear (); // esita b3 toon (10, 246,94, 300); lcd.print ("246,94"); viivitus (400); lcd.clear (); // mängida d4 tooni (10, 293,66, 300); lcd.print ("293,66"); viivitus (400); lcd.clear (); // mängida c4 tooni (10, 261,63, 300); lcd.print ("261.63"); viivitus (400); lcd.clear (); // mängida a3 tooni (10, 220, 900); lcd.print ("220.0"); viivitus (1000); lcd.clear (); // mängida d3 tooni (10, 146,83, 300); lcd.print ("146,83"); viivitus (350); lcd.clear (); // esita f3 toon (10, 174,61, 300); lcd.print ("174,61"); viivitus (400); lcd.clear (); // mängida a3 tooni (10, 220, 300); lcd.print ("220,0"); viivitus (400); // esita b3 lcd.clear (); toon (10, 246,94, 900); lcd.print ("246,94"); viivitus (1000); lcd.clear (); // esita e3 toon (10, 164,81, 300); lcd.print ("164,81"); viivitus (400); lcd.clear (); // esita g#3 toon (10, 207,65, 300); lcd.print ("207,65"); viivitus (400); lcd.clear (); // esita b3 toon (10, 246,94, 300); lcd.print ("246,94"); viivitus (400); lcd.clear (); // mängida c4 tooni (10, 261,63, 900); lcd.print ("261.63"); viivitus (1000); viivitus (300); lcd.clear (); // esita e3 toon (10, 164,81, 300); lcd.print ("164,81"); viivitus (400); lcd.clear (); // esita e4 toon (10, 329,63, 300); lcd.print ("329,63"); viivitus (400); lcd.clear (); // esita d4# toon (10, 311.13, 300); lcd.print ("311.13"); viivitus (400); lcd.clear (); // esita e4 toon (10, 329,63, 300); lcd.print ("329,63"); viivitus (400); lcd.clear (); // esita d4# toon (10, 311.13, 300); lcd.print ("311.13"); viivitus (400); lcd.clear (); // esita e4 toon (10, 329,63, 300); lcd.print ("329,63"); viivitus (400); lcd.clear (); // esita b3 toon (10, 246,94, 300); lcd.print ("246,94"); viivitus (400); lcd.clear (); // mängida d4 tooni (10, 293,66, 300); lcd.print ("293,66"); viivitus (400); lcd.clear (); // mängida c4 tooni (10, 261,63, 300); lcd.print ("261.63"); viivitus (400); lcd.clear (); // mängida a3 tooni (10, 220, 900); lcd.print ("220,0"); viivitus (1000); lcd.clear (); // esita d3 tooni (10, 146,83, 300); lcd.print ("146,83"); viivitus (400); lcd.clear (); // esita f3 toon (10, 174,61, 300); lcd.print ("174,61"); viivitus (400); lcd.clear (); // mängida a3 tooni (10, 220, 300); lcd.print ("220,0"); viivitus (400); lcd.clear (); // esita b3 toon (10, 246,94, 900); lcd.print ("246,94"); viivitus (1000); lcd.clear (); // esita f3 toon (10, 174,61, 300); lcd.print ("174,61"); viivitus (400); lcd.clear (); // mängida c4 tooni (10, 261,63, 300); lcd.print ("261.63"); viivitus (400); lcd.clear (); // esita b3 toon (10, 246,94, 300); lcd.print ("246,94"); viivitus (400); lcd.clear (); // mängida a3 tooni (10, 220, 900); lcd.print ("220.0"); viivitus (1000); lcd.clear (); }

Samm: koodi üleslaadimine: mida see kõik tähendab?

Määratleme mõned funktsioonid inglise keeles, et saaksite koodist aru.

toon (x, y, z); = mängige helikõrgusega y hertsi helisignaali tihvti x juures olevale helisignaalile z millisekundit.

lcd.print ("XYZ"); = printige LCD -ekraanile sõnum XYZ -tähemärkidega. (näit. Hertzi sammu)

viivitus (x); = paus x millisekundiks.

const int X = Y = määrake pidev muutuja X pin Y -le ja kasutage seadmele ülesannete määramiseks kas X või Y.

lcd.clear (); = tühjendage LCD -ekraan ja lähtestage uus kuva

pinMode (X, VÄLJUND); = seadke pin X väljundrežiimi jaoks

Kui olete kõikidest nendest funktsioonidest aru saanud, saate muutujad hõlpsalt asendada andmete tõlkimisel kogutud andmetega ja seejärel saate oma laulu kodeerida!

6. samm: lõpetatud !

Valmis !!!
Valmis !!!
Valmis !!!
Valmis !!!

Teil on kas Arduino, mis mängib Fur Elise'i ja kuvab noodiväärtused hertsi keeles, või olete loonud Arduino, mis esitab teie valitud laulu meloodia ja kuvab teksti, mida soovite näidata. Täname teid selle õpetuse külastamise eest ja loodan teile seda projekti Arduino kohta.

Soovitan: