Python,RPi和GPIO-控制引擎

时间:2018-07-15 13:49:23

标签: python raspberry-pi serial-port gpio

在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信号? 我想停止发桶,但不停止继续前进。

1 个答案:

答案 0 :(得分:0)

请勿调用io.cleanup()。我建议不要在gostop()函数中也不要调用它。并仅在退出程序时使用它。

您只需要更改(电平或PWM,如果适用)特定的io PIN。