Arduino ile Butonlara basarak melodi oluşturmak

Arduino Başlangıç ​​Seti: Proje 7

Proje adı:  KLAVYE CİHAZI

Keşfet:  direnç merdivenleri, diziler

Kod:

int butons[6];
// set up an array with 6 integers
int butons[0] = 2;
// give the frst element of the array the value 2
int notes[] = {262,294,330,349};
void setup() {
Serial.begin(9600);
}
void loop() {
int keyVal = analogRead(A0);
Serial.println(keyVal);
if(keyVal == 1023){
tone(8, notes[0]);
}
else if(keyVal >= 990 && keyVal <= 1010){
tone(8, notes[1]);
}
else if(keyVal >= 505 && keyVal <= 515){
tone(8, notes[2]);
}
else if(keyVal >= 5 && keyVal <= 10){
tone(8, notes[3]);
}
else{
noTone(8);
}
}

sketch

Bu projede, şu parçalara ihtiyacınız var:

1.Aruduino Uno R3 (Arduino’nun diğer sürümünü de kullanabilirsiniz)

2. atlama kabloları

3. Direnç 4 adet (1 adet 220 Ohm, 1 adet 1 MOhm, 2 adet 10 KOhm)

4. Breadboard yarım boy 

5. Arduino IDE (siz indirebilirsiniz burada  )

6. Anlık anahtarları 4 adet

7. Piezo zil aktif 1 adet

GENEL

Bir dizi anlık anahtarı, farklı tonların anahtarına dijital girişlere bağlamanız mümkün olsa da, bu projede direnç merdiveni adı verilen bir şey yaparsınız. Bu, analog girişi kullanarak bir dizi anahtarı okumanın bir yoludur. Kendinizi dijital girişlerde kısa bulursanız yararlı bir tekniktir. Paralelde paralel bağlanmış bir dizi anahtarı 0’da bağlarsınız. Bunların çoğu bir direnç üzerinden güce bağlanır. Her düğmeye bastığınızda, farklı bir voltaj seviyesi giriş pimine geçecektir. Aynı anda iki düğmeye basarsanız, paralel olarak iki direnç arasındaki ilişkiye göre benzersiz bir giriş elde edersiniz.

DEVRE

Breadboard’unuzu önceki projelerdeki gibi güç ve toprakla bağlayın. Piezonun bir ucunu toprağa bağlayın. Diğer ucunu Arduino’nuzdaki 8 no’lu pime bağlayın. Anahtarlarınızı devre üzerinde gösterildiği gibi ekmek tahtasına yerleştirin. Dirençlerin ve analog giriş besleyen anahtarların düzenlenmesine direnç merdiveni denir. İlki doğrudan güce bağlayın. İkinci, üçüncü ve dördüncü anahtarları sırasıyla 220 ohm, 10 Koh ve 1 Moh motor dirençleriyle bağlayın. Tüm anahtarların çıkışlarını tek bir kavşakta birbirine bağlayın. Bu bağlantıyı 10-Kohm’luk bir dirençle toprağa bağlayın ve ayrıca Analog In 0’a bağlayın. Bunların her biri bir voltaj bölücü görevi görür. 

KOD

Bu çizimde, düğmelerinizin her birine bastığınızda oynatmak istediğiniz frekansların bir listesini tutmanız gerekir. Orta C, D, E ve F (262Hz, 294Hz, 330Hz ve 349Hz) için frekanslarla başlayabilirsiniz. Bunu yapmak için, dizi adı verilen yeni bir değişkene ihtiyacınız vardır Dizi, müzikal bir ölçekte frekanslar gibi, birbiriyle ilişkili farklı değerleri yalnızca bir ad kullanarak kaydetmenin bir yoludur. Bilgiye hızlı ve verimli bir şekilde erişebilmeniz için kullanışlı bir araçtır. Bir dizi bildirmek için, bir değişkenle yaptığınız gibi başlayın, ancak adı bir çift köşeli ayraçla izleyin: [].Eşittir işaretinden sonra, öğelerinizi küme parantez içine alırsınız. Dizinin öğelerini okumak veya değiştirmek için, dizinin adını ve sonra adreslemek istediğiniz öğenin dizinini kullanarak tek tek öğeye başvurursunuz. Dizin, dizi oluşturulduğunda öğelerin göründüğü sırayı ifade eder. Dizideki ilk öğe 0, ikincisi de 1’dir. Yukarıda listelenen frekansları kullanarak dört nota içeren bir dizi ayarlayın. Bu diziyi setup () işleminden önce bildirerek global bir değişken yapın Senin içinde kurulum (), bilgisayar ile seri iletişim başlar. Gelen döngü (),A0 piminde okunan değeri tutmak için yerel bir değişken tanımlayın. Her anahtarın güç kaynağına bağlanan farklı bir direnç değeri olduğundan, her birinin kendisiyle ilişkili farklı bir değeri olacaktır. Değerleri görmek için Seri satırını ekleyin bilgisayara göndermek için println (keyVal) . Kullanılması Bir if (…) Başka deyimi, bir di ff Erent tonuna her değer atayabilirsiniz. Bu projede yer alan değerler, bu direnç ebatları için basketbol rakamlarıdır. Tüm dirençler hataya karşı tolerans gösterdiğinden, bunlar tam size göre çalışmayabilir. Gerektiği gibi ayarlamak için seri monitördeki bilgileri kullanın. Her if () ifadesinden sonra , tonu () çağırınişlevi. Program, hangi frekansın oynatılacağını belirlemek için diziye başvurur. A0’ın değeri if ifadelerinizden biriyle eşleşiyorsa, Arduino’ya bir ton çalmasını söyleyebilirsiniz. Devreniz biraz “gürültülü” olabilir ve bir düğmeye basarken değerler biraz düşebilir. Bu değişime uyum sağlamak için, kontrol edilmesi gereken küçük bir değer aralığına sahip olmak iyi bir fikirdir. ” && ” karşılaştırmasını kullanırsanız, doğru olup olmadıklarını görmek için birden fazla ifadeyi kontrol edebilirsiniz. İlk düğmeye basarsanız, [0] notaları çalınır. İkinciye basarsanız, [1] notaları çalınır ve üçüncü basarsanız, notalar [2]oynayacak. Bu, diziler gerçekten kullanışlı hale geldiğinde olur. Herhangi bir zamanda yalnızca bir frekans pin üzerinde çalabilir, böylece birden fazla tuşa basarsanız, yalnızca bir ses duyarsınız. Hiçbir tuşa basılmadığında nota çalmayı durdurmak için, noTone () işlevini çağırın, böylece sesi çalmayı durdurmak için pin numarası verin. 

BAŞLANGIÇ

Eğer dirençleriniz bu projedeki değerlere yakınsa, düğmelere bastığınızda piezodan bazı sesler duymalısınız. Değilse, düğmelerin her birinin if () … else ifadesindeki notlara karşılık gelen bir aralıkta olduğundan emin olmak için seri monitörünü kontrol edin . Kekeme gibi görünen bir ses duyarsanız, aralığı biraz arttırmayı deneyin. Aynı anda birden fazla düğmeye basın ve seri monitörde ne tür değerler elde ettiğinizi görün. Daha fazla ses tetiklemek için bu yeni değerleri kullanın. Müzik çıktınızı genişletmek için farklı frekanslarla deneyler yapın. Notaların sıklıklarını bu sayfada bulabilirsiniz: arduino.cc/frequencies. Anahtarları ve direnç merdivenini analog sensörlerle değiştirirseniz, daha dinamik bir araç oluşturmak için size verdikleri ek bilgileri kullanabilirsiniz. Bir notun süresini değiştirmek için değeri kullanabilir veya Arduino Başlangıç ​​Seti Theremin Projesi’nde olduğu gibi kayan bir ses ölçeği oluşturabilirsiniz.

ÖZET

Ton () fonksiyonu sesleri üretmek için eğlenceli, ama birkaç kısıtları var. Sinüs dalgalarını veya üçgenleri değil, sadece kare dalgaları yaratabilir. Kare dalgalar, dalgalara hiç benzemiyor. Daha önce tarif edilen Arduino Başlangıç ​​Seti Proje 6’da gördüğünüz gibi, bir dizi açık ve darbeli. Sadece bir ton bir zaman ve oynayabilir: Eğer bant başladığınızda, akılda bazı şeyleri tutmak tonu () müdahale edecek analogWrite () pimleri 3 ve 11. Dizileri üzerinde birlikte benzer bilgi türlerini gruplandırmak için yararlıdır; bireysel öğelere atıfta bulunan indeks numaralarıyla erişilirler. Direnç merdivenleri, bir analog girişe takarak bir sisteme daha fazla dijital giriş almanın kolay bir yoludur.

Youtube’daki filmlerden birini görmek için buraya tıklayın .

Posted in Makaleler.