У меня есть raspberry pi
, где я использую python для создания небольшого скрипта зуммера. В сценарии, если условие становится True
, мне нужно распечатать некоторую информацию, а также сделать звуковой сигнал. Звуковые сигналы зуммера имеют два разных формата: High
и Low
. В High
я должен запустить код ниже:
GPIO.output(BUZZER, 1)
time.sleep(5)
GPIO.output(BUZZER, 0)
GPIO.cleanup()
, чтобы зуммер издавал непрерывный звук в течение 5 секунд c. В Low
мне нужно запустить следующий код:
for i in range(5):
print(i)
state = GPIO.input(BUZZER)
print("state is {}".format(state))
GPIO.output(BUZZER, 1)
time.sleep(0.3)
state = GPIO.input(BUZZER)
print("state is {}".format(state))
GPIO.output(BUZZER, 0)
time.sleep(0.3)
Он издаст 5 звуковых сигналов.
Ниже приведен сценарий python:
def generate_sound(tempo):
if tempo == "High":
GPIO.output(BUZZER, 1)
time.sleep(5)
GPIO.output(BUZZER, 0)
GPIO.cleanup()
else:
for i in range(5):
state = GPIO.input(BUZZER)
print("state is {}".format(state))
GPIO.output(BUZZER, 1)
time.sleep(0.3)
state = GPIO.input(BUZZER)
print("state is {}".format(state))
GPIO.output(BUZZER, 0)
time.sleep(0.3)
if some_condition is True:
generate_sound("High")
print("This condition is True")
print("Here is the information you need")
print("Some more information")
else:
generate_sound("Low")
print("This condition is False")
print("Here is the information you need")
print("Some more information")
Приведенный выше код работает нормально, но проблема в том, что мне нужно отображать информацию и генерировать звук одновременно. Но при текущем подходе звук генерируется и ждет 5se c, а затем информация печатается.
Чтобы решить эту проблему, я хотя бы поместил функцию генерации звука в поток, чтобы он мог работать параллельно с информацией для печати, примерно так:
sound = Thread(target=generate_sound)
Но здесь я не уверен, как передать значения High
и Low
для создания звуковой функции. Я не очень разбираюсь в потоках. Кто-нибудь может дать мне несколько идей. Пожалуйста помоги. Спасибо