Müzik Projesi
Klasik dönemin ikonik bestecisi Mozart, hala dünya genelinde müzisyenleri ve hayranları etkilemeye devam ediyor. Bu projede, PicoBricks platformunu kullanarak Mozart'ın ünlü bestelerinden birini nasıl buzzer ile çalabileceğimizi keşfedeceğiz. PicoBricks, müzik tutkunları ve teknoloji severler için mükemmel bir seçenek olabilir :) . Projemiz, Mozart'ın başyapıtı Türk Marşı'nı PicoBricks kullanarak yeniden çalmaya odaklanıyor. Seçtiğimiz bir parçayı sevimli bir kesite dönüştürerek onu büyüleyici bir müzik deneyimine çevirdik. Sadece birkaç satır kod, bir buzzer ve biraz yaratıcılık ile Mozart'ın müziğini ve benzer besteleri tamamen yeni bir şekilde hayata geçirebiliriz..
Detaylar ve Algoritma
İlk olarak, projemiz için bazı sabitler ayarlamamız gerekiyor. Bir pine BUZZER_PIN adını vereceğiz ve A5, B5, C5, D5, E5 ve G5 gibi farklı müzik notları için frekansları NOTE_A5, NOTE_B5, NOTE_C5, NOTE_D5, NOTE_E5 ve NOTE_G5 olarak tanımlayacağız. Daha sonra, mozartSongMelody adında bir dizi yapacağız ve bu dizi, melodideki tüm notları tutacak.
Ayrıca her notanın ne kadar süreyle çalması gerektiğini belirlemek için mozartTempo adında başka bir dizi yapacağız. Kurulum işlevinde BUZZER_PIN'in sesi duyabilmemiz için bir çıkış olarak ayarlı olduğundan emin olacağız.
Şimdi, eğlenceli kısma gelelim: döngü işlevi. Melodideki notların sayısını bulmak için sizeof işlevini kullanacağız. Ardından mozartTempo dizisindeki her notayı işleyeceğiz. Döngü içinde, her notanın tempoya dayalı olarak ne kadar süreyle çalması gerektiğini hesaplayacağız. Bu süreyi kullanarak, notayı buzzer üzerinde çalmak için ton işlevini kullanacağız. Ayrıca notalar arasında ritim ve müzikalite kazandırmak için notalar arası bir duraklama süresi hesaplayacağız.
Bir nota çalındığında, sesi durdurmak için noTone'u kullanacağız. İşte bu kadar! Bu kod, bir buzzer kullanarak bir Mozart bestesi bile çalmanıza olanak tanır. PicoBricks IDE, MicroPython ve Arduino ile farklı melodileri deneyebilir ve bestelerinizi oluşturabilirsiniz. PicoBricks İle Robotik Projene Ses Ekleyebilirsin!
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
Melodi projeleri, PicoBricks kullanıcılarına müziği ve sesleri projelerine entegre etme fırsatı sunar. Bu tarzda melodi projelerinde, projelerinizi farklı melodiler ve ses efektleri kullanarak daha çekici hale getirebilir, işitsel geri bildirim sağlayabilirsiniz. Müzik projeleri, Maker dünyasındaki sesin önemini vurguluyor ve projelerinizi bir üst seviyeye taşıyor!