TinkerCAD ile Buzzer Uygulaması

Bu uygulamada buzzer ile bir şarkı çalacağız. Buzzer'ın müzik notalarını çalabilmesi için belirli bir frekans aralığında çalışması gerekmektedir.

TinkerCAD ile Buzzer Uygulaması 

/*BlogKod.com - TinkerCAD ile Buzzer Uygulaması*/

/*
  Bu uygulamada buzzer ile bir şarkı çalacağız.
    Buzzer'ın müzik notalarını çalabilmesi için belirli
    bir frekans aralığında çalışması gerekmektedir.

    Müzik notalarının harf ve frekans karşılığı tablosu şöyledir.

     Nota    Çalışma Frekansı
     c (DO)       262 Hz
     d (RE)       294 Hz
     e (Mİ)       330 Hz
     f (FA)       349 Hz
     g (SOL)      392 Hz
     a (LA)       440 Hz
     b (Sİ)       494 Hz
     C (İNCE DO)    523 Hz

  Çalacağımız şarkının notaları şöyle:

  “Daha Dün Annemizin Kollarında Yaşarken” Çocuk Şarkısı Notaları:

  Da-ha-dün-an-ne-mi-zin
  Do-do-sol-sol-la-la-sol
  c-c-g-g-a-a-g

  Kol-la-rın-da-ya-şar-ken
  Fa-fa-mi-mi-re-re-do
  f-f-e-e-d-d-c

  Çi-çek-li-bah-çe-mi-zin
  Do-do-sol-sol-la-la-sol
  c-c-g-g-a-a-g

  Yol-la-rın-da-ko-şar-ken
  Fa-fa-mi-mi-re-re-do
  f-f-e-e-d-d-c

  Şim-di-o-kul-lu-ol-duk
  Sol-sol-fa-fa-mi-mi-re
  g-g-f-f-e-e-d

  Sı-nıf-la-rı-dol-dur-duk
  Sol-sol-fa-fa-mi-mi-re
  g-g-f-f-e-e-d

  Se-vinç-li-yiz-he-pi-miz
  Do-do-sol-sol-la-la-sol
  c-c-g-g-a-a-g

  Ya-şa-sın-o-ku-lu-muz
  Fa-fa-mi-mi-re-re-do
  f-f-e-e-d-d-c
*/

// Buzzer dijital 9 numaralı pine bağlı
const int buzzerPini = 9;

//Şarkımızın es'lerle birlikte nota sayısı 64'tür.
const int sarkiUzunlugu = 64;

//Şarkımıza ait notaları es'lerle(boşluklar) diziye atıyoruz.
char sarkinotalari[] = "ccggaag ffeeddc ccggaag ffeeddc ggffeed ggffeed ccggaag ffeeddc ";
//Boşluklar bir es'i ifade eder

//Şarkımıza ait her nota 2 vuruş çalsın.
int vurusSayisi = 2;

//Notalar arası beklemeyi belirlemek için tempo isimli bir değişken tanımladık.
int tempo = 300;

void setup()
{
  //Buzzer pini çıkış olarak ayarlandı
  pinMode(buzzerPini, OUTPUT);
}

void loop()
{
  int i, durak;

  for (i = 0; i < sarkiUzunlugu; i++) // Şarkımıza notaları atamak için döngüyü çalıştırıyoruz.
  {
    durak = vurusSayisi * tempo;  // Nota ya da es'lerin uzunluğunu durak olarak belirliyoruz.

    if (sarkinotalari[i] == ' ')          // Notalar arasında es mi var? Boşluk yani...
    {
      delay(durak);            // durak değişkeni kadar bekle
    }
    else                          // es yoksa notaları çal...
    {
      tone(buzzerPini, frekans(sarkinotalari[i]), durak);
      delay(durak);            // durak kadar bekleme yap
    }
    delay(tempo / 10);            // Notalar arası 30 ms bekle...
  }

  while (1); // Şarkıyı 1 kez çalmak için burada döngüyü durdurduk.
  //Sürekli çalsın istiyorsanız bu döngüyü kaldırabilirsiniz.
}

int frekans(char nota)
{
  // Bu frekans fonksiyonu notaları harflendirir ve
  // tone() fonksiyonu için nota karşılığı olan frekansı
  // hz (hertz) cinsinden döndürür

  int i;
  const int notaSayisi = 8;  // DO'dan İNCE DO'ya 8 notamız var...

  char notaHarfleri[] = { 'c', 'd', 'e', 'f', 'g', 'a', 'b', 'C' };
  int notaFrekanslari[] = {262, 294, 330, 349, 392, 440, 494, 523};

  //Bu döngüde harflere frekans karşılığını atamış olacağız.
  //Böylece frekans değeri yerine belirlediğimiz harfleri ya da sembolleri kullanabiliriz.
  for (i = 0; i < notaSayisi; i++)  // Step through the notes
  {
    if (notaHarfleri[i] == nota)         //Nota var mı?
    {
      return (notaFrekanslari[i]);    // Varsa frekans karşılığını döndür...
    }
  }
  //Hiçbir nota yoksa bile null değer döndürmemiz gerekiyor.
  // Çünkü frekans fonksiyonumuz değer döndürmesi gereken bir fonksiyon...
  return (0);
}
 
 
 

 

Yorumunuzu Ekleyin

Yükleniyor...