Përmbajtje:
- Hapi 1: Ktheni pjesën muzikore në shënime dixhitale: Vlerat e vonesës
- Hapi 2: Ktheni pjesën muzikore në shënime dixhitale: Vlerat e Hercit
- Hapi 3: Dizajni i qarkut
- Hapi 4: Ngarkimi i Kodit: Si ta bëni
- Hapi 5: Ngarkimi i kodit: Çfarë do të thotë e gjithë kjo?
- Hapi 6: Përfundoi !!
Video: Dixhitalizoni një këngë me Arduino: 6 hapa
2024 Autor: John Day | [email protected]. E modifikuara e fundit: 2024-01-30 12:27
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
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
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
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 !!
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:
Bëni një këngë të ndjeshme me kosto të ulët në minuta !: 10 hapa (me fotografi)
Bëni një udhë të ndjeshme me kosto të ulët në minuta !: Në udhëzuesin tim të mëparshëm, ju tregova se si të bëni një model model treni me mur anësor të automatizuar. Ai përdori një segment pista, të quajtur 'pista e sensuar'. Thingshtë një gjë mjaft e dobishme të kesh në një plan urbanistik model hekurudhor. Mund të përdoret për sa më poshtë: Blloko
Dixhitalizoni sistemin tuaj Hi-fi: 6 hapa (me fotografi)
Dixhitalizoni sistemin tuaj Hi-fi: Në këtë Instructable do të doja t'ju tregoja se si e digjitalizova sistemin tim analog hi-fi dhe kështu realizova radio në internet, qasje në koleksionin muzikor të ruajtur në NAS-in tim, etj. Zbatimi bazohet kryesisht në një Raspberry Pi, një kapelë Hifiberry dhe një prekje
Si të luani një këngë në Yamaha tuaj EZ-220: 5 hapa
Si të luani një këngë në Yamaha tuaj EZ-220: Këto hapa do t'ju ndihmojnë të luani këngën tuaj duke përdorur librin e këngëve
Si të bëni një këngë elektronike të Bumpin: Prodhimi fillestar i muzikës për FL Studio: 6 hapa
Si të bëni një këngë elektronike të Bumpin: Prodhimi hyrës i muzikës për FL Studio: Mirësevini! Ky udhëzues i udhëzueshëm do të ndihmojë prodhuesit fillestarë të muzikës së ndërmjetme në përdorimin e FL Studio për të krijuar zhanre të ndryshme të muzikës elektronike të vallëzimit. Do të kalojë nëpër elementët bazë të krijimit të një kënge, me qëllim detajimin e këshillave themelore
Regjistrimi i një kënge në një iPad: 11 hapa (me fotografi)
Regjistrimi i një kënge në një IPad: Një mikesha ime kohët e fundit pyeti se si mund të regjistronte disa nga këngët e saj vetëm me një kitarë dhe një iPad. E pyeta nëse kishte ndonjë pajisje tjetër regjistruese si mikrofon dhe ndërfaqe regjistrimi. Fatkeqësisht, përgjigjja ishte jo, dhe ajo nuk është