Arduino Robotik Dersleri 9: Buzzer Nedir?Buzzer kullanımı

şerafettin kahramanşerafettin kahraman


Ocak 2018 Arduino Başlangıç (11) 1 Okunma Sayısı: 451


Arduino Robotik Dersleri 9: Buzzer Nedir?Buzzer kullanımı

Merhaba arkadaşlar. Bugün sizlerle Arduino UNO ve bir adet buzzer kullanarak müzik yapmayı öğreneceğiz.
Gerekli malzemeler:

Buzzer Nedir?

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. Bu tarz buzzer fiyatları çok uygundur.

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

Şimdi sizlere dünyanın belki en ilginç müzik aletini tanıtacağım: Teremin. Léon Theremin isimli mucit tarafından 1928 yılınca icat edilmiştir. İki adet antene sahip olan teremin, bu antenlerden yayılan elektromanyetik dalgaların modülasyonu ile çeşitli sesler çıkarabilmektedir:

Biz de bu enteresan müzik aletinin oldukça basitleştirilmiş bir şeklini Arduino’muzla yapacağız. Bunun için bir önceki uygulamamızdan hatırlayacağınız LDR’yi kullanıyoruz:

Devre şeması 17/01/2017 tarihinde güncellenmiştir.

Teremin için kodumuz şu şekilde:

int buzzerPin = 10;
int LDRPin = 0;

void setup()
{
}

void loop()
{
  int deger = analogRead(LDRPin);
  int pitch = 200 + deger / 4;
  tone(buzzerPin, pitch);
}

Buradaki kodumuz yine çok basit bir mantıkla çalışıyor: LDR’yi bağladığımız analog giriş pininden okunan değeri, buzzer’dan ses çıkışı almak için frekans değerine çevirerek çıkış vermek için kullanıyor

arduino robotik buzzer kullanımı

Makaleye yorum yapmak silmek ve düzenlemek için giriş yapınız.

Giriş Yap

Misafir kullanıcı olarak sorularınızı aşağıya yazabilirsiniz.

Yorum:

Misafir

Misafir 11.1.2018 22:07:42

I2C modülü ile daha sade devreniz olabilirdi. -

Blog Arama

Son yorumlar

  • https://downloads.arduino.cc/packages/package_index.json dosya imza doğrulama başarısız. Dosya yoksayıldı. BU HATAYI ALMAKTAYIM COZEMEDIM
  • sorun yaşıyordum teşekkür ediyorum faydalı oldu. Bu konuda diğer uygulama yazılarınızı da bekliyoruz.
  • Vin girişine 12 volt verdim. Bazı yerlerde 20 volta kadar yazıyor. Bir katıldı ve ses çıktı. Ir ile perde kontrol esiyordum. Çalışmadı normal görünüyor. Şu anda l293n devresinden 5 volt ile besleniyor. Sizce sorun olmuş mudur. Ben yanlış bir işlem mi yaptım aceba
  • Merhaba ; Öncelikle vermiş oldugunuz bilgiler için çok teşekkürler.Ne zamandan beridir istedigim bir devre var fakat kuramıyorum .Projem ise şu arduinonun herhangi bir analog girşine 5 volt giriş saglandıgında çıkışından led yakmak istiyorum bu konuda yardımcı olurmusunuz.Şimdiden Teşekkkürler..
  • Uyarı için teşekkürlerler. Arduinoya yeni başlayan arkakaşlar dediğiniz gibi sıkıntı yaşayabilirdi.