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。