переключаться между двумя аудиофайлами с помощью сенсорного датчика - PullRequest
0 голосов
/ 05 июня 2018

Я просто пытаюсь сделать эту действительно простую вещь, где я хочу воспроизвести два разных звуковых файла в зависимости от сенсорного датчика.Проблема, с которой я столкнулся на данный момент, заключается в том, что хотя датчик работает, программа не изменяет аудиофайл ... Итак, я сейчас не знаю, какая помощь?Заранее спасибо, Лола

import pygame

import RPi.GPIO as GPIO

GPIO.setmode(GPIO.BOARD)
GPIO.setup(7, GPIO.IN)

pygame.mixer.pre_init(44100, -16, 12, 512)
pygame.mixer.init()
pygame.init()


fastbeat = pygame.mixer.Sound('/home/pi/gpio-music-box/samples/fastbeat.ogg')
fastbeat.set_volume(.4);

slowbeat = pygame.mixer.Sound('/home/pi/gpio-music-box/samples/slowbeat.ogg')
slowbeat.set_volume(.4)

while True:

    if(GPIO.input(7)): #interrupt pin is high

        print ('touched')
        fastbeat.play()

    else: # Interupt pin is low
        print ('not touched')
        slowbeat.play()

Теперь я изменил свой код на:

import pygame

import RPi.GPIO as GPIO

GPIO.setmode(GPIO.BOARD)
GPIO.setup(7, GPIO.IN)

pygame.mixer.pre_init(44100, -16, 12, 512)
pygame.mixer.init()
pygame.init()


fastbeat = pygame.mixer.Sound('/home/pi/gpio-music-box/samples/fastbeat.ogg')
fastbeat.set_volume(.4);

slowbeat = pygame.mixer.Sound('/home/pi/gpio-music-box/samples/slowbeat.ogg')
slowbeat.set_volume(.4)

while True:

    if(GPIO.input(7)): #interrupt pin is high

        print ('touched')
        slowbeat.stop()
        fastbeat.play()

    else: # Interupt pin is low
        print ('not touched')
        fastbeat.stop()
        slowbeat.play()

, и он работает для меня, но есть другой вопрос, могу ли я изменить свою команду if-ifчтобы он проигрывал только быстрый удар, а затем снова переключался на медленный?

привет лола

1 Ответ

0 голосов
/ 05 июня 2018

Кажется, что вы играете медленный ритм в бесконечном цикле - поэтому он не дает времени для начала воспроизведения звука.

Попробуйте это?

isButtonUp = true  #was the button untouched?
while True:

if(GPIO.input(7)): #interrupt pin is high
    isButtonUp = false   #button is not untouched
    print ('touched')
    fastbeat.play()

else if (!isButtonUp): #has button been untouched before?
    print ('not touched')
    isButtonUp=true #set button as touched
    slowbeat.play()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...