我正在做一个属于我自己的项目,而且我不知道该怎么做......
我试图在我的项目中实施一些声音,我按下了一些机智。开关,他们应该发出声音..我是一个完整的新手与python所以我发现一段代码做类似的事情......
import os
from time import sleep
import RPi.GPIO as GPIO
GPIO.setmode(GPIO.BCM)
GPIO.setup(23, GPIO.IN)
GPIO.setup(24, GPIO.IN)
GPIO.setup(25, GPIO.IN)
while True:
if (GPIO.input(23) == False):
os.system('mpg123 -q binary-language-moisture-evaporators.mp3 &')
if (GPIO.input(24) == False):
os.system('mpg123 -q power-converters.mp3 &')
if (GPIO.input(25)== False):
os.system('mpg123 -q vader.mp3 &')
sleep(0.1);
我希望第一个声音在input(23)==false
连续循环中运行,如果按下另外两个按钮之一,它会停止第一个并播放另一个,只有一次,然后返回检查是否{{ 1}}
我需要这样才能完成我的项目,但我不需要真正从头开始学习python(至少目前为止)。至少有一些指导方针将不胜感激。
答案 0 :(得分:0)
这个怎么样?
play = True
while True:
if (GPIO.input(24) == False):
play = False
os.system('mpg123 -q power-converters.mp3 &')
else:
play = True
if (GPIO.input(25)== False):
play = False
os.system('mpg123 -q vader.mp3 &')
else:
play = True
if (play and GPIO.input(23) == False):
os.system('mpg123 -q binary-language-moisture-evaporators.mp3 &')
sleep(0.1);
答案 1 :(得分:0)
此代码似乎有效(我模拟它)。您可能需要修改它以满足您的需求。例如,如果同时按下24和25,则应播放哪一个(24代码优先于25)。
import subprocess
from time import sleep
import RPi.GPIO as GPIO
GPIO.setmode(GPIO.BCM)
GPIO.setup(23, GPIO.IN)
GPIO.setup(24, GPIO.IN)
GPIO.setup(25, GPIO.IN)
proc1 = ''
proc2 = ''
proc3 = ''
while True:
if GPIO.input(24) == False:
if proc3:
proc3.kill()
proc3 = ''
if proc2 and proc2.poll() is None:
proc2.kill()
proc2 = ''
if not proc1 or proc1.poll() is not None:
proc1 = subprocess.Popen(['mpg123','-q','power-converters.mp3'])
elif GPIO.input(25) == False:
if proc3:
proc3.kill()
proc3 = ''
if proc1 and proc1.poll() is None:
proc1.kill()
proc1 = ''
if not proc2 or proc2.poll() is not None:
proc2 = subprocess.Popen(['mpg123','-q','vader.mp3'])
elif GPIO.input(23) == False:
if not (proc1 and proc1.poll() is None) and not (proc2 and proc2.poll() is None):
if not proc3 or proc3.poll() is not None:
proc3 = subprocess.Popen(['mpg123','-q','binary-language-moisture-evaporators.mp3'])
elif proc3 and proc3.poll() is None:
proc3.kill()
proc3 = ''
sleep(0.1)