آموزش الکترونیکآموزش رزبری پای

آموزش استفاده از کتابخانه PyGame پخش صدا با رزبری پای

سلام. آموزش استفاده از کتابخانه PyGame صدای بازی رزبری پای را آماده کردیم.

پخش صدای بازی ها با برد Raspberry Pi

در این آموزش رزبری پای میخواهیم از توابع Pugame برای پخش صدا استفاده کنیم. به طور کلی ما قصد داریم چند دکمه را به پین های GPIO برد RAspberry Pi متصل کنیم که با فشردن هر کدام از انها فایل های ذخیره شده در حافظه پخش شوند. این فایال های صوتی را میتوان یک به یک و همه با هم پخش کرد. یعنی میتوانید یک دکمه را فشار دهید یا چند دکمه را با هم فشار دهید تا فایل های صوتی پخش شوند.

فیلم عملکرد این آموزش در انتهای صفحه قرار گرفته است.

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

پیکربندی پخش موسیقی با رزبری پای

1. اول از همه 6 فایل صوتی را بارگیری کنید یا می توانید از فایلهای صوتی خود استفاده کنید ، اما باید نام فایل ها را در کد تغییر بدهید.

فایلهای صوتی را از اینجا بارگیری کنید

2. یک پوشه جدید در صفحه دسک تاپ Raspberry Pi ایجاد کنید و آن را “PI SOUND BOARD” بنامید.

3. فایل های صوتی بارگیری شده را در پوشه ای که در مرحله قبل در DESKTOP ایجاد کرده ایم از حالت فشرده خارج کنید.

4. پنجره ترمینال را در Raspberry Pi باز کنید و زیر دستور وارد کنید:

sudo amixer cset numid=3 1  <press enter>

این دستور به PI می گوید که خروجی صوتی را از طریق جک صوتی 3.5 میلی متری روی برد فراهم کند.

اگر می خواهید از درگاه HDMI خروجی صوتی بگیرید، می توانید از دستور زیر استفاده کنید:

$ sudo amixer cset numid=3 2 <press enter>

5. بلندگوها را به جک خروجی صوتی 3.5 میلی متری در برد Raspberry Pi متصل کنید.

6. یک فایل PYTHON (پسوند * .py) ایجاد کنید و آن را در همان پوشه ذخیره کنید.

7. میکسر Pygame به طور پیش فرض در سیستم عامل نصب می شود. اگر برنامه بعد از اجرا PYMIXER را اجرا نمیکند، با وارد کردن دستور زیر در پنجره ترمینال، سیستم عامل Raspberry Pi را به روز کنید. اطمینان حاصل کنید که رزبری پای به اینترنت وصل شده است.

sudo apt-get update <press enter>

چند دقیقه صبر کنید تا سیستم عامل به روز شود.

اگر در مورد این مطلب سوالی داشتید در انتهای صفحه در قسمت نظرات بپرسید.
حتما ببینید :  آموزش نصب MQTT روی رزبری پای برای اینترنت اشیا

توضیحات مدار پروژه

برای این آموزش ما از Raspberry Pi 2 Model B با سیستم عامل Raspbian Jessie استفاده می کنیم. به یک بلندگو، 6 عدد مقاومت 1 کیلو اهم، 6 دکمه و  یک خازن 1000uf نیاز داریم. در اینجا ما از 6 دکمه فشار برای پخش 6 فایل صوتی استفاده کرده ایم. می توانیم دکمه ها و پرونده های صوتی بیشتری را برای توسعه دادن این پروژه اضافه کنیم تا با فشار دادن این دکمه ها الگوی بیشتری ایجاد کنیم.

پخش صدای بازی ها با برد Raspberry Pi

توضیحات برنامه نویسی رزبری پای

وقتی همه چیز را مانند شماتیک مدار متصل کردید، می توانیم Raspberry Pi را روشن کنیم تا برنامه را در پایتون (PYHTON) بنویسیم. کد کامل در انتهای صفحه قرار داده شده است. در اینجا در مورد قسمت های مهم کد صحبت میکنیم. در اینجا ما برنامه Python را برای پخش فایلهای صوتی با فشار دکمه ایجاد کرده ایم. باید دستورات معدودی را بشناسیم که در برنامه استفاده کرده ایم.

ما میخواهیم پرونده GPIO را از کتابخانه وارد کنیم. کد زیر باعث میشود بتوانیم پین های GPIO برد رزبری پای را برنامه ریزی کنیم. همچنین مانند قسمت قبلی آموزش، نام GPIO را به IO تغییر میدهیم. و هر بار بخواهیم به پین های GPIO مراجعه کنیم از کلمه IO استفاده میکنیم.

import RPi.GPIO as IO

بعضی اوقات، پین ​​های GPIO که سعی در استفاده از آنها داریم، ممکن است عملکردهای دیگری را انجام دهند. در این حالت، هنگام اجرای برنامه، هشدارهایی دریافت خواهیم کرد. دستور زیر به PI می گوید هشدارها را نادیده گرفته و به برنامه ادامه دهد.

IO.setwarnings(False)

ما می توانیم پین های GPIO رزبری پای یا شماره پین آن یا شماره GPIO آن ها وارد کنیم. به طور مثال پین 35 روی برد Raspberry pi، همان پین GPIO 19 است. بنابراین ما میتوانیم آن را با 19 یا 35 معرفی کنیم.

IO.setmode (IO.BCM)
import pygame.mixer

ما برای پخش فایلهای صوتی در حال فراخوانی میکسر Pygame هستیم.

audio1 = pygame.mixer.Sound("buzzer.wav")

ما در حال درخواست فایل صوتی “buzzer.wav” که در پوشه دسک تاپ ذخیره شده هستیم. اگر می خواهید فایل دیگری را پخش کنید، فقط کافیست نام فایل صوتی را در کدی که در بالا آورده شده است، تغییر دهید. می توانید هر پرونده موجود در پوشه دسک تاپ را نام ببرید.

channel1 = pygame.mixer.Channel(1)

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

    if (IO.input(21) == 0):
        channel1.play(audio1)

در کد بالا ما یک شرط تعیین کرده ایم، در صورتی که بر طبق شرط دکمه متصل به پین 21 فشرده باشد، صدای مخصوص آن دکمه پخش میشود.

حتما ببینید :  آموزش استفاده از وقفه ها در STM32 + فیلم

پرونده به متغیر audio1 اختصاص یافته است. مطابق نمودار مدار ، می توانیم ببینیم که وقتی دکمه اول را فشار می دهیم، پین 21 GPIO ، صفر می شود. بنابراین می توانیم با فشار دادن دکمه مربوطه ، هر فایل صوتی را پخش کنیم.

کد کامل :

بقیه توضیحات در باکس زیر به طور کامل داده شده است.

#working
import pygame.mixer #فراخوانی کتابخانه پخش صدا
import time         #فراخوانی کتابخانه تاخیر
import RPi.GPIO as IO  #فراخوانی کتابخانه استفاده از پین های GPIO
IO.setwarnings(False)  #نادیده گرفتن هشدار ها
IO.setmode(IO.BCM)     #برنامه نویسی بر اساس شماره پین های GPIO
IO.setup(21, IO.IN)  #معرفی پین 21 به عنوان ورودی
IO.setup(20, IO.IN)  #معرفی پین 20 به عنوان ورودی
IO.setup(16, IO.IN)  #معرفی پین 16 به عنوان ورودی
IO.setup(12, IO.IN)  #معرفی پین 12 به عنوان ورودی
IO.setup(25, IO.IN)  #معرفی پین 25 به عنوان ورودی
IO.setup(23, IO.IN)  #معرفی پین 23 به عنوان ورودی
pygame.mixer.init(48000, -16, 1, 1024)  #پیکربندی پخش موسیقی
audio1 = pygame.mixer.Sound("buzzer.wav")      #ارتباط با فایل صوتی
audio2 = pygame.mixer.Sound("cartoon002.wav")  #ارتباط با فایل صوتی
audio3 = pygame.mixer.Sound("baby_x.wav")      #ارتباط با فایل صوتی
audio4 = pygame.mixer.Sound("ahem_x.wav")      #ارتباط با فایل صوتی
audio5 = pygame.mixer.Sound("clap.wav")
audio6 = pygame.mixer.Sound("baseball_hit.wav")
channel1 = pygame.mixer.Channel(1)   # استفاده از کانال یک برای دکمه اول
channel2 = pygame.mixer.Channel(2)   # استفاده از کانال دو برای دکمه دوم
channel3 = pygame.mixer.Channel(3)   # استفاده از کانال سه برای دکمه سوم
channel4 = pygame.mixer.Channel(4)   # استفاده از کانال چهار برای دکمه چهارم
channel5 = pygame.mixer.Channel(5)   # استفاده از کانال پنجم برای دکمه پنجم
channel6 = pygame.mixer.Channel(6)   # استفاده از کانال ششم برای دکمه ششم
while 1:  #execute loop forever
    if (IO.input(21) == 0):
        channel1.play(audio1)          #اگر دکمه فشرده شد، موسیقی اول پخش شود
    if (IO.input(20) == 0):
        channel2.play(audio2)          #اگر دکمه فشرده شد، موسیقی دوم پخش شود
    if (IO.input(16) == 0):
        channel3.play(audio3)          #اگر دکمه فشرده شد، موسیقی سوم پخش شود
    if (IO.input(12) == 0):
        channel4.play(audio4)          #اگر دکمه فشرده شد، موسیقی چهارم پخش شود
    if (IO.input(25) == 0):
        channel5.play(audio5)          #اگر دکمه فشرده شد، موسیقی پنجم پخش شود
    if (IO.input(23) == 0):
        channel6.play(audio6)          #اگر دکمه فشرده شد، موسیقی ششم پخش شود
    time.sleep(.01)  #sleep for 100ms

فیلم عملکرد پروژه

شما می توانید در برنامه Python تغییراتی ایجاد کنید تا بتوانید بهترین عملکرد را دریافت کنید و صداهای مورد نظر خود را پخش کنید. فیلم زیر به شما در درک نحوه کار این پروژه کمک میکند.

نظرتان را در مورد این مطلب با ستاره دادن اعلام کنید امیدوارم این مطلب برای شما مفید بوده باشد. نظرات ، مشکلات و پیشنهادات خود را در پایین صفحه اعلام کنید
برچسب ها

محمد رحیمی

محمد رحیمی هستم. سعی میکنم در آیرنکس مطالب مفید را قرار دهم. (در خصوص سوال در مورد این مطلب از قسمت نظرات همین مطلب اقدام کنید)

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

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

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