İçeriğe geç

Menü

Berk Akademi
Yorumlar Google yorumları Özel Ders Başvuru Ücretsiz ön görüşme Ana Sayfa

Tinkercad’de Arduino ile Buzzer Nasıl Çalınır? tone() Kullanımı

tinkercad-arduino-buzzer-tone-kullanimi
Bu yazıda neler var?
  1. Tinkercad’de piezo buzzer Arduino’ya nasıl bağlanır?
  2. tone() hangi parametrelerle ses üretir?
  3. Gam notaları dizi ve for döngüsüyle nasıl çalınır?
  4. Simülasyonda ses duyulmuyorsa hangi ayarlar kontrol edilmeli?
  5. Sık yapılan tone() ve bağlantı hataları nasıl ayıklanır?
  6. Arduino Uno’da tone() hangi PWM pinlerini etkiler?
  7. Sık Sorulan Sorular

Tinkercad’de Arduino ile buzzer çalmak için piezo buzzer’ın artı bacağını Arduino’nun bir dijital pinine, diğer bacağını GND bağlantısına bağlayıp kodda tone() işlevini kullanabilirsin. Örnek devrede buzzer, 8 numaralı pine bağlanır ve belirlenen frekansta ses üretir.

Bu uygulama, devre bağlantısını ve programlama mantığını birlikte öğrenmek için iyi bir başlangıçtır. Elektronik projelerinde kullanılan kavramların hangi okul kademesinde nasıl ilerlediğini görmek için robotikten Python ve Java’ya kademe rehberini inceleyebilirsin.

Tinkercad’de piezo buzzer Arduino’ya nasıl bağlanır?

Tinkercad’de piezo buzzer bağlamak için buzzer’ın artı işaretli bacağını Arduino’nun 8 numaralı dijital pinine, diğer bacağını GND’ye bağla. Pin, Arduino üzerinde belirli bir işi yapmak için kullanılan numaralı bağlantı noktasıdır. Bunu, her birinin üzerinde farklı numara bulunan küçük prizler gibi düşünebilirsin.

GND, devrenin ortak dönüş yoludur. Elektrik akımının devre içinde dolaşıp Arduino’ya geri dönebilmesi için bu bağlantının kurulması gerekir. Gündelik bir örnekle düşünürsek, 8 numaralı pin ses bilgisini buzzer’a götüren yolsa GND de devrenin Arduino’ya geri dönen yolu gibidir.

Önce Tinkercad Circuits alanında yeni bir devre oluştur. Bileşenler arasından Arduino Uno’yu ve piezo buzzer’ı çalışma alanına sürükle. Buzzer üzerinde genellikle artı işaretiyle belirtilen uç, ses sinyalinin bağlanacağı uçtur. Bu ucu Arduino üzerindeki 8 numaralı pine, diğer ucu ise GND pinine bağlamak için kabloları kullan.

Bağlantıları yaptıktan sonra kabloların gerçekten pin uçlarına değdiğini kontrol et. Kablo yalnızca bir parçanın yakınına taşınmışsa bağlantı kurulmayabilir. Kodunu ekledikten sonra simülasyonu başlat ve buzzer’ın çalışıp çalışmadığını gözlemle.

  • Buzzer’ın artı bacağı Arduino’nun 8 numaralı pinine bağlı mı?
  • Diğer bacak GND pinine bağlı mı?
  • Kabloların iki ucu da bağlantı noktalarına oturuyor mu?
  • Buzzer’ın artı ve eksi uçları ters bağlanmış mı?
  • Simülasyon başlamadan önce Arduino kodu eklenmiş mi?

tone() hangi parametrelerle ses üretir?

tone() hangi parametrelerle ses üretir?

tone() ses üretmek için pin, frekans ve isteğe bağlı süre bilgilerini kullanır. Temel yazımı tone(pin, frequency, duration) şeklindedir. pin, sesin çıkacağı Arduino bağlantı noktasını; frequency, sesin titreşim hızını; duration ise sesin kaç milisaniye süreceğini belirtir.

Frekansı, sesin bir saniyede kaç kez titreştiğini gösteren sayı olarak düşünebilirsin. Değer yükseldikçe ses genellikle incelir, değer düştükçe kalınlaşır. Frekansın birimi hertz, sürenin birimi ise milisaniyedir. Arduino’nun resmî açıklamalarında tone() ve noTone() işlevlerinin kullanımı bu yapı üzerinden gösterilir.

Süre parametresini yazmazsan ses kendiliğinden durmaz. Bu durumda ses üretimini aynı pin için noTone(pin) ile sonlandırabilirsin. delay() ise programın belirli bir süre beklemesini sağlar. Böylece bir notanın ne kadar çalacağını ve notalar arasında ne kadar boşluk olacağını ayarlayabilirsin.

const int buzzerPin = 8;

void setup() {
}

void loop() {
  tone(buzzerPin, 262);
  delay(500);

  noTone(buzzerPin);
  delay(300);
}

Bu kodda 8 numaralı pine bağlı buzzer, 262 hertz frekansında yaklaşık yarım saniye ses çıkarır. Ardından noTone() ile durur ve 300 milisaniyelik kısa bir sessizlikten sonra aynı işlem tekrarlanır.

Gam notaları dizi ve for döngüsüyle nasıl çalınır?

Frekans, sesin inceliğini belirleyen titreşim hızıdır. Değer yükseldikçe ses daha ince duyulur. Pin ise Arduino üzerindeki numaralı bağlantı noktasıdır. Bu örnekte buzzer, 8 numaralı pine bağlanır ve Do4 notasından başlayıp Do5 notasına yükselen bir gam çalınır.

Nota frekansları, A4 notasının 440 Hz kabul edildiği eşit aralıklı düzene göre yaklaşık olarak verilmiştir. Tablodaki değerler okunmasını kolaylaştırmak için yuvarlanmıştır. Her nota 300 milisaniye sürer ve iki nota arasında 80 milisaniyelik kısa bir boşluk bulunur.

Nota Yaklaşık frekans tone() süresi İki nota arasındaki boşluk
Do4 262 Hz 300 ms 80 ms
Re4 294 Hz 300 ms 80 ms
Mi4 330 Hz 300 ms 80 ms
Fa4 349 Hz 300 ms 80 ms
Sol4 392 Hz 300 ms 80 ms
La4 440 Hz 300 ms 80 ms
Si4 494 Hz 300 ms 80 ms
Do5 523 Hz 300 ms 80 ms

Frekansları ve süreleri iki ayrı diziye yerleştirerek her notayı aynı sıradaki süreyle çalabilirsin. tone() çağrısı sesin ne kadar süreceğini alır, ancak programın devam etmesini bekletmez. Bu nedenle nota süresi kadar beklemek için delay(), sesi açıkça durdurmak için de noTone() kullanılır.

const int buzzerPin = 8;

int frequencies[] = {
  262, 294, 330, 349,
  392, 440, 494, 523
};

int durations[] = {
  300, 300, 300, 300,
  300, 300, 300, 300
};

void setup() {
  pinMode(buzzerPin, OUTPUT);
}

void loop() {
  for (int i = 0; i < 8; i++) {
    tone(buzzerPin, frequencies[i], durations[i]);
    delay(durations[i]);
    noTone(buzzerPin);
    delay(80);
  }

  delay(300);
}

Program çalıştığında for döngüsü dizilerin 0. elemanından 7. elemanına kadar ilerler. Böylece Do’dan başlayıp Do’ya yükselen gam küçük aralıklarla yeniden çalınır. Başka notalar eklemek için frekans ve süre dizilerinin aynı sıraya yeni değerlerle genişletilmesi gerekir.

Simülasyonda ses duyulmuyorsa hangi ayarlar kontrol edilmeli?

Simülasyonda ses duyulmuyorsa hangi ayarlar kontrol edilmeli?

Ses yoksa kontrolü devreden başlayıp bilgisayarın ses ayarlarına doğru ilerletmek en hızlı teşhis yöntemidir. Tinkercad’de önce simülasyonu çalıştıran kontrolü kullan ve kodun çalıştığını gözlemle. Simülasyon başlamadıysa tone() komutu da yürütülmez.

  1. Bağlantıyı kontrol et: Buzzer’ın sinyal ucu kodda yazan 8 numaralı pine, diğer ucu GND’ye bağlı olmalıdır. Böylece yanlış pin ve eksik toprak bağlantısı elenir.
  2. Kod ile devreyi karşılaştır: Kodda buzzerPin = 8 yazarken buzzer başka bir pine bağlıysa Arduino doğru bağlantıya ses gönderemez.
  3. Tarayıcı sekmesini kontrol et: Tinkercad sekmesi sessize alınmışsa sekmenin sesini aç. Bilgisayarın ses düzeyini ve doğru hoparlör ya da kulaklık çıkışının seçili olduğunu da kontrol et.
  4. Site ses ayarını kontrol et: Tarayıcı, web üzerinden başlatılan sesleri engelleyebilir. Site izinlerinde sesin engellenmediğine bak ve simülasyonu başlattıktan sonra sayfaya bir kez tıkla.

İlk iki adım devre ve kod kaynaklı sorunları, son iki adım ise bilgisayarın ses çıkışını ve tarayıcı engellerini ayırır. Böylece aynı anda her şeyi değiştirmek yerine hangi bölümün soruna neden olduğunu daha kolay bulabilirsin.

Sık yapılan tone() ve bağlantı hataları nasıl ayıklanır?

Ses gelmiyorsa önce buzzer’ın doğru pine ve GND hattına bağlandığını, ardından kodda tone(), delay() ve noTone() kullanımının birbiriyle uyumlu olduğunu kontrol et.

Bağlantı çizimini ve ortak GND yolunu incele

Kodda tone(8, 262) yazıyorsa buzzer’ın sinyal ucu Arduino’nun 8 numaralı pinine bağlanmalıdır. Buzzer’ın diğer ucu GND’ye gitmelidir. Parçanın üzerinde artı ve eksi işaretleri bulunuyorsa bağlantıyı bu işaretlere göre yap.

GND bağlantısı unutulduğunda devrenin elektriksel dönüş yolu tamamlanmaz. Bu durumda Arduino’dan sinyal gönderilse bile buzzer beklenen şekilde çalışmayabilir. Kablonun gerçekten GND hattına ulaştığını ve yanlışlıkla başka bir sıraya bağlanmadığını kontrol et.

digitalWrite() ile nota üretmeye çalışma

digitalWrite() bir pini genellikle HIGH veya LOW durumunda tutar. Bu iki sabit durum, düzenli bir nota frekansı oluşturmaz. Buzzer’da yalnızca kısa bir tıklama ya da geçiş sesi duyulmasının nedeni bu olabilir.

tone() ise pini belirli bir frekansta hızlı biçimde değiştirerek ses dalgası oluşturur. Bu nedenle nota çalmak için buzzer’ın bağlı olduğu pin üzerinde tone() kullanmalısın.

tone() ve delay() sürelerini birlikte kontrol et

tone() içindeki süre, notanın ne kadar çalacağını belirtir. Hemen arkasından gelen delay() ise programın bir sonraki adıma geçmeden ne kadar bekleyeceğini belirler.

delay() değeri notanın süresinden kısa olursa program yeni notaya erken geçebilir. Değer fazla uzun olursa nota bittikten sonra gereksiz bir sessizlik oluşur. Nota dizisiyle süre dizisinin aynı sırada ilerlediğinden de emin ol.

const int buzzerPin = 8;

int notes[] = {262, 294, 330};
int durations[] = {300, 300, 600};

void setup() {
  for (int i = 0; i < 3; i++) {
    tone(buzzerPin, notes[i], durations[i]);
    delay(durations[i]);
    noTone(buzzerPin);
    delay(30);
  }
}

void loop() {
}

Bu örnekte her nota kendi süresi kadar çalar, ardından noTone() ile durdurulur ve sonraki notadan önce kısa bir boşluk bırakılır. notes ve durations dizilerindeki eleman sayıları aynı olmalıdır.

  • Kodda kullanılan pin ile buzzer’ın bağlı olduğu pin aynı mı?
  • Buzzer’ın diğer ucu doğru GND hattına bağlı mı?
  • Nota üretmek için tone() kullanılıyor mu?
  • tone() süresi ile delay() süresi uyumlu mu?
  • Nota bittikten sonra gerektiğinde noTone() çağrılıyor mu?

Arduino Uno’da tone() hangi PWM pinlerini etkiler?

Arduino Uno’da tone() kullanılması, PWM çıkışı bakımından özellikle 3 ve 11 numaralı pinleri etkileyebilir. Bu durum, aynı anda bu pinlerde analogWrite() ile PWM kullanıyorsan önem kazanır.

Örneğin buzzer için tone() çalışırken 3 veya 11 numaralı pine bağlı bir LED’in parlaklığını PWM ile ayarlamaya çalışırsan beklenmeyen bir davranış görebilirsin. Yalnızca buzzer bağlıysa ve bu pinlerde başka bir PWM işlemi yapılmıyorsa genellikle böyle bir çakışmayla karşılaşmazsın.

Bu bilgi bütün Arduino kartlarına doğrudan uygulanmamalıdır. Tinkercad’de seçtiğin kartın Arduino Uno olduğundan ve gerçek devrede kullandığın kartla simülasyon kartının aynı olduğundan emin ol. Ayrıntılar için Arduino’nun resmî tone() dokümantasyonuna bakabilirsin.

Sık Sorulan Sorular

Tinkercad’de buzzer için GND bağlantısı neden gerekir?

GND bağlantısı devrenin elektriksel dönüş yolunu tamamlar. Buzzer’ın sinyal ucu doğru pine bağlı olsa bile GND bağlantısı yoksa ses oluşmayabilir.

tone() yerine digitalWrite() kullanınca neden melodi oluşmaz?

digitalWrite() pini yalnızca HIGH veya LOW durumunda tutar, düzenli bir frekansta titreştirmez. Melodi için frekans belirleyen tone() işlevi kullanılmalıdır.

tone() süresi ile delay() süresi nasıl ayarlanır?

delay() süresi, tone() içinde verdiğin nota süresine yakın seçilmelidir. Daha kısa bir değer notayı erken kesebilir, daha uzun bir değer ise notalar arasında gereksiz boşluk oluşturabilir.

Simülasyonda buzzer sesi gelmiyorsa tarayıcıda hangi kontroller yapılır?

Bilgisayarın ses çıkışını, hoparlör veya kulaklık bağlantısını ve tarayıcı sekmesinin sessize alınmadığını kontrol et. Ayrıca tarayıcıda site sesinin engellenmediğinden ve simülasyon içindeki ses kontrolünün etkin olduğundan emin ol.

Nota frekansları neden tabloda yaklaşık ve yuvarlanmış değerlerle gösterilir?

Nota frekansları hesaplamalarda küsuratlı değerler içerebilir. Arduino örneklerinde bu değerler okunması ve kodda kullanılması kolay olsun diye en yakın tam sayıya yuvarlanabilir; bu nedenle tabloda yaklaşık değer olarak gösterilir.

Bağlantıyı, frekansı ve nota sürelerini ayrı ayrı kontrol ederek Tinkercad’deki buzzer melodisini daha kolay ayıklayabilirsin.

Bu içerik aradığın cevabı verdi mi?
Yanıtın, hangi yazıları geliştirmemiz gerektiğini anlamamıza yardımcı olur.
Bu içeriğin üretilmesinde yapay zeka araçlarından destek alınmıştır.

Bu konudan sonra ne okuyabilirsin?

Tüm yazılar

İlgili Eğitimler

Berk Keskin, yazılım geliştirici ve eğitmen
Yazar

Berk Keskin Kimdir?

Yazılıma 12 yaşında başladı; İzmir Ekonomi Üniversitesi'ni bölüm birincisi ve yüksek şeref öğrencisi olarak tamamladı. Bugün yalnızca eğitim vermekle kalmıyor, sektörde aktif olarak yazılım projeleri geliştiriyor ve gerçek dünya deneyimini birebir derslerine taşıyor. Ezberden uzak, mühendislik zihniyetini merkeze alan sürdürülebilir öğrenme sistemleri tasarlayarak sorgulayan, üreten ve problem çözebilen yeni nesil yazılımcılar yetiştiriyor.

Sektörel Deneyim & Projeler

  • Ticarify Entegrasyon Yazılım logosu CEO Ticarify Entegrasyon YazılımPazaryerleri ve e-ticaret sitelerine otomatik e-fatura kesimi, sipariş ve kargo takibi hizmetleri sunan e-Dönüşüm platformunun API mimarisini ve yazılım ekibini yönetmektedir.
  • Benim Düğünüm logosu CEO Benim DüğünümDijital etkinlik ve anı paylaşım platformu.
  • Siberdizayn logosu Yazılım Ekibi Lideri SiberdizaynYüksek anlık oyuncu trafiğine sahip oyun kontrol panelleri ve sunucu altyapıları geliştiren yazılım ekibine liderlik etmektedir.
  • MEDYOGRAFYA 360° Dijital Çözümler logosu Dijital Strateji Lideri MEDYOGRAFYA 360° Dijital ÇözümlerŞirketlerin dijital çözümlerde uzun vadede nasıl ilerlemesi gerektiği ve dijital dönüşüm süreçlerinin yönetilmesine destek olmaktadır.
  • İzmir Ekonomi Üniversitesi logosu Danışma Kurulu Üyesi İzmir Ekonomi ÜniversitesiMezun olduğu üniversitesinde, Bilgisayar Programcılığı bölümünün akademik müfredatını güncel sektör ihtiyaçlarına göre şekillendirmek adına Danışma Kurulu'nda görev almaktadır.
WhatsApp Hemen Ara