在Raspberry Pi上,我用Python编写了控制车辆引擎的代码。我通过GPIO控制引擎。它有效,但是问题是当我将io设置为go,然后将io设置为更改方向时,它停止了。为什么它不能一次完成两件事? 这是我的代码:
import RPi.GPIO as io
import time
import serial
class TankManager:
pLeft = 0
pRight = 0
turnBarrel = 0
liftBarrel = 0
def __init__(self):
io.setmode(io.BCM)
def goahead(self, speed):
if(speed > 25) : speed = 25
io.setup(12, io.OUT)
TankManager.pLeft = io.PWM(12, 2.2)
TankManager.pLeft.start(1)
io.setup(13, io.OUT)
TankManager.pRight = io.PWM(13, 2.2)
TankManager.pRight.start(1)
io.setup(20, io.OUT)
io.output(20, False)
io.setup(21, io.OUT)
io.output(21, False)
return
def gostop(self):
if 'pLeft' in globals():
TankManager.pLeft.stop()
if 'pRight' in globals():
TankManager.pRight.stop()
io.cleanup();
return
def turnright(self):
io.setup(12, io.OUT)
TankManager.pLeft = io.PWM(12, 2.2)
TankManager.pLeft.start(1)
io.setup(21, io.OUT)
io.output(21, False)
return
def turnbarrelstop(self):
if 'turnBarrel' in globals():
TankManager.turnBarrel.stop()
io.cleanup();
return
例如,当我使Turnbarrelstop时,油缸停止油桶也停止转动。也许是因为我打电话给io.cleanup()吗?并停止所有GPIO信号? 我想停止发桶,但不停止继续前进。
答案 0 :(得分:0)
请勿调用io.cleanup()。我建议不要在gostop()函数中也不要调用它。并仅在退出程序时使用它。
您只需要更改(电平或PWM,如果适用)特定的io PIN。