06
Oca
2020

Arduino ile buzzer kontrolü

Buzzer; Arduino projeleri veya devrelerde uyarı sesi gibi basit sesler çıkarmak için kullanılan devre elemanıdır. İçerisinde biri metal diğeri seramik olmak üzere piezoelektrik özellikli iki adet disk bulunur. Uygulanan gerilim, bu disklerin birbirlerine itme gücü uygulamasını ve oluşan titreşimin bir sese dönüşmesini sağlar. Burada 1 saniyede oluşan titreşim sayısı (frekans), sesin tonunu belirlemektedir. Yani, buzzer, uygulanan gerilimin şiddetine göre farklı tonlarda ses çıkarabilmektedir.

Buzzer; + ve – olmak üzere iki bacağa sahiptir. Bazı modellerde anot (+) bacak diğerinden daha uzundur, bazı modellerde ise uzunlukları eşittir ancak anot bacağı + işareti ile işaretlenmiştir.

Malzemeler

  • 1 adet Arduino
  • 1 adet Piezo buzzer
  • 1 adet 100 ohm direnç

Bağlantı şeması

Buzzer’ ın + ucu 100 ohmluk bir dirençle Arduino’ nun 7 numaralı I/O pinine, – ucu ise Arduino’ nun GND pinine bağlanmıştır.

Kaynak kod

int buzzerPin=7; // Buzzer' ın bağlı olduğu pini buzzerPin değişkenine ata
void setup() {
  pinMode(buzzerPin,OUTPUT); // Buzzer' ın bağlı olduğu pini  çıkış pini olarak işaretle
}
 
void loop() {
  digitalWrite(buzzerPin,HIGH); // Pini aktif hale getir
  delay(1000); // 1sn bekle
  digitalWrite(buzzerPin,LOW); // Pini pasif hale getir
  delay(1000); // 1sn bekle
}

Kurulum (setup) fonksiyonunda pinMode(buzzerPin,OUTPUT) komutu ile 7 numaralı I/O pini çıkış pini olarak ayarlanmıştır. Döngü (loop) fonksiyonunda digitalWrite(buzzerPin,HIGH) komutu ile buzzer’ ın ses çıkarması sağlanmış ve delay(1000)komutu ile 1000 milisaniye boyunca program bekletilmiştir. Delay komutunun aldığı değer milisaniye cinsindendir. Örneğin delay(200) komutu verilmiş olsaydı 0,2 saniye bekleme süresi belirlenmiş olacaktı. Fonksiyona gönderilen 1000 değeri ile program bu satırda 1000 milisaniye boyunca bekletilirken, 7 numaralı pin bu süreçte aktif durumdadır. Bu da 1 saniye boyunca buzzer’ ın ses vermesini sağlar. Hemen alt satırdaki digitalWrite(buzzerPin,LOW) komutu ile buzzer’ ın bağlı olduğu 7 numaralı pin pasif duruma getirilir ve buzzer ses vermeyi keser. Sonraki delay(1000)komutu ile yine program 1 saniye bekletilir ve bu bekleme süresinde 7 numaralı pin pasif durumdadır. Kısaca; Arduino’ ya güç verildiği sürece teorik olarak buzzer 1 saniye bip sesi verir 1 saniye susacaktır.  Yani her dakika 30 defa bip sesi duyulacaktır.

Buzzer ile tonlama

Piezo buzzer ile sıradan bip sesi çıkarmak yerine çıkarılan sesin istenilen frekansta tonlanması mümkündür. Bunun için tone(pinNo,Frekans) ve noTone(PinNo)fonksiyonları kullanılır. Tone fonksiyonuna gönderilen frekans değerine göre buzzer farklı bir ses çıkarır.

Yukarıdaki çizelge, notaların frekans değerlerini ve ideal bekleme (delay-ms) sürelerini göstermektedir. Buna göre, Do’ dan Si’ ye kadar notaları sırasıyla çalan ve her notayı çalma uzunluğu ideal sürelerde ayarlanmış programın kaynak kodu aşağıdaki gibi olacaktır.

int buzzerPin=7; // Buzzer' ın bağlı olduğu pini buzzerPin değişkenine ata 
void setup() { 
  pinMode(buzzerPin,OUTPUT); // Buzzer' ın bağlı olduğu pini çıkış pini olarak işaretle 
}
 
void loop() {
  tone(buzzerPin,261); // Do
  delay(1915); 
  tone(buzzerPin,293); // Re
  delay(1700); 
  tone(buzzerPin,329); // Mi
  delay(1519); 
  tone(buzzerPin,349); // Fa
  delay(1432); 
  tone(buzzerPin,392); // Sol
  delay(1275); 
  tone(buzzerPin,440); // La
  delay(1136); 
  tone(buzzerPin,493); // Si
  delay(1014);
  noTone(buzzerPin);  // Buzzer ses vermeyi kessin
}