Buzzer Nedir?
Buzzer, elektrik sinyalini sese çeviren küçük bir ses üretecidir. Alarm, uyarı, geri bildirim ve basit melodiler için kullanılır. Bir projeye “kullanıcıya bir şey söyleme” yeteneği katmanın en ucuz yoludur.
Robotik projelerde tuş sesi vermek, mesafe sensörünün yakınlık uyarısını duyurmak, sıcaklık eşiği aşıldığında alarm çalmak gibi işleri buzzer yapar.
Aktif ve Pasif Buzzer Farkı
Bu ayrım, buzzer kullanırken bilinmesi gereken en önemli konudur. İki tip dıştan neredeyse aynı görünür ama tamamen farklı çalışırlar.
| Özellik | Aktif buzzer | Pasif buzzer |
|---|---|---|
| İçinde osilatör | Var | Yok |
| Nasıl çalışır | DC gerilim verilmesi yeterli | Kare dalga sinyali gerekir |
| Ses frekansı | Sabit, değiştirilemez | İstenen frekansta üretilebilir |
| Melodi çalabilir mi | ✘ | ✔ |
| Arduino komutu | digitalWrite() | tone() |
| Ses tonu | Tek tip bip | Değişken |
Nasıl ayırt edilir?
- Alt yüzüne bakın. Aktif buzzerların altı genellikle siyah bir dolguyla kapalıdır; pasif buzzerlarda yeşil bir devre kartı ve bobin görünür.
- Yükseklik. Aktif buzzerlar genellikle biraz daha yüksektir.
- Pil testi. 3V’luk bir pilin uçlarına değdirin. Sürekli bir bip sesi çıkıyorsa aktiftir; sadece “tık” sesi geliyorsa pasiftir.
- Direnç ölçümü. Multimetre ile ölçtüğünüzde pasif buzzer genellikle 8 Ω veya 16 Ω civarı değer gösterir; aktif buzzer çok daha yüksek okur.
Melodi çalmak istiyorsanız pasif buzzer almanız gerekir. Sadece uyarı sesi yeterliyse aktif buzzer daha kolaydır.
Aktif Buzzer Kullanımı
Bağlantı son derece basittir:
- Buzzer (+) ucu → Arduino dijital pini (örn. D8)
- Buzzer (−) ucu → GND
const int BUZZER_PIN = 8;
void setup() {
pinMode(BUZZER_PIN, OUTPUT);
}
void loop() {
digitalWrite(BUZZER_PIN, HIGH); // ses acik
delay(200);
digitalWrite(BUZZER_PIN, LOW); // ses kapali
delay(800);
}Pasif Buzzer ve tone() Fonksiyonu
Pasif buzzer, kendisine verilen kare dalganın frekansında titreşir. Arduino’nun tone() fonksiyonu bu dalgayı üretir.
tone(pin, frekans); // surekli calar
tone(pin, frekans, sure); // belirtilen ms kadar calar
noTone(pin); // sesi durdururBasit siren
const int BUZZER_PIN = 8;
void setup() {
pinMode(BUZZER_PIN, OUTPUT);
}
void loop() {
for (int f = 400; f <= 1200; f += 10) {
tone(BUZZER_PIN, f);
delay(5);
}
for (int f = 1200; f >= 400; f -= 10) {
tone(BUZZER_PIN, f);
delay(5);
}
}Nota frekansları
| Nota | Frekans (Hz) | Nota | Frekans (Hz) |
|---|---|---|---|
| Do (C4) | 262 | Sol (G4) | 392 |
| Re (D4) | 294 | La (A4) | 440 |
| Mi (E4) | 330 | Si (B4) | 494 |
| Fa (F4) | 349 | Do (C5) | 523 |
Melodi çalma
const int BUZZER_PIN = 8;
int notalar[] = { 262, 294, 330, 349, 392, 440, 494, 523 };
int sureler[] = { 300, 300, 300, 300, 300, 300, 300, 600 };
void setup() {
pinMode(BUZZER_PIN, OUTPUT);
for (int i = 0; i < 8; i++) {
tone(BUZZER_PIN, notalar[i], sureler[i]);
delay(sureler[i] * 1.3); // notalar arasi kisa bosluk
}
noTone(BUZZER_PIN);
}
void loop() {
}delay() süresini nota süresinden biraz uzun tutmak notaların birbirine karışmasını engeller.
tone() Fonksiyonunun Sınırları
tone() fonksiyonu Arduino’nun Timer2 donanımını kullanır. Bunun iki önemli sonucu vardır:
- Aynı anda yalnızca bir pinde ses çalınabilir. İkinci bir pinde
tone()çağırmak ilkini durdurur. - Pin 3 ve 11’de
analogWrite()bozulur. Bu iki PWM pini de Timer2’ye bağlıdır. Buzzer çalarken bu pinlerdeki PWM çıkışı düzgün çalışmaz. LED parlaklığı veya motor hızı için 5, 6, 9 veya 10 numaralı pinleri tercih edin.
Ayrıca tone(pin, f, sure) çağrısı bloke etmez; süre dolmasını beklemek isterseniz ayrıca delay() koymanız gerekir.
Buzzer Doğrudan Pine Bağlanabilir mi?
Küçük buzzerlar genellikle 20–30 mA çeker. Arduino pininin sınırı 20 mA’dir; bu yüzden sınırda kalınır.
Daha güvenli yaklaşımlar:
- Seri direnç. Buzzer ile pin arasına 100 Ω direnç koymak akımı düşürür ve sesi biraz kısar. Aşırı yüksek ses rahatsız ediyorsa bu yöntem ayrıca işe yarar.
- Transistör ile sürme. Yüksek sesli veya büyük buzzerlarda NPN transistör (BC547) ile sürmek doğrudur. Devre, Transistör Nedir? yazısındaki anahtarlama devresiyle aynıdır.
- Ses seviyesini PWM ile kısma. Aktif buzzerda
analogWrite()kullanarak sesi kısabilirsiniz.
Buzzer ve Hoparlör Farkı
| Buzzer | Hoparlör | |
|---|---|---|
| Amaç | Uyarı, bip, basit melodi | Müzik, konuşma, gerçek ses |
| Frekans aralığı | Dar (genelde 2–4 kHz civarında en verimli) | Geniş |
| Sürme | Doğrudan dijital pin | Yükselteç gerekir |
| Ses kalitesi | Düşük | Yüksek |
Bir projede konuşma veya müzik çalmak istiyorsanız buzzer yetmez; DFPlayer Mini gibi bir MP3 modülü ve küçük bir hoparlör kullanmanız gerekir.
Pratik Kullanım: Mesafe Uyarısı
Ultrasonik sensörle birleştirilen klasik park sensörü mantığı: mesafe azaldıkça bip aralığı kısalır.
const int BUZZER_PIN = 8;
void mesafeUyarisi(int mesafeCm) {
if (mesafeCm > 100) {
noTone(BUZZER_PIN);
return;
}
// Mesafe azaldikca bekleme suresi kisalir
int bekleme = map(mesafeCm, 5, 100, 50, 800);
bekleme = constrain(bekleme, 50, 800);
tone(BUZZER_PIN, 2000, 40);
delay(bekleme);
}Özet
Buzzer, elektrik sinyalini sese çeviren küçük bir ses üretecidir. Aktif buzzer sadece gerilim ister ve tek tip bip verir; pasif buzzer ise kare dalga ile sürülür ve istenen frekansta çalabilir.
Bu derste şunları öğrendik:
- Aktif ve pasif buzzer farkını ve nasıl ayırt edileceğini
digitalWrite()ile aktif buzzer sürmeyitone()venoTone()ile pasif buzzer çalmayı- Nota frekanslarını ve melodi çalmayı
tone()fonksiyonunun Timer2 kısıtını ve pin 3–11 etkisini- Buzzer’ı transistörle sürmenin ne zaman gerektiğini