首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >is_held中的gpiozero按钮问题

is_held中的gpiozero按钮问题
EN

Stack Overflow用户
提问于 2020-06-16 09:20:36
回答 1查看 202关注 0票数 0

我正在为万圣节制作一个南瓜派,但在按钮的集成方面遇到了问题;特别是is_held位。它由组成蜡烛的3个led灯组成(1个黄色闪烁,1个黄色“呼吸”,1个橙色稳定)和一个红色的led灯,当蜡烛逐渐消失时,它逐渐变暗,然后伴随着恐怖的笑声跳动。我已经集成了启动一切的按钮,但当我按住按钮停止它时,什么也没有发生。我对编码还很陌生,所以任何关于我的主要问题或反馈的帮助都是非常感谢的!

代码语言:javascript
复制
from gpiozero import PWMLED, Button
from gpiozero.tools import random_values
from signal import pause
from time import sleep
import subprocess
import random

led_flicker_yellow = PWMLED(17, frequency = 1500)
led_breath_yellow = PWMLED(18, frequency = 1500)
led_steady_orange = PWMLED(27, frequency = 1500)
led_red = PWMLED(24, frequency = 1500)
button = Button(2, hold_time = 2)


def candle_lights():
    led_flicker_yellow.source = random_values()
    led_flicker_yellow.souce_delay = random.uniform(0.05,0.1)
    led_breath_yellow.pulse(15,10)
    led_steady_orange.value = 0.20

def candle_out():
    led_flicker_yellow.source = led_pulse_yellow
    led_breath_yellow.pulse(0,3, n=1)
    led_steady_orange.off()

def pumpkin_pi():                      
    subprocess.Popen (["omxplayer", "-o", "alsa", "--loop", "/home/pi/Desktop/LED_PROJECTS/SoundEffects/candle.mp3"])
    while True:
        candle_lights()       
        sleep(300)
        candle_out()
        subprocess.Popen(["omxplayer", "-o", "alsa", "/home/pi/Desktop/LED_PROJECTS/SoundEffects/laugh.mp3"])
        led_red.pulse(3,0,n=1)
        sleep(3)
        led_red.blink(0.03,0.03,n=35)
        sleep(2)
        candle_lights()
        if button.is_held:
            subprocess.call(["pkill", "omx"])
            break

button.when_pressed = pumpkin_pi
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-06-27 06:46:11

好的-所以在RPi论坛上归功于thagrol,但这里是答案。在这里,我正在控制一个LED灯序列,它使用了一个while True循环,并通过python和gpiozero使用了一个按钮。

代码语言:javascript
复制
from gpiozero import PWMLED, Button
from time import sleep 
from signal import pause
import threading

led = PWMLED(24)
button = Button(2, hold_time=2)

running = False

def pumpkin_pi_loop():
    while running:
        led.value = 0 
        sleep(1)
        led.value = 0.5
        sleep(1)
        led.value = 1
        sleep(1)
        
def button_press():
    global running
    if not running:
        led.value = 1
        sleep(3)
        running = True
        loop_thread = threading.Thread(target=pumpkin_pi_loop, daemon=True)
        loop_thread.start()
    else:
        running = False

def button_hold():
    global running
    running = False

button.when_pressed = button_press
button.when_held = button_hold


pause()
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62399526

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档