在Python 3中运行代码以使用步进电机

在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], [

我们正试图使步进电机工作使用树莓皮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],
  [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)