尝试在开门时播放音乐
Trying to play music while opening a door
编辑:将 GPIO.PUD_UP 替换为 GPIO.PUD_DOWN 并且 while 循环现在看起来像这样:
playing = False
while True:
if GPIO.input(26)==False:
if not playing:
pygame.mixer.music.play()
playing = True
else:
if playing:
pygame.mixer.music.stop()
playing = False
我正在尝试在开门时播放音乐,使用 raspberry pi 零 WH 和霍尔效应传感器。我是 python 的新手,但它相当简单。但是我卡住了,因为我找不到如何做我想做的事情。
所以我想在门打开时播放音乐(GPIO 为 LOW),但我也希望它在门关闭时停止(当时 GPIO 为 UP)。似乎我找不到如何去做。这是我的代码:
import RPi.GPIO as GPIO
import time
import pygame
import pygame.mixer
pygame.mixer.init()
pygame.init()
scary = pygame.mixer.Sound("scary.wav")
pygame.mixer.music.set_volume(0.1)
GPIO.setmode(GPIO.BCM)
GPIO.setup(26, GPIO.IN, pull_up_down=GPIO.PUD_UP)
while True:
if GPIO.input(26)==False:
pygame.mixer.music.play()
while GPIO.input(26)==False:
pass
else:
pygame.mixer.music.stop()
while GPIO.input(26)==True:
pass
我希望音乐一开门就播放,只播放一次(大约一分钟),但可以在门一关上就停止。我应该怎么做? (time.sleep(x) 只是延迟了整个循环,或者不知道如何使用它?)
谢谢!
添加一个变量来跟踪当前是否正在播放音乐:
playing = False
while True:
if gpio is high:
if not playing:
play()
playing = True
else:
if playing:
stop()
playing = False
您无法通过将 if/else 与 and/or 语句一起使用来消除缩进。
编辑:将 GPIO.PUD_UP 替换为 GPIO.PUD_DOWN 并且 while 循环现在看起来像这样:
playing = False
while True:
if GPIO.input(26)==False:
if not playing:
pygame.mixer.music.play()
playing = True
else:
if playing:
pygame.mixer.music.stop()
playing = False
我正在尝试在开门时播放音乐,使用 raspberry pi 零 WH 和霍尔效应传感器。我是 python 的新手,但它相当简单。但是我卡住了,因为我找不到如何做我想做的事情。
所以我想在门打开时播放音乐(GPIO 为 LOW),但我也希望它在门关闭时停止(当时 GPIO 为 UP)。似乎我找不到如何去做。这是我的代码:
import RPi.GPIO as GPIO
import time
import pygame
import pygame.mixer
pygame.mixer.init()
pygame.init()
scary = pygame.mixer.Sound("scary.wav")
pygame.mixer.music.set_volume(0.1)
GPIO.setmode(GPIO.BCM)
GPIO.setup(26, GPIO.IN, pull_up_down=GPIO.PUD_UP)
while True:
if GPIO.input(26)==False:
pygame.mixer.music.play()
while GPIO.input(26)==False:
pass
else:
pygame.mixer.music.stop()
while GPIO.input(26)==True:
pass
我希望音乐一开门就播放,只播放一次(大约一分钟),但可以在门一关上就停止。我应该怎么做? (time.sleep(x) 只是延迟了整个循环,或者不知道如何使用它?)
谢谢!
添加一个变量来跟踪当前是否正在播放音乐:
playing = False
while True:
if gpio is high:
if not playing:
play()
playing = True
else:
if playing:
stop()
playing = False
您无法通过将 if/else 与 and/or 语句一起使用来消除缩进。