Python“;此GPIO通道的PWM对象已存在;

Python“;此GPIO通道的PWM对象已存在;,python,runtime-error,Python,Runtime Error,尝试在我的程序中运行操作时,例如: #import required libraries import RPi.GPIO as GPIO import time # Configure GPIO setting GPIO.setwarnings(False) GPIO.setmode(GPIO.BOARD) #constants for motor control PWMA = 36 PWMB = 33 AIN1 = 40 AIN2 = 38 BIN1 = 37 BIN2 = 35 #Sp

尝试在我的程序中运行操作时,例如:

#import required libraries
import RPi.GPIO as GPIO
import time

# Configure GPIO setting
GPIO.setwarnings(False)
GPIO.setmode(GPIO.BOARD)

#constants for motor control
PWMA = 36
PWMB = 33
AIN1 = 40
AIN2 = 38
BIN1 = 37
BIN2 = 35

#Speed set to
speed_input = int(25)
speed = speed_input

left_speed = None
right_speed = None

def drive_init():
    global left_speed, right_speed

    print("Initializing the GPIO ports supporting drive ops.")
    #GPIOsettings
    GPIO.setwarnings(False)
    GPIO.setmode(GPIO.BOARD)

    #MC directions as output
    GPIO.setup(AIN1, GPIO.OUT, initial = False)
    GPIO.setup(AIN2, GPIO.OUT, initial = False)
    GPIO.setup(BIN1, GPIO.OUT, initial = False)
    GPIO.setup(BIN2, GPIO.OUT, initial = False)

    #Set motors to off first
    GPIO.output(AIN1, False)
    GPIO.output(AIN2, False)
    GPIO.output(BIN1, False)
    GPIO.output(BIN2, False)

    #set pins as out
    GPIO.setup(PWMA, GPIO.OUT, initial = True)
    GPIO.setup(PWMB, GPIO.OUT, initial = True)

    left_speed = GPIO.PWM(PWMA, 50)
    right_speed = GPIO.PWM(PWMB, 50)
    left_speed.start(0)
    right_speed.start(0)

    #Enable MC with high on enable
    GPIO.output(PWMA, True)
    GPIO.output(PWMB, True)

程序按照第一个输入的预期工作,但在输入另一个输入时,返回错误“此GPIO通道已存在PWM对象”,参考行“left_speed=GPIO.PWM(PWMA,50)”和“GPIO.setup(BIN2,GPIO.OUT,initial=False)”。我对编码还是相当陌生,不能100%确定问题到底是什么。非常感谢您的帮助。

听起来您在每个操作上都调用了
drive\u init()
,而不是在程序开始时调用一次。成功了!我的驾驶位置不好,非常感谢
def forward(speed, sec):
    print(f"Moving forward for at {speed}")
    GPIO.output(AIN1, False)
    GPIO.output(AIN2, True)
    GPIO.output(BIN1, False)
    GPIO.output(BIN2, True)
    left_speed.ChangeDutyCycle(speed)
    right_speed.ChangeDutyCycle(speed)
    time.sleep(1)
    GPIO.output(AIN1, False)
    GPIO.output(AIN2, False)
    GPIO.output(BIN1, False)
    GPIO.output(BIN2, False)