«AttributeError: объект« StepperMotor »не имеет атрибута« doClockwiseStep »» при попытке управления шаговым двигателем - PullRequest
0 голосов
/ 05 марта 2020

Я использую следующие два сценария Python3 для управления шаговым двигателем с помощью Raspberry Pi 3B +. Первый код определяет класс StepperMotor.

import pigpio
from time import sleep
from collections import deque

fullStepSequence = (
  (1, 0, 0, 0),
  (0, 1, 0, 0),
  (0, 0, 1, 0),
  (0, 0, 0, 1)
)

halfStepSequence = (
  (1, 0, 0, 0),
  (1, 1, 0, 0),
  (0, 1, 0, 0),
  (0, 1, 1, 0),
  (0, 0, 1, 0),
  (0, 0, 1, 1),
  (0, 0, 0, 1),
  (1, 0, 0, 1)
)

class StepperMotor:

    def __init__(self, pi, pin1, pin2, pin3, pin4, sequence = halfStepSequence, delayAfterStep = 0.0025):
        if not isinstance(pi, pigpio.pi):
            raise TypeError("Is not pigpio.pi instance.")

        pi.set_mode(pin1, pigpio.OUTPUT)
        pi.set_mode(pin2, pigpio.OUTPUT)
        pi.set_mode(pin3, pigpio.OUTPUT)
        pi.set_mode(pin4, pigpio.OUTPUT)
        self.pin1 = pin1
        self.pin2 = pin2
        self.pin3 = pin3
        self.pin4 = pin4
        self.pi = pi
        self.delayAfterStep = delayAfterStep
        self.deque = deque(sequence)

    def doСounterclockwiseStep(self):
        self.deque.rotate(-1)
        self.doStepAndDelay(self.deque[0])

    def doСlockwiseStep(self):
        self.deque.rotate(1)
        self.doStepAndDelay(self.deque[0])

    def doStepAndDelay(self, step):
        self.pi.write(self.pin1, step[0])
        self.pi.write(self.pin2, step[1])
        self.pi.write(self.pin3, step[2])
        self.pi.write(self.pin4, step[3])
        sleep(self.delayAfterStep)

Следующий скрипт вызывает атрибут doClockwiseStep:

import pigpio, time
from PigpioStepperMotor import StepperMotor

pi = pigpio.pi()
motor = StepperMotor(pi, 17, 23, 22, 24)
pwma = pigpio.pi()
pwma.write(18,1)
pwmb = pigpio.pi()
pwmb.write(12,1)
stby = pigpio.pi()
stby.write(27,0)
for i in range(1600):
    stby.write(27,1)
    motor.doClockwiseStep()

Я получаю следующую ошибку при запуске второго скрипта:

Traceback (most recent call last):
  File "/home/pi/Documents/Stepper_Motor_Control/SuccessfulCode/Test.py", line 14, in <module>
    motor.doClockwiseStep()
AttributeError: 'StepperMotor' object has no attribute 'doClockwiseStep'

Оба сценария находятся в одной папке, и я на 99,9% уверен, что ошибка не вызвана отступом / интервалом. Я понимаю, что этот вопрос, вероятно, задавался бесконечно много раз, но любая помощь будет принята с благодарностью.

...