Bu projede bazı melodileri çalmak için piezoelektrik bir zil (buzzer) kullanacağız. Notaların frekanslarını öğrenip 8 bitte daha dün annemizin dinleyeceğiz.

Arduino buzzer ile melodi çalalım (daha dün annemizin)

Proje için gerekli elemanlar

  • Arduino uno r3 kartı
  • Jumper kablolar
  • Piezo buzzer (buzzer)

Nasıl Çalışır ?

Arduino melodisi, tanınabilir notlara benzeyen frekanslar oluşturmak için bir piezo zil (buzzer) kullanır. Arduino IDE arayüzünü, belirli bir melodiyi çalmak için notaların sıralamasını, oranını ve süresini belirlemek için kullanırız.

Piezo (buzzer), küçük oyuncaklarda sıklıkla kullanılan ucuz ses çıkaran parçadır. Plastik gövdesi olmayan bir piezo elemanı, pozitif (tipik olarak kırmızı) ve negatif (tipik olarak siyah) telleri olan altın metalik bir disk gibi görünür. Bir piezo sadece voltaj uygulayarak yarattığımız bir klik sesini çıkarabilir. Piezo'nun belirli bir frekansta saniyede yüzlerce kez ses çıkarmasını sağlayarak tanınabilir notlar oluşturabiliriz, bu yüzden ilk önce istediğimiz farklı tonların frekansını bilmemiz gerekir.

Tablo notaları ve bunlara karşılık gelen frekansları göstermektedir. Periyot, frekansın oluşturulduğu mikrosaniye cinsinden sürenin süresidir. Notayı oluşturmak için kodda kullanılan timeHigh değerini almak için periyot değerini yarıya indiririz.

NOTA FREKANS PERİYOT TIMEHIGH
C 261 Hz 3,830 1915
D 294 Hz 3,400 1700
E 329 Hz 3,038 1519
F 349 Hz 2,864 1432
G 392 Hz 2,550 1275
A 440 Hz 2,272 1136
B 493 Hz 2,028 1014
C 523 Hz 1,912 956

Devre Şeması

Arduino IDE kodları

int speakerPin = 9; // buzzer bağlantı pini
int length = 15; // toplam nota sayısı
char notes[] = "ccggaagffeeddc "; // sondaki boşluk es vermek için
int beats[] = { 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 2, 4 };
int tempo = 300;

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);  }
}

// TimeHigh değerini belirli notlara ayarlama
void playNote(char note, int duration) {
char names[] = { 'c', 'd', 'e', 'f', 'g', 'a', 'b', 'C' };
int tones[] = { 1915, 1700, 1519, 1432, 1275, 1136, 1014, 956 };

for (int i = 0; i < 8; i++) { // Notaya karşılık gelen ses tonu
    if (names[i] == note) {
        playTone(tones[i], duration);   }
   }
}

void setup() {
pinMode(speakerPin, OUTPUT);
}
// melodiyi çalalım
void loop() {
for (int i = 0; i < length; i++) {
    if (notes[i] == ' ') {
        delay(beats[i] * tempo); // Bekleme yani es verme
     }
    else {
        playNote(notes[i], beats[i] * tempo);
     }
delay(tempo / 2); // notalar arası bekleme süresi
}
}
Arduino buzzer kullanımı
  • Yazı Etiketleri :
  • buzzer kullanımı
  • arduino buzzer ile melodi
  • arduino daha dün annemizin
IOS 15'in 10 yeni özelliği
Yazıyı Oku

IOS 15'in 10 yeni özelliği

WEBP dosyalarını Adobe Photoshop ile açma, oluşturma
Yazıyı Oku

WEBP dosyalarını Adobe Photoshop ile açma, oluşturma

Windows 10 için ücretsiz Windows File Recovery programı
Yazıyı Oku

Windows 10 için ücretsiz Windows File Recovery programı

Arduino uzaktan kumanda ve IR receiver ile servo motor kontrolü
Yazıyı Oku

Arduino uzaktan kumanda ve IR receiver ile servo motor kontrolü

Arduino LCD ekranda kayan yazı yapalım
Yazıyı Oku

Arduino LCD ekranda kayan yazı yapalım

Arduino engelden kaçan araba yapımı
Yazıyı Oku

Arduino engelden kaçan araba yapımı

Menu