Mündəricat:

Arduino və DC Motoru ilə mahnılar hazırlamaq: 6 addım
Arduino və DC Motoru ilə mahnılar hazırlamaq: 6 addım

Video: Arduino və DC Motoru ilə mahnılar hazırlamaq: 6 addım

Video: Arduino və DC Motoru ilə mahnılar hazırlamaq: 6 addım
Video: Bakı metrosunda gənclərin elədiyi zarafat 2024, Iyul
Anonim
Arduino və DC Motoru ilə mahnılar hazırlamaq
Arduino və DC Motoru ilə mahnılar hazırlamaq

Keçən gün Arduino haqqında bəzi məqalələri gəzərkən, qısa melodiyalar yaratmaq üçün Arduino idarə olunan step motorlarından istifadə edən maraqlı bir layihə gördüm. Arduino, step motorunu musiqi notlarına uyğun olaraq müəyyən tezliklərdə işlətmək üçün PWM (Pulse Width Modulation) pinindən istifadə etdi. Hansı tezliklərin oynandığını zamanlayaraq, step motorundan aydın bir melodiya eşidilirdi.

Ancaq özüm sınayanda gördüm ki, əlimdə olan step motoru bir ton yaratmaq üçün kifayət qədər sürətli dönə bilməz. Bunun əvəzinə, Arduinoya proqramlaşdırmaq və qoşulmaq nisbətən sadə olan bir DC mühərriki istifadə etdim. Ümumi bir L293D IC, Arduino PWM pinindən mühərriki asanlıqla idarə etmək üçün istifadə edilə bilər və Arduinoda yerli ton () funksiyası lazımi tezliyi yarada bilər. Təəccüblüdür ki, onlayn olaraq bir DC motoru istifadə edən heç bir nümunə və ya layihə tapmadım və buna görə də bu Təlimatlar bunu düzəltmək üçün cavabımdır. Gəlin başlayaq!

P. S. Güman edirəm ki, artıq Arduino ilə təcrübəniz var və proqramlaşdırma dili və aparatı ilə tanışsınız. Dizilərin nə olduğunu, PWM -in nə olduğunu və necə istifadə ediləcəyini və bir neçə şeyi adlandırmaq üçün gərginliyin və cərəyanın necə işlədiyini bilməlisiniz. Hələ orada deyilsinizsə və ya Arduino -ya yeni başlamısınızsa, narahat olmayın: rəsmi Arduino veb saytından başlayan bu səhifəni sınayın və hazır olduğunuzda geri qayıdın.:)

Təchizat

  • Arduino (Bir UNO istifadə etdim, amma isterseniz başqa bir Arduino istifadə edə bilərsiniz)
  • Standart 5V DC mühərriki, tercihen bir fan bağlana bilər ("Dövrün montajı" ndakı şəklə baxın)
  • L293D IC
  • Oynamaq istədiyiniz mahnıdakı qeydlər qədər çox düymələr
  • Çörək lövhəsi
  • Jumper telləri

Addım 1: Baxış

Layihə necə işləyir: Arduino, L293D -ə çıxardığı müəyyən bir tezlikdə bir kvadrat dalğası yaradacaq. L293D, Arduino tərəfindən verilən tezlikdə mühərriki gücləndirmək üçün istifadə etdiyi xarici bir enerji qaynağına bağlıdır. DC motorunun milinin fırlanmasını maneə törətməklə, motorun bir ton və ya not istehsal edən tezlikdə söndürülməsi və açılması eşidilə bilər. Arduino -ya düymələr basıldıqda qeydləri çalmağı və ya avtomatik olaraq çalmağı proqramlaşdıra bilərik.

Addım 2: Dövrün montajı

Dövrə yığılması
Dövrə yığılması
Dövrə yığılması
Dövrə yığılması

Dövrəni yığmaq üçün yuxarıdakı Fritzing diaqramına əməl etmək kifayətdir.

İpucu: Mühərrikdən gələn qeyd, mil dönməyəndə ən yaxşı eşidilir. Mühərrikin şaftına bir fan qoydum və motor işləyərkən fanı tutmaq üçün bir az yapışan bant istifadə etdim (şəklə baxın). Bu, milin dönməsini maneə törətdi və aydın, səsli bir ton yaratdı. Mühərrikinizdən təmiz bir ton əldə etmək üçün bir az düzəliş etməlisiniz.

Addım 3: Dövrə necə işləyir

Dövrə necə işləyir
Dövrə necə işləyir

L293D, röle və mühərriklər kimi nisbətən yüksək gərginlikli, yüksək cərəyanlı cihazları idarə etmək üçün istifadə olunan bir IC -dir. Arduino əksər mühərrikləri birbaşa çıxışından idarə edə bilmir (və motordan gələn EMF Arduinonun həssas rəqəmsal sxeminə zərər verə bilər), buna görə L293D kimi bir IC DC mühərrikini asanlıqla idarə etmək üçün xarici enerji təchizatı ilə istifadə edilə bilər. L293D -yə bir siqnal daxil etmək, Arduinoya ziyan vurma riski olmadan eyni siqnalı DC mühərrikinə verəcəkdir.

Yuxarıda, məlumat cədvəlindən L293D -nin bir pinout/funksional sxemidir. Yalnız 1 motor sürdüyümüz üçün (L293D 2 sürə bilər), IC -nin yalnız bir tərəfinə ehtiyacımız var. Pin 8 gücdür, pin 4 və 5 GND, pin 1 Arduinodan PWM çıxışıdır və 2 və 7 pinləri motorun istiqamətini idarə edir. Pin 2 YÜK və PİN 7 DÜŞÜK olduqda, motor bir tərəfə dönər, pin 2 DÜŞÜK və pin 7 YÜKSEK olduqda, motor digər istiqamətə fırlanır. Mühərrikin hansı istiqamətdə döndüyünə əhəmiyyət vermədiyimiz üçün, 2 və 7 -ci pinlərin bir -birindən fərqləndiyi müddətcə LOW və ya HIGH -un fərq etməz. 3 və 6 -cı pinlər mühərriki birləşdirir. İstəyirsinizsə, hər şeyi digər tərəfə bağlaya bilərsiniz (9-16 sancaqlar), ancaq unutmayın ki, güc və PWM sancaqları yerləri dəyişir.

Qeyd: Hər bir düymə üçün kifayət qədər sancağı olmayan bir Arduino istifadə edirsinizsə, bütün açarları bu təlimatlarda olduğu kimi bir analog pinə bağlamaq üçün rezistorlar şəbəkəsindən istifadə edə bilərsiniz. Bunun necə işlədiyi bu layihənin əhatə dairəsindən kənardır, amma heç bir R-2R DAC istifadə etmisinizsə, onu tanış tapmalısınız. Diqqət yetirin ki, analoq pin istifadə etmək üçün kodun böyük hissələrinin yenidən yazılması tələb olunacaq, çünki Button kitabxanası analog pinlərlə istifadə edilə bilməz.

Addım 4: Kod necə işləyir

Bütün düymələri idarə etməyi asanlaşdırmaq üçün madleech tərəfindən "Button" adlı kitabxanadan istifadə etdim. İlk növbədə kitabxanaya daxil oldum. Sonra, 8-22-ci sətirlərdə, Twinkle, Twinkle, Little Star (nümunə mahnı) çalmaq üçün lazım olan qeydlərin tezliklərini, L293D-ni idarə etmək üçün istifadə edəcəyim pin və düymələri təyin etdim.

Quraşdırma funksiyasında Serialı, düymələri işə saldım və L293D üçün sürücü pinini çıxış rejiminə qoydum.

Nəhayət, əsas döngədə bir düyməyə basıldığını yoxladım. Əgər varsa, Arduino müvafiq notu oxuyur və qeydin adını Serial Monitora yazdırır (çörək taxtanızda hansı qeydlərin olduğunu bilmək üçün faydalıdır). Bir not buraxılarsa, arduino noTone () ilə hər hansı bir səsi dayandırır.

Təəssüf ki, kitabxananın quruluş tərzinə görə, hər bir qeyd üçün 2 şərti istifadə etməkdən daha az bir şəkildə basıldığını və ya buraxıldığını yoxlamaq üçün bir yol tapa bilmədim. Bu kodun başqa bir çatışmazlığı, eyni anda iki düyməni basmaq və sonra birini buraxmaq olsaydı, hər iki qeyd də dayandırılacaqdı, çünki noTone () hansı notun tətik etməsindən asılı olmayaraq hər hansı bir qeydin yaranmasını dayandırır.

Addım 5: Mahnının Proqramlaşdırılması

Notları çalmaq üçün düymələrdən istifadə etmək əvəzinə, Arduinonu avtomatik olaraq sizin üçün bir melodiya çalmağı da proqramlaşdıra bilərsiniz. Motorda Twinkle, Twinkle, Little Star oynayan ilk eskizin dəyişdirilmiş versiyası. Eskizin birinci hissəsi eynidır - not tezliklərini və tonu təyin edir. Yeni hissəyə bpm = "100" də çatırıq. Döyüşləri dəqiqədə (bpm) təyin etdim və sonra vuruş başına milisaniyələrin sayını anlamaq üçün bir riyazi istifadə edərək bpm -ə bərabərdir. Bunu etmək üçün ölçülü analiz adlı bir texnikadan istifadə etdim (narahat olmayın - göründüyü qədər çətin deyil). Bir lisey kimya kursu keçmisinizsə, vahidlər arasında çevrilmək üçün mütləq ölçü analizindən istifadə etmisiniz. Floats (), tənlikdəki heç bir şeyin dəqiqliyi üçün sonuna qədər yuvarlaqlaşdırılmamasını təmin etmək üçün var.

Ms/beat sayına sahib olduqdan sonra, musiqidə tapılan fərqli not müddətlərinin milisaniyə dəyərlərini tapmaq üçün uyğun olaraq bölüşdürdüm və ya vurdum. Daha sonra hər bir notu xronoloji ardıcıllıqla düzürəm və hər bir notun müddəti ilə başqa bir. Hər notun indeksinin müddət indeksi ilə eyni olması vacibdir, əks halda melodiyanız sönəcək. Misal olaraq Twinkle, Twinkle, Little Star üçün qeydlər qoydum, amma istədiyiniz hər hansı bir mahnını və ya qeyd ardıcıllığını sınaya bilərsiniz.

Əsl sehr, loop funksiyasında olur. Notların hər biri üçün, beat_values serialında göstərdiyim bir müddət üçün ton çalıram. Tonun çalınmamasına səbəb olacaq gecikmədən istifadə etmək əvəzinə, proqramın millis () funksiyası ilə başladığı vaxtı qeyd etdim və indiki vaxtdan çıxardım. Vaxt, beat_values massivində qeyd etmək üçün qeyd etdiyim vaxtdan artıq olduqda, notu dayandırıram. For döngüsündən sonrakı gecikmə, eyni tezliyə malik sonrakı qeydlərin bir -birinə qarışmamasını təmin etməklə qeydlər arasında bir boşluq əlavə etməkdir.

Addım 6: Əlaqə

Bu layihə üçün budur. Başa düşmədiyiniz bir şey varsa və ya təklifiniz varsa, mənimlə əlaqə saxlamaqdan çəkinməyin. Bu mənim ilk təlimatım olduğundan, bu məzmunun necə yaxşılaşdırılacağına dair şərh və təklifləri çox bəyənərəm. Gələn dəfə görüşənədək!

Tövsiyə: