Turinys:

Skaitmeninkite dainą naudodami „Arduino“: 6 žingsniai
Skaitmeninkite dainą naudodami „Arduino“: 6 žingsniai

Video: Skaitmeninkite dainą naudodami „Arduino“: 6 žingsniai

Video: Skaitmeninkite dainą naudodami „Arduino“: 6 žingsniai
Video: Изучите Arduino за 30 минут: примеры и проекты 2024, Lapkritis
Anonim
Skaitmeninkite dainą naudodami „Arduino“
Skaitmeninkite dainą naudodami „Arduino“

Norėjau sukurti projektą, apjungiantį du mėgstamiausius dalykus: mokslą ir muziką. Aš galvojau apie visus būdus, kaip galėčiau sujungti šias dvi sritis, ir pagalvojau, kad būtų įdomu sukurti „Arduino“pjesę „Fur Elise“, rodant natos aukštį „Hertz“. Dabar pradėkime statyti!

Jums reikės vieno „Arduino Uno“arba „Mega“, daug jungiamųjų kabelių, „Piezo“garsinio signalo, duonos lentos, 16*2 skystųjų kristalų ekrano su visais valytuvų kaiščiais ir 10 k potenciometro (taip pat galite išgirsti, kad jie vadinami potmetrais)). Geriausia visus šiuos reikmenis surinkti prieš pradedant statybą.

1 veiksmas: konvertuokite muzikinį rezultatą į skaitmenines pastabas: atidėjimo vertės

Konvertuokite muzikinį rezultatą į skaitmenines pastabas: atidėjimo vertės
Konvertuokite muzikinį rezultatą į skaitmenines pastabas: atidėjimo vertės

Yra du žingsniai skaitmeniniu būdu perrašyti natą iš partitūros į skaitmeninį atitikmenį. Pirma, turėsime parašyti užrašo trukmę milisekundėmis. Šiai užduočiai panaudojau internete rastą diagramą. Remdamasis tuo, ar pastaba buvo pusė, ketvirtinė, aštunta, ir tt, natos ilgį perrašiau į milisekundes. Šiuos skaičius mano kode galite matyti kaip uždelsimą (); funkcija ir skaičius skliausteliuose bus delsos vertė milisekundėmis, kurias nustatėme atlikdami šį veiksmą.

2 veiksmas: konvertuokite muzikinį rezultatą į skaitmenines pastabas: herco vertes

Konvertuokite muzikinį rezultatą į skaitmenines pastabas: herco vertes
Konvertuokite muzikinį rezultatą į skaitmenines pastabas: herco vertes

Prieš pradėdamas šį žingsnį, leiskite apibrėžti keletą techninių terminų. Užrašo „vertė“gali būti pakaitomis vartojama su žodžiais „pitch“, „value“ir „note“. Dabar jūs turite perskaityti kiekvieną dainos natą iš partitūros. Tada turėsite kiekvieną natą išversti į hercą naudodami muziką į Hertz lentelę, kurią galite lengvai rasti internete. Vienas dalykas, kurį reikia atsiminti, yra tai, kad vidurinis C ant stalo yra nurodytas kaip C4, o oktava aukščiau yra C5 ir pan. Kai visos šios pastabos bus perrašytos į hercą, reikšmės bus įtrauktos į funkcijos toną (x, y, z); kur X yra PIN kodas arba const int, kintamųjų apibrėžimo būdas, kurį paaiškinsiu vėliau. Y bus ką tik perrašyta herco vertė, o Z - natos trukmė milisekundėmis, suapvalinta iki šimtosios. Atidėjimas(); reikšmės bus užrašo trukmė. Dabar suprojektuokime grandinę, galinčią leisti muziką.

3 žingsnis: grandinės projektavimas

Grandinės dizainas
Grandinės dizainas

Dabar, kai visas pastabas išvertėme į skaitmenines vertybes, kurias kompiuteris gali suprasti, atėjo laikas sukurti grandinę. Pirmiausia paimkite duonos lentą ir padėkite skystųjų kristalų ekraną su pirmuoju kaiščiu (GND) 14 eilutėje. Padėkite garsinį signalą bet kurioje jums patogioje vietoje ir šalia padėkite potenciometrą. Tikslas yra viską sujungti, sumažinti laidų netvarką. Padėkite „Arduino“šalia duonos lentos ir prijunkite 5 V kaištį prie teigiamo duonos lentos bėgelio, o įžeminimo kaištį - prie neigiamo bėgio. Dabar esame pasirengę prijungti džemperius tarp „Arduino“ir komponentų.

Dabar pakalbėkime apie LCD kaiščius ir kaip juos prijungti.

GND reiškia žemę, tai yra neigiamas laidas nuolatinėje srovėje. Prijunkite GND prie neigiamo duonos lentos bėgelio.

VCC reiškia įtampą prie bendro kolektoriaus, ir čia jūs prijungiate 5 voltų maitinimo šaltinį (teigiamas maitinimo šaltinis).

VO reiškia kontrastą, prijunkite jį prie vidurinio potenciometro kaiščio. Prijunkite kairįjį potenciometro kaištį prie teigiamos galios bėgelio, o dešinįjį - prie įžeminimo maitinimo bėgio.

RS reiškia „Register Select“ir tai naudoja „Arduino“, norėdamas parodyti ekrane, kur saugoti duomenis. Prijunkite šį kaištį prie „Arduino“12 kaiščio.

RW reiškia skaitymo/rašymo kaištį, kurį „Arduino“naudoja norėdama patikrinti, ar ekrane rodoma tai, ką užprogramavote rodyti. Prijunkite šį kaištį prie neigiamos duonos lentos.

E reiškia „Įjungti“, kuris LCD ekrane nurodo, kuriuos pikselius įjungti (įjungti) arba išjungti (išjungti). Prijunkite šį kaištį prie „Arduino“kaiščio 11.

D4, D5, D6 ir D7 yra ekrano kaiščiai, valdantys rodomus simbolius ir raides. Prijunkite juos prie „Arduino“kaiščių atitinkamai 5, 4, 3 ir 2.

Smeigtukas A, kartais pažymėtas LED, yra foninio apšvietimo LED anodas. Prijunkite jį prie teigiamos galios bėgelio laidu arba 220 omų rezistoriumi. Rezistorius yra geresnis ilgesniam naudojimui, nes taupo LCD ekraną, tačiau jei prietaisas nebus naudojamas dieną ir naktį, jums rezistoriaus nereikia.

Kištukas K, kartais taip pat (painiai) pažymėtas LED, yra LED įžeminimo kaištis. Prijunkite jį prie antžeminio maitinimo bėgio.

4 žingsnis: kodo įkėlimas: instrukcijos

Prijunkite „Arduino“prie kompiuterio USB. Įkelkite šį kodą naudodami „Arduino IDE“programuotoją.

#įtraukti

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

void setup () {

// nustatyti LCD stulpelių ir eilučių skaičių: lcd.begin (16, 2); // Spausdinkite pranešimą į LCD. lcd.print ("Hertz Pitch:!"); vėlavimas (1000); void loop () {// play e4 delay (600); // pauzė 0,6 sekundės tonui (10, 329,63, 300); // atkurti garsinį signalą 10 kaiščiu, paskutinis.3 sek. lcd.print (" 329.63 "); // rodyti pranešimą LCD" 329.63"

uždelsimas (350); // uždelsimas.35 sekundėms

lcd.clear (); // išvalyti LCD ekraną ir iš naujo nustatyti kitą pranešimą // paleisti d4# toną (10, 311.13, 300); lcd.print ("311.13"); vėlavimas (350); lcd.clear (); // atkurti e4 toną (10, 329,63, 300); lcd.print ("329,63"); vėlavimas (350); lcd.clear (); // paleisti d4# toną (10, 311.13, 300); lcd.print ("311.13"); vėlavimas (350); lcd.clear (); // atkurti e4 toną (10, 329,63, 300); lcd.print ("329,63"); vėlavimas (350); lcd.clear (); // groti b3 toną (10, 246,94, 300); lcd.print ("246,94"); vėlavimas (400); lcd.clear (); // groti d4 toną (10, 293,66, 300); lcd.print ("293,66"); vėlavimas (400); lcd.clear (); // atkurti c4 toną (10, 261.63, 300); lcd.print ("261.63"); vėlavimas (400); lcd.clear (); // groti a3 toną (10, 220, 900); lcd.print ("220.0"); vėlavimas (1000); lcd.clear (); // line60 // helpave // avrdude.failure.eeprom // paleisti d3 toną (10, 146,83, 300); lcd.print ("146,63"); vėlavimas (350); lcd.clear (); // atkurti f3 toną (10, 174,61, 300); lcd.print ("174,61"); vėlavimas (400); lcd.clear (); // groti a3 toną (10, 220, 300); lcd.print ("220"); vėlavimas (400); lcd.clear (); // groti b3 toną (10, 246,94, 900); lcd.print ("246,94"); vėlavimas (1000); lcd.clear ();

// žaisti e3

tonas (10, 164,81, 300); lcd.print ("164.81"); vėlavimas (400); lcd.clear (); // žaisti g3# toną (10, 207,65, 300); lcd.print ("207,65"); vėlavimas (400); lcd.clear (); // groti b3 toną (10, 246,94, 300); lcd.print ("246,94"); vėlavimas (400); lcd.clear (); // groti c4 toną (10, 261.63, 900); lcd.print ("261.63"); vėlavimas (1000); lcd.clear (); // play e tone (10, 164.81, 300); lcd.print ("164.81"); vėlavimas (400); lcd.clear (); // atkurti e4 toną (10, 329,63, 300); lcd.print ("329,63"); vėlavimas (400); lcd.clear (); // paleisti d4# toną (10, 311.13, 300); lcd.print ("311.13"); vėlavimas (400); lcd.clear (); // atkurti e4 toną (10, 329,63, 300); lcd.print ("329,63"); vėlavimas (400); lcd.clear (); // paleisti d4# toną (10, 311.13, 300); lcd.print ("311.13"); vėlavimas (400); lcd.clear (); // atkurti e4 toną (10, 329,63, 300); lcd.print ("329,63"); vėlavimas (400); lcd.clear (); // groti b3 toną (10, 246,94, 300); lcd.print ("246,94"); vėlavimas (400); lcd.clear (); // groti d4 toną (10, 293,66, 300); lcd.print ("293,66"); vėlavimas (400); lcd.clear (); // groti c4 toną (10, 261.63, 300); lcd.print ("261.63"); vėlavimas (400); lcd.clear (); // groti a3 toną (10, 220, 900); lcd.print ("220.0"); vėlavimas (1000); lcd.clear (); // groti d3 toną (10, 146,83, 300); lcd.print ("146,83"); vėlavimas (400); lcd.clear (); // atkurti f3 toną (10, 174,61, 300); // eeprom 20-6 yesno, flash 65-0 noyes lcd.print ("174.61"); vėlavimas (400); lcd.clear (); // groti a3 toną (10, 220, 300); lcd.print ("220.0"); vėlavimas (400); lcd.clear (); // groti b3 toną (10, 246,94, 900); lcd.print ("246,94"); vėlavimas (1000); lcd.clear (); // atkurti f3 toną (10, 174,61, 300); lcd.print ("174,61"); vėlavimas (400); lcd.clear (); // atkurti c4 toną (10, 261.63, 300); lcd.print ("261.63"); vėlavimas (400); lcd.clear (); // groti b3 toną (10, 246,94, 300); lcd.print ("246,94"); vėlavimas (400); lcd.clear (); // groti a3 toną (10, 220, 900); lcd.print ("220.0"); vėlavimas (1000); lcd.clear (); // groti b3 toną (10, 246,94, 300); lcd.print ("246,94"); vėlavimas (400); lcd.clear (); // groti c4 toną (10, 261.63, 300); lcd.print ("261.63"); vėlavimas (400); lcd.clear (); // groti d4 toną (10, 293,66, 300); lcd.print ("293,66"); vėlavimas (400); lcd.clear (); // atkurti e4 toną (10, 329,63, 900); lcd.print ("329,63"); vėlavimas (1000); lcd.clear (); // žaisti g3 toną (10, 196, 300); lcd.print ("196.0"); vėlavimas (400); lcd.clear (); // atkurti f4 toną (10, 349.23, 300); lcd.print ("349.23"); vėlavimas (400); lcd.clear (); // atkurti e4 toną (10, 329.23, 300); lcd.print ("329.23"); vėlavimas (400); lcd.clear (); // groti d4 toną (10, 293,63, 900); lcd.print ("293,63"); vėlavimas (1000); lcd.clear (); // atkurti e3 toną (10, 164,81, 300); lcd.print ("164.81"); vėlavimas (400); lcd.clear (); // atkurti e4 toną (10, 329,63, 300); lcd.print ("329,63"); vėlavimas (400); lcd.clear (); // groti d4 toną (10, 293,63, 300); lcd.print ("293,63"); vėlavimas (400); lcd.clear (); // groti c4 toną (10, 261.63, 900); lcd.print ("261.63"); vėlavimas (1000); lcd.clear (); // groti d3 toną (10, 146,83, 300); lcd.print ("146,83"); vėlavimas (400); lcd.clear (); // groti d4 toną (10, 293,63, 300); lcd.print ("293.63"); vėlavimas (400); lcd.clear (); // atkurti c4 toną (10, 261.63, 300); lcd.print ("261.63"); vėlavimas (400); lcd.clear (); // groti b3 toną (10, 246,94, 900); lcd.print ("246,94"); vėlavimas (1000); lcd.clear (); // atkurti e4 toną (10, 329,63, 300); lcd.print ("329,63"); vėlavimas (400); lcd.clear (); // paleisti d4# toną (10, 311.13, 300); lcd.print ("311.13"); vėlavimas (350); lcd.clear (); // atkurti e4 toną (10, 329,63, 300); lcd.print ("329,63"); vėlavimas (350); lcd.clear (); // paleisti d4# toną (10, 311.13, 300); lcd.print ("311.13"); vėlavimas (350); lcd.clear (); // atkurti e4 toną (10, 329,63, 300); lcd.print ("329,63"); vėlavimas (350); lcd.clear (); // groti b3 toną (10, 246,94, 300); lcd.print ("246,94"); vėlavimas (400); lcd.clear (); // groti d4 toną (10, 293,66, 300); lcd.print ("293,66"); vėlavimas (400); lcd.clear (); // atkurti c4 toną (10, 261.63, 300); lcd.print ("261.63"); vėlavimas (400); lcd.clear (); // groti a3 toną (10, 220, 900); lcd.print ("220.0"); vėlavimas (1000); lcd.clear (); // groti d3 toną (10, 146,83, 300); lcd.print ("146,83"); vėlavimas (350); lcd.clear (); // atkurti f3 toną (10, 174,61, 300); lcd.print ("174,61"); vėlavimas (400); lcd.clear (); // groti a3 toną (10, 220, 300); lcd.print ("220.0"); vėlavimas (400); // žaisti b3 lcd.clear (); tonas (10, 246,94, 900); lcd.print ("246,94"); vėlavimas (1000); lcd.clear (); // atkurti e3 toną (10, 164,81, 300); lcd.print ("164.81"); vėlavimas (400); lcd.clear (); // žaisti g#3 toną (10, 207,65, 300); lcd.print ("207,65"); vėlavimas (400); lcd.clear (); // groti b3 toną (10, 246,94, 300); lcd.print ("246,94"); vėlavimas (400); lcd.clear (); // groti c4 toną (10, 261.63, 900); lcd.print ("261.63"); vėlavimas (1000); vėlavimas (300); lcd.clear (); // atkurti e3 toną (10, 164,81, 300); lcd.print ("164.81"); vėlavimas (400); lcd.clear (); // atkurti e4 toną (10, 329,63, 300); lcd.print ("329,63"); vėlavimas (400); lcd.clear (); // paleisti d4# toną (10, 311.13, 300); lcd.print ("311.13"); vėlavimas (400); lcd.clear (); // atkurti e4 toną (10, 329,63, 300); lcd.print ("329,63"); vėlavimas (400); lcd.clear (); // paleisti d4# toną (10, 311.13, 300); lcd.print ("311.13"); vėlavimas (400); lcd.clear (); // atkurti e4 toną (10, 329,63, 300); lcd.print ("329,63"); vėlavimas (400); lcd.clear (); // groti b3 toną (10, 246,94, 300); lcd.print ("246,94"); vėlavimas (400); lcd.clear (); // groti d4 toną (10, 293,66, 300); lcd.print ("293,66"); vėlavimas (400); lcd.clear (); // atkurti c4 toną (10, 261.63, 300); lcd.print ("261.63"); vėlavimas (400); lcd.clear (); // groti a3 toną (10, 220, 900); lcd.print ("220.0"); vėlavimas (1000); lcd.clear (); // groti d3 toną (10, 146,83, 300); lcd.print ("146,83"); vėlavimas (400); lcd.clear (); // atkurti f3 toną (10, 174,61, 300); lcd.print ("174,61"); vėlavimas (400); lcd.clear (); // groti a3 toną (10, 220, 300); lcd.print ("220.0"); vėlavimas (400); lcd.clear (); // groti b3 toną (10, 246,94, 900); lcd.print ("246,94"); vėlavimas (1000); lcd.clear (); // atkurti f3 toną (10, 174,61, 300); lcd.print ("174,61"); vėlavimas (400); lcd.clear (); // groti c4 toną (10, 261.63, 300); lcd.print ("261.63"); vėlavimas (400); lcd.clear (); // groti b3 toną (10, 246,94, 300); lcd.print ("246,94"); vėlavimas (400); lcd.clear (); // groti a3 toną (10, 220, 900); lcd.print ("220.0"); vėlavimas (1000); lcd.clear (); }

5 žingsnis: kodo įkėlimas: ką visa tai reiškia?

Apibrėžkime kai kurias funkcijas anglų kalba, kad galėtumėte suprasti kodą.

tonas (x, y, z); = groti toną y hercų aukščiu, skambant garsui prie kaiščio x, z milisekundžių.

lcd.print ("XYZ"); = išspausdinkite pranešimą su simboliais XYZ į LCD ekraną. (pvz., rodyti Hertz žingsnį)

uždelsimas (x); = pauzė x milisekundėms.

const int X = Y = nustatykite pastovų kintamąjį X į Y kaištį ir naudokite X arba Y, kad priskirtumėte įrenginiui užduotis.

lcd.clear (); = išvalykite LCD ekraną ir iš naujo nustatykite naują ekraną

pinMode (X, OUTPUT); = nustatykite kaištį X išvesties režimui

Supratę visas šias funkcijas, galite lengvai pakeisti kintamuosius duomenimis, kuriuos renkate versdami dainą, ir tada galite koduoti savo dainą!

6 žingsnis: baigta !

Baigta !!!
Baigta !!!
Baigta !!!
Baigta !!!

Arba turite „Arduino“, kuris groja „Fur Elise“ir rodo natų reikšmes hercais, arba sukūrėte „Arduino“, kuris groja jūsų pasirinktos dainos melodiją ir rodo tekstą, kurį norite parodyti. Dėkojame, kad lankotės šioje pamokoje, ir tikiuosi, kad jums šis projektas „Arduino“.

Rekomenduojamas: