Mundarija:
- 1 -qadam: Musiqiy balni raqamli eslatmalarga aylantirish: kechikish qiymatlari
- 2 -qadam: Musiqiy balni raqamli eslatmalarga aylantiring: Hertz qiymatlari
- 3 -qadam: O'chirish dizayni
- 4-qadam: Kodni yuklash: Qanday qilib
- 5 -qadam: Kodni yuklash: bularning barchasi nimani anglatadi?
- 6 -qadam: Bajarildi !!
Video: Arduino yordamida qo'shiqni raqamlashtirish: 6 qadam
2024 Muallif: John Day | [email protected]. Oxirgi o'zgartirilgan: 2024-01-30 13:27
Men o'zim yoqtirgan ikkita fanni birlashtirgan loyiha yaratmoqchi edim: fan va musiqa. Men bu ikki domenni birlashtirishning barcha usullari haqida o'yladim va Gertzda notaning balandligini namoyish qilishda Arduino "Fur Elise" o'yinini o'ynash qiziq bo'lardi deb o'yladim. Endi qurilishni boshlaymiz!
Sizga bitta Arduino Uno yoki Mega, ko'plab o'tish kabellari, Piezo signal signallari, non paneli, 16*2 o'lchamli LCD displey va barcha o'chirgich pinlari va 10k potensiometr kerak bo'ladi (siz ularni potmetr deb ham eshitishingiz mumkin.). Qurilishni boshlashdan oldin, ushbu materiallarning barchasini yig'ish yaxshidir.
1 -qadam: Musiqiy balni raqamli eslatmalarga aylantirish: kechikish qiymatlari
Eslatmani raqamli ekvivalentiga raqamli transkripsiya qilishning ikki bosqichi mavjud. Birinchidan, biz yozuvning millisekundlarda davom etish vaqtini yozishimiz kerak bo'ladi. Men bu vazifani bajarish uchun Internetda topilgan jadvalni ishlatdim. Notaning yarim nota, choraklik eslatma, sakkizinchi nota va hokazo ekanligiga asoslanib, men yozuv uzunligini millisekundlarga yozdim. Siz bu raqamlarni mening kodimda kechikish () sifatida ko'rishingiz mumkin; funktsiya va qavs ichidagi raqam biz bu qadamda aniqlagan millisekundlarda kechikish qiymati bo'ladi.
2 -qadam: Musiqiy balni raqamli eslatmalarga aylantiring: Hertz qiymatlari
Bu qadamni boshlashdan oldin, ba'zi texnik atamalarni belgilab beray. Notaning "qiymati" "qadam", "qiymat" va "eslatma" so'zlari bilan almashtirilishi mumkin. Endi siz qo'shiqning har bir notasini ballardan o'qishingiz kerak. Siz har bir yozuvni Hertz -ga musiqa yordamida tarjima qilishingiz kerak bo'ladi, uni Internetda osongina topishingiz mumkin. Esda tutish kerak bo'lgan narsa shundaki, o'rtada C stolda C4, yuqori oktava esa C5 va hokazo. Bu eslatmalarning hammasi Xertzga yozilgandan so'ng, siz qiymatlarni funktsiya ohangiga joylashtirasiz (x, y, z); bu erda X - pin raqami yoki const int, o'zgaruvchilarni aniqlash usuli, keyinroq tushuntiraman. Y - siz yozgan Hertz qiymati, Z - yozuvning millisekundlarda davomiyligi, eng yaqin yuzinchi qismga yaxlitlanadi. Kechikish (); qiymatlar eslatmaning davomiyligi bo'ladi. Keling, musiqani ijro etadigan sxemani tuzaylik.
3 -qadam: O'chirish dizayni
Endi biz barcha eslatmalarni kompyuter tushunadigan raqamli qiymatlarga tarjima qilganimizdan so'ng, sxemani tuzish vaqti keldi. Dastlabki taxtani olib, LCD displeyni birinchi pinli (GND) 14 -qatorga qo'yishdan boshlang. Buzzerni xohlagan joyingizga qo'ying va uning yoniga potansiyometr qo'ying. Maqsad - hamma narsani bir qatorga qo'yish, simlarning tiqilib qolishini kamaytirish. Arduino -ni taxtaning yoniga joylashtiring va 5v -pinni non taxtasining musbat panjarasiga, erga tutashtirgichni esa manfiy relsga ulang. Endi biz Arduino va komponentlar orasidagi o'tish moslamalarini ulashga tayyormiz.
Keling, LCD -dagi pinlar va ularni qanday sim bilan ulash haqida gaplashaylik.
GND erni anglatadi, bu to'g'ridan -to'g'ri oqimdagi salbiy sim. GND simini non paneli salbiy manbaiga o'tkazing.
VCC "Umumiy kollektorda kuchlanish" degan ma'noni anglatadi va bu erda siz 5 voltli quvvat manbaiga (musbat elektr rayı) ulanasiz.
VO Kontrast degan ma'noni anglatadi, uni potentsiometrning o'rta piniga ulang. Potentsiometrning chap pinini musbat elektr rayıga, o'ng pinni esa er elektr tarmog'iga ulang.
RS "Ro'yxatdan o'tish tanlovi" degan ma'noni anglatadi va bu Arduino tomonidan displeyda ma'lumotlarni qaerda saqlash kerakligini aytib berish uchun ishlatiladi. Ushbu pinni Arduino -ning 12 -piniga ulang.
RW o'qish/yozish pinini anglatadi, bu Arduino ekranida siz ko'rsatmoqchi bo'lgan narsani ko'rsatayotganligini tekshirish uchun ishlatiladi. Bu pinni non panelidagi manfiy relsga ulang.
E - yoqish degan ma'noni anglatadi, bu LCD -ga qaysi piksellarni yoqish (yoqish) yoki o'chirish (o'chirish) kerakligini bildiradi. Bu pinni Arduino pin 11 ga ulang.
D4, D5, D6 va D7 - bu ko'rsatiladigan belgilar va harflarni boshqaruvchi displey pinlari. Ularni mos ravishda Arduino 5, 4, 3 va 2 -pinlariga ulang.
A pin, ba'zida LED deb belgilanadi, bu orqa yorug'lik uchun LED anodidir. Buni sim bilan yoki 220 ohmli rezistor bilan musbat elektr quvvat rayiga ulang. Rezistor uzoqroq foydalanish uchun yaxshiroqdir, chunki u LCD -ni zaxira qiladi, lekin agar qurilma kechayu kunduz ishlatilmasa, sizga rezistor kerak emas.
Pin K, ba'zida (chalkashlik bilan) yorliqli LED - bu LED topraklama pimi. Buni er usti elektr tarmog'iga ulang.
4-qadam: Kodni yuklash: Qanday qilib
Arduino -ni kompyuterning USB -ga ulang. Arduino IDE dasturchisi yordamida quyidagi kodni yuklang.
#qo'shing
const int rs = 12, en = 11, d4 = 5, d5 = 4, d6 = 3, d7 = 2; LiquidCrystal lcd (rs, en, d4, d5, d6, d7);
bo'sh o'rnatish () {
// LCD -ning ustunlar va qatorlar sonini o'rnating: lcd.begin (16, 2); // Xabarni LCD displeyga chop eting. lcd.print ("Hertz Pitch:!"); kechikish (1000); void loop () {// e4 kechiktirishni kechiktirish (600); // 0,6 soniya pauza (10, 329,63, 300); // 10 -pinli signal signaliga e. ijro etish, 3 soniya lcd.print (" 329.63 "); // LCD displeyda" 329.63 "xabarini ko'rsatish
kechikish (350); //.35 soniya kechiktirish
lcd.clear (); // LCD -ni tozalash va keyingi xabarni tiklash // d4# ohangini ijro etish (10, 311.13, 300); lcd.print ("311.13"); kechikish (350); lcd.clear (); // e4 ohangini ijro etish (10, 329.63, 300); lcd.print ("329.63"); kechikish (350); lcd.clear (); // d4# ohangini ijro etish (10, 311.13, 300); lcd.print ("311.13"); kechikish (350); lcd.clear (); // e4 ohangini ijro etish (10, 329.63, 300); lcd.print ("329.63"); kechikish (350); lcd.clear (); // b3 ohangini ijro etish (10, 246.94, 300); lcd.print ("246.94"); kechikish (400); lcd.clear (); // d4 ohangini ijro etish (10, 293.66, 300); lcd.print ("293.66"); kechikish (400); lcd.clear (); // c4 ohangini ijro etish (10, 261.63, 300); lcd.print ("261.63"); kechikish (400); lcd.clear (); // a3 ohangini ijro etish (10, 220, 900); lcd.print ("220.0"); kechikish (1000); lcd.clear (); // line60 // helpsave // avrdude.failure.eeprom // d3 ohangini ijro etish (10, 146.83, 300); lcd.print ("146.63"); kechikish (350); lcd.clear (); // f3 ohangini ijro etish (10, 174.61, 300); lcd.print ("174.61"); kechikish (400); lcd.clear (); // a3 ohangini ijro etish (10, 220, 300); lcd.print ("220"); kechikish (400); lcd.clear (); // b3 ohangini ijro etish (10, 246.94, 900); lcd.print ("246.94"); kechikish (1000); lcd.clear ();
// e3 o'ynang
ohang (10, 164.81, 300); lcd.print ("164.81"); kechikish (400); lcd.clear (); // g3# ohangini ijro etish (10, 207.65, 300); lcd.print ("207.65"); kechikish (400); lcd.clear (); // b3 ohangini ijro etish (10, 246.94, 300); lcd.print ("246.94"); kechikish (400); lcd.clear (); // c4 ohangini ijro etish (10, 261.63, 900); lcd.print ("261.63"); kechikish (1000); lcd.clear (); // e ohangni ijro etish (10, 164.81, 300); lcd.print ("164.81"); kechikish (400); lcd.clear (); // e4 ohangini ijro etish (10, 329.63, 300); lcd.print ("329.63"); kechikish (400); lcd.clear (); // d4# ohangini ijro etish (10, 311.13, 300); lcd.print ("311.13"); kechikish (400); lcd.clear (); // e4 ohangini ijro etish (10, 329.63, 300); lcd.print ("329.63"); kechikish (400); lcd.clear (); // d4# ohangini ijro etish (10, 311.13, 300); lcd.print ("311.13"); kechikish (400); lcd.clear (); // e4 ohangini ijro etish (10, 329.63, 300); lcd.print ("329.63"); kechikish (400); lcd.clear (); // b3 ohangini ijro etish (10, 246.94, 300); lcd.print ("246.94"); kechikish (400); lcd.clear (); // d4 ohangini ijro etish (10, 293.66, 300); lcd.print ("293.66"); kechikish (400); lcd.clear (); // c4 ohangini ijro etish (10, 261.63, 300); lcd.print ("261.63"); kechikish (400); lcd.clear (); // a3 ohangini ijro etish (10, 220, 900); lcd.print ("220.0"); kechikish (1000); lcd.clear (); // d3 ohangini ijro etish (10, 146.83, 300); lcd.print ("146.83"); kechikish (400); lcd.clear (); // f3 ohangini ijro etish (10, 174.61, 300); // eeprom 20–6 yesno, flesh 65–0 noyes lcd.print ("174,61"); kechikish (400); lcd.clear (); // a3 ohangini ijro etish (10, 220, 300); lcd.print ("220.0"); kechikish (400); lcd.clear (); // b3 ohangini ijro etish (10, 246.94, 900); lcd.print ("246.94"); kechikish (1000); lcd.clear (); // f3 ohangini ijro etish (10, 174.61, 300); lcd.print ("174.61"); kechikish (400); lcd.clear (); // c4 ohangini ijro etish (10, 261.63, 300); lcd.print ("261.63"); kechikish (400); lcd.clear (); // b3 ohangini ijro etish (10, 246.94, 300); lcd.print ("246.94"); kechikish (400); lcd.clear (); // a3 ohangini ijro etish (10, 220, 900); lcd.print ("220.0"); kechikish (1000); lcd.clear (); // b3 ohangini ijro etish (10, 246.94, 300); lcd.print ("246.94"); kechikish (400); lcd.clear (); // c4 ohangini ijro etish (10, 261.63, 300); lcd.print ("261.63"); kechikish (400); lcd.clear (); // d4 ohangini ijro etish (10, 293.66, 300); lcd.print ("293.66"); kechikish (400); lcd.clear (); // e4 ohangini ijro etish (10, 329.63, 900); lcd.print ("329.63"); kechikish (1000); lcd.clear (); // g3 ohangini ijro etish (10, 196, 300); lcd.print ("196.0"); kechikish (400); lcd.clear (); // f4 ohangini ijro etish (10, 349.23, 300); lcd.print ("349.23"); kechikish (400); lcd.clear (); // e4 ohangini ijro etish (10, 329.23, 300); lcd.print ("329.23"); kechikish (400); lcd.clear (); // d4 ohangini ijro etish (10, 293.63, 900); lcd.print ("293.63"); kechikish (1000); lcd.clear (); // e3 ohangini ijro etish (10, 164.81, 300); lcd.print ("164.81"); kechikish (400); lcd.clear (); // e4 ohangini ijro etish (10, 329.63, 300); lcd.print ("329.63"); kechikish (400); lcd.clear (); // d4 ohangini ijro etish (10, 293.63, 300); lcd.print ("293.63"); kechikish (400); lcd.clear (); // c4 ohangini ijro etish (10, 261.63, 900); lcd.print ("261.63"); kechikish (1000); lcd.clear (); // d3 ohangini ijro etish (10, 146.83, 300); lcd.print ("146.83"); kechikish (400); lcd.clear (); // d4 ohangini ijro etish (10, 293.63, 300); lcd.print ("293.63"); kechikish (400); lcd.clear (); // c4 ohangini ijro etish (10, 261.63, 300); lcd.print ("261.63"); kechikish (400); lcd.clear (); // b3 ohangini ijro etish (10, 246.94, 900); lcd.print ("246.94"); kechikish (1000); lcd.clear (); // e4 ohangini ijro etish (10, 329.63, 300); lcd.print ("329.63"); kechikish (400); lcd.clear (); // d4# ohangini ijro etish (10, 311.13, 300); lcd.print ("311.13"); kechikish (350); lcd.clear (); // e4 ohangini ijro etish (10, 329.63, 300); lcd.print ("329.63"); kechikish (350); lcd.clear (); // d4# ohangini ijro etish (10, 311.13, 300); lcd.print ("311.13"); kechikish (350); lcd.clear (); // e4 ohangini ijro etish (10, 329.63, 300); lcd.print ("329.63"); kechikish (350); lcd.clear (); // b3 ohangini ijro etish (10, 246.94, 300); lcd.print ("246.94"); kechikish (400); lcd.clear (); // d4 ohangini ijro etish (10, 293.66, 300); lcd.print ("293.66"); kechikish (400); lcd.clear (); // c4 ohangini ijro etish (10, 261.63, 300); lcd.print ("261.63"); kechikish (400); lcd.clear (); // a3 ohangini ijro etish (10, 220, 900); lcd.print ("220.0"); kechikish (1000); lcd.clear (); // d3 ohangini ijro etish (10, 146.83, 300); lcd.print ("146.83"); kechikish (350); lcd.clear (); // f3 ohangini ijro etish (10, 174.61, 300); lcd.print ("174.61"); kechikish (400); lcd.clear (); // a3 ohangini ijro etish (10, 220, 300); lcd.print ("220.0"); kechikish (400); // b3 lcd.clear () ni o'ynang; ohang (10, 246.94, 900); lcd.print ("246.94"); kechikish (1000); lcd.clear (); // e3 ohangini ijro etish (10, 164.81, 300); lcd.print ("164.81"); kechikish (400); lcd.clear (); // g#3 ohangini o'ynang (10, 207.65, 300); lcd.print ("207.65"); kechikish (400); lcd.clear (); // b3 ohangini ijro etish (10, 246.94, 300); lcd.print ("246.94"); kechikish (400); lcd.clear (); // c4 ohangini ijro etish (10, 261.63, 900); lcd.print ("261.63"); kechikish (1000); kechikish (300); lcd.clear (); // e3 ohangini ijro etish (10, 164.81, 300); lcd.print ("164.81"); kechikish (400); lcd.clear (); // e4 ohangini ijro etish (10, 329.63, 300); lcd.print ("329.63"); kechikish (400); lcd.clear (); // d4# ohangini ijro etish (10, 311.13, 300); lcd.print ("311.13"); kechikish (400); lcd.clear (); // e4 ohangini ijro etish (10, 329.63, 300); lcd.print ("329.63"); kechikish (400); lcd.clear (); // d4# ohangini ijro etish (10, 311.13, 300); lcd.print ("311.13"); kechikish (400); lcd.clear (); // e4 ohangini ijro etish (10, 329.63, 300); lcd.print ("329.63"); kechikish (400); lcd.clear (); // b3 ohangini ijro etish (10, 246.94, 300); lcd.print ("246.94"); kechikish (400); lcd.clear (); // d4 ohangini ijro etish (10, 293.66, 300); lcd.print ("293.66"); kechikish (400); lcd.clear (); // c4 ohangini ijro etish (10, 261.63, 300); lcd.print ("261.63"); kechikish (400); lcd.clear (); // a3 ohangini ijro etish (10, 220, 900); lcd.print ("220.0"); kechikish (1000); lcd.clear (); // d3 ohangini ijro etish (10, 146.83, 300); lcd.print ("146.83"); kechikish (400); lcd.clear (); // f3 ohangini ijro etish (10, 174.61, 300); lcd.print ("174.61"); kechikish (400); lcd.clear (); // a3 ohangini ijro etish (10, 220, 300); lcd.print ("220.0"); kechikish (400); lcd.clear (); // b3 ohangini ijro etish (10, 246.94, 900); lcd.print ("246.94"); kechikish (1000); lcd.clear (); // f3 ohangini ijro etish (10, 174.61, 300); lcd.print ("174.61"); kechikish (400); lcd.clear (); // c4 ohangini ijro etish (10, 261.63, 300); lcd.print ("261.63"); kechikish (400); lcd.clear (); // b3 ohangini ijro etish (10, 246.94, 300); lcd.print ("246.94"); kechikish (400); lcd.clear (); // a3 ohangini ijro etish (10, 220, 900); lcd.print ("220.0"); kechikish (1000); lcd.clear (); }
5 -qadam: Kodni yuklash: bularning barchasi nimani anglatadi?
Keling, kodni tushunishingiz uchun ba'zi funktsiyalarni ingliz tilida aniqlaylik.
ohang (x, y, z); = y Gertz balandligi bilan, x x pinidagi signalga z millisekundlarda ohang chalish.
lcd.print ("XYZ"); = LCD ekranga XYZ belgilaridan iborat xabarni chop etish. (masalan, Hertz maydonini ko'rsatish)
kechikish (x); = x millisekund uchun pauza.
const int X = Y = o'zgarmaydigan X ni Y piniga o'rnating va qurilmaga vazifalarni belgilash uchun X yoki Y ni ishlating.
lcd.clear (); = LCD displeyni tozalang va yangi displeyni o'rnating
pinMode (X, OUTPUT); = chiqish rejimi uchun X pinini o'rnating
Bu funktsiyalarning barchasini tushunganingizdan so'ng, siz qo'shiqni tarjima qilishda to'plangan ma'lumotlar bilan osongina o'zgaruvchilarni almashtira olasiz va keyin o'z qo'shig'ingizni kodlashingiz mumkin!
6 -qadam: Bajarildi !!
Sizda Fur Elise o'ynaydigan va Xertzda notalar qiymatini ko'rsatadigan Arduino bor, yoki siz tanlagan qo'shiqning ohangini ijro etadigan va ko'rsatmoqchi bo'lgan matnni ko'rsatadigan Arduino yaratgansiz. Ushbu qo'llanmaga tashrif buyurganingiz uchun tashakkur va men sizga Arduino -dagi ushbu loyihani umid qilaman.
Tavsiya:
DSLR yordamida slaydlar va kinofilmlarni raqamlashtirish: 12 qadam (rasmlar bilan)
DSLR yordamida slaydlar va kinofilmlarni raqamlashtirish: DSLR yoki har qanday kamera yordamida makro variantli slaydlar va negativlarni raqamlashtirish uchun ko'p qirrali va barqaror sozlash. Bu ko'rsatma - 35 mm negativlarni qanday raqamlashtirish kerak (2011 yil iyul oyida yuklangan), uni kengaytirish uchun bir nechta yaxshilanishlar bilan
Hi-fi tizimini raqamlashtirish: 6 qadam (rasmlar bilan)
Hi-fi tizimini raqamlashtirish: Ushbu ko'rsatmada men o'zimning hi-fi analog tizimimni qanday raqamlashtirganimni va shu tariqa veb-radio, NASda saqlangan musiqiy to'plamga kirishni va boshqalarni ko'rsatmoqchiman. Amalga oshirish asosan Raspberry Pi, Hifiberry HAT va teginish
Yamaha EZ-220-da qo'shiqni qanday ijro etish kerak: 5 qadam
Yamaha EZ-220-da qo'shiqni qanday ijro etish mumkin: Ushbu qadamlar qo'shiq kitobidan foydalanib qo'shiqni ijro etishga yordam beradi
Sonic Pi -da musiqali musiqadan foydalanib qo'shiqni qanday kodlash mumkin: 5 qadam
Sonic Pi -da musiqali musiqadan foydalanib, qo'shiqni qanday kodlash mumkin: Bu ko'rsatma Sonic Pi -da qo'shiqni nota musiqasi yordamida kodlashda ishlatilishi kerak bo'lgan ba'zi asosiy qadamlar va kod qismlarini ko'rsatib beradi! Tayyor bo'lagingizga lazzat qo'shishga harakat qiladigan millionlab boshqa kodlar mavjud, shuning uchun ham y atrofida o'ynang
Har qanday qo'shiqni Mp3 -ga aylantirish: 7 qadam
Har qanday qo'shiqni Mp3 -ga aylantiring: men Las -Vegasga kredit beraman, u menga buni ko'rsatdi. Buni men kabi ahmoq bo'lganlarga yuboraman* yangilash* trebuchet03 tufayli siz m4p fayllarni o'tkaza olmaysiz, lekin siz mp4 fayllari bilan bosh sahifa mp4 fayllari bilan nima uchun bunday qilardik? yaxshi mening mp3 pleerim