Детали:
три кнопки; соединительные провода мама-папа; стандартные соединительные провода или обычные провода; макетная плата; три резистора 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