Я работаю над проектом, в котором мне нужно проигрывать 5 mp3 песен в последовательности один за другим.Каждая песня имеет продолжительность 10 с.Для этой цели я использую библиотеку pygame.
Все работает нормально, но я должен добавить одну на будущее в этом приложении, то есть я хочу запустить и приостановить эти mp3-песни при нажатии кнопки BIG, подключенной черезодин из последовательных портов Raspberry Pi (это в основном кнопка пробела).Я хочу, чтобы программа продолжала работать при нажатии кнопки пробела (чтобы не останавливаться, принимая пробел в качестве прерывания)
Я начинающий и не знаю, как это сделать.
import time
import random
import RPi.GPIO as GPIO
import pygame
pygame.mixer.init()
# setting a current mode
GPIO.setmode(GPIO.BCM)
#removing the warings
GPIO.setwarnings(False)
#creating a list (array) with the number of GPIO's that we use
pins = [16,20,21]
#setting the mode for all pins so all will be switched on
GPIO.setup(pins, GPIO.OUT)
GPIO.output(16, GPIO.HIGH)
GPIO.output(20, GPIO.HIGH)
GPIO.output(21, GPIO.HIGH)
temp = ''
new = ''
def call_x():
GPIO.output(16, GPIO.LOW)
time.sleep(10)
GPIO.output(16, GPIO.HIGH)
def call_y():
GPIO.output(20, GPIO.LOW)
time.sleep(10)
GPIO.output(20, GPIO.HIGH)
def call_z():
GPIO.output(21, GPIO.LOW)
time.sleep(10)
GPIO.output(21, GPIO.HIGH)
def song(val):
if (select == 'a'):
#1............................................................
pygame.mixer.music.load("Shinsuke-Nakamura.mp3")
pygame.mixer.music.play()
time.sleep(0.2)
if(val == 'x'):
call_x()
if(val == 'y'):
call_y()
if(val == 'z'):
call_z()
temp = 'a'
return temp
if (select == 'b'):
#2............................................................
pygame.mixer.music.load("John-Cena.mp3")
pygame.mixer.music.play()
time.sleep(0.2)
if(val == 'x'):
call_x()
if(val == 'y'):
call_y()
if(val == 'z'):
call_z()
temp = 'b'
return temp
if (select == 'c'):
#3............................................................
pygame.mixer.music.load("Brock-Lesnar.mp3")
pygame.mixer.music.play()
time.sleep(0.2)
if(val == 'x'):
call_x()
if(val == 'y'):
call_y()
if(val == 'z'):
call_z()
temp = 'c'
return temp
try:
while 1:
select = random.choice('abcdefghij')
select1 = random.choice('xyz')
if (temp != select and select1 != new):
temp = song(select1)
new = select1
else:
print('repeat')
except KeyboardInterrupt:
GPIO.cleanup() # clean up GPIO on CTRL+C exit
pygame.mixer.music.stop()
pygame.mixer.music.stop()
GPIO.cleanup() # clean up GPIO on normal exit