I want to make multiple stepper motors turning at same time, with L298N driver.
My idea is using relative coordinate on Milling machine, and separate x, y, z value from input coordinate before doing relative positioning calculation.
The code is
def coordinate(inputlist, d):
D = int(d)
l = ast.literal_eval(f"[{inputlist}]")#do not use "eval()" code
lx = [x for x,y,z in l]
ly = [y for x,y,z in l]
lz = [z for x,y,z in l]
x_value(lx, axisx, D)
y_value(ly, axisy, D)
z_value(lz, axisz, D)
def x_value(lx, axisx, D):
delay = D
stepper = axisx
x = lx
xv = []
for f in range(len(x)-1):
bx = x[f+1] - x[f]
xv.append(bx)
print(xv)
for steps in xv:
if (steps >=0):
forword(delay, steps, stepper)
elif (steps <=0):
backward(delay, steps, stepper)
def y_value(ly, axisy, D):
delay = D
stepper = axisy
y = ly
yv = []
for g in range(len(y)-1):
by = y[g+1] - y[g]
yv.append(by)
print(yv)
for steps in yv:
if (steps >=0):
forword(delay, steps, stepper)
elif (steps <=0):
backward(delay, steps, stepper)
def z_value(lz, axisz, D):
delay = D
stepper = axisz
z = lz
zv = []
for h in range(len(z)-1):
bz = z[h+1] - z[h]
zv.append(bz)
print(zv)
for steps in zv:
if (steps >=0):
forword(delay, steps, stepper)
elif (steps <=0):
backward(delay, steps, stepper)
def forword(delay, steps, stepper):
for i in range(steps):
for halfstep in range(8):
for pin in range(4):
GPIO.output(stepper[pin], seq[halfstep][pin])
time.sleep(int(delay) / 10000)
def backward(delay, steps, stepper):
seq.reverse()
for i in range(-int(steps)):
for halfstep in range(8):
for pin in range (4):
GPIO.output(stepper[pin], seq[halfstep][pin])
time.sleep(int(delay) / 10000)
seq.reverse()
try:
while True:
inputlist = input("Coordinate List (Unit is 10um, 1mm = 100 (10um)):")
d = input("speed of stepper(do not less then 7):")
coordinate(inputlist, d)
No matter how I tried, the three stepper motors are turning separately.
I want to make stepper motors turning at same time, no matter what value I put in with coordinate form (x1,y1,z1), (x2,y2,z2)......., (xn,yn,zn)