在Python 3中运行代码以使用步进电机
我们正试图使步进电机工作使用树莓皮3b和8825驱动器。但是,我们正在使用的代码不起作用并产生错误在Python 3中运行代码以使用步进电机,python,raspberry-pi,stepper,Python,Raspberry Pi,Stepper,我们正试图使步进电机工作使用树莓皮3b和8825驱动器。但是,我们正在使用的代码不起作用并产生错误 import RPi.GPIO as GPIO import time GPIO.setmode(GPIO.BCM) control_pins = [14,15,18] for pin in control_pins: GPIO.setup(pin,GPIO.OUT) GPIO.output(pin,0) halfstep_seq = [ [0,0,0], [0,0,1], [
import RPi.GPIO as GPIO
import time
GPIO.setmode(GPIO.BCM)
control_pins = [14,15,18]
for pin in control_pins:
GPIO.setup(pin,GPIO.OUT)
GPIO.output(pin,0)
halfstep_seq = [
[0,0,0],
[0,0,1],
[0,1,0],
[0,1,1],
[1,0,0],
[1,0,1]
]
for i in range(512):
for halfstep in range(8):
for pin in range(4):
GPIO.output(control_pins[pin],halfstep_seq[halfstep][pin])
time.sleep(0.001)
GPIO.cleanup()
这是我们的控制台告诉我们的:
test_stepper.py:6:运行时警告:此通道已在使用中,
反正还在继续。使用GPIO.setwarnings(False)禁用警告。GPIO.setup(pin,GPIO.OUT)回溯(最近一次调用last):文件 “test_stepper.py”,第19行,in GPIO.output(控制引脚[pin],半步[halfstep][pin])索引器:列表索引超出范围
在
半步
中有6个步骤,其索引将为0到5。但后来,你做到了:
for halfstep in range(8):
.... halfstep_seq[halfstep]...
因此halfstep
将取0到7之间的值,从而导致索引器
同样,您有3个管脚,而不是4个
因此,您的代码应该是:
for i in range(512):
for halfstep in range(6):
for pin in range(3):
GPIO.output(control_pins[pin],halfstep_seq[halfstep][pin])
但在Python中,最好在列表上迭代,而不显式地引用索引:
for halfstep in halfsteps:
for pin_num, pin_value in zip(control_pins, halfstep):
GPIO.output(pin_num, pin_value)