Përmbajtje:

Dixhitalizoni një këngë me Arduino: 6 hapa
Dixhitalizoni një këngë me Arduino: 6 hapa

Video: Dixhitalizoni një këngë me Arduino: 6 hapa

Video: Dixhitalizoni një këngë me Arduino: 6 hapa
Video: Сравнение протоколов TCP и UDP 2024, Nëntor
Anonim
Dixhitalizoni një këngë me Arduino
Dixhitalizoni një këngë me Arduino

Doja të krijoja një projekt që kombinonte dy nga lëndët e mia të preferuara: shkencën dhe muzikën. Mendova për të gjitha mënyrat se si mund t'i kombinoja këto dy fusha dhe, mendova se do të ishte interesante të bëja një shfaqje Arduino Fur Elise ndërsa shfaqja e lartësisë së shënimit në Hertz. Tani, le të fillojmë ndërtimin!

Ju do të keni nevojë për një Arduino Uno ose Mega, shumë kabllo kërcyes, një zile Piezo, një dërrasë buke, një ekran LCD 16*2 me të gjitha kunjat e fshirësit në vend dhe një Potenciometër 10k (ju gjithashtu mund t'i dëgjoni ata duke u referuar si potmetra) Bestshtë mirë që të mblidhen të gjitha këto furnizime para se të fillojmë ndërtimin.

Hapi 1: Ktheni pjesën muzikore në shënime dixhitale: Vlerat e vonesës

Ktheni pjesën muzikore në shënime dixhitale: Vlerat e vonesës
Ktheni pjesën muzikore në shënime dixhitale: Vlerat e vonesës

Ka dy hapa për të transkriptuar në mënyrë dixhitale një shënim nga rezultati në ekuivalentin e tij dixhital. Së pari, do të na duhet të shkruajmë kohën kur shënimi zgjat në milisekonda. Kam përdorur një tabelë të gjetur në internet për këtë detyrë. Bazuar në faktin nëse një shënim ishte një gjysmë kartëmonedhe, një çerek, një shënim i tetë, etj., Unë e transkriptova gjatësinë e shënimit në milisekonda. Ju mund t'i shihni këto numra në kodin tim si vonesë (); funksioni dhe numri brenda kllapave do të jetë vlera e vonesës në milisekonda që kemi përcaktuar në këtë hap.

Hapi 2: Ktheni pjesën muzikore në shënime dixhitale: Vlerat e Hercit

Ktheni pjesën muzikore në shënime dixhitale: Vlerat e Hercit
Ktheni pjesën muzikore në shënime dixhitale: Vlerat e Hercit

Para se të filloni këtë hap, më lejoni të përcaktoj disa terma teknikë. "Vlera" e një shënimi mund të përdoret në mënyrë të ndërsjellë me fjalët "katran", "vlerë" dhe "shënim". Tani, ju duhet të lexoni çdo notë të këngës nga partitura. Pastaj do të duhet të përktheni çdo shënim në Hertz duke përdorur një tabelë muzikore në Hertz, të cilën mund ta gjeni lehtësisht në internet. Një gjë për të mbajtur mend është se C e mesme është e shënuar si C4 në tryezë, dhe një oktavë më e lartë është C5, dhe kështu me radhë. Pasi të shënohen të gjitha këto shënime në Hertz, ju do t'i vendosni vlerat në tonin e funksionit (x, y, z); ku X është numri pin ose const int, një mënyrë për të përcaktuar variablat që do të shpjegoj më vonë. Y do të jetë vlera Hertz që sapo keni transkriptuar, dhe Z do të jetë kohëzgjatja e shënimit në milisekonda e rrumbullakosur në qindëshen më të afërt. Vonesa(); vlerat do të jenë kohëzgjatja e shënimit. Tani, le të krijojmë qarkun që mund të luajë muzikë.

Hapi 3: Dizajni i qarkut

Dizajni i Qarkut
Dizajni i Qarkut

Tani që i kemi përkthyer të gjitha shënimet në vlera dixhitale që një kompjuter mund t'i kuptojë, është koha për të ndërtuar qarkun. Filloni duke marrë një dërrasë buke dhe duke vendosur ekranin LCD me kunjin e parë (GND) në rreshtin 14. Vendoseni zilen kudo që dëshironi dhe vendosni një potenciometër pranë tij. Qëllimi është të rreshtoni gjithçka, të minimizoni rrëmujën e telave. Vendoseni Arduino -n pranë pjatës së bukës dhe lidhni pinin 5v me shinën pozitive të dërrasës së bukës dhe kunjin e tokëzimit me shinën negative. Tani, ne jemi gati të lidhim kërcyesit midis Arduino dhe përbërësve.

Tani, le të flasim për kunjat në LCD dhe si t'i lidhim ato.

GND qëndron për tokën, ky është teli negativ në rrymë direkte. Tela GND në shinën negative të dërrasës së bukës.

VCC qëndron për Voltage at the Common Collector, dhe këtu lidhni burimin tuaj të energjisë 5 volt (hekurudha e energjisë pozitive).

VO qëndron për Kontrast, lidheni këtë në kunjin e mesëm të potenciometrit. Lidhni kunjin e majtë të potenciometrit me shinën e fuqisë pozitive, dhe kunjin e djathtë me shinën e fuqisë tokësore.

RS qëndron për Regjistro përzgjedhjen, dhe kjo përdoret nga Arduino për t'i treguar ekranit se ku të ruajë të dhënat. Lidheni këtë kunj me kunjin 12 në Arduino.

RW qëndron për kunjin Lexo/Shkruaj, të cilën Arduino e përdor për të kontrolluar nëse ekrani po tregon atë që keni programuar të shfaqet. Lidheni këtë kunj me shinën negative në tabelën e bukës.

E qëndron për Enable, e cila i tregon LCD -së cilat piksele të aktivizohen (ndizen) ose çaktivizohen (fiken). Lidheni këtë kunj me pinin Arduino 11.

D4, D5, D6 dhe D7 janë kunjat e ekranit të cilët kontrollojnë personazhet dhe shkronjat që shfaqen. Lidhini ato me kunjat Arduino 5, 4, 3 dhe 2, respektivisht.

Pin A, nganjëherë i etiketuar LED, është anoda LED për dritën e pasme. Lidheni këtë me hekurudhën e fuqisë pozitive me një tel ose me një rezistencë 220-ohm. Rezistori është më i mirë për përdorim më të gjatë pasi kursen LCD -në, por nëse pajisja nuk do të përdoret ditë e natë, nuk keni nevojë për rezistencën.

Pin K, nganjëherë gjithashtu (në mënyrë konfuze) të etiketuar LED, është kunja e tokëzimit LED. Lidheni këtë me hekurudhën e energjisë tokësore.

Hapi 4: Ngarkimi i Kodit: Si ta bëni

Lidheni Arduino -n tuaj në USB -në e kompjuterit tuaj. Ngarko kodin e mëposhtëm duke përdorur programuesin Arduino IDE.

#përfshi

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

void setup () {

// vendosni numrin e kolonave dhe rreshtave të LCD: lcd.filloni (16, 2); // Shtypni një mesazh në LCD. lcd.print ("Hertz Pitch:!"); vonesa (1000); lak void () {// luaj vonesë e4 (600); // pauzë për 0.6 sekonda toni (10, 329.63, 300); // luaj e në zile në pin 10, e fundit për.3 sekonda lcd.print (" 329.63 "); // shfaq një mesazh në LCD" 329.63"

vonesë (350); // vonesë për.35 sekonda

lcd.clear (); // pastroni LCD dhe rivendoseni për mesazhin tjetër // luani tonin d4# (10, 311.13, 300); lcd.print ("311.13"); vonesë (350); lcd.qartë (); // luaj tonin e4 (10, 329.63, 300); lcd.print ("329.63"); vonesë (350); lcd.qartë (); // luani tonin d4# (10, 311.13, 300); lcd.print ("311.13"); vonesë (350); lcd.qartë (); // luaj tonin e4 (10, 329.63, 300); lcd.print ("329.63"); vonesë (350); lcd.qartë (); // luaj tonin b3 (10, 246.94, 300); lcd.print ("246.94"); vonesa (400); lcd.qartë (); // luaj tonin d4 (10, 293.66, 300); lcd.print ("293.66"); vonesa (400); lcd.qartë (); // luaj tonin c4 (10, 261.63, 300); lcd.print ("261.63"); vonesa (400); lcd.qartë (); // luaj tonin a3 (10, 220, 900); lcd.print ("220.0"); vonesa (1000); lcd.clear (); // line60 // helpave // avrdude.failure.eeprom // luaj ton d3 (10, 146.83, 300); lcd.print ("146.63"); vonesë (350); lcd.qartë (); // luaj tonin f3 (10, 174.61, 300); lcd.print ("174.61"); vonesa (400); lcd.qartë (); // luaj tonin a3 (10, 220, 300); lcd.print ("220"); vonesa (400); lcd.qartë (); // luaj tonin b3 (10, 246.94, 900); lcd.print ("246.94"); vonesa (1000); lcd.qartë ();

// luaj e3

toni (10, 164.81, 300); lcd.print ("164.81"); vonesa (400); lcd.qartë (); // luani tonin g3# (10, 207.65, 300); lcd.print ("207.65"); vonesa (400); lcd.qartë (); // luaj tonin b3 (10, 246.94, 300); lcd.print ("246.94"); vonesa (400); lcd.qartë (); // luaj tonin c4 (10, 261.63, 900); lcd.print ("261.63"); vonesa (1000); lcd.qartë (); // luaj tonin (10, 164.81, 300); lcd.print ("164.81"); vonesa (400); lcd.qartë (); // luaj tonin e4 (10, 329.63, 300); lcd.print ("329.63"); vonesa (400); lcd.qartë (); // luani tonin d4# (10, 311.13, 300); lcd.print ("311.13"); vonesa (400); lcd.qartë (); // luaj tonin e4 (10, 329.63, 300); lcd.print ("329.63"); vonesa (400); lcd.qartë (); // luani tonin d4# (10, 311.13, 300); lcd.print ("311.13"); vonesa (400); lcd.qartë (); // luaj tonin e4 (10, 329.63, 300); lcd.print ("329.63"); vonesa (400); lcd.qartë (); // luaj tonin b3 (10, 246.94, 300); lcd.print ("246.94"); vonesa (400); lcd.qartë (); // luaj tonin d4 (10, 293.66, 300); lcd.print ("293.66"); vonesa (400); lcd.qartë (); // luaj tonin c4 (10, 261.63, 300); lcd.print ("261.63"); vonesa (400); lcd.qartë (); // luaj tonin a3 (10, 220, 900); lcd.print ("220.0"); vonesa (1000); lcd.qartë (); // luaj tonin d3 (10, 146.83, 300); lcd.print ("146.83"); vonesa (400); lcd.qartë (); // luaj tonin f3 (10, 174.61, 300); // eeprom 20–6 po, flash, 65–0 noyes lcd.print ("174.61"); vonesa (400); lcd.qartë (); // luaj tonin a3 (10, 220, 300); lcd.print ("220.0"); vonesa (400); lcd.qartë (); // luaj tonin b3 (10, 246.94, 900); lcd.print ("246.94"); vonesa (1000); lcd.qartë (); // luaj tonin f3 (10, 174.61, 300); lcd.print ("174.61"); vonesa (400); lcd.qartë (); // luaj tonin c4 (10, 261.63, 300); lcd.print ("261.63"); vonesa (400); lcd.qartë (); // luaj tonin b3 (10, 246.94, 300); lcd.print ("246.94"); vonesa (400); lcd.qartë (); // luaj tonin a3 (10, 220, 900); lcd.print ("220.0"); vonesa (1000); lcd.qartë (); // luaj tonin b3 (10, 246.94, 300); lcd.print ("246.94"); vonesa (400); lcd.qartë (); // luaj tonin c4 (10, 261.63, 300); lcd.print ("261.63"); vonesa (400); lcd.qartë (); // luaj tonin d4 (10, 293.66, 300); lcd.print ("293.66"); vonesa (400); lcd.qartë (); // luaj tonin e4 (10, 329.63, 900); lcd.print ("329.63"); vonesa (1000); lcd.qartë (); // luaj tonin g3 (10, 196, 300); lcd.print ("196.0"); vonesa (400); lcd.qartë (); // luaj tonin f4 (10, 349.23, 300); lcd.print ("349.23"); vonesa (400); lcd.qartë (); // luaj tonin e4 (10, 329.23, 300); lcd.print ("329.23"); vonesa (400); lcd.qartë (); // luaj tonin d4 (10, 293.63, 900); lcd.print ("293.63"); vonesa (1000); lcd.qartë (); // luaj tonin e3 (10, 164.81, 300); lcd.print ("164.81"); vonesa (400); lcd.qartë (); // luaj tonin e4 (10, 329.63, 300); lcd.print ("329.63"); vonesa (400); lcd.qartë (); // luaj tonin d4 (10, 293.63, 300); lcd.print ("293.63"); vonesa (400); lcd.qartë (); // luaj tonin c4 (10, 261.63, 900); lcd.print ("261.63"); vonesa (1000); lcd.qartë (); // luaj tonin d3 (10, 146.83, 300); lcd.print ("146.83"); vonesa (400); lcd.qartë (); // luaj tonin d4 (10, 293.63, 300); lcd.print ("293.63"); vonesa (400); lcd.qartë (); // luaj tonin c4 (10, 261.63, 300); lcd.print ("261.63"); vonesa (400); lcd.qartë (); // luaj tonin b3 (10, 246.94, 900); lcd.print ("246.94"); vonesa (1000); lcd.qartë (); // luaj tonin e4 (10, 329.63, 300); lcd.print ("329.63"); vonesa (400); lcd.qartë (); // luani tonin d4# (10, 311.13, 300); lcd.print ("311.13"); vonesë (350); lcd.qartë (); // luaj tonin e4 (10, 329.63, 300); lcd.print ("329.63"); vonesë (350); lcd.qartë (); // luani tonin d4# (10, 311.13, 300); lcd.print ("311.13"); vonesë (350); lcd.qartë (); // luaj tonin e4 (10, 329.63, 300); lcd.print ("329.63"); vonesë (350); lcd.qartë (); // luaj tonin b3 (10, 246.94, 300); lcd.print ("246.94"); vonesa (400); lcd.qartë (); // luaj tonin d4 (10, 293.66, 300); lcd.print ("293.66"); vonesa (400); lcd.qartë (); // luaj tonin c4 (10, 261.63, 300); lcd.print ("261.63"); vonesa (400); lcd.qartë (); // luaj tonin a3 (10, 220, 900); lcd.print ("220.0"); vonesa (1000); lcd.qartë (); // luaj tonin d3 (10, 146.83, 300); lcd.print ("146.83"); vonesë (350); lcd.qartë (); // luaj tonin f3 (10, 174.61, 300); lcd.print ("174.61"); vonesa (400); lcd.qartë (); // luaj tonin a3 (10, 220, 300); lcd.print ("220.0"); vonesa (400); // luaj b3 lcd.qartë (); toni (10, 246.94, 900); lcd.print ("246.94"); vonesa (1000); lcd.qartë (); // luaj tonin e3 (10, 164.81, 300); lcd.print ("164.81"); vonesa (400); lcd.qartë (); // luaj tonin g#3 (10, 207.65, 300); lcd.print ("207.65"); vonesa (400); lcd.qartë (); // luaj tonin b3 (10, 246.94, 300); lcd.print ("246.94"); vonesa (400); lcd.qartë (); // luaj tonin c4 (10, 261.63, 900); lcd.print ("261.63"); vonesa (1000); vonesë (300); lcd.qartë (); // luaj tonin e3 (10, 164.81, 300); lcd.print ("164.81"); vonesa (400); lcd.qartë (); // luaj tonin e4 (10, 329.63, 300); lcd.print ("329.63"); vonesa (400); lcd.qartë (); // luani tonin d4# (10, 311.13, 300); lcd.print ("311.13"); vonesa (400); lcd.qartë (); // luaj tonin e4 (10, 329.63, 300); lcd.print ("329.63"); vonesa (400); lcd.qartë (); // luani tonin d4# (10, 311.13, 300); lcd.print ("311.13"); vonesa (400); lcd.qartë (); // luaj tonin e4 (10, 329.63, 300); lcd.print ("329.63"); vonesa (400); lcd.qartë (); // luaj tonin b3 (10, 246.94, 300); lcd.print ("246.94"); vonesa (400); lcd.qartë (); // luaj tonin d4 (10, 293.66, 300); lcd.print ("293.66"); vonesa (400); lcd.qartë (); // luaj tonin c4 (10, 261.63, 300); lcd.print ("261.63"); vonesa (400); lcd.qartë (); // luaj tonin a3 (10, 220, 900); lcd.print ("220.0"); vonesa (1000); lcd.qartë (); // luaj tonin d3 (10, 146.83, 300); lcd.print ("146.83"); vonesa (400); lcd.qartë (); // luaj tonin f3 (10, 174.61, 300); lcd.print ("174.61"); vonesa (400); lcd.qartë (); // luaj tonin a3 (10, 220, 300); lcd.print ("220.0"); vonesa (400); lcd.qartë (); // luaj tonin b3 (10, 246.94, 900); lcd.print ("246.94"); vonesa (1000); lcd.qartë (); // luaj tonin f3 (10, 174.61, 300); lcd.print ("174.61"); vonesa (400); lcd.qartë (); // luaj tonin c4 (10, 261.63, 300); lcd.print ("261.63"); vonesa (400); lcd.qartë (); // luaj tonin b3 (10, 246.94, 300); lcd.print ("246.94"); vonesa (400); lcd.qartë (); // luaj tonin a3 (10, 220, 900); lcd.print ("220.0"); vonesa (1000); lcd.qartë (); }

Hapi 5: Ngarkimi i kodit: Çfarë do të thotë e gjithë kjo?

Le të përcaktojmë disa funksione në anglisht, në mënyrë që të kuptoni kodin.

toni (x, y, z); = luani një ton me një lartësi y Hertz, në një zile në pin x, për z milisekonda.

lcd.print ("XYZ"); = printoni një mesazh me personazhet XYZ në ekranin LCD. (p.sh. shfaq katranin e Hertzit)

vonesa (x); = pauzë për x milisekonda.

const int X = Y = vendosni një ndryshore konstante X në pin Y, dhe përdorni ose X ose Y për t'i caktuar detyrat pajisjes.

lcd.qartë (); = pastroni ekranin LCD dhe rivendoseni për një ekran të ri

pinMode (X, OUTPUT); = vendosni pinin X për modalitetin e daljes

Pasi të keni kuptuar të gjitha këto funksione, lehtë mund t'i zëvendësoni variablat me të dhënat që grumbulloni kur përktheni një këngë, dhe më pas mund të kodoni këngën tuaj!

Hapi 6: Përfundoi !!

Përfundoi !!!
Përfundoi !!!
Përfundoi !!!
Përfundoi !!!

Ose keni një Arduino që luan Fur Elise dhe shfaq vlerat e shënimeve në Hertz, ose keni bërë një Arduino që luan melodinë e këngës që keni zgjedhur dhe shfaq tekstin që dëshironi të shfaqni. Faleminderit që vizituat këtë tutorial, dhe shpresoj për ju këtë projekt në Arduino.

Recommended: