Я использую следующие два сценария 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% уверен, что ошибка не вызвана отступом / интервалом. Я понимаю, что этот вопрос, вероятно, задавался бесконечно много раз, но любая помощь будет принята с благодарностью.