Müzik Projesi
Klasik dönemin ikonik bestecilerinden Mozart, hala dünyadaki müzisyenleri ve hayranlarını etkilemeye devam ediyor. Bu projemizde, PicoBricks platformunu kullanarak Mozart’ın meşhur bestelerinden birini buzzer ile nasıl çalabileceğimizi keşfedeceğiz. Bu proje ile PicoBricks, müzik tutkunları ve teknolojiyi sevenler mükemmel bir seçenek olabilir. Proje, Mozart’ın başyapıtlarından biri olan Türk Marşı’nı PicoBricks kullanarak çalmaya odaklanıyor. Seçtiğimiz bu başyapıtı hoş bir kesite dönüştürerek onu etkileyici bir müzik deneyimine çevirdik. Birkaç satır kod, bir buzzer ve biraz yaratıcılık ile Mozart’ın müziğini tamamen yeni bir şekilde hayata geçirmek mümkün.
Detaylar ve Algoritma
Başlangıçta, projemiz için bazı sabitler atamamız gerekli. Bir pine BUZZER_PIN adını verdikten sonra A5, B5, C5, D5, E5 ve G5 gibi müzik notaları için frekansları NOTE_A5, NOTE_B5, NOTE_C5, NOTE_D5, NOTE_E5 ve NOTE_G5 olarak tanımlayacağız. Sonrasında mozartSongMelody adında bir dizi yazacağız ve bu dizi, melodideki bütün notaları tutacak.
Her notanın ne kadar süreyle çalması gerektiğini ayarlamak için mozartTempo adında farklı bir dizi yazacağız. Kurulum işlevinde BUZZER_PIN sabitinin sesini duyabilmek için bir çıkış olarak ayarlı olduğundan emin olacağız.
Şimdi projenin eğlenceli aşamasına gelelim: döngü işlevi. Melodideki notaların sayısı bulmak amacıyla sizeof işlevini kullanacağız. Daha sonra mozartTempo dizisindeki her notayı işlememiz gerekecek. Döngü içerisinde, her notanın tempoya dayanarak ne kadar süre çalması gerektiğini hesaplayacağız. Bu süreyi kullanarak, notanın buzzer üzerinde çalmasını sağlamak için ton işlevini kullanacağız. Notalar arasında ritim kazandırmak için bir duraklama süresi de hesaplayacağız.
Bir nota çalındığında, sesin durması için noTone’u kullanacağız. İşte bu kadar! Bu birkaç satır kod bir Mozart bestesi çalmamıza olanak sağlar. PicoBricks IDE, MicroPython, ve Arduino ile siz de farklı melodileri deneyebilir ve hatta kendi bestenizi de oluşturabilirsiniz!
Gerekli Malzemeler
1x PicoBricks
Devre Şeması
MicroBlocks Kodları
MicroPython Kodları
from utime import sleep
import time
from machine import Pin, I2C, PWM
tones = {
"B0": 31,
"C1": 33,
"CS1": 35,
... # (for brevity, other tones can be added here)
"DS8": 4978
}
song = ["A5","B5","C5", "B5", "A5", "A5", "E5", "E5", "D5","C5","B5","A5","G5","G5","P"]
buzzer = PWM(Pin(20))
buzzer.duty_u16(0)
def playtone(frequency):
buzzer.duty_u16(3000)
buzzer.freq(frequency)
def bequiet():
buzzer.duty_u16(0)
def playsong():
playtone(tones["A5"])
sleep(0.2)
... # (for brevity, other song notes can be added here)
bequiet()
playtone(tones["E5"])
sleep(2)
bequiet()
playsong()
Arduino C Kodları
#define BUZZER_PIN 20
#define NOTE_A5 880
#define NOTE_B5 988
#define NOTE_C5 523
#define NOTE_D5 587
#define NOTE_E5 659
#define NOTE_G5 784
const int mozartSongMelody[] = {
NOTE_A5, NOTE_B5, NOTE_C5, NOTE_B5, NOTE_A5, NOTE_A5, NOTE_E5,
NOTE_E5,NOTE_D5,NOTE_C5,NOTE_B5,NOTE_A5,NOTE_G5,NOTE_G5,0,
};
const int mozartTempo[] = {
2, 2, 2, 2, 8, 8, 4,
4, 6, 2, 8, 4, 4, 4,
2, 4, 4, 4, 4, 2, 2,
2, 2,
};
void setup() {
pinMode(BUZZER_PIN,OUTPUT);
}
void loop() {
int size = sizeof(mozartTempo)/sizeof(int); // Get the number of notes in the melody
for (int note = 0; note < size; note++) {
int duration = 1000/mozartTempo[note];
tone(BUZZER_PIN, mozartSongMelody[note], duration);
int pauseBetweenNotes = duration * 1.30;
delay(pauseBetweenNotes);
noTone(BUZZER_PIN);
}
}
Beste Projeleri
Bu tarz melodi projeleri, PicoBricks kullanıcıları için müziğin ve seslerin projelerine entegre edilmesini sağlar. Projelerinizi farklı melodiler kullanarak daha çekici hale getirebilir ve işitsel geri bildirim sağlayabilirsiniz.