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