我正在为一个基于树莓皮3的学校项目制作一个跟线机器人。机器人的顶部有一个LED标志,我想在机器人运行时上下淡出。我在单独的线程中运行褪色方法以避免“时间。睡觉()“干扰主代码。在
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的限制?还有,为什么它在开始时运行,而不是在以后运行?在
目前没有回答
相关问题 更多 >
编程相关推荐