Bu projede Arduino'yu kullanarak bir eğlence parçası inşa edeceğiz. Hepimiz rastgele müzik yaratmak için Masa veya Kaleme dokunma alışkanlığımız var. Elbette iyi bir tavır olarak görülmeyebilir, ancak hepimiz bunu en az bir kez yapmaktan zevk alıyoruz. Bu yüzden Arduino'nun tonları çalma yeteneğini kullanarak onu bir sonraki seviyeye taşımayı düşündüm. Bu projeyi oluşturduğunuzda, parmaklarınızı iletken herhangi bir şeye dokundurarak ve kendi ritimlerinizi yaratarak, avucunuzda Piyano çalmak gibi tonlar üretebileceksiniz. Kulağa hoş geliyor, öyleyse yapalım.
Gerekli bileşenler:
Bu proje için gerekli malzemeler aşağıda listelenmiştir, buna bağlı kalmak zorunlu değildir. Konsepti bir kez kavradığınızda, onu inşa etmek için kendi yönteminizi kullanabilirsiniz.
- Arduini Pro Mini
- Peizo Hoparlör
- Flex Sensör
- Parmak Eldiven
- 10K Dirençler
- BC547 Transistörler
- 9V Batarya
Devre Şeması ve Açıklaması:
Bu Arduino Palm Piyano için devre şeması aşağıda gösterilmiştir.
Proje, dokunmatik sensör görevi gören iki esnek sensör ve iki Darlington çifti olmak üzere toplam dört sensör kullanıyor. Ayrıca Flex sensörü için aşağı çekme direnci görevi görecek, her biri 10k değerine sahip iki aşağı çekme direnci R1 ve R2 kullandık. Burada Flex sensörü, ne kadar büküldüğüne bağlı olarak bir parmağınızı kullanarak üç farklı ton oluşturmak için kullanılır. Böylece iki parmağımızı kullanarak 6 ses çıkarabiliriz. Burada Flex Sensör hakkında bilgi edinin.
Darlington Çifti:
Devam etmeden önce Darlington'ın ne olduğunu ve projemizde tam olarak nasıl çalıştığını bilmek önemlidir. Darlington çifti, birincisi tarafından yükseltilen akımın ikinci transistör tarafından daha da yükseltileceği şekilde bağlanan iki çift kutuplu transistör olarak tanımlanabilir. Aşağıdaki resimde bir Darlington çifti gösterilmektedir:
Yukarıda gösterildiği gibi, toplayıcıları toplamak için bağlanan ve birinci transistörün vericisi ikinci transistörün Tabanı ile bağlantılı olan iki BC547 transistörü kullandık. Bu devre, kazançlı bir amplifikatör görevi görür, yani birinci transistörün tabanına verilen herhangi bir küçük sinyal, ikinci transistörün tabanını önyargılı hale getirmek için yeterlidir. Vücudumuz burada bir zemin görevi görür, bu nedenle transistörün tabanına her dokunduğumuzda ikinci transistör önyargılı hale gelir. Bunu kendi lehimize kullanarak bu proje için dokunma sensörünü yaptık.
Pim numarası 2 ve 3, Arduino'daki dahili kaldırma dirençleri kullanılarak yukarı çekilecek olan kesme pimleridir ve daha sonra bu pimler, Darlington anahtarı her kapandığında toprağa tutulur. Bu şekilde biz (1 tabanından teli her dokunduğunuzda st bir kesme Arduino tetiklenecek transistörü).
İki parmağımın kullanılması yalnızca iki tür ton üretebilir, bu nedenle , tonu ne kadar büküldüğüne bağlı olarak değiştirecek bir esnek sensör ekledim. Parmağın (esnek sensör) ne kadar büküldüğüne bağlı olarak parmak başına üç farklı ton üretecek şekilde programladım. Parmak uçlarınızda daha fazla ton olmasını isterseniz numarayı artırabilirsiniz.
Tüm tahtayı, avuç içlerime kolayca sığması için mükemmel bir tahta üzerinde yaptım, ancak bir devre tahtası da kullanabilirsiniz. Sadece vücudunuzun bir noktada devrenin topraklamasına dokunduğundan emin olun. Her şeyi lehimledikten sonra bunun gibi görünmesi gerekir
Darlington çiftinden gelen telleri ve esnek sensörü yukarıda gösterildiği gibi sabitlemek için iki parmaklı eldiven kullandım. Tonlarınızı çalarken onları yerinde sabitlemek için kendi (mümkünse daha iyi) fikrinizi ortaya atabilirsiniz.
Arduino Programlama:
Bu Arduino Tap Tone Generator programı oldukça basittir. Sadece Darlington tellerinden gelen kesintilere dikkat etmeliyiz ve eğer bir tane bulursa, esnek sensörün ne kadar bükülmüş olduğuna bağlı olarak ton çalmalıyız. Kodun tamamı bu yazının sonunda verilmiştir, ancak aşağıda birkaç önemli parçayı açıkladım.
Not: Bu program, "pitches.h" kütüphanesi yardımıyla çalışır. Bu yüzden, derlemeden önce başlık dosyasını programınıza eklediğinizden emin olun. Pitches.h başlık dosyasını buradan indirebilirsiniz.
Olarak ayar işlevi, biz, yukan çekici direnç ile giriş olarak 2 ve 3 pim başlat. Ayrıca kesme pimleri olarak beyan ve 3 üzerinde kesme olduğunda pim 2 üzerinde kesme ve Tone2 () fonksiyonu olduğunda) (Tonu1 yürütmek rd pimi. Bu kesintiler, bu pimler çekili durumlarından DÜŞÜK olduğunda tetiklenecektir.
geçersiz kurulum () {pinMode (2, INPUT_PULLUP); pinMode (3, INPUT_PULLUP); attachInterrupt (digitalPinToInterrupt (2), tone1, LOW); attachInterrupt (digitalPinToInterrupt (3), tone2, LOW); Serial.begin (9600); }
İçinde döngü fonksiyonu, sürekli esnek sensör bükük ne kadar kontrol edin. Örneğin FlexSensor 1, düz bırakıldığında 200 civarında değerler verdi ve onu maksimuma kadar büktüğümde 130'a kadar düştü, bu yüzden 3 farklı türde oynamam gerektiğinden 200'den 130'a kadar olan değeri 1'e 3 olarak eşledim tonları. Bu iki satırı Flex sensör değerleriniz ve ton sayısına göre ayarlamanız gerekir.
boşluk döngüsü () {flexSensor1 = map (analogRead (A0), 200,130,1,3); // Esnek sensörünüze göre kendi değerlerinizi eşleştirin flexSensor2 = map (analogRead (A1), 170,185,1,3); // Esnek sensörünüze göre kendi değerlerinizi eşleştirin}
Daha önce fonksiyon gördüğümüz gibi () Tonu1 bir kesme içine ne olur pim 2 ile tespit edildiğinde çalıştırılacaktır () Tonu1 fonksiyonu yukarıda gösterilmiştir. FlexSensor1 değerlerine bakıyoruz ve flexSesnor Değerine dayalı bir ton çalıyoruz. Tonlar, Arduino'nun Ton işlevi kullanılarak çalınacaktır. Bir önceki projemizde ton () fonksiyonunu açıklamıştık.
geçersiz ton1 () {if (flexSensor1 == 1) ton (8, NOTE_D4,50); else if (flexSensor1 == 2) ton (8, NOTE_A3,50); else if (flexSensor1 == 3) ton (8, NOTE_G4,50); başka ton (8, NOTE_D4,50); }
Aşağıdaki satır tonu çalmak için kullanılır. "Pitches.h" başlık dosyasında bulunan herhangi bir tonu çalabilirsiniz. Örneğin yukarıdaki satır, 50 mili saniye boyunca NOT_A3'ü pin üzerinde oynatır.
ton (8, NOTE_A3,50); // ton (PinNum, Not adı, Süre);
Çalışma:
Donanımınız hazır olduğunda, kodu yükleyin ve parmaklarınızın üzerine monte edin. Vücudunuzun bir noktada devrenin zeminine dokunduğundan emin olun. Şimdi herhangi bir iletken malzemeye veya vücudunuza dokunmanız yeterlidir ve ilgili tonu duyabilmeniz gerekir. Farklı aralıklarda ve farklı konumlarda dokunarak kendi melodinizi veya müziğinizi çalabilirsiniz.
Aşağıdaki video, projenin tam çalışmasını göstermektedir. Projeyi oluşturmaktan keyif aldığınızı umuyoruz, herhangi bir öneri veya soru aşağıdaki yorum bölümüne gönderilebilir. Ayrıca Arduino Audio Player ve Arduino Tone Generator Projemize de göz atın.