Bu projede Arduino Uno kullanarak bir ton üreteci geliştireceğiz. UNO ile arayüzlü düğmelerimiz olacak ve her biri farklı ton yoğunluğu oluşturacak. UNO'nun ürettiği ton frekansı her şirket içinde aynıdır. Her basışta değişen ses yoğunluğudur. Bu, Arduino Uno ile piyano yapmanın en kolay yollarından biridir. Ayrıca bu Piyano devresini de kontrol edin.
Tonlar 20'ye kadar artırılabilir. Bu, en iyi ton varyasyonunu ve çok daha yumuşak değişiklikleri sağlar. Tonun yoğunluğu PWM (Darbe Genişliği Modülasyonu) tarafından değiştirilir. Aşağıdaki grafikte bir PWM örneği gösterilmektedir.
PWM'de, sinyalin frekansı veya sinyalin süresi (Ton + Toff) her zaman sabittir. Yalnızca AÇMA ve KAPATMA süresinin oranı değişir. Örneğin yukarıdaki şekildeki ikinci grafikte, AÇMA süresi% 80 ve KAPATMA süresi tam sürenin% 20'sidir.
Üçüncü grafikte, AÇMA süresi% 50 ve KAPATMA süresi tam sürenin% 50'sidir. Yani ilk durumda% 80 görev oranına sahibiz ve ikinci durumda% 20 görev oranına sahibiz.
Görev oranındaki bu değişiklik ile Vrms'de (Gerilimin Ortalama Karekökü Değeri) bir değişikliğe sahibiz, bu gerilim zile verildiğinde görev oranında bir değişiklik olduğunda farklı bir ses çıkarır.
UNO'yu, düğmelerin her biri için farklı görev oranına sahip bir PWM sinyali sağlayacak şekilde programlayacağız. Biz var Yani nota jeneratörü, her düğmeye basıldığında farklı bir tonu üretir el altında.
Gerekli Bileşenler
Donanım: Arduino Uno, Güç kaynağı (5v), 1000 uF kapasitör, 100 nF kapasitör, Buzzer, butonlar (8 adet).
Yazılım: AURDINO nightly veya Atmel studio 6.2
Devre Şeması ve Çalışma Açıklaması
Ton üreteci devresi aşağıdaki diyagramda gösterilmiştir.
Besleme gerilimi kapasitörlerinden gelen gürültüyü filtrelemek için diyagramda gösterildiği gibi terminaller arasına yerleştirilir.
Arduino Uno'nun PWM'si, PCB kartı üzerinde “~” ile simgelenen pinlerden herhangi birinde elde edilebilir. UNO'da altı PWM kanalı vardır. Bununla birlikte PINS 0-7 üzerinden kurulan PWM pinlerini kullanamayız çünkü butonlar arayüzünde PINS tercih edilir.
Giriş olarak PINS 0-7'nin seçilmesinin bir nedeni vardır, çünkü PINS 0-7, mikro denetleyicinin PORTD'sini temsil eder. Yani ikinci durumda, PORTD'nin tam BYTE'sini alabiliriz.
Şimdi farklı bir görev oranı PWM elde etmek için aşağıdaki komutu kullanacağız.
analogWrite (9, VALUE); |
Yukarıdaki koşuldan, PWM sinyalini doğrudan ilgili pinden alabiliriz. Parantez içindeki ilk parametre, PWM sinyalinin pin numarasını seçmek içindir. İkinci parametre görev oranını yazmak içindir.
Arduino Uno'nun PWM değeri 0'dan 255'e değiştirilebilir. En düşük "0" ile en yüksek "255" ile. Görev oranı olarak 255 ile PIN9'da 5V alacağız. Görev oranı 125 olarak verilirse PIN9'da 2,5V alacağız. 0-250 görev oranını UNO'nun PORTD'sinde arayüzlenen 8 butona böleceğiz. Burada her düğme için 25 artış seçiyorum, ancak bu sizin seçiminiz.
Bununla birlikte, görev oranı her düğmeyle değişen bir PWM sinyaline sahip olacağız. Bu zile veriliyor, ton jeneratörümüz var. Bu Arduino tabanlı ton üretecinin çalışması aşağıda verilen C kodunda adım adım açıklanmaktadır.