Alışverişlerinizi Robotistan’dan Yapın

Faydalı içerikler oluşturarak size yardımcı olmak istiyoruz. Aynı zamanda uygun fiyat, hızlı teslimat ve kaliteli hizmetle Robotistan.com’da hizmet veriyoruz. Siz de alışverişlerinizi robotistan.com‘dan yaparak bize yardımcı olabilirsiniz 🙂

Raspberry Pi 3 Buzzer Kullanımı – Ses Çıkışı Nasıl Alınır? #6

Raspberry Pi Dersleri serimizde kullanacağımız malzemelerin tamamına sizler için hazırladığımız setler ile kolayca sahip olabilirsiniz. Raspberry Pi’ye Uzaktan Bağlantı Yöntemleri (VNC,SSH,TTL) #4 dersimize kadar olan malzemeler için Kombo Kit, Raspberry Pi 3 Röle Kartı İle Alarm Devresi Yapımı #11 dersimize kadar olan malzemeler için Süper Başlangıç Seti, tüm derslerdeki malzemeler için Proje Seti tercih edebilirsiniz.

Merhabalar. Bu dersimizde Raspberry Pi’mizin GPIO pinlerine bağlayacağımız buzzer ile ses çıkışı almayı öğreneceğiz:

Gerekli malzemelerimiz:

Raspberry Pi’mizin üzerinde 3.5mm TRRS tipi ses bağlantısı mevcut olsa da, biz bu dersimizde çok daha basit kullanıma sahip olan buzzer’ımızı GPIO pinlerinden bağlayacağız.

Buzzer’ı minik bir hoparlör olarak düşünebiliriz. Büyük hoparlör ve kulaklıklar kadar yüksek ve detaylı ses üretmeseler de, “bip” leme seslerini çıkartmada kullanılabilirler. Hatta çoğu kişisel bilgisayarın (PC) açılış sırasında çıkarttığı “bip”, bir buzzer’dan gelmektedir.

Buzzer

Buzzer’lar genellikle aktif ve pasif olmak üzere iki çeşittir. Aktif bir buzzer, dahili olarak kendi sesini üretecek bir osilatör devresine sahiptir. Sadece güç uygulanarak ses vermeleri sağlanabilir. Pasif buzzer’lar ise bu tip bir devreye sahip olmadıklarından ses sinyalini bir mikroişlemci ile bizim üreterek oluşturmamız gereklidir. Bu derste kullandığımız buzzer, pasif tipdedir.

Devremizi aşağıdaki şemaya göre kuruyoruz:

Raspberry Pi – Buzzer devre şeması

Devremizi kurduktan sonra Raspberry Pi’mizi çalıştırıyoruz. Aşağıda yer alan kodu bir metin editörü aracılığıyla (örneğin Geany) buzzer_melody.py ismiyle /home/pi klasörüne kaydediyoruz.

Raspberry Pi Buzzer Kodu:

Kodda hata alıyorsanız alternatif olarak bu adresten kopyalamayı deneyiniz: https://zerobin.net/?29692ada80a179e9#GFOQBMhQgsTRxomgVwhIARwpiwEj947XMfCeX93esj8=

import RPi.GPIO as GPIO
import time

buzzer_pin = 4
button1 = 17
button2 = 18

GPIO.setmode(GPIO.BCM)
GPIO.setup(buzzer_pin, GPIO.IN)
GPIO.setup(buzzer_pin, GPIO.OUT)
GPIO.setup(button1, GPIO.IN, pull_up_down=GPIO.PUD_UP)
GPIO.setup(button2, GPIO.IN, pull_up_down=GPIO.PUD_UP)

notes = {
 'B0' : 31,
 'C1' : 33, 'CS1' : 35,
 'D1' : 37, 'DS1' : 39,
 'EB1' : 39,
 'E1' : 41,
 'F1' : 44, 'FS1' : 46,
 'G1' : 49, 'GS1' : 52,
 'A1' : 55, 'AS1' : 58,
 'BB1' : 58,
 'B1' : 62,
 'C2' : 65, 'CS2' : 69,
 'D2' : 73, 'DS2' : 78,
 'EB2' : 78,
 'E2' : 82,
 'F2' : 87, 'FS2' : 93,
 'G2' : 98, 'GS2' : 104,
 'A2' : 110, 'AS2' : 117,
 'BB2' : 123,
 'B2' : 123,
 'C3' : 131, 'CS3' : 139,
 'D3' : 147, 'DS3' : 156,
 'EB3' : 156,
 'E3' : 165,
 'F3' : 175, 'FS3' : 185,
 'G3' : 196, 'GS3' : 208,
 'A3' : 220, 'AS3' : 233,
 'BB3' : 233,
 'B3' : 247,
 'C4' : 262, 'CS4' : 277,
 'D4' : 294, 'DS4' : 311,
 'EB4' : 311,
 'E4' : 330,
 'F4' : 349, 'FS4' : 370,
 'G4' : 392, 'GS4' : 415,
 'A4' : 440, 'AS4' : 466,
 'BB4' : 466,
 'B4' : 494,
 'C5' : 523, 'CS5' : 554,
 'D5' : 587, 'DS5' : 622,
 'EB5' : 622,
 'E5' : 659,
 'F5' : 698, 'FS5' : 740,
 'G5' : 784, 'GS5' : 831,
 'A5' : 880, 'AS5' : 932,
 'BB5' : 932,
 'B5' : 988,
 'C6' : 1047, 'CS6' : 1109,
 'D6' : 1175, 'DS6' : 1245,
 'EB6' : 1245,
 'E6' : 1319,
 'F6' : 1397, 'FS6' : 1480,
 'G6' : 1568, 'GS6' : 1661,
 'A6' : 1760, 'AS6' : 1865,
 'BB6' : 1865,
 'B6' : 1976,
 'C7' : 2093, 'CS7' : 2217,
 'D7' : 2349, 'DS7' : 2489,
 'EB7' : 2489,
 'E7' : 2637,
 'F7' : 2794, 'FS7' : 2960,
 'G7' : 3136, 'GS7' : 3322,
 'A7' : 3520, 'AS7' : 3729,
 'BB7' : 3729,
 'B7' : 3951,
 'C8' : 4186, 'CS8' : 4435,
 'D8' : 4699, 'DS8' : 4978
}

melody = [
 notes['E7'], notes['E7'], 0, notes['E7'],
 0, notes['C7'], notes['E7'], 0,
 notes['G7'], 0, 0, 0,
 notes['G6'], 0, 0, 0,
 
 notes['C7'], 0, 0, notes['G6'],
 0, 0, notes['E6'], 0,
 0, notes['A6'], 0, notes['B6'],
 0, notes['AS6'], notes['A6'], 0,
 
 notes['G6'], notes['E7'], notes['G7'],
 notes['A7'], 0, notes['F7'], notes['G7'],
 0, notes['E7'], 0, notes['C7'],
 notes['D7'], notes['B6'], 0, 0,
 
 notes['C7'], 0, 0, notes['G6'],
 0, 0, notes['E6'], 0,
 0, notes['A6'], 0, notes['B6'],
 0, notes['AS6'], notes['A6'], 0,
 
 notes['G6'], notes['E7'], notes['G7'],
 notes['A7'], 0, notes['F7'], notes['G7'],
 0, notes['E7'], 0, notes['C7'],
 notes['D7'], notes['B6'], 0, 0
]

tempo = [
 12, 12, 12, 12,
 12, 12, 12, 12,
 12, 12, 12, 12,
 12, 12, 12, 12,
 
 12, 12, 12, 12,
 12, 12, 12, 12,
 12, 12, 12, 12,
 12, 12, 12, 12,
 
 9, 9, 9,
 12, 12, 12, 12,
 12, 12, 12, 12,
 12, 12, 12, 12,
 
 12, 12, 12, 12,
 12, 12, 12, 12,
 12, 12, 12, 12,
 12, 12, 12, 12,
 
 9, 9, 9,
 12, 12, 12, 12,
 12, 12, 12, 12,
 12, 12, 12, 12,
]

crazy_frog_melody = [
 notes['A4'], notes['C5'], notes['A4'], notes['A4'], notes['D5'], notes['A4'], notes['G4'], 
 notes['A4'], notes['E5'], notes['A4'], notes['A4'], notes['F5'], notes['E5'], notes['C5'],
 notes['A4'], notes['E5'], notes['A5'], notes['A4'], notes['G4'], notes['G4'], notes['E4'], notes['B4'], 
 notes['A4'],0,
 
 notes['A4'], notes['C5'], notes['A4'], notes['A4'], notes['D5'], notes['A4'], notes['G4'], 
 notes['A4'], notes['E5'], notes['A4'], notes['A4'], notes['F5'], notes['E5'], notes['C5'],
 notes['A4'], notes['E5'], notes['A5'], notes['A4'], notes['G4'], notes['G4'], notes['E4'], notes['B4'], 
 notes['A4'],0,
 
 
 notes['A3'], notes['G3'], notes['E3'], notes['D3'],
 
 notes['A4'], notes['C5'], notes['A4'], notes['A4'], notes['D5'], notes['A4'], notes['G4'], 
 notes['A4'], notes['E5'], notes['A4'], notes['A4'], notes['F5'], notes['E5'], notes['C5'],
 notes['A4'], notes['E5'], notes['A5'], notes['A4'], notes['G4'], notes['G4'], notes['E4'], notes['B4'], 
 notes['A4'],
]

crazy_frog_tempo = [
 2,4,4,8,4,4,4,
 2,4,4,8,4,4,4,
 4,4,4,8,4,8,4,4,
 1,4,
 
 2,4,4,8,4,4,4,
 2,4,4,8,4,4,4,
 4,4,4,8,4,8,4,4,
 1,4,
 
 8,4,4,4,
 
 2,4,4,8,4,4,4,
 2,4,4,8,4,4,4,
 4,4,4,8,4,8,4,4,
 1,
]

final_countdown_melody = [
 notes['A3'],notes['E5'],notes['D5'],notes['E5'],notes['A4'],
 notes['F3'],notes['F5'],notes['E5'],notes['F5'],notes['E5'],notes['D5'],
 notes['D3'],notes['F5'],notes['E5'],notes['F5'],notes['A4'],
 notes['G3'],0,notes['D5'],notes['C5'],notes['D5'],notes['C5'],notes['B4'],notes['D5'],
 notes['C5'],notes['A3'],notes['E5'],notes['D5'],notes['E5'],notes['A4'],
 notes['F3'],notes['F5'],notes['E5'],notes['F5'],notes['E5'],notes['D5'],
 notes['D3'],notes['F5'],notes['E5'],notes['F5'],notes['A4'],
 notes['G3'],0,notes['D5'],notes['C5'],notes['D5'],notes['C5'],notes['B4'],notes['D5'],
 notes['C5'],notes['B4'],notes['C5'],notes['D5'],notes['C5'],notes['D5'],
 notes['E5'],notes['D5'],notes['C5'],notes['B4'],notes['A4'],notes['F5'],
 notes['E5'],notes['E5'],notes['F5'],notes['E5'],notes['D5'],
 notes['E5'],
]

final_countdown_tempo = [
 1,16,16,4,4,
 1,16,16,8,8,4,
 1,16,16,4,4,
 2,4,16,16,8,8,8,8,
 4,4,16,16,4,4,
 1,16,16,8,8,4,
 1,16,16,4,4,
 2,4,16,16,8,8,8,8,
 4,16,16,4,16,16,
 8,8,8,8,4,4,
 2,8,4,16,16,
 1,
]

def buzz(frequency, length):

 if(frequency==0):
 time.sleep(length)
 return
 period = 1.0 / frequency
 delayValue = period / 2
 numCycles = int(length * frequency)
 
 for i in range(numCycles):
 GPIO.output(buzzer_pin, True)
 time.sleep(delayValue)
 GPIO.output(buzzer_pin, False)
 time.sleep(delayValue)

def play(melody,tempo,pause,pace=0.800):
 
 for i in range(0, len(melody)):
 
 noteDuration = pace/tempo[i]
 buzz(melody[i],noteDuration)
 
 pauseBetweenNotes = noteDuration * pause
 time.sleep(pauseBetweenNotes)

while True:
 if GPIO.input(button1) == 0:
 print "Crazy Frog (Axel F) Theme"
 play(crazy_frog_melody, crazy_frog_tempo, 0.30, 0.900)
 time.sleep(2)
 if GPIO.input(button2) == 0:
 print "The Final Countdown"
 play(final_countdown_melody, final_countdown_tempo, 0.30, 1.2000)
 time.sleep(2)

Kodun detaylı açıklaması için aşağıdaki videoyu izleyebilirsiniz:

Raspberry Pi Buzzer Python kodumuzu aşağıdaki komut ile çalıştırıyoruz:

python buzzer_melody.py

Devremize eklediğimiz butonlar, farklı melodileri çalmada görev alıyor. Kodda button1 olarak belirtilen butona basıldığında Crazy Frog melodisi, button2‘ye basıldığında ise The Final Countdown melodisi çalacak.

Paylaş

Yorumları Görüntüle

En Son İçerik

  • Genel
  • Raspberry Pi

Raspberry Pi 4 Model B Tanıtıldı – Özellikleri Neler Farklı?

https://youtu.be/LSHLeKOxv0Y Raspberry Pi severlere müjde: Raspberry Pi 4 Model B tanıtıldı ! Mini bilgisayar olarak kullanılan ve farklı versiyonları ile…

2 hafta Önce
  • Arduino
  • Arduino Programlama ve Dersler

Arduino ile RFID Kart Okuyucu (RC522) Modül Kullanarak Kapı Kilidi Yapımı

< 19. Derse Dön Herkese merhabalar. Eve kim ne zaman girmiş çıkmış, bilmek istemez misiniz? Öyleyse bu proje size göre…

2 hafta Önce
  • Arduino
  • Arduino C# Projeleri ve Uygulamaları

Arduino ve C# ile Mesafe Ölçer – 4. Ders

Sonraki Ders > < Önceki Ders Arkadaşlar merhaba, bu dersimizde HC-SR04 sensörü ile ölçtüğümüz mesafeyi seri haberleşme yardımıyla anlık olarak…

3 hafta Önce
  • Arduino
  • Arduino Programlama ve Dersler
  • Arduino Projeleri
  • Genel

Arduino İle MQ Gaz Sensörlerinin Kullanımı – Yanıcı Gaz Alarmı

20. Derse Geç > < 18. Derse Dön Arkadaşlar herkese selamlar ! Daha önce hiç gaz sensörü kullandınız mı? Bu…

1 ay Önce
  • Arduino
  • Arduino Programlama ve Dersler
  • Arduino Projeleri
  • Genel

Arduino İle Yağmur Sensörü Kullanarak Yağmur Alarmı Yapalım

19. Derse Geç > < 17. Derse Dön Herkese selamlar ! Bu yazımızda ise yağmur sensörü kullanarak Arduino ile Yağmur…

1 ay Önce
  • Arduino
  • Arduino C# Projeleri ve Uygulamaları

Arduino ve C# Haberleşmesi ile RGB Led Kontrolü – 3. Ders

Sonraki Ders > < Önceki Ders Arkadaşlar merhaba, Arduino ve C# haberleşmesi serisinin 3. yazısında RGB led kontrolü yapabileceğimiz bir…

2 ay Önce