Детали:
три кнопки; соединительные провода мама-папа; стандартные соединительные провода или обычные провода; макетная плата; три резистора 10кОм; пк акустика(динамики, наушники); *.wav - звуковые файлы.
Сборка макета проигрыватель:
Ground pi подключаем к общей земле(-) Земля -> резистор 10кОм -> порт GPIO23 -> Кнопка -> Pi 3,3V Земля -> резистор 10кОм -> порт GPIO24 -> Кнопка -> Pi 3,3V Земля -> резистор 10кОм -> порт GPIO25 -> Кнопка -> Pi 3,3V
Принцип работы:
Когда кнопка не нажата. Ток течет через резистор 10кОм и GPIO = 0 (false) Порт GPIO имеет отрицательное значение. Также резистор помогает избежать дребезг кнопки. Когда кнопку нажимают, ток течет по наименьшему сопротивлению к положительному значению. GPIO > 0 (true)
Код:
mkdir soundbord - создаем каталог для музыкальных файлов
cd soundboard - перейдем в каталог
nano soundboard.py - создаем файл
---------------------------------
import pygame.mixer
from time import sleep
import RPi.GPIO as GPIO
from sys import exit
GPIO.setmode(GPIO.BCM)
GPIO.setup(23, GPIO.IN)
GPIO.setup(24,GPIO.IN)
GPIO.setup(25, GPIO.IN)
pygame.mixer.init(48000, -16, 1, 1024) - инициируем микшер из pygame
soundA = pygame.mixer.Sound(
"/usr/share/sounds/alsa/Front_Center.wav") - загружаем звуки
soundB = pygame.mixer.Sound(
"/usr/share/sounds/alsa/Front_Left.wav") - загружаем звуки
soundC = pygame.mixer.Sound(
"/usr/share/sounds/alsa/Front_Right.wav") - загружаем звуки
soundChannelA = pygame.mixer.Channel(1) - создаем канал для звука
soundChannelB = pygame.mixer.Channel(2) - создаем канал для звука
soundChannelC = pygame.mixer.Channel(3) - создаем канал для звука
print "Soundboard Ready." - сообщаем что проигрыватель запущен
while True:
try:
if (GPIO.input(23) == True): - если кнопка нажата
soundChannelA.play(soundA) - воспроизводим звук
if (GPIO.input(24) == True): - если кнопка нажата
soundChannelB.play(soundB) - воспроизводим звук
if (GPIO.input(25) == True): - если кнопка нажата
soundChannelCplay(soundC) - воспроизводим звук
sleep(0.01) - не напрягаем процессор слишком частой проверкой
except KeyboardInrerrupt:
exit()
sudo python soundboard.py - запуск скрипта Ctrl+c - завершить скрипт sudo amixer cset numid=3 1 - вывод звука через JACK 3,5 sudo amixer cset numid=3 2 - вывод звука через HDMI