Önceki projelerimizde ışıkla oynadık, şimdi sıra sesin gücünü keşfetmekte. Aktif buzzer'lar sadece "bip" sesi çıkarırken, pasif buzzer'lar farklı frekanslarda titreşerek notaları çalmamıza olanak tanır. Bu projeyle, kendi elektronik müzik aletinizi yaparak Arduino'nun yaratıcı potansiyelini bir kez daha göreceksiniz.
Pasif buzzer'ın bağlantısı oldukça basittir.
Müzik kutumuzu programlamak için, notaların hangi frekanslara karşılık geldiğini bilmemiz gerekir. Arduino'da notaları çalmak için tone() fonksiyonunu kullanacağız. Bu fonksiyon, parametre olarak pin numarasını ve çalınacak notanın frekansını (Hertz cinsinden) alır.
Aşağıdaki tablo, sık kullanılan notaların frekanslarını göstermektedir:
Nota | Frekans (Hz) |
Do (C) | 262 |
Re (D) | 294 |
Mi (E) | 330 |
Fa (F) | 349 |
Sol (G) | 392 |
La (A) | 440 |
Si (B) | 494 |
İnce Do (C) | 523 |
E-Tablolar'a aktar
Devreniz hazırsa, Arduino IDE'yi açın ve aşağıdaki kodla kendi müzik kutunuzu programlayın.
C
// Pasif buzzer'ın bağlı olduğu pini tanımla
const int buzzerPin = 8;
// Notaların frekanslarını tanımla
#define NOTE_C4 262
#define NOTE_D4 294
#define NOTE_E4 330
#define NOTE_F4 349
#define NOTE_G4 392
#define NOTE_A4 440
#define NOTE_B4 494
#define NOTE_C5 523
// Çalınacak melodiyi notalar dizisi olarak tanımla
// "Do", "Re", "Mi", "Fa", "Sol", "Fa", "Mi", "Re", "Do"
int melody[] = {
NOTE_C4, NOTE_D4, NOTE_E4, NOTE_F4, NOTE_G4, NOTE_F4, NOTE_E4, NOTE_D4, NOTE_C4
};
// Her bir notanın süresini (milisaniye cinsinden) tanımla
int noteDurations[] = {
500, 500, 500, 500, 500, 500, 500, 500, 500
};
void setup() {
// Buzzer pinini çıkış olarak ayarla
pinMode(buzzerPin, OUTPUT);
}
void loop() {
// Melodideki her bir notayı sırayla çal
for (int thisNote = 0; thisNote < 9; thisNote++) {
// Notalar arasındaki bekleme süresini hesapla
int noteDuration = 1000 / noteDurations[thisNote];
// tone() fonksiyonu ile notayı çal
tone(buzzerPin, melody[thisNote], noteDuration);
// Notadan sonra kısa bir duraklama ekleyerek notaların ayrık çalmasını sağla
int pauseBetweenNotes = noteDuration * 1.30;
delay(pauseBetweenNotes);
// tone() fonksiyonunu durdurmak için noTone() kullan
noTone(buzzerPin);
}
// Melodi bittikten sonra 2 saniye bekle ve tekrar başla
delay(2000);
}
Kod yüklendikten sonra, Arduino'dan melodinin çalmaya başladığını duyacaksınız. Artık kendi müziğinizi kodlayabilirsiniz! Bu proje, gelecekte ses sensörleri veya diğer sensörlerle interaktif ses deneyimleri oluşturmanız için harika bir adımdır. Belki de bir sonraki projenizde, hareket sensörüyle tetiklenen bir alarm melodisi tasarlarsınız.