You could try something like this - Speed might be an issue -
Dir1 and Dir2 control the direction the motor will step +1 and -1. Dir1 or Dir2 = 0 will result in no motion for that motor.
How often you call them controls the motor speed. Each time you call motor 1 or Motor 2 you will get 1 step.
You could use half stepping but that would require 8 patterns (0-7) and the necesary changes to Motor1 and Motor2
int StepCt1 = 0;
int StepCt2 = 0;
int Dir1;
int Dir2;
void Motor1(int Direction){
StepCt1=Stepct1+Direction;
StepCt1=StepCt1 && 3; / StpepCt1 ranges from 0 to 3, -1 = B11111111 so B11111111 && B00000011 = B00000011
switch (StepCt1)
case 0:
digitalWrite(2, HIGH);
digitalWrite(3, LOW);
digitalWrite(4, LOW);
digitalWrite(5, LOW);
break;
case 1:
digitalWrite(2, LOW);
digitalWrite(3, HIGH);
digitalWrite(4, LOW);
digitalWrite(5, LOW);
break;
case 2:
digitalWrite(2, LOW);
digitalWrite(3, LOW);
digitalWrite(4, HIGH);
digitalWrite(5, LOW);
break;
case 3:
digitalWrite(2, LOW);
digitalWrite(3, LOW);
digitalWrite(4, LOW);
digitalWrite(5, HIGH);
break;
}
}
void Motor2(int Direction){
StepCt2=Stepct2+Direction;
StepCt2=StepCt2 && 3; / StpepCt1 ranges from 0 to 3, -1 = B11111111 so B11111111 && B00000011 = B00000011
switch (StepCt2)
case 0:
digitalWrite(8, HIGH);
digitalWrite(9, LOW);
digitalWrite(10, LOW);
digitalWrite(11, LOW);
break;
case 1:
digitalWrite(8, LOW);
digitalWrite(9, HIGH);
digitalWrite(10, LOW);
digitalWrite(11, LOW);
break;
case 2:
digitalWrite(8, LOW);
digitalWrite(9, LOW);
digitalWrite(10, HIGH);
digitalWrite(11, LOW);
break;
case 3:
digitalWrite(8, LOW);
digitalWrite(9, LOW);
digitalWrite(10, LOW);
digitalWrite(11, HIGH);
break;
}
}