python - 使用 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")
我将非常感谢有关如何正确嵌套循环的建议。
解决方案
下面的代码应该完全符合您的要求
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)
推荐阅读
- typescript - Immer.js 使用未定义的基础对象
- php - 无法在命令行中更新 Composer
- c# - Parallel.ForEach 循环只允许一个线程访问 C# 中的数据库
- string-formatting - python中以字符串格式设置的解包仅返回第一个值
- amazon-web-services - S3 存储桶 - 限制特定 IAM 用户的下载次数
- php - 添加“如果产品属性为 then”代码
- excel - 如何用VBA打开一个没有内容的cvs文件?
- javascript - 搜索无法以角度工作的可折叠内容
- python - 如何在 python 中计算数据框中每个唯一原始变量的总和?
- scala - 如何找到最小值并用相应的列显示它