线程Python程序在Raspberry Pi上运行不顺畅

时间:2017-10-08 11:21:53

标签: python multithreading raspberry-pi python-multithreading

我正在为一个基于Raspberry Pi 3的学校项目制作一个机器人线。机器人顶部有一个LED标志,我想在机器人运行时淡入淡出。我在一个单独的线程中运行淡入淡出的方法,以避免“time.sleep()”干扰主代码。

class blinkSign(threading.Thread):
    def __init__(self):
        threading.Thread.__init__(self)
        self.daemon = True
        self.start()
    def run(self):
        oneSign.start(0)    # Start PWM @ 0% duty cycle
        fiveSign.start(0)
        while 1:
            for i in range(20, 100, 1):
                oneSign.ChangeDutyCycle(i)
                fiveSign.ChangeDutyCycle(i)
                time.sleep(0.01)

            for j in range(100, 20, -1):
                oneSign.ChangeDutyCycle(j)
                fiveSign.ChangeDutyCycle(j)
                time.sleep(0.01)


def readButtons():
    startButton = GPIO.input(button1)
    stopButton = GPIO.input(button3)
    if ((savePress.prev_input1) and not startButton):
        print("start pressed")
        startFlag.started = 1
    if ((savePress.prev_input2) and not stopButton):
        print("Stop pressed")
        startFlag.started = 0

    savePress.prev_input1 = startButton
    savePress.prev_input2 = stopButton

try:
    blinkSign()
    while 1:
        readButtons()
        if (startFlag.started):
            decideSpeed()
        else:
            runMotor((0, 0))
except KeyboardInterrupt:
    print("cleanup")
    GPIO.cleanup()

我省略了一些代码,因为我认为这个问题不重要。您可以在Github上看到所有内容。

问题在于褪色远非平稳。在最初的几秒钟内,它完成了它应该做的事情,但随后变得越来越慢,最终似乎完全停止了。主程序似乎不受影响。我尝试只运行淡化代码(在类外)并且运行正常。这是我在我的代码中做错了什么,还是Pi的限制?而且,为什么它在开始时运行但不是在以后运行?

0 个答案:

没有答案