Arduino ile Frekans Ayarlı Ton Jeneratörü

👤 Yazar: ozcan 📅 Tarih: 10.07.2026 09:20 👁️ Görüntüleme: 29

Arduino ile Çoklu Buton Kontrollü ve Frekans Ayarlı Ton Jeneratörü Yapımı

Buzzer kullanımının temelini öğrendikten sonra, şimdi sistemi tamamen interaktif bir müzik ve alarm kutusuna dönüştürüyoruz! Bu rehberde, tam 4 adet buton kullanarak buzzer'ı uzaktan yöneteceğiz. Butonlarımızdan biri sesi açacak, biri kapatacak, diğer ikisi ise sesin kalınlığını ve inceliğini (frekansını) anlık olarak 50 Hz basamaklarla değiştirmemizi sağlayacak. Bu sayede buton kontrolü ve hafıza mantığını çok iyi kavrayacaksınız.

Gerekli Malzemeler

  • Arduino Uno
  • 1 Adet Pasif Buzzer
  • 4 Adet Push Buton (Çıt çıt buton)
  • 4 Adet 10k Ohm Direnç (Butonlar için pull-down direnci)
  • Breadboard ve Jumper Kablolar

1. Gelişmiş Çoklu Buton ve Buzzer Bağlantı Şeması

Bu projede çok sayıda buton kullandığımız için bağlantıların karışmaması oldukça önemlidir. Butonların bir bacağına 5V veriyoruz, diğer bacağını ise hem 10k Ohm direnç ile GND'ye (Pull-down) bağlıyoruz hem de Arduino'nun ilgili dijital pinine sinyal olarak gönderiyoruz.

Bileşen Arduino Uno Pini
Buzzer (Artı Ucu) Pin 8
1. Buton (Açma Butonu) Pin 5
2. Buton (Kapatma Butonu) Pin 4
3. Buton (Frekans Artırma / Ekle) Pin 3
4. Buton (Frekans Azaltma) Pin 2

arduino ile ton jeneratörü

2. Arduino Kod Blokları

Aşağıdaki güncel ve gelişmiş kodu doğrudan kopyalayıp Arduino kartınıza yükleyebilirsiniz. Kod bloğunun içindeki açıklamalar algoritmanın çalışma mantığını anlamanıza yardımcı olacaktır.

int BuzzerPin = 8;
int b_ac = 5;      // Buton Aç 
int b_kapat = 4;   // Buton Kapat
int b_ekle = 3;    // Buton Frekans Ekle
int b_azalt = 2;   // Buton Frekans Azalt
int Frekans = 300; // Başlangıç frekansını 300 Hz olarak belirledik
int durum = 0;     // Buzzer Durumu => Başlangıçta Kapalı (0)

void setup() {
  pinMode(b_ac, INPUT);
  pinMode(b_kapat, INPUT);
  pinMode(b_ekle, INPUT);
  pinMode(b_azalt, INPUT);
}

void loop() {  
  // Açma butonuna basıldıysa durumu 1 yap
  if(digitalRead(b_ac))
    durum = 1; // Açık
    
  // Kapatma butonuna basıldıysa durumu 0 yap
  if(digitalRead(b_kapat))
    durum = 0; // Kapalı
    
  // Frekans ekle butonuna basıldıysa sesi 50 Hz incelt
  if(digitalRead(b_ekle)){
    Frekans = Frekans + 50;
    delay(100); // Buton arkını (kırpışmayı) önlemek için kısa bekleme
  }
  
  // Frekans azalt butonuna basıldıysa sesi 50 Hz kalınlaştır
  if(digitalRead(b_azalt)){
    Frekans = Frekans - 50;
    delay(100);
  }
  
  // Eğer durum 1 ise (yani açıldıysa) belirlenen frekansta çal
  if(durum == 1) 
    tone(BuzzerPin, Frekans); // Zaten çalıyorsa ve frekans değiştiyse yeni değerle devam eder
  else // Kapalıysa veya kapatma butonuna basıldıysa sustur
    noTone(BuzzerPin);
}

Projenin Algoritma Mantığı

Bu projenin en güzel yanı, hafıza (durum kontrolü) mantığıyla çalışmasıdır. Açma butonuna bir kez basıp elinizi çektiğinizde bile Arduino durum = 1 bilgisini hafızasında tutar ve siz kapatma butonuna basana kadar buzzer çalmaya devam eder. Buzzer çalarken frekans ekleme veya azaltma butonlarına bastığınızda, tone() fonksiyonu durdurulmaya gerek kalmadan anlık olarak yeni frekans değeriyle güncellenir. Bu da pürüzsüz bir ton geçişi sağlar.


Sık Karşılaşılan Sorunlar ve Çözümleri

1. Butonlara Basmadığım Halde Sinyal Kendi Kendine Değişiyor / Buzzer Sapıtıyor

Çözüm: Bu durum tamamen "Floating (Boşta Kalan) Pin" sorunundan kaynaklanır. Arduino butonun basılmadığı anlarda pinin 0 mı yoksa 1 mi olduğunu anlayamaz. Bunu çözmek için butonların Arduino pinine giden bacaklarına mutlaka 10k Ohm değerinde Pull-down direnci bağlayıp direncin diğer ucunu GND'ye vermelisiniz.

2. Frekans Azaltma Butonuna Çok Bastım, Ses Garipleşti Veya Sustu

Çözüm: İnsan kulağı belirli bir frekansın altını (örneğin 20 Hz altı) duyamaz ve tone() fonksiyonu eksi (-) değerlere düştüğünde hata verebilir. Kodunuza bir güvenlik sınırı eklemek isterseniz, azaltma kısmını if(digitalRead(b_azalt) && Frekans > 100) şeklinde güncelleyerek frekansın 100 Hz'in altına düşmesini engelleyebilirsiniz.

💬 Yorumlar

Henüz yorum yapılmamış. İlk yorumu siz yapın!

Bir Yorum Bırakın

Güvenlik Kontrolü:

Yenidir.com
↑ Sayfa Başı
📞 İletişim ✉ E-Posta Gönder 🟥 YouTube
© 2026 Yenidir.com
Yenidir CMS V0.1