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:
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.
Sadece buzzer’ın olduğu projede notaları loop döngüsünde kullanmak için, setupdan hangi kodları loop’a aktarmalıyız.??:)
setup fonksiyonun içindeki kodun tamanını loop’a aktarabilirsiniz.
bir sarki notası yapmak ıstesem sadece notaları arka arkaya yazmam yeterli olacak mi
Notaları ve her nota arasında gereken bekleme sürelerini sırasıyla yazmanız gereklidir.
hababam sınıfı muzıgı yapmak istiyorum notalar arasındakı süreyi ayarlayamıyorum çok farklı seyler ortaya çıkıyor
delay(istediginmilisaniye);
komutunu her nota arasında kullanabilirsin.
merhaba kerem bey , arduino ile uyumlu bir ses çalma modulu varmıdır veya buzzer ı kayıt etmıs oldugumuz ses dosyaları ile kullanabilirimiyiz?
(yaklasık 3 er saniyelik 100 adet ses dosyası içerisinden belli koşullara göre istediğimiz ses dosyasını okumasını istiyoruz)
Buradaki (alternatif olarak buradaki) ürünler işinizi görecektir.
öncelikle yorumunuz için teşekkür ederim, hocam peki arduino leonardo kartı ile ilk attıgınız urun ile arduino leonarda dan ve if komutu le kullanmamız mumkunmudur ve baglantısı uno baglantısı gibi olsa sıkıntı yaratırmı hocam
Kullanmamız gereken direnç değeri nedir?
Yazıda da belirttiğim üzere 100 ohm değerinde bir direnç kullanmanız gereklidir.
void playTone(int tone, int duration)
for (long i = 0; i < duration * 1000L; i += tone * 2)
digitalWrite(speakerPin, HIGH);
delayMicroseconds(tone); {
digitalWrite(speakerPin, LOW);
delayMicroseconds(tone);
fonksıyonunda for'un içindeki 1000L nedir öğrenebilir mıyım ordaki 'L' özellikle
Merhaba,
Elektrik kesildiginde devreye girip yuksek Db ikaz edecek bir cihaz arayisindaydim. Arduino ile bunun yaplilabilecegini gordum ancak bu konuda hic tecrubem yok ve nereden baslayacagimi acikcasi bilemiyorum. Orjinal Arduino Süper Başlangıç Seti alarak ilerlemek dogrumudur?
tesekkurler,
Arduino kodlamayı bilmiyorsanız Süper Başlangıç Seti oldukça ideal bir set olacaktır. Bahsettiğiniz elektrik kesintisi algılama devresi için ise doğal olarak şebeke hattında kesinti olduğunda çalışarak devreyi besleyecek bir güç kaynağına ihtiyacınız vardır. Şebeke gerilimini algılayabilmek için ise bir güvenliği yüksek bir gerilim ölçer devre kullanabilirsiniz.
si# ve mi# nin frekansını bulabilceğim bir site var mı diyez işareti yarım ton inceltiyormuş ben de ona göre bir ton üstündeki notanın frekansıyla oran orantı kurarak değer verdim ama istediğim sesi alamıyorum.
Yazıyı dikkatli okursanız verdiğim linki göreceksiniz 🙂
DEVREYİ RESİMDEKİ GİBİ YAPIYORUM PROGRAMIDA ATIYORUM FAKAT BUZZERDAN SES GELMİYOR YARDIMCI OLURMUSUNUZ
Aynı Hataya Bende Düştüm Hata Kodda Buzzer Pinini 10.pine bağlıyoruz kodda 12 yazıyor kopyala yapıştır yapmamak lazım 🙂
bende 100 ohm luk direnç yok onun yerine hangi direnci kullanabilirim?
220 ohm gibi daha yüksek değerli bir direnç takabilirsiniz. Buzzer’ın sesi daha kısık çıkacaktır.
2 adet 220 ohm luk direnci paralel bağlarsan 110 ohm olur.
hocam sadece çıt çıt diye ses çıkıyor normal bir ses vermiyor sebebi nedir sizce
yüksek volt vermişin
bozmuşsun
Buzzer’ın sesini nasıl kısabiliriz?
Daha yüksek değerli bir direnç bağlayabilir veya bir potansiyometre bağlayarak ses seviyesini kendiniz belirleyebilirsiniz.
benim sorum biraz farklı, dışarıdan verilen ve sadece la notasını algılayabilen ve diğer notaların filtrelendiği bir arduino kodlaması ve filtreleme nasıl yapılabilir peki?
Yalnızca belirli bir frekansı (örneğin la notası) algılamak için frekans ölçümü kütüphanesini kullanmanız gereklidir. Buradan ulaşabilirsiniz: https://www.pjrc.com/teensy/td_libs_FreqMeasure.html
Buzzer kartına 5v ve gnd versek (arduinosuz) yinede ses çıkışı alırmıyım yağmur sensörü ile kullanıcam
Malesef hayır. Bu örnekte kullandığımız buzzer pasif tipte olduğundan almak istediğiniz sesin frekansında bir sinyal oluşturmak için ayrı bir devreye ihtiyacınız olacaktır.
öncelikle merhaba buzzer ı ses sensörüne bağlayabilirmiyiz
Buradaki gibi mi? Raspberry Pi 3 İle Sese Duyarlı Alarm Devresi #16
Slm sd kart ile de bi uygulama yaparmısınz
Buzzer kartına 5v ve gnd versek (arduinosuz) yinede ses çıkışı alırmıyım yağmur sensörü ile kullanıcam
olmuyor knk denedim ben
Malesef bu kartı bahsettiğiniz şekilde kullanmanız mümkün değildir. Ses sinyalini üretecek bir Arduino veya benzeri bir mikrokontrolcü kartına ihtiyacınız olacaktır. Eğer aktif tip bir buzzer kartı kullanırsanız bu tip buzzerlar ses sinyalinin harici olarak üretilmesine ihtiyaç duymazlar.
Iyi gunler hocam blutooth ile uzaktan buzeri calistirabilecegimiz bir uygulama var midir
İyi günler, buradaki dersimizden faydalanarak Bluetooth kullanımını öğrenebilirsiniz: Arduino Dersleri 17: HC-05 Bluetooth Modülü Kullanımı
öncelikle selamlar buzzerımdan notaları muz piyano ile çalmak istiyorum fakat buzzer durmadan ötüyor ben gnd ve muza dokunursam daha çok ötüyor 220 direnç kullandım
acaba buzzer kartıyla nasıl kullanırız bu sistemi
Direnci çıkartarak devredeki buzzer gibi doğrudan buzzer kartınızı bağlayabilirsiniz.
Ben buzzer ı birçok devrede dirençli dirençsiz kullandım ama sadece tık tık şeklinde ses geliyor.Yüksek uyarı sesini bir türlü alamıyorum.Yardımcı olur musunuz?
1. Led 2. Led 3. Led sırayla yansın sonra buzzer ses çıkarmaya başlasın sonra buzzer ses çıkarırken 4. Led 5. Led 6. Led sırasıyla yansın sonra sırayla 1. Led 2. Led 3. Led buzzer 4.led 5. Led 6.led söns0n. Ve bu kod 2 kez tekrar etsin. Bunun kodunu yazar mısınız lütfen çok acil
Çok teşekkürler harikasın yine Kerem İzgül
Hiç direnç kullanmasak daha yüksek ses alınmakta, bu şekilde bir zararı oluyor mu? Buzzer’ın bozulması vs.
Hiç direnç olmadan kullanınca daha net ses çıkıyor gibi.
Okul zili bu şekilde çalınıyo galiba
Merhabalar, ilk örnekte
int buzzerPin = 12;
Diyerek 12. Pine tanımlamış olduk
İnt notaSayisi = 8;
Dediğim zaman nota sayısını tanımlamış ama aynı zamanda 8. Pin’e de tanımlamış oluyorum.
Bu durumda 8. Pin’i kullanabilir miyim?
Veya kullanmamın bir yolu var mı?
İyi çalışmalar dilerim.
acaba potansiyomeyreyle buzzer denklemini nasıl birş-leştiririm çünkü direnci çıkardığımda kod sonunda ötmeye başlıyor da
Ben direnç olmadan gayet iyi yaptım. Teşekkür ederim yine de ☺
bu buzzeri devreye bağlamadan pille çalıştırabilirmiyiz yani kodlamadan çalıştırabilirmiyiz?
Evet, 5V gerilim verebilirsiniz.
merhaba yeniyim bu işlerde elimde FC-07 buzzer var ama bşr türlü ses çıkaramıyorum, bana bu konuda yardımcı olacak kimse yok,bana yardım edin lütfen.