坚持使用Python项目



我正在做一个自己的项目,我现在已经不知道该怎么做了。

正在尝试在我的项目中实现一些声音,我按下一些机智的开关,它们应该发出声音。我是一个完全的 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时连续循环运行,如果按下其他两个按钮中的一个,它会停止第一个并播放另一个,只播放一次,然后返回检查是否input(23)==false

我需要完成这个来完成我的项目,但我不需要从头开始学习 python(至少目前是这样(。 至少一些指导方针将不胜感激。

这段代码似乎有效(正如我模拟的那样(。不过,您可能需要修改它以满足您的需求。例如,如果同时按下 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)

这个怎么样?

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);

最新更新