Arduino yardımıyla Buzzerdan Ses Çıkışı Alma

Arduino UNO ve bir adet buzzer kullanarak müzik yapmayı öğreneceğiz.

Gerekli malzemeler:

Buzzer dediğimiz devre elemanını ufak bir hoparlör olarak düşünebiliriz. Hoparlörler kadar yüksek ve detaylı ses üremeseler de, “bip” leme seslerini çıkartmada oldukça başarılıdırlar.

Notalar ve Frekans

Bildiğimiz gibi hemen hemen her sesin kendine ait bir notası vardır. Notaların da her birine ait belirli bir frekans değeri vardır. Frekans arttıkça çıkan ses tizleşir. Farklı notalara ait frekans değerlerini buradaki listeden bakabilirsiniz: http://www.phy.mtu.edu/~suits/notefreqs.html

Biz bu uygulamamızda ilkokul müzik dersinden hatırladığımız do, re, mi, fa, sol, la ve si notalarını çalan bir kod hazırlayacağız. Belki hatırlarsınız, notaların isim ve harf olmak üzere iki farklı gösterim şekli mevcuttu: C = do, D = re, E = mi, F = fa, G = sol, A = la ve B = si. “do” gibi sözcükler programlama dillerinde farklı komutlar tarafından kullanıldığı için, bu kodda notaların harf gösterimini kullanıyoruz. Devre şemamız oldukça basit:

Kodumuz ise şu şekilde:

int buzzerPin = 12;
int notaSayisi = 8;
int C = 262;
int D = 294;
int E = 330;
int F = 349;
int G = 392;
int A = 440;
int B = 494;
int C_ = 523;
int notalar[] = {C, D, E, F, G, A, B, C_};
void setup()
{
  for (int i = 0; i < notaSayisi; i++)
  {
    tone(buzzerPin, notalar[i]);
    delay(500);
    noTone(buzzerPin);
    delay(20);
  }
  noTone(buzzerPin);
}

void loop()
{
}

Dikkat ettiyseniz kodumuzun tamamı setup fonksiyonunda yer alıyor. Bu demektir ki, Arduino kartımıza enerji verdiğimizde ses sadece bir kere çıkacak ve daha sonra susacak. Tekrardan ses çıkmasını istiyorsak Arduino üzerindeki reset butonuna basmamız yeterli.

Kodumuzu açıklamak gerekirse; her bir notanın frekans olarak karşılığını girdik. Daha sonra bu notları kalın do notasından ince do notasına sıralarak bir array içine aldık. Bu array’in içeriğini ise bir for döngüsü kullanarak o array’in içeriğini okuttuk ve ses çıkışı için tone komutunu kullandık. tone komutunu bir kez verdikten sonra Arduino, noTone komutuna gelene kadar çıkış vermeye devam eder.

Teremin

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir