Mundarija:

Arduino yordamida qo'shiqni raqamlashtirish: 6 qadam
Arduino yordamida qo'shiqni raqamlashtirish: 6 qadam

Video: Arduino yordamida qo'shiqni raqamlashtirish: 6 qadam

Video: Arduino yordamida qo'shiqni raqamlashtirish: 6 qadam
Video: Arduino yordamida mashina yasash 2024, Noyabr
Anonim
Arduino bilan qo'shiqni raqamlashtirish
Arduino bilan qo'shiqni raqamlashtirish

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

Musiqiy balni raqamli eslatmalarga aylantiring: kechikish qiymatlari
Musiqiy balni raqamli eslatmalarga aylantiring: 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

Musiqiy balni raqamli eslatmalarga aylantiring: Hertz qiymatlari
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

O'chirish dizayni
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 !!

Bajarildi !!!
Bajarildi !!!
Bajarildi !!!
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: