代码之家  ›  专栏  ›  技术社区  ›  Kim

覆盆子皮GPIO一段时间后停止工作

  •  0
  • Kim  · 技术社区  · 7 年前

    while True:
        GPIO.setup(21, GPIO.OUT)
        pwm = GPIO.PWM(21, 50)
        pwm.start(0)
    
        for i in range(0, 101, 2):
            pwm.ChangeDutyCycle(i)
            time.sleep(0.03)
        for i in range(100, -1, -2):
            pwm.ChangeDutyCycle(i)
            time.sleep(0.03)
    
        pwm.stop()
        GPIO.cleanup(21)
    
        time.sleep(1)
    

    代码可能会在一段时间后突然停止。没有错误,只是通过脉宽调制的变化不再被识别。有人知道为什么吗?

    1 回复  |  直到 7 年前
        1
  •  0
  •   Kim    7 年前

    https://sourceforge.net/p/raspberry-gpio-python/tickets/111/

    https://sourceforge.net/p/raspberry-gpio-python/tickets/94/

    这是因为GPIO库默认情况下会为每个调用创建一个新的pthread,而不会在之后进行清理,但是线程数量可能限制在250个左右。

    我创建了一个分叉的回购协议( https://github.com/wuestkamp/raspberry-gpio-python )它解决了这个问题,并包含如何在PI上使用这个的说明。