Mündəricat:

Arduino ilə bir mahnını rəqəmsallaşdırın: 6 addım
Arduino ilə bir mahnını rəqəmsallaşdırın: 6 addım

Video: Arduino ilə bir mahnını rəqəmsallaşdırın: 6 addım

Video: Arduino ilə bir mahnını rəqəmsallaşdırın: 6 addım
Video: Mahsun Kırmızıgül - Dinle 2024, Noyabr
Anonim
Arduino ilə bir mahnını rəqəmləşdirin
Arduino ilə bir mahnını rəqəmləşdirin

Ən çox sevdiyim iki mövzunu birləşdirən bir layihə yaratmaq istədim: elm və musiqi. Bu iki domeni birləşdirməyin bütün yollarını düşündüm və Hertz -də notun sahəsini nümayiş etdirərkən Arduino -nun Fur Elise oyununu oynamağın maraqlı olacağını düşündüm. İndi tikintiyə başlayaq!

Bir Arduino Uno və ya Mega, bir çox tullanan kabel, Piezo səs siqnalı, çörək taxtası, bütün silecek pinləri olan 16*2 ölçülü LCD ekrana və 10 k Potansiyometrə ehtiyacınız olacaq (bunlara potmeters də deyilir)). Tikintiyə başlamazdan əvvəl bütün bu materialları bir araya gətirmək daha yaxşıdır.

Addım 1: Musiqi Səsini Rəqəmsal Qeydlərə çevirin: Gecikmə Dəyərləri

Musiqi Səsini Rəqəmsal Qeydlərə çevirin: Gecikmə Dəyərləri
Musiqi Səsini Rəqəmsal Qeydlərə çevirin: Gecikmə Dəyərləri

Notu rəqəmdən rəqəmsal ekvivalentinə rəqəmsal olaraq köçürmək üçün iki addım var. Birincisi, qeydin millisekundlarla bitmə vaxtını yazmalıyıq. Bu iş üçün internetdə tapdığım bir diaqramdan istifadə etdim. Bir notun yarım nota, dörddəbir not, səkkizinci nota və s. Olduğuna əsaslanaraq, qeydin uzunluğunu millisaniyəyə köçürdüm. Kodumda bu nömrələri gecikmə () kimi görə bilərsiniz; funksiyası və mötərizədə olan ədəd, bu addımda təyin etdiyimiz milisaniyələrdəki gecikmə dəyəri olacaq.

Addım 2: Musiqi Səsini Rəqəmsal Qeydlərə çevirin: Hertz Dəyərləri

Musiqili Səsləri Rəqəmsal Qeydlərə çevirin: Hertz Dəyərləri
Musiqili Səsləri Rəqəmsal Qeydlərə çevirin: Hertz Dəyərləri

Bu addıma başlamazdan əvvəl bəzi texniki terminləri təyin edim. Bir notun "dəyəri" "meydança", "dəyər" və "qeyd" sözləri ilə əvəz edilə bilər. İndi mahnının hər bir notunu hesabdan oxumalısan. Daha sonra onlayn olaraq tapa biləcəyiniz Hertz masasına bir musiqi istifadə edərək hər bir notu Hertz -ə çevirməlisiniz. Xatırlamaq lazım olan bir şey C ortasının masada C4, daha yüksək bir oktavanın isə C5 olması və s. Bu qeydlərin hamısı Hertz -ə yazıldıqdan sonra dəyərləri funksiya tonuna yerləşdirəcəksiniz (x, y, z); burada X, pin nömrəsi və ya const int, dəyişənləri daha sonra izah edəcəyəm. Y, yeni transkripsiya etdiyiniz Hertz dəyəri, Z isə millisekundlarla ən yaxın yüzlüyə yuvarlaqlaşdırılmış notun müddəti olacaq. Gecikmə(); dəyərlər notun müddəti olacaq. İndi musiqini çalacaq dövrə dizayn edək.

Addım 3: Dövrə Dizaynı

Dövrə Dizaynı
Dövrə Dizaynı

İndi bütün qeydləri kompüterin başa düşə biləcəyi rəqəmsal dəyərlərə çevirdik, dövrəni qurmağın vaxtı gəldi. Çörək taxtası götürərək və LCD ekranı birinci pinlə (GND) 14 -cü sırada yerləşdirərək başlayın. Məqsəd, hər şeyi sıraya düzmək, tellərin qarışmasını minimuma endirməkdir. Arduino'yu çörək taxtasının yanına qoyun və 5v pinini çörək taxtasının pozitiv rayına, torpaq pimini isə mənfi raya bağlayın. İndi Arduino və komponentlər arasında atlayıcıları bağlamağa hazırıq.

İndi LCD -də olan sancaqlar və onları necə bağlamaq barədə danışaq.

GND yer deməkdir, bu birbaşa cərəyandakı mənfi teldir. Çörək taxtasının mənfi rayına GND telini çəkin.

VCC, Ümumi Kollektorda Gərginlik deməkdir və 5 voltluq enerji mənbəyinizi (pozitiv elektrik rayını) bağladığınız yerdir.

VO, Kontrast deməkdir, bunu potansiyometrenin orta pininə bağlayın. Potansiyometrenin sol pinini pozitiv elektrik rayına, sağ pinini isə yer elektrik rayına bağlayın.

RS, Qeyd Seçimi deməkdir və bu, Arduino tərəfindən ekranda məlumatların harada saxlanacağını bildirmək üçün istifadə olunur. Bu pimi Arduino'nun 12 pininə bağlayın.

RW, Arduinonun ekranda göstərmək üçün proqramlaşdırdığınızı göstərdiyini yoxlamaq üçün istifadə etdiyi Oxu/Yazma pinini ifadə edir. Bu pimi çörək lövhəsindəki mənfi raya bağlayın.

E, LCD -yə hansı pikselləri aktivləşdirmək (açmaq) və ya söndürmək (söndürmək) lazım olduğunu bildirən Enable deməkdir. Bu pimi Arduino pin 11 -ə bağlayın.

D4, D5, D6 və D7, göstərilən simvolları və hərfləri idarə edən Ekran pinləridir. Onları sırasıyla Arduino 5, 4, 3 və 2 pinlərinə bağlayın.

Bəzən LED olaraq etiketlənən A pin, arxa işıq üçün LED anoddur. Bunu bir tel və ya 220 ohm müqavimət ilə müsbət elektrik rayına bağlayın. Rezistor LCD -ni qoruduğundan daha uzun müddət istifadə etmək daha yaxşıdır, ancaq cihaz gecə -gündüz istifadə edilməyəcəksə, rezistora ehtiyacınız yoxdur.

Pin K, bəzən də (çaşqınlıqla) LED etiketli, LED torpaq pinidir. Bunu yerüstü elektrik borusuna bağlayın.

Addım 4: Kod Yükləmə: Necə Yapılır

Arduinonu kompüterinizin USB -yə qoşun. Arduino IDE proqramçıdan istifadə edərək aşağıdakı kodu yükləyin.

#daxil edin

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

boş quraşdırma () {

// LCD -nin sütun və satır sayını təyin edin: lcd.begin (16, 2); // LCD -yə mesaj yazın. lcd.print ("Hertz Pitch:!"); gecikmə (1000); void loop () {// e4 gecikməsini oynat (600); // 0.6 saniyəlik fasilə tonu (10, 329.63, 300); // pin 10 -da səs siqnalı ilə oxu.3 saniyə lcd.print (" 329.63 "); // LCD -də" 329.63 "mesajını göstərin

gecikmə (350); //.35 saniyə gecikmə

lcd.clear (); // LCD təmizləyin və növbəti mesaj üçün sıfırlayın // d4# tonunu oxuyun (10, 311.13, 300); lcd.print ("311.13"); gecikmə (350); lcd.clear (); // e4 tonu çal (10, 329.63, 300); lcd.print ("329.63"); gecikmə (350); lcd.clear (); // çal d4# ton (10, 311.13, 300); lcd.print ("311.13"); gecikmə (350); lcd.clear (); // e4 tonu çal (10, 329.63, 300); lcd.print ("329.63"); gecikmə (350); lcd.clear (); // b3 tonu çal (10, 246.94, 300); lcd.print ("246.94"); gecikmə (400); lcd.clear (); // d4 tonu çal (10, 293.66, 300); lcd.print ("293.66"); gecikmə (400); lcd.clear (); // c4 tonu çal (10, 261.63, 300); lcd.print ("261.63"); gecikmə (400); lcd.clear (); // a3 ton çal (10, 220, 900); lcd.print ("220.0"); gecikmə (1000); lcd.clear (); // line60 // helpsave // avrdude.failure.eeprom // play d3 ton (10, 146.83, 300); lcd.print ("146.63"); gecikmə (350); lcd.clear (); // f3 tonunu çal (10, 174.61, 300); lcd.print ("174.61"); gecikmə (400); lcd.clear (); // a3 ton çal (10, 220, 300); lcd.print ("220"); gecikmə (400); lcd.clear (); // b3 tonu çal (10, 246.94, 900); lcd.print ("246.94"); gecikmə (1000); lcd.clear ();

// e3 oynayın

ton (10, 164.81, 300); lcd.print ("164.81"); gecikmə (400); lcd.clear (); // g3# tonunu çal (10, 207.65, 300); lcd.print ("207.65"); gecikmə (400); lcd.clear (); // b3 tonu çal (10, 246.94, 300); lcd.print ("246.94"); gecikmə (400); lcd.clear (); // c4 tonu çal (10, 261.63, 900); lcd.print ("261.63"); gecikmə (1000); lcd.clear (); // e tonu çal (10, 164.81, 300); lcd.print ("164.81"); gecikmə (400); lcd.clear (); // e4 tonu çal (10, 329.63, 300); lcd.print ("329.63"); gecikmə (400); lcd.clear (); // çal d4# ton (10, 311.13, 300); lcd.print ("311.13"); gecikmə (400); lcd.clear (); // e4 tonu çal (10, 329.63, 300); lcd.print ("329.63"); gecikmə (400); lcd.clear (); // çal d4# ton (10, 311.13, 300); lcd.print ("311.13"); gecikmə (400); lcd.clear (); // e4 tonu çal (10, 329.63, 300); lcd.print ("329.63"); gecikmə (400); lcd.clear (); // b3 tonu çal (10, 246.94, 300); lcd.print ("246.94"); gecikmə (400); lcd.clear (); // d4 tonu çal (10, 293.66, 300); lcd.print ("293.66"); gecikmə (400); lcd.clear (); // c4 tonu çal (10, 261.63, 300); lcd.print ("261.63"); gecikmə (400); lcd.clear (); // a3 ton çal (10, 220, 900); lcd.print ("220.0"); gecikmə (1000); lcd.clear (); // d3 tonu çal (10, 146.83, 300); lcd.print ("146.83"); gecikmə (400); lcd.clear (); // f3 tonunu çal (10, 174.61, 300); // eeprom 20-6 yesno, flash 65-0 noyes lcd.print ("174.61"); gecikmə (400); lcd.clear (); // a3 ton çal (10, 220, 300); lcd.print ("220.0"); gecikmə (400); lcd.clear (); // b3 tonu çal (10, 246.94, 900); lcd.print ("246.94"); gecikmə (1000); lcd.clear (); // f3 tonunu çal (10, 174.61, 300); lcd.print ("174.61"); gecikmə (400); lcd.clear (); // c4 tonu çal (10, 261.63, 300); lcd.print ("261.63"); gecikmə (400); lcd.clear (); // b3 tonu çal (10, 246.94, 300); lcd.print ("246.94"); gecikmə (400); lcd.clear (); // a3 ton çal (10, 220, 900); lcd.print ("220.0"); gecikmə (1000); lcd.clear (); // b3 tonu çal (10, 246.94, 300); lcd.print ("246.94"); gecikmə (400); lcd.clear (); // c4 tonu çal (10, 261.63, 300); lcd.print ("261.63"); gecikmə (400); lcd.clear (); // d4 tonu çal (10, 293.66, 300); lcd.print ("293.66"); gecikmə (400); lcd.clear (); // e4 tonu çal (10, 329.63, 900); lcd.print ("329.63"); gecikmə (1000); lcd.clear (); // g3 tonunu çal (10, 196, 300); lcd.print ("196.0"); gecikmə (400); lcd.clear (); // f4 tonunu çal (10, 349.23, 300); lcd.print ("349.23"); gecikmə (400); lcd.clear (); // e4 tonu çal (10, 329.23, 300); lcd.print ("329.23"); gecikmə (400); lcd.clear (); // d4 tonu çal (10, 293.63, 900); lcd.print ("293.63"); gecikmə (1000); lcd.clear (); // e3 tonu çal (10, 164.81, 300); lcd.print ("164.81"); gecikmə (400); lcd.clear (); // e4 tonu çal (10, 329.63, 300); lcd.print ("329.63"); gecikmə (400); lcd.clear (); // d4 tonu çal (10, 293.63, 300); lcd.print ("293.63"); gecikmə (400); lcd.clear (); // c4 tonu çal (10, 261.63, 900); lcd.print ("261.63"); gecikmə (1000); lcd.clear (); // d3 tonu çal (10, 146.83, 300); lcd.print ("146.83"); gecikmə (400); lcd.clear (); // d4 tonu çal (10, 293.63, 300); lcd.print ("293.63"); gecikmə (400); lcd.clear (); // c4 tonu çal (10, 261.63, 300); lcd.print ("261.63"); gecikmə (400); lcd.clear (); // b3 tonu çal (10, 246.94, 900); lcd.print ("246.94"); gecikmə (1000); lcd.clear (); // e4 tonu çal (10, 329.63, 300); lcd.print ("329.63"); gecikmə (400); lcd.clear (); // çal d4# ton (10, 311.13, 300); lcd.print ("311.13"); gecikmə (350); lcd.clear (); // e4 tonu çal (10, 329.63, 300); lcd.print ("329.63"); gecikmə (350); lcd.clear (); // çal d4# ton (10, 311.13, 300); lcd.print ("311.13"); gecikmə (350); lcd.clear (); // e4 tonu çal (10, 329.63, 300); lcd.print ("329.63"); gecikmə (350); lcd.clear (); // b3 tonu çal (10, 246.94, 300); lcd.print ("246.94"); gecikmə (400); lcd.clear (); // d4 tonu çal (10, 293.66, 300); lcd.print ("293.66"); gecikmə (400); lcd.clear (); // c4 tonu çal (10, 261.63, 300); lcd.print ("261.63"); gecikmə (400); lcd.clear (); // a3 ton çal (10, 220, 900); lcd.print ("220.0"); gecikmə (1000); lcd.clear (); // d3 tonu çal (10, 146.83, 300); lcd.print ("146.83"); gecikmə (350); lcd.clear (); // f3 tonunu çal (10, 174.61, 300); lcd.print ("174.61"); gecikmə (400); lcd.clear (); // a3 ton çal (10, 220, 300); lcd.print ("220.0"); gecikmə (400); // b3 lcd.clear () oynat; ton (10, 246.94, 900); lcd.print ("246.94"); gecikmə (1000); lcd.clear (); // e3 tonu çal (10, 164.81, 300); lcd.print ("164.81"); gecikmə (400); lcd.clear (); // g#3 tonunu çal (10, 207.65, 300); lcd.print ("207.65"); gecikmə (400); lcd.clear (); // b3 tonu çal (10, 246.94, 300); lcd.print ("246.94"); gecikmə (400); lcd.clear (); // c4 tonu çal (10, 261.63, 900); lcd.print ("261.63"); gecikmə (1000); gecikmə (300); lcd.clear (); // e3 tonu çal (10, 164.81, 300); lcd.print ("164.81"); gecikmə (400); lcd.clear (); // e4 tonu çal (10, 329.63, 300); lcd.print ("329.63"); gecikmə (400); lcd.clear (); // çal d4# ton (10, 311.13, 300); lcd.print ("311.13"); gecikmə (400); lcd.clear (); // e4 tonu çal (10, 329.63, 300); lcd.print ("329.63"); gecikmə (400); lcd.clear (); // çal d4# ton (10, 311.13, 300); lcd.print ("311.13"); gecikmə (400); lcd.clear (); // e4 tonu çal (10, 329.63, 300); lcd.print ("329.63"); gecikmə (400); lcd.clear (); // b3 tonu çal (10, 246.94, 300); lcd.print ("246.94"); gecikmə (400); lcd.clear (); // d4 tonu çal (10, 293.66, 300); lcd.print ("293.66"); gecikmə (400); lcd.clear (); // c4 tonu çal (10, 261.63, 300); lcd.print ("261.63"); gecikmə (400); lcd.clear (); // a3 ton çal (10, 220, 900); lcd.print ("220.0"); gecikmə (1000); lcd.clear (); // d3 tonu çal (10, 146.83, 300); lcd.print ("146.83"); gecikmə (400); lcd.clear (); // f3 tonunu çal (10, 174.61, 300); lcd.print ("174.61"); gecikmə (400); lcd.clear (); // a3 ton çal (10, 220, 300); lcd.print ("220.0"); gecikmə (400); lcd.clear (); // b3 tonu çal (10, 246.94, 900); lcd.print ("246.94"); gecikmə (1000); lcd.clear (); // f3 tonunu çal (10, 174.61, 300); lcd.print ("174.61"); gecikmə (400); lcd.clear (); // c4 tonu çal (10, 261.63, 300); lcd.print ("261.63"); gecikmə (400); lcd.clear (); // b3 tonu çal (10, 246.94, 300); lcd.print ("246.94"); gecikmə (400); lcd.clear (); // a3 ton çal (10, 220, 900); lcd.print ("220.0"); gecikmə (1000); lcd.clear (); }

Addım 5: Kod Yüklənməsi: Bütün bunlar nə deməkdir?

Bəzi funksiyaları ingilis dilində təyin edək ki, kodu anlaya biləsiniz.

ton (x, y, z); = z milisaniyələr üçün pin x -də səs siqnalı ilə y Hertz piktoru ilə bir ton çalın.

lcd.print ("XYZ"); = LCD ekrana XYZ simvolları olan bir mesaj yazdırın. (məsələn, Hertz meydançasını göstərin)

gecikmə (x); = x millisaniyəlik fasilə.

const int X = Y = Y sabitləmək üçün sabit bir X dəyişənini təyin edin və cihaza vəzifələr təyin etmək üçün X və ya Y istifadə edin.

lcd.clear (); = LCD ekranı silin və yeni bir ekran üçün sıfırlayın

pinMode (X, Çıxış); = çıxış rejimi üçün pin X təyin edin

Bütün bu funksiyaları başa düşdükdən sonra dəyişənləri bir mahnı tərcümə edərkən topladığınız məlumatlarla asanlıqla əvəz edə bilərsiniz və sonra öz mahnınızı kodlaşdıra bilərsiniz!

Addım 6: Bitdi !

Bitdi !!!
Bitdi !!!
Bitdi !!!
Bitdi !!!

Ya Fur Elise oynayan və Hertz -də not dəyərlərini göstərən bir Arduino var, ya da seçdiyin mahnının melodiyasını ifa edən və göstərmək istədiyin mətni göstərən bir Arduino yaratdın. Bu təlimatı ziyarət etdiyiniz üçün təşəkkür edirəm və Arduino üzərindəki bu layihəni ümid edirəm.

Tövsiyə: