logo

Yüz Yüze Konuşmaya Ne Dersiniz?

Yaptığı her işte en güzelini yapmaya çalışan, yaratıcı, disiplinli bir ekibiz. Topluluk yönetimi, eğitim teknoloji ve robotik gibi niş konularda uzmanlıklarımız var. Birlikte neler yapabileceğimize bakmak, tanışmak, hayata katma değer sağlamak için görüşmeye ne dersiniz?
iletisim@artistanbul.io
+90 0212 251 64 37

Arduino ile Imperial Marşı Çalmak

Arduino ile Imperial Marşı Çalmak

Geçtiğimiz Cuma günü itibariyle Star Wars’ın son filmi vizyona girdi. Şüphesiz yolda giderken Imperial March şarkısını mırıldandığınızı veya patronunuzun iş yerine geldiğinizde bunu dinlediğine şahit olmuşsunuzdur. Emin olun aklınızdan gün boyunca çıkmayacaktır. Benim de böyle oldu desem yalan olmaz. Patronumla başlayan akım, ofiste mırıldanmalara ve daha sonrasından işime kadar etki etti. Bu yazımda sizlere bu akımın son aşaması olmasını umduğum Arduino ile Star Wars Imperial March şarkısını monofonik olarak nasıl çalacağımızı ele alacağız.

 

Gerekli olan malzemeler:

  1. Şarkının aslı (mırıldanmanız bile yeterli)
  2. Arduino UNO veya Leonardo
  3. Aktif Buzzer
  4. Jumper Wire (Bağlantı kabloları)

1. Aşama : Arduino Üzerine Bileşenleri Yerleştirmek

Donanımsal olarak fazla birşey yapmamıza gerek yok 🙂 Ses çıkarması için bir Aktif Buzzer’a ihtiyaç duyuyoruz. Şemayı aşağıda paylaşıyorum.

Screen Shot 2015-12-22 at 23.01.19

Eğer KeyEs’in 3 bacaklı modeline sahip iseniz bağlantı şekli şu şekilde olacaktır.

Aşama 2: Arduino ile Marşımızı Yazmak
Uygulamanın kodlarına Github üzerinden ulaşmak için tıklayınız

[php]
int ledPin = 13;
//Arduino UNO ve Leonardo üzerinde varsayılanda bulunan LED’lerden birisi de D13 pinine bağlı LED’imizdir. Tanımlamasını yapıyoruz.

//Buzzer’ı herhangi bir PWM pinine bağlayalım.
int speakerPin = 11;
#define c 261
#define d 294
#define e 329
#define f 349
#define g 391
#define gS 415
#define a 440
#define aS 455
#define b 466
#define cH 523
#define cSH 554
#define dH 587
#define dSH 622
#define eH 659
#define fH 698
#define fSH 740
#define gH 784
#define gSH 830
#define aH 880
//Her bir tonun frekansını ayarlamak için şu programı kullanıyorum.
//http://home.mit.bme.hu/~bako/tonecalc/tonecalc.htm

void setup()
{
pinMode(ledPin, OUTPUT);
// LED’imizi çıkış pini olarak belirleyelim.
pinMode(speakerPin, OUTPUT);
// Buzzer’ı da aynı şekilde çıkış pini olarak belirleyelim.
}

void loop() // tekrar tekrar ve tekrar çalması için döngümüzü oluşturalım
{
march();
}

// Kendi fonksiyonumuzu yazalım.
void beep (unsigned char speakerPin, int frequencyInHertz, long timeInMilliseconds)
{
// Her bir nota çaldığında LED’imiz yansın.
digitalWrite(ledPin, HIGH);

int x;
long delayAmount = (long)(1000000/frequencyInHertz);
long loopTime = (long)((timeInMilliseconds*1000)/(delayAmount*2));
for (x=0;x<loopTime;x++)
{
digitalWrite(speakerPin,HIGH);
delayMicroseconds(delayAmount);
digitalWrite(speakerPin,LOW);
delayMicroseconds(delayAmount);
}

//Sonra sönsün
digitalWrite(ledPin, LOW);

// Küçük bir gecikme koyarak notalarımızın daha net çıkmasını sağlayalım.
delay(20);
}

void march()
{
//Müziğe buradan ulaşabilirsiniz:
//http://www.musicnotes.com/sheetmusic/mtd.asp?ppn=MN0016254

beep(speakerPin, a, 500);
beep(speakerPin, a, 500);
beep(speakerPin, a, 500);
beep(speakerPin, f, 350);
beep(speakerPin, cH, 150);

beep(speakerPin, a, 500);
beep(speakerPin, f, 350);
beep(speakerPin, cH, 150);
beep(speakerPin, a, 1000);
//ilk bit

beep(speakerPin, eH, 500);
beep(speakerPin, eH, 500);
beep(speakerPin, eH, 500);
beep(speakerPin, fH, 350);
beep(speakerPin, cH, 150);

beep(speakerPin, gS, 500);
beep(speakerPin, f, 350);
beep(speakerPin, cH, 150);
beep(speakerPin, a, 1000);
//ikinci bit…

beep(speakerPin, aH, 500);
beep(speakerPin, a, 350);
beep(speakerPin, a, 150);
beep(speakerPin, aH, 500);
beep(speakerPin, gSH, 250);
beep(speakerPin, gH, 250);

beep(speakerPin, fSH, 125);
beep(speakerPin, fH, 125);
beep(speakerPin, fSH, 250);
delay(250);
beep(speakerPin, aS, 250);
beep(speakerPin, dSH, 500);
beep(speakerPin, dH, 250);
beep(speakerPin, cSH, 250);
//ilgi çeken bölümün başlangıcı

beep(speakerPin, cH, 125);
beep(speakerPin, b, 125);
beep(speakerPin, cH, 250);
delay(250);
beep(speakerPin, f, 125);
beep(speakerPin, gS, 500);
beep(speakerPin, f, 375);
beep(speakerPin, a, 125);

beep(speakerPin, cH, 500);
beep(speakerPin, a, 375);
beep(speakerPin, cH, 125);
beep(speakerPin, eH, 1000);
//Daha ilginç kısmı 🙂

beep(speakerPin, aH, 500);
beep(speakerPin, a, 350);
beep(speakerPin, a, 150);
beep(speakerPin, aH, 500);
beep(speakerPin, gSH, 250);
beep(speakerPin, gH, 250);

beep(speakerPin, fSH, 125);
beep(speakerPin, fH, 125);
beep(speakerPin, fSH, 250);
delay(250);
beep(speakerPin, aS, 250);
beep(speakerPin, dSH, 500);
beep(speakerPin, dH, 250);
beep(speakerPin, cSH, 250);
//tekrar… tekrar

beep(speakerPin, cH, 125);
beep(speakerPin, b, 125);
beep(speakerPin, cH, 250);
delay(250);
beep(speakerPin, f, 250);
beep(speakerPin, gS, 500);
beep(speakerPin, f, 375);
beep(speakerPin, cH, 125);

beep(speakerPin, a, 500);
beep(speakerPin, f, 375);
beep(speakerPin, c, 125);
beep(speakerPin, a, 1000);
// ve sahalara çıkmaya hazırız!
}
[/php]

Aşama 3: Kayıt!

Oğuzhan Kayar

Artistanbul'da Eğitim Teknolojileri Uzmanı ve Maker Eğitmeni olarak görev almaktayım.

2 Yorumlar
  • Ali Işıngör
    Cevapla
    Gönderim01:51, 24 Aralık 2015

    Çok eğlenceliymiş. Bunu okullar için yazdığımız Arduino eğitimleri arasına alsak mı? 🙂

Yorum Yaz

Yorum
İsim
E-Posta
Website