Raspberry Pi GPIO перестает работать через некоторое время - PullRequest
0 голосов
/ 18 октября 2018

при использовании библиотеки GPIO на Raspberry PI с примером кода, подобным следующему:

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)

Код может внезапно остановиться через некоторое время.Нет ошибок, просто никакие изменения через pwm больше не распознаются.Кто-нибудь понял, почему это так?

1 Ответ

0 голосов
/ 18 октября 2018

Эта проблема упоминалась здесь в старом репозитории sourceforge:

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.

...