İçeriğe geç

Ana

Renk teması
Makale Tahmini 2 dk okuma

Arduino Buzzer için Örnek Müzik Kodları

Bugün ki yazımda programlaması tamamıyla bana ait olan bazı buzzer kodlarını yazımın devamında paylaşıyor olacağım. Öncelikle bağlantı şemasıyla başlayalım; Malzemeler: Arduino (Uno, Nano, Mega) 100…

İçindekiler 0%


Bugün ki yazımda programlaması tamamıyla bana ait olan bazı buzzer kodlarını yazımın devamında paylaşıyor olacağım.
Öncelikle bağlantı şemasıyla başlayalım;

Malzemeler:

  1. Arduino (Uno, Nano, Mega)
  2. 100 Ohm Direnç
  3. Breadboard

Bağlama Tarifi:

Buzzer'da iki bacak bulunur. Buzzer'ın üstüne baktığınızda bacaklardan birisinin hizasında (+) yazar. Bu bacağı 8 No.lu pine bağlayabilirsiniz. veya istediğiniz herhangi başka bir digital bacak da olabilir. Kodunuzu da ona göre düzenlemeniz gerekir. İkinci bacağı da direnç üzerinden GND (-) Toprak hattına bağlamak gerekir.

Bağlantı Şeması:

Yukarıdaki şemada siyah (-), kırmızı (+) ucu temsil etmektedir.

Ben kodlara ilgili notaların frekanslarını ekledim. Örnek olarak da 2 adet müziği buraya ekleyeceğim. sizler diğer müziklerin notalarını öğrendikten sonra duraksamaları deneme yanılma yoluyla bulabilirsiniz. Takıldığınız yerde aşağıya yorum bırakırsanız seve seve yardımcı da olabilirim.

Notalar:



1
2
3
4
5
6
7
8
#define doo  1000// do komutu ile karismasin diye doo yazdim (kalin do)
#define re   1122
#define mi   1260
#define fa   1335
#define sol  1498
#define la   1681
#define si   1887
#define dom  2000// do komutu ile karismasin diye dom yazdim (ince do)

Yukarıdaki kodu projemizin en başına eklersek artık notaları çağırıken sadece yanındaki isimleri ile çağırabiliriz. Örnek: re gibi.

Örnek Kod -1 Süt İçtim Dilim Yandı:

Türkünün Orjinali:




Arduino kodları:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#define doo  1000// do komutu ile karismasin diye doo yazdim (kalin do)
#define re   1122
#define mi   1260
#define fa   1335
#define sol  1498
#define la   1681
#define si   1887
#define dom  2000// do komutu ile karismasin diye dom yazdim (ince do)

int melodi[] =     {re,mi,fa,sol,fa,sol,sol,sol, fa, sol,sol,sol ,fa, mi, re,mi,fa,sol,fa,sol,sol,sol, fa, sol,sol,sol ,fa, mi,   re, mi ,fa,sol,mi,fa,re,mi,doo,doo,fa,mi,re,re,re, mi ,fa,sol,mi,fa,re,mi,doo,doo,fa,mi,re,re };
int notasuresi[] = {4,  4,  4,  4, 4,  4,4,  3 ,4,4,4,4,4,2,4,  4,  4,  4, 4,  4,4,  3 ,4,4,4,4,4,2       ,4,4,4,4,4,4,4,4,4,4,4,4,2,2,    4,4,4,4,4,4,4,4,4,4,4,4,2,2};// her notanin süresini array yaptim
int tempo = 1200;
void setup() 
{ 
  for (int Nota = 0; Nota <56; Nota++) 
    {
      int sure = tempo/notasuresi[Nota];
     tone(8, melodi[Nota],sure);// 8 numarali bacaktan notalarin frekanslarini nota uzunluklarina göre gönder
     delay(sure*1.2);// notalar arasinda biraz beklesin. Eger 1 ile çarparsaniz notalar birbirine bitisik olur
    }
 }
void loop() {
 }

Sizler öncelikle int melodi[] yanına notalarınızı sıralayınız. Daha sonra notasuresi[] kısmından her nota için ayrı süreleri belirleyin. Her bir sayı yukarıda bir notayı temsil eder. Tempo ise hız değişkenidir. alttaki for döngüsünü de nota sayısına götürmelisiniz. tone() içine yazdığınız ilk değişken de buzzer'i bağladığınız bacak pin numarasadır.



Örnek Kod -2 Hangimiz Sevmedik:

Şarkının Orjinali:




Arduino Kodları:



 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#define doo  1000// do komutu ile karismasin diye doo yazdim (kalin do)
#define re   1122
#define mi   1260
#define fa   1335
#define sol  1498
#define la   1681
#define si   1887
#define dom  2000// do komutu ile karismasin diye dom yazdim (ince do)

int melodi[] =     {doo,re,dom ,si,doo,si,doo,re,dom ,si,doo,si,doo,re,dom ,si,doo,si,  la,si,la,sol,fa,la };
int notasuresi[] = {6,  6,  2,  6, 6,  2,6,  6,  2, 6 , 6,  2,6,  6,  2,  6, 6,  2,  6,9,8,5,5,2 };// her notanin süresini array yaptim
int tempo = 1200;
void setup() 
{ 
  for (int Nota = 0; Nota <24; Nota++) 
    {
      int sure = tempo/notasuresi[Nota];
     tone(8, melodi[Nota],sure);// 8 numarali bacaktan notalarin frekanslarini nota uzunluklarina göre gönder
     delay(sure*1.2);// notalar arasinda biraz beklesin. Eger 1 ile çarparsaniz notalar birbirine bitisik olur
    }
 }
void loop() {
 }

Süt içtim için olan aynı talimatlar geçerlidir.
İlgili GitHub repository'si için;
 github-abraxelx

Soru ve sorunlarınızı yorumlarda bildirebilirsiniz. 

Tartışma

Yorumlar

Bu yazıya ilk yorumu siz bırakın.

Yorum bırakın

Yayınlanmaz. Yalnızca size dönüş yapabilmek için.
Düz metin olarak yayınlanır; HTML çalışmaz.

Yorumlar yayınlanmadan önce onaydan geçer.