پایتون · سطح ۳ · ۸ مرحله

دستگاه صداساز

Sound machine

یک دستگاه صوتی ایجاد کنید که جلوه های صوتی یا موسیقی را با استفاده از دکمه ها، سوئیچ ها یا پتانسیومتر پخش کند

ترجمهٔ فارسی ماشینی است و ممکن است در اصطلاحات دقیق نباشد. با انتخاب «هر دو» می‌توانی متن اصلی را هم بخوانی.
مرحلهٔ ۱

خواهید ساخت

خواهید ساخت

یک دستگاه صوتی ایجاد کنید که جلوه های صوتی یا موسیقی را با استفاده از دکمه ها، سوئیچ ها یا پتانسیومتر پخش کند.

صداها می تواند مفید، آرام بخش، آزاردهنده و انرژی زا باشد. یک نوزاد تازه متولد شده می تواند دستگاهی با صدای سفید را بیابد که آرام می کند و صدا می تواند به خوابیدن او کمک کند. دی‌جی‌ها از دستگاه‌های صوتی قابل حمل برای آهنگسازی ضربات هنگام سفر استفاده می‌کنند. شوخی ها از ماشین های جلوه های صوتی برای خنداندن مردم استفاده می کنند. آیا می توانید به دستگاه صوتی فکر کنید که در زندگی روزمره خود از آن استفاده کرده اید؟

شما:

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

برای تکمیل این پروژه شما نیاز دارید:

سخت افزار:

شما می توانید تمامی سخت افزارهای مورد نیاز این پروژه و سایر پروژه های موجود در این مسیر را از سایت خریداری کنید فروشگاه اینترنتی کیترونیک.

  • Raspberry Pi Pico با هدر پین که روی آن لحیم شده است
  • یک کابل دیتا USB A به micro USB
  • پتانسیومتر یا دکمه ها (خرید شده یا ساخته شده)
  • صدای زنگ منفعل
  • سیم های جامپر
  • مواد کاردستی از جمله کارت، نوار چسب و فویل آشپزخانه

نرم افزار:

  • Thonny – این پروژه را می توان با استفاده از ویرایشگر Thonny Python تکمیل کرد که می تواند بر روی یک رایانه لینوکس، ویندوز یا مک نصب شود.

Thonny را نصب کنید

Thonny را روی Raspberry Pi نصب کنید

  • Thonny قبلاً روی Raspberry Pi OS نصب شده است، اما ممکن است نیاز به به روز رسانی به آخرین نسخه داشته باشد
  • یک پنجره ترمینال را باز کنید، یا با کلیک کردن روی نماد در گوشه سمت چپ بالای صفحه یا با فشار دادن همزمان کلیدهای Ctrl+Alt+T
  • در پنجره، عبارت زیر را تایپ کنید تا سیستم عامل و Thonny خود را به روز کنید
sudo apt update && sudo apt upgrade -y

Thonny را روی سیستم عامل های دیگر نصب کنید

  • در Windows، macOS و Linux، می‌توانید آخرین Thonny IDE را نصب کنید یا نسخه موجود را به‌روزرسانی کنید
  • در یک مرورگر وب، به thonny.org
  • در گوشه سمت راست بالای پنجره مرورگر، لینک های دانلود ویندوز و macOS و دستورالعمل های لینوکس را مشاهده خواهید کرد.
  • فایل های مربوطه را دانلود و اجرا کنید تا Thonny نصب شود

دانلود دستورالعمل از سایت thonny

باز کردن تونی

Thonny را از راه‌انداز برنامه خود باز کنید. باید چیزی شبیه این باشد:

برنامه Thonny

می توانید از Thonny برای نوشتن کدهای استاندارد پایتون استفاده کنید. عبارت زیر را در پنجره اصلی تایپ کنید و سپس روی آن کلیک کنید اجرا کنید دکمه (از شما خواسته می شود فایل را ذخیره کنید).

print('Hello World!')

تم و فونت را در Thonny تغییر دهید

Thonny به شما اجازه می دهد تا تم و فونت نرم افزار را تغییر دهید. این ویژگی به این معنی است که می توانید اندازه فونت را افزایش دهید و رنگ پس زمینه و متن را متناسب با نیاز خود تغییر دهید.

برای تغییر تم و فونت:

  • روی Tools -> Options کلیک کنید.
  • بر روی تب "Theme & Font" کلیک کنید.
  • روی کادرهای کشویی برای هر گزینه کلیک کنید تا تنظیماتی را پیدا کنید که به بهترین وجه با نیازهای شما مطابقت دارد.

اسکرین شات از محیط برنامه نویسی Thonny. تصویر برگه "Theme & Font" را در پنجره گزینه ها نشان می دهد.

  • پس از اتمام کار، OK را فشار دهید.

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

  • picozero - باید picozero را در Raspberry Pi Pico خود راه اندازی کنید

پیکورو را راه اندازی کنید

Raspberry Pi Pico خود را به برق وصل کنید

Rasberry Pico خود را به رایانه ای که برای برنامه نویسی آن استفاده می کنید وصل کنید.

کابل USB به Raspberry Pi Pico وصل شده است.

کابل USB به کامپیوتر وصل شده است.

MicroPython را نصب یا به روز کنید

  • ویرایشگر Thonny را باز کنید
  • به گوشه پایین سمت راست نگاه کنید
  • بررسی کنید که می گوید "MicroPython (Raspberry Pi Pico)"
  • اگر نشد، «MicroPython (Raspberry Pi Pico)» را انتخاب کنید.
  • ممکن است از شما خواسته شود که سیستم عامل را نصب کنید.

پیکوزورو اضافه کنید

  • به «ابزارها > مدیریت بسته‌ها» بروید
  • "picozero" را در نوار جستجو تایپ کنید
  • روی «جستجو در PyPI» کلیک کنید

پنجره نصب بسته های Thonny با کادر جستجو.

  • در نتایج جستجو روی "picozero" کلیک کنید
  • روی "نصب" کلیک کنید

picozero در نتایج جستجو

را ببینید مقدمه ای بر راهنمای رسپبری پای پیکو برای اطلاعات بیشتر

اختیاری:

  • LED(های) RGB کاتدی معمولی یا LED(های) تک رنگ با مقاومت ها و سیم های جامپر
  • یک زنگ زنگ غیرفعال اضافی برای صدای استریو

کشف کنید ▶️

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

داخل را ببینید

sound_board.py


from picozero import Speaker, Button
from time import sleep
from random import randint

# State which pins the components are attached to on the Pico
speaker = Speaker(5)
button1 = Button(18)
button2 = Button(19)
button3 = Button(20)
button4 = Button(21)

# A series of functions that create annoying tones
def tada(): # Ta-Daaa!
    speaker.play(523, 0.1)
    sleep(0.1)
    speaker.play(523, 0.4)
        
def chirp(): # Series of high-pitched chirps
    for _ in range(2):
        for i in range(5000, 2999, -100):
            speaker.play(i, 0.02)
        sleep(0.2)
        
def win(): # Rising tones
    for i in range(2000, 5000, 100):
        speaker.play(i, 0.05)        
    
def womp(): # Wah-wah-wah-waaaaahhhh
    speaker.play(494, 0.5)
    speaker.play(466, 0.5)
    speaker.play(440, 0.5)
    for i in range(10):
        speaker.play(415, 0.05)
        speaker.play(440, 0.05)
    speaker.play(415, 0.2)
            
def stop(): # No sound or light
    
    led.off()
    
button1.when_pressed = tada
button2.when_pressed = chirp
button3.when_pressed = womp
button4.when_pressed = win

try:
    while True:
        sleep(0.1)
finally:
    stop()

ایده بگیرید 💭

شما می خواهید برای ایجاد صفحه صوتی خود تصمیمات طراحی بگیرید.

این پروژه‌های نمونه را کاوش کنید تا ایده‌های بیشتری برای ایجاد دستگاه صدای خود به دست آورید:

برای من آهنگ پخش کن (با استفاده از یک سوئیچ دراپ)
یک سوئیچ قطره با استفاده از دو تکه فویل با فویل نیز به پایین یک کاراکتر متصل شده است. وقتی کاراکتر روی سوئیچ می افتد، آهنگ فعال می شود.

داخل را ببینید

drop_switch_player.py

from picozero import Speaker, Switch

speaker = Speaker(5)
switch = Switch(18)

BEAT = 0.5 # 120 BPM

defying = [ ['a5', BEAT / 2], ['a5', BEAT], ['e6', BEAT], ['d6', BEAT * 1.5], ['f#5', BEAT], ['a5', BEAT * 1.5],  
              ['d5', BEAT], ['f#5', BEAT * 1.5], ['e5', BEAT / 2], ['e5', BEAT * 1.5] ]

def play_song():
    try:
        speaker.play(defying)
           
    finally: # Turn speaker off if interrupted
        speaker.off()

switch.when_closed = play_song

آلارم صوتی (سوئیچ پاپر پارتی معکوس + چرخه SFX مزاحم)
بر اساس پروژه پاپر حزب قبلی: وقتی تکه مقوا کشیده می شود، به یک سوئیچ فنری (گیره لباس با فویل قلع) اجازه می دهد بسته شود و سپس یک حلقه بی پایان از صداهای مزاحم و چراغ های رنگی همراه پخش می شود.

داخل را ببینید

soundalarm.py


from picozero import Speaker, RGBLED, Switch
from time import sleep
from random import randint

# State which pins the components are attached to on the Pico
speaker = Speaker(5)
led = RGBLED(13, 14, 15)
trigger = Switch(18)

# A series of functions that create annoying tones

def tada(): # Ta-Daaa!
    led.color = (250,125,0)
    speaker.play(523, 0.1)
    led.color = (0,0,0)
    sleep(0.1)
    led.color = (250,125,0)
    speaker.play(523, 0.4)
    for i in range(100, 0, -1):
        speaker.play(523, 0.01, i/100)


def chirp(): # Series of high-pitched chirps
    for _ in range(5):
        bc = 255
        rc = 0
        for i in range(5000, 2999, -100):
            led.color = (rc,0,bc)
            speaker.play(i, 0.02)
            bc -= 12
            rc += 12
        sleep(0.2)


def alarm(): # Rising tones
    for _ in range(5):
        gc = 255
        bc = 0

        for i in range(2000, 5000, 100):
            led.color = (127,gc,bc)
            speaker.play(i, 0.05)
            gc -= 8
            bc += 8
        sleep(0.2)    


def siren(): # Nee-Nor!
    for i in range(10):
        led.color = (0,0,255)
        speaker.play(4500, 0.5)
        led.color = (255,0,0)
        speaker.play(2500, 0.5)


def bomb(): # Dropping 'alarm' to crash
    bc = 240
    for i in range(5000, 1000, -50):
        led.color = (127,255,bc)
        speaker.play(i, 0.05)
        bc -= 3
    led.color = (255,0,0)
    for i in range(1000): # White noise loop 1 second
        tone = randint(1000,5000) # Pick a random number
        speaker.play(tone, 0.001) # Play tone for 1/1000th second
    sleep(0.2)


def womp(): # Wah-wah-wah-waaaaahhhh
    led.color = (255,255,255) # White
    speaker.play(494, 0.5)
    led.color = (125,125,125) # Dim
    speaker.play(466, 0.5)
    led.color = (60,60,60) # Dimmer
    speaker.play(440, 0.5)
    for i in range(10):
        speaker.play(415, 0.05)
        led.color = (0,0,0) # Off
        speaker.play(440, 0.05)
        led.color = (255,255,255) # White 
    speaker.play(415, 0.2)    


def noise():
    sound = randint(1,6) # Pick a number between 1–6
    if sound == 1:
        tada()
    elif sound == 2:
        chirp()
    elif sound == 3:
        siren()
    elif sound == 4:
        alarm()
    elif sound == 5:
        bomb()
    elif sound == 6:
        womp()
        
def safe(): # No sound or light
    speaker.off()
    led.off()

# Loop to check if switch is closed

while True: 
    if trigger.is_closed:
        noise()
    else:
        safe()

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

داخل را ببینید

dj_desk.py


from picozero import Speaker, Pot, Button
from time import sleep

speaker = Speaker(5)
speaker2 = Speaker(10)
button = Button(18)
dial = Pot(0)

BEAT = 0.4

liten_mus = [ ['d5', BEAT / 2], ['d#5', BEAT / 2], ['f5', BEAT], ['d6', BEAT], ['a#5', BEAT], ['d5', BEAT],  
              ['f5', BEAT], ['d#5', BEAT], ['d#5', BEAT], ['c5', BEAT / 2],['d5', BEAT / 2], ['d#5', BEAT], 
              ['c6', BEAT], ['a5', BEAT], ['d5', BEAT], ['g5', BEAT], ['f5', BEAT], ['f5', BEAT], ['d5', BEAT / 2],
              ['d#5', BEAT / 2], ['f5', BEAT], ['g5', BEAT], ['a5', BEAT], ['a#5', BEAT], ['a5', BEAT], ['g5', BEAT],
              ['g5', BEAT], ['', BEAT / 2], ['a#5', BEAT / 2], ['c6', BEAT / 2], ['d6', BEAT / 2], ['c6', BEAT / 2],
              ['a#5', BEAT / 2], ['a5', BEAT / 2], ['g5', BEAT / 2], ['a5', BEAT / 2], ['a#5', BEAT / 2], ['c6', BEAT],
              ['f5', BEAT], ['f5', BEAT], ['f5', BEAT / 2], ['d#5', BEAT / 2], ['d5', BEAT], ['f5', BEAT], ['d6', BEAT],
              ['d6', BEAT / 2], ['c6', BEAT / 2], ['b5', BEAT], ['g5', BEAT], ['g5', BEAT], ['c6', BEAT / 2],
              ['a#5', BEAT / 2], ['a5', BEAT], ['f5', BEAT], ['d6', BEAT], ['a5', BEAT], ['a#5', BEAT * 1.5] ]

sound = [ [523, 0.1], [None, 0.1], [523, 0.4] ]

def annoying_sound():
    speaker.play(sound, wait=False)
    
button.when_pressed = annoying_sound

try:
    for note in liten_mus:
        speaker2.play(note) 
        sleep(dial.value) # Leave a gap between notes depending on potentiometer value
finally:
    speaker.off() # Turns speaker off when code is stopped by user
    speaker2.off() # Turns speaker2 off when code is stopped by user

ایده بگیرید 💭

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

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

برای من آهنگ پخش کن (با استفاده از یک سوئیچ دراپ) یک سوئیچ قطره با استفاده از دو تکه فویل با فویل نیز به پایین یک کاراکتر متصل شده است. وقتی کاراکتر روی سوئیچ می افتد، آهنگ فعال می شود.

بمب صوتی (سوئیچ پاپر پارتی معکوس + چرخه مزاحم SFX) بر اساس پروژه قبلی Party popper، وقتی تکه مقوا کشیده می شود، به یک سوئیچ فنری (گیره لباس با فویل قلع) اجازه می دهد بسته شود و یک حلقه بی پایان از صداهای مزاحم پخش می شود.

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

محیط اجرای پروژه

این پروژه به سخت‌افزار نیاز دارد: pico. مراحل اتصال و نصب را در آموزش بخوان؛ مرورگر جایگزین برد و قطعات فیزیکی نیست.

این پروژه در محیطی که در مراحل آموزش معرفی شده اجرا می‌شود؛ مانند Python دسکتاپ، Thonny، Jupyter یا Raspberry Pi. کدهای مخصوص این ابزارها را در همان محیط اجرا کن.

کارگاه آزاد پایتون هلیو ←
معرفی و پیش‌نمایش پروژه

یک دستگاه صوتی ایجاد کنید که جلوه های صوتی یا موسیقی را با استفاده از دکمه ها، سوئیچ ها یا پتانسیومتر پخش کند