微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

开门时尝试播放音乐

如何解决开门时尝试播放音乐

编辑:将 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 Zero WH 和霍尔效应传感器。我对python比较陌生,但它相当简单。但我卡住了,因为我找不到如何做我想做的事。
所以我想在门打开时播放音乐(GPIO 为低电平),但我也希望它在关闭时停止(当 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 和/或语句来消除缩进。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。