Turinys:
- 1 veiksmas: konvertuokite muzikinį rezultatą į skaitmenines pastabas: atidėjimo vertės
- 2 veiksmas: konvertuokite muzikinį rezultatą į skaitmenines pastabas: herco vertes
- 3 žingsnis: grandinės projektavimas
- 4 žingsnis: kodo įkėlimas: instrukcijos
- 5 žingsnis: kodo įkėlimas: ką visa tai reiškia?
- 6 žingsnis: baigta !
Video: Skaitmeninkite dainą naudodami „Arduino“: 6 žingsniai
2024 Autorius: John Day | [email protected]. Paskutinį kartą keistas: 2024-01-30 10:48
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
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
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
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 !
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:
Valdykite namų šviesas naudodami „Google“padėjėją naudodami „Arduino“: 7 žingsniai
Valdykite namų apšvietimą naudodami „Google“padėjėją naudojant „Arduino“: (Atnaujinta 2020 m. Rugpjūčio 22 d.: Šis nurodymas yra 2 metų amžiaus ir priklauso nuo kai kurių trečiųjų šalių programų. Dėl bet kokių jų pakeitimų šis projektas gali neveikti. Gali būti, kad ne. dirbkite dabar, bet galite sekti jį kaip nuorodą ir keisti pagal
Skaitmeninkite savo „Hi-Fi“sistemą: 6 žingsniai (su nuotraukomis)
Skaitmeninkite savo Hi-Fi sistemą: Šioje instrukcijoje norėčiau jums parodyti, kaip suskaitmeninau savo analoginę hi-fi sistemą ir taip realizavau žiniatinklio radiją, prieigą prie mano NAS saugomos muzikos kolekcijos ir tt Įgyvendinimas daugiausia grindžiamas „Raspberry Pi“, „Hifiberry“skrybėlė ir prisilietimas
Naudodami gestus valdykite „YouTube“atkūrimą naudodami „Arduino“: 5 žingsniai
Naudokite gestus, norėdami valdyti „YouTube“atkūrimą naudodami „Arduino“: „StoryYouTube“leidžia tik pasukti 5 sekundes kaskart spustelėjus dešinįjį mygtuką. Taigi aš nusprendžiau naudoti „Arduino“ir „python“, kad sukurtų valdiklį, kuris padėtų man greitai persukti 20 sekundžių kiekvieną kartą, kai mojuoju ranka
Leiskite dainas (MP3) naudodami „Arduino“naudodami PWM garsiakalbyje arba „Flyback Transformer“: 6 žingsniai (su paveikslėliais)
Leiskite dainas (MP3) naudodami „Arduino“naudodami PWM garsiakalbyje arba „Flyback Transformer“: Sveiki, vaikinai, tai yra mano pirmasis pamokomas dalykas, tikiuosi, kad jums tai patiks !! Iš esmės šiame projekte naudojau nuoseklųjį ryšį tarp mano „Arduino“ir nešiojamojo kompiuterio, perduoti muzikos duomenis iš nešiojamojo kompiuterio į „Arduino“. Ir naudojant „Arduino TIMERS t
Valdykite „Arduino“naudodami išmanųjį telefoną per USB naudodami „Blynk“programą: 7 žingsniai (su paveikslėliais)
„Arduino“valdymas naudojant išmanųjį telefoną per USB naudojant „Blynk“programą: Šioje pamokoje mes mokysimės naudoti „Blynk“programą ir „Arduino“, kad valdytumėte lempą, derinys bus per USB nuoseklųjį prievadą. Šios instrukcijos tikslas yra parodyti paprasčiausias sprendimas nuotoliniu būdu valdyti „Arduino“ar „c