用杠杆停止 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()
现在的问题是:
当我停用控制杆时,我想停止 LEDS 的闪烁。
我试过的方法没有用。
好像一直在开新线程闪烁,每个线程都是死循环,所以会一直运行闪烁
每个 LED 最多需要一个线程来闪烁,并且该线程可以检查其循环中的控制杆,然后关闭 LED。主程序在此期间什么也不能做(而 True:例如 time.sleep(100))或其他不同的东西。
我已经编写了代码,让多个 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()
现在的问题是: 当我停用控制杆时,我想停止 LEDS 的闪烁。 我试过的方法没有用。
好像一直在开新线程闪烁,每个线程都是死循环,所以会一直运行闪烁
每个 LED 最多需要一个线程来闪烁,并且该线程可以检查其循环中的控制杆,然后关闭 LED。主程序在此期间什么也不能做(而 True:例如 time.sleep(100))或其他不同的东西。