繁体   English   中英

使用杠杆停止Python GPIO线程

[英]Stop Python GPIO Thread with a lever

我已经编写了代码,当操纵杆被激活时,多个LED会同时闪烁。 我这样尝试过:

#!/usr/bin/python
import RPi.GPIO as GPIO
import time
from threading import Thread


GPIO.setmode(GPIO.BOARD)
GPIO.setup(32, GPIO.IN)
def blink(port, hz):
    GPIO.setup(port, GPIO.OUT)
    while True:
        GPIO.output(port, GPIO.HIGH)
        time.sleep(0.5/hz)
        GPIO.output(port, GPIO.LOW)
        time.sleep(0.5/hz)
def aus(port):
    GPIO.output(port, GPIO.LOW)

while True:
    if GPIO.input(32) == 1:
        Thread(target=blink, args=(15, 1)).start()
        Thread(target=blink, args=(16, 3)).start()
        Thread(target=blink, args=(18, 5)).start()
        Thread(target=blink, args=(22, 8)).start()
        Thread(target=blink, args=(29, 10)).start()
    else:
        Thread(target=aus, args=(15)).start()
        Thread(target=aus, args=(16)).start()
        Thread(target=aus, args=(18)).start()
        Thread(target=aus, args=(22)).start()
        Thread(target=aus, args=(29)).start()

现在的问题是:我想在停用杠杆时停止LED的闪烁。 我尝试的方式无效。

似乎您一直在启动新线程以进行闪烁,并且每个线程都有一个无限循环,因此它们将继续运行并闪烁。

每个LED最多需要一个线程来闪烁,该线程可以检查其回路中的操纵杆,然后关闭LED。 同时,主程序无法执行任何操作(例如,True:time.sleep(100))或其他操作。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM