首页 > 解决方案 > 使用 Python3 为步进电机正确嵌套循环

问题描述

我正在尝试使用 Raspberry Pi 和 adafruit Motor HAT 来操作步进电机,以便转动一根可以抬起装满水的小盆的杆。但是,我需要在缓慢的阶段进行此操作,以使水排出并防止系统对电机来说太重。

我正在尝试创建一个嵌套循环,它执行离散数量的步骤,暂停一段时间,然后再次执行循环。我在使用暂停元素时遇到了困难,因为我的嵌套尝试最终在第一次旋转后关闭了电机。

我可以使用下面的代码来模拟我想要达到的效果,但是它显然体积庞大,效率低下,并且难以精确地修复循环数。

from adafruit_motorkit import MotorKit
from time import sleep

kit = MotorKit()

from adafruit_motor import stepper

for i in range(20):
        kit.stepper1.onestep(direction=stepper.BACKWARD, style=stepper.INTERLEAVE)

print("Turn")

sleep(10)

for i in range(20):
        kit.stepper1.onestep(direction=stepper.BACKWARD, style=stepper.INTERLEAVE)

print("Turn")

sleep(10)

for i in range(20):
        kit.stepper1.onestep(direction=stepper.BACKWARD, style=stepper.INTERLEAVE)

print("Turn")

for i in range(20):
        kit.stepper1.onestep(direction=stepper.BACKWARD, style=stepper.INTERLEAVE)

print("Turn")

sleep(10)

for i in range(20):
        kit.stepper1.onestep(direction=stepper.BACKWARD, style=stepper.INTERLEAVE)

print("Turn")

sleep(10)

for i in range(20):
        kit.stepper1.onestep(direction=stepper.BACKWARD, style=stepper.INTERLEAVE)

print("Turn") 

我将非常感谢有关如何正确嵌套循环的建议。

标签: pythonloopsraspberry-pinested

解决方案


下面的代码应该完全符合您的要求

from adafruit_motorkit import MotorKit
from time import sleep

kit = MotorKit()

from adafruit_motor import stepper
for j in range(6):
    for i in range(20):
        kit.stepper1.onestep(direction=stepper.BACKWARD, style=stepper.INTERLEAVE)

    print("Turn %s" % (j + 1))

    sleep(10)

推荐阅读