Python、RPi 和 GPIO - 控制引擎
Python, RPi and GPIO - control engine
在我的 Raspberry Pi 上,我用 Python 编写了控制我车辆引擎的代码。我通过 GPIO 控制引擎。它有效,但问题是当我设置 io 去然后我设置 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 和 tank stop barrel 但它也停止了。也许原因是我打电话给 io.cleanup() ?它会停止所有 GPIO 信号吗?
我想停桶但又不想停罐。
不要调用 io.cleanup()。我建议也不要在 gostop() 函数中调用它。并且只有在退出程序时才使用它。
您只需要更改(电平或适用的 PWM)特定的 io PIN。
在我的 Raspberry Pi 上,我用 Python 编写了控制我车辆引擎的代码。我通过 GPIO 控制引擎。它有效,但问题是当我设置 io 去然后我设置 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 和 tank stop barrel 但它也停止了。也许原因是我打电话给 io.cleanup() ?它会停止所有 GPIO 信号吗? 我想停桶但又不想停罐。
不要调用 io.cleanup()。我建议也不要在 gostop() 函数中调用它。并且只有在退出程序时才使用它。
您只需要更改(电平或适用的 PWM)特定的 io PIN。