آموزش‌های کاربردیبایگانی مطالبپروژه‌های Raspberry Pi

ساخت جعبه موسیقی با استفاده Raspberry Pi

در این مقاله نحوه ساخت یک جعبه موسیقی با استفاده از رزبری پای را آموزش خواهیم داد. این موزیک باکس توسط چند دکمه کنترل و همچنین با فشردن هر دکمه صدای متفاوتی ایجاد می کند. همراه ما باشید.

قطعات مورد نیاز


ابتدا طبق فایل تصویری زیر یک پوشه به اسم “gpio-music-box” ایجاد کنید تا تمام فایل های پروژه خود را درون این پوشه قرار دهید.


ایجاد فایل های صوتی برای جعبه موسیقی

تعداد زیادی صدای سمپل در آدرس /usr/share/sonic-pi/samples ذخیره شده است که با استفاده از دستور زیر آن ها را در پوشه ای که در مرحله قبل ایجاد کردید انتقال دهید.

cp /usr/share/sonic-pi/samples/* ~/gpio-music-box/samples/.

پوشه صدا های سمپل برای ساخت جعبه موسیقی

در ابتدا به چند فایل صوتی با پسوند wav. نیاز است که در یک پوشه با نام دلخواه به عنوان مثال samples قرار دهیم. قبل از شروع به نوشتن برنامه باکس موسیقی در پایتون، پخش فایل های صوتی انتخابی در پایتون را آزمایش می کنیم.

با فرض اینکه 4 فایل صوتی زیر را داشته باشیم:

  • drum_tom_mid_hard.wav
  • drum_cymbal_hard.wav
  • drum_snare_hard.wav
  • drum_cowbell.wav


کد نویسی در پایتون

حال برای اینکه هر کلید از جعبه موسیقی صدای خود را پخش کند، نیاز به کدنویسی در پایتون داریم. برای این منظور از منو Programming برنامه mu را اجرا کنید. برای اجرایی کردن این پروژه شما اول باید مطمئن شوید که پایتون قادر به پخش سمپل ها هست یا خیر.

شما باید برای اجرای صدا در پایتون از ماژول pygame استفاده کنید. به احتمال زیاد این ماژول از قبل بر روی رزبری پای نصب می باشد.

در ابتدای فایل برنامه کتابخانه پخش فایل های صوتی را ایمپورت می نماییم:

import pygame

pygame.init()

حالا در پایتون شیء ایجاد می کنیم و آنرا به فایل های سمپل لینک می کنیم. برای هر فایل یک اسم جداگانه در نظر بگیرید. بطور مثال :

drum = pygame.mixer.Sound("/home/pi/gpio-music-box/samples/drum_tom_mid_hard.wav")

سپس یک شی پایتون که به فایل صوتی متصل می باشد ایجاد کرده و آن را با دستور ()play. پخش می نماییم:

Drum1 = pygame.mixer.Sound("/home/pi/gpio-music-box/samples/drum_tom_mid_hard.wav")
Drum2 = pygame.mixer.Sound("/home/pi/gpio-music-box/samples/ drum_cymbal_hard.wav")
Drum3 = pygame.mixer.Sound("/home/pi/gpio-music-box/samples/ drum_snare_hard.wav")
Drum4 = pygame.mixer.Sound("/home/pi/gpio-music-box/samples/ drum_cowbell.wav")


Drum1.play()
Drum2.play()
Drum3.play()
Drum4.play()

در صورت شنیدن فایل صوتی آماده رفتن به مرحله بعد می باشیم.


اتصال دکمه ها بر روی بردبورد

نیاز به 4 عدد دکمه داریم که آن ها را به صورت زیر بر روی برد بورد  قرار دهیم. برای آشنایی با GPIO بورد رزبری پای کلیک کنید.

نحوه اتصال کلید ها برای ساخت جعبه موسیقی

تعریف و کد نویسی تابع برای دکمه ها

وقتی که در برنامه پایتون، یکی از دکمه ها فشرده می شود، تابعی به عنوان مثال ()drum.play فراخوانی می شود. در زمان استفاده از یک تابع در یک وقفه، تابع بدون پرانتز استفاده می شود.

import pygame
from gpiozero import Button

pygame.init()

drum = pygame.mixer.Sound("/home/pi/gpio-music-box/samples/drum_tom_mid_hard.wav")
cymbal = pygame.mixer.Sound("/home/pi/gpio-music-box/samples/drum_cymbal_hard.wav")
snare = pygame.mixer.Sound("/home/pi/gpio-music-box/samples/drum_snare_hard.wav")
bell = pygame.mixer.Sound("/home/pi/gpio-music-box/samples/drum_cowbell.wav")

در ابتدا برای یکی از دکمه ها پخش صوت را انجام می دهیم.

btn_drum = Button(4)

از شماره GPIO که در اتصال به دکمه استفاده شد، استفاده کنید. در مثال بالا از پاییه شماره 4 استفاده شده است.

به منظور پخش فایل صوتی پس از فشردن دکمه کافی است دستور زیر به انتهای برنامه اضافه شود:

btn_drum.when_pressed = drum.play

عملیات فوق (دو دستور اخیر) برای سه دکمه دیگر تکرار می شود و کد کامل برای ساخت جعبه موسیقی به صورت زیر خواهد بود.

import pygame
from gpiozero import Button

pygame.init()

drum = pygame.mixer.Sound("/home/pi/gpio-music-box/samples/drum_tom_mid_hard.wav")
cymbal = pygame.mixer.Sound("/home/pi/gpio-music-box/samples/drum_cymbal_hard.wav")
snare = pygame.mixer.Sound("/home/pi/gpio-music-box/samples/drum_snare_hard.wav")
bell = pygame.mixer.Sound("/home/pi/gpio-music-box/samples/drum_cowbell.wav")

btn_drum = Button(4)
btn_cymbal = Button(17)
btn_snare= Button(27)
btn_bell = Button(10)

btn_drum.when_pressed = drum.play
btn_cymbal.when_pressed = cymbal.play
btn_snare.when_pressed = snare.play
btn_bell.when_pressed = bell.pla

اگر این مقاله برای شما مفید بود، پیشنهاد میکنم به مقاله زیر هم سر بزنید. معرفی و راه اندازی سنسور PIR با بورد رزبری پای

این مقاله چطور بود ؟
+1
34
+1
51
+1
2
مشاهده بیشتر

محمد حسنی

حدود 3 سالی هست که در تیم سخت افزار سازان نام آور با اشتیاق به تولید محتوا مشغول هستم. علاقه شدیدی نسبت به طراحی، تحولات دنیای فناوری هوش مصنوعی و اینترنت اشیا دارم.

نوشته های مشابه

دیدگاهتان را بنویسید

دکمه بازگشت به بالا