[英]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.