Controlling 5 steppers simultaneously

Hello arduino forums,
I have built a sculpture that has five
5v stepper motors
Each stepper moves roughly 30 degrees back and forth and moves a string which controls the finger of a hand.
I am controlling the motors with an arduino due, here is my current code:

#include <Stepper.h>

#define STEPS_PER_MOTOR_REVOLUTION 32

#define STEPS_PER_OUTPUT_REVOLUTION 32 * 64

Stepper finger1(STEPS_PER_MOTOR_REVOLUTION, 22, 26, 24, 28);
Stepper finger2(STEPS_PER_MOTOR_REVOLUTION, 30, 34, 32, 36);
Stepper finger3(STEPS_PER_MOTOR_REVOLUTION, 38, 42, 40, 44);
Stepper finger4(STEPS_PER_MOTOR_REVOLUTION, 46, 50, 48, 52);
Stepper finger5(STEPS_PER_MOTOR_REVOLUTION, 31, 35, 33, 37);

int x = 0;

int fingerspeed = 1;

void all_up() {  //raises all of the fingers at the same time
  for(x; x < 200; x++) {
    finger1.step(-1);
    finger2.step(-1);
    finger3.step(-1);
    finger4.step(-1);
    finger5.step(-1);
  }
  x = 0;
}
void all_down() {  //lowers all of the fingers at the same time
  for(x; x < 200; x++) {
    finger1.step(1);
    finger2.step(1);
    finger3.step(1);
    finger4.step(1);
    finger5.step(1);
  }
  x = 0;
}
void down_drum_thumb() { \\moves down the fingers of the hand starting with the thumb.
  for(x; x < 200; x++) {
    finger1.step(1);   
  }
  x = 0;
  for(x; x < 200; x++) {
    finger2.step(1);   
  }
  x = 0;
  for(x; x < 200; x++) {
    finger3.step(1);  
  }
  x = 0;
  for(x; x < 200; x++) {
    finger4.step(1);   
  }
  x = 0;
  for(x; x < 200; x++) {
    finger5.step(1);
  }
  x = 0;
}
void down_drum_pinky() { \\moves down the fingers of the hand starting with the pinky.
 for(x; x < 200; x++) {
    finger5.step(1);   
  }
  x = 0;
  for(x; x < 200; x++) {
    finger4.step(1);   
  }
  x = 0;
  for(x; x < 200; x++) {
    finger3.step(1);  
  }
  x = 0;
  for(x; x < 200; x++) {
    finger2.step(1);   
  }
  x = 0;
  for(x; x < 200; x++) {
    finger1.step(1);
  }
  x = 0; 
}
void up_drum_thumb() { \\moves up the fingers of the hand starting with the thumb.
  for(x; x < 200; x++) {
    finger1.step(-1);   
  }
  x = 0;
  for(x; x < 200; x++) {
    finger2.step(-1);   
  }
  x = 0;
  for(x; x < 200; x++) {
    finger3.step(-1);  
  }
  x = 0;
  for(x; x < 200; x++) {
    finger4.step(-1);   
  }
  x = 0;
  for(x; x < 200; x++) {
    finger5.step(-1);
  }
  x = 0;
}
void up_drum_pinky() {  \\moves up the fingers of the hand starting with the pinky.
  for(x; x < 200; x++) {
    finger5.step(-1);   
  }
  x = 0;
  for(x; x < 200; x++) {
    finger4.step(-1);   
  }
  x = 0;
  for(x; x < 200; x++) {
    finger3.step(-1);  
  }
  x = 0;
  for(x; x < 200; x++) {
    finger2.step(-1);   
  }
  x = 0;
  for(x; x < 200; x++) {
    finger1.step(-1);
  }
  x = 0;
}
void wave_in_up() {
  for(x; x < 200; x++) {
    finger3.step(1);   
  }
  x = 0;
  for(x; x < 200; x++) {
    finger2.step(1);
    finger4.step(1);    
  }
  x = 0;
  for(x; x < 200; x++) {
    finger1.step(1); 
    finger5.step(1);  
  }
  x = 0;

}
void wave_in_down() {
  for(x; x < 200; x++) {
    finger3.step(-1);   
  }
  x = 0;
  for(x; x < 200; x++) {
    finger2.step(-1);
    finger4.step(-1);    
  }
  x = 0;
  for(x; x < 200; x++) {
    finger1.step(-1); 
    finger5.step(-1);  
  }
  x = 0;
}









void setup() {
  finger1.setSpeed(1000);
  finger2.setSpeed(1000);
  finger3.setSpeed(1000);
  finger4.setSpeed(1000);
  finger5.setSpeed(1000);

}

void loop() {
  wave_in_up();
  delay(1000);
  wave_in_down();
  delay(1000);
  
  
  

}

My problem is that I cannot move multiple steppers at the same time, I.E. make the fingers drum faster by starting moving one finger up before the next one finishes it’s movement.

If I could remove the time constraint from stepper movements in the stepper library I assume that would solve my problem.

Does anyone know how to do this or a way that I can get these steppers running together?

Thanks!

The Accelstepper library has support for multiple stepper motors simultaneous movement .

Will the accelstepper commands work with non-pwm pins? they seem not to.

Sure they will. Any digital pin (analog pins are digital, too). Why do you think not?
There is no need for PWM with the Accelstepper library.

I try a accelstepper example program with my stepper connected to pins (8,9,10,11), and the stepper moves. When it is connected to the pins that I use for the real application (22,24,26,28), nothing happens.

What Arduino board are you using (Mega 2560)? What stepper driver?

arduino due and the ULN2003 Driver Board in the link in my first post

I have zero experience with the Due so can not be of much further help.

I have a mega around, would that be better to work with?

Did the motors work before with the old Stepper library on the Due?

I did look at a pinout diagram of the Due and the some of the outputs are 3.3V at "high current" (15mA) and some at "low current" (3mA). It may be that, if you are using the "low current" pins, the voltage and current are not enough to turn on the ULN2003 transistors fully. So a Mega with its 5V 20mA outputs might work better. Just a guess, though.

Just switched to the mega and got the same result. The commands from the default stepper library will operate the motors on the 22-53 digital pins, but the commands from cheapstepper and accelstepper will not operate the motors.

My arduino and my motor drivers are on separate circuits, should they share a ground?
Is this my problem?

Witout a ground connection between the Arduino and the driver there is no reference for the signals, so yes you need a ground.

Ground installed, still have same problem.