Python 3.x 伺服正在进行额外的循环

Python 3.x 伺服正在进行额外的循环,python-3.x,arduino,Python 3.x,Arduino,我有两个Python脚本可以改变两个伺服的位置。第二个脚本按预期工作,但当我运行第一个脚本时,第一个伺服会进行额外的循环或旋转,这是一个问题。你知道为什么会这样吗? (这只是为了通过字符长度检查而添加的文本) 第一个脚本: from pyfirmata import ArduinoMega, SERVO from time import sleep port = '/dev/ttyACM0' board = ArduinoMega(port) sleep(5) board.digital[1

我有两个Python脚本可以改变两个伺服的位置。第二个脚本按预期工作,但当我运行第一个脚本时,第一个伺服会进行额外的循环或旋转,这是一个问题。你知道为什么会这样吗? (这只是为了通过字符长度检查而添加的文本)

第一个脚本:

from pyfirmata import ArduinoMega, SERVO
from time import sleep

port = '/dev/ttyACM0'
board = ArduinoMega(port)
sleep(5)

board.digital[13].mode = SERVO
board.digital[12].mode = SERVO

def set_first_servo(angle):
    board.digital[13].write(angle)
    sleep(0.015)

def set_second_servo(angle):
    board.digital[12].write(angle)
    sleep(0.015)

a, b = True, True
while a:
    for position in range(135, 0, -1):
        set_first_servo(position)

    a = False

while b:
    for position in range(0, 135):
        set_second_servo(position)

    b = False

board.exit()
和第二个脚本(此脚本没有问题):


也许您需要将(135,0,-1)和(0135)进行触发器转换


假设你的第二个有效,那将是我看到的唯一区别

如果我交换代码,我会让两个伺服朝另一个方向旋转。for循环决定了它旋转的方向和距离。我的小项目快完成了。。。。我只是不明白为什么一个伺服旋转的速度是另一个的两倍。代码没有告诉它这样做。你可能想检查连接之类的东西,因为我看不出代码有任何问题。我通常在ArduinoIDE中运行我的代码,该IDE使用C++so
from pyfirmata import ArduinoMega, SERVO
from time import sleep

port = '/dev/ttyACM0'
board = ArduinoMega(port)
sleep(5)

board.digital[13].mode = SERVO
board.digital[12].mode = SERVO

def set_first_servo(angle):
    board.digital[13].write(angle)
    sleep(0.015)

def set_second_servo(angle):
    board.digital[12].write(angle)
    sleep(0.015)

c, d = True, True

while c:
    for position in range(0, b):
        set_first_servo(position)
    c = False

while d:
    for position in range(e, 0, -1):
        set_second_servo(position)

    d = False

board.exit()
from pyfirmata import ArduinoMega, SERVO
from time import sleep

port = '/dev/ttyACM0'
board = ArduinoMega(port)
sleep(5)

board.digital[13].mode = SERVO
board.digital[12].mode = SERVO

def set_first_servo(angle):
    board.digital[13].write(angle)
    sleep(0.015)

def set_second_servo(angle):
    board.digital[12].write(angle)
    sleep(0.015)

a, b = True, True
while a:
    for position in range(0, 135):
        set_first_servo(position)

    a = False

while b:
    for position in range(135, 0, -1):
        set_second_servo(position)

    b = False

board.exit()