【问题标题】:Stop Python GPIO Thread with a lever用杠杆停止 Python GPIO 线程
【发布时间】:2018-03-16 08:23:11
【问题描述】:

我编写了代码,让多个 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 的闪烁。 我试过的方法不行。

【问题讨论】:

    标签: python raspberry-pi gpio led


    【解决方案1】:

    看来你一直在启动新线程进行闪烁,每个线程都有一个无限循环,所以它们会一直运行和闪烁。

    每个 LED 最多需要一个线程来闪烁,该线程可以检查其循环中的控制杆,然后关闭 LED。在此期间,主程序可以什么都不做(例如 True:time.sleep(100))或其他不同的东西。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-05-29
      • 1970-01-01
      • 1970-01-01
      • 2021-06-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多