Mündəricat:
- Addım 1: Musiqi Səsini Rəqəmsal Qeydlərə çevirin: Gecikmə Dəyərləri
- Addım 2: Musiqi Səsini Rəqəmsal Qeydlərə çevirin: Hertz Dəyərləri
- Addım 3: Dövrə Dizaynı
- Addım 4: Kod Yükləmə: Necə Yapılır
- Addım 5: Kod Yüklənməsi: Bütün bunlar nə deməkdir?
- Addım 6: Bitdi !
Video: Arduino ilə bir mahnını rəqəmsallaşdırın: 6 addım
2024 Müəllif: John Day | [email protected]. Son dəyişdirildi: 2024-01-30 07:47
Ə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
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
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ı
İ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 !
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ə:
Hi-fi sisteminizi rəqəmsallaşdırın: 6 addım (şəkillərlə)
Hi-fi Sisteminizi Rəqəmsallaşdırın: Bu Təlimat kitabında analoq hi-fi sistemimi necə rəqəmsallaşdırdığımı və beləliklə veb radiosunu, NAS-da saxlanılan musiqi kolleksiyasına daxil olmağı və s. Göstərmək istərdim. Raspberry Pi, Hifiberry Şapkası və toxunuşu
Yamaha EZ-220: 5 Adımda Bir Mahnını Necə Çalmaq olar
Yamaha EZ-220-də Mahnı Çalmaq Necə: Bu addımlar, mahnı kitabından istifadə edərək mahnınızı çalmanıza kömək edəcək
Sonic Pi -də Sheet Music istifadə edərək bir mahnını necə kodlaşdırmaq olar: 5 addım
Sonic Pi -də Sheet Music istifadə edərək bir mahnını necə kodlaşdırmaq olar: Bu təlimat, Sonic Pi -də mahnı yazarkən musiqini kodlaşdırarkən istifadə ediləcək bəzi əsas addımları və kod parçalarını təsvir edəcək! Bitmiş parçanıza ləzzət qatmağa çalışmaq üçün bir milyon başqa kod parçası var, buna görə də y ətrafında oynadığınızdan əmin olun
İstənilən mahnını Mp3 -ə çevirin: 7 addım
Hər hansı bir mahnını Mp3 -ə çevirin: las vegas -a necə verdiyini göstərdim. bunu sadəcə mənim kimi lal olan hər kəsə göndərirəm* yeniləmə* trebuchet03 sayəsində m4p olan faylları köçürə bilməzsən amma mp4 faylları ilə ana səhifədə edə bilərsən niyə bunu edərdik? yaxşı mənim mp3 pleyerim
Bir AVR (arduino) başqa bir Arduino ilə necə proqramlaşdırılır: 7 addım
Başqa bir Arduino ilə AVR (arduino) Proqramlaşdırılması: Bu təlimatlar aşağıdakı hallarda faydalıdır: * atmega168 ilə arduino almışsınızsa və yerli elektronika mağazasında bir atmega328 almışsınızsa. Arduino yükləyicisi yoxdur * arduino istifadə etməyən bir layihə etmək istəyirsən - sadəcə