2 motori passo passo da far girare contemporaneamente

ho comprato due motori passo passo venduti ognuno con il loro driver ULN2003. Provati, funzionano, ma non so come fare per farli girare contemporaneamente. Si deve forse usare un solo driver ? quello che mi è arrivato è una piccola piastrina con l'integrato, 4 led e ci sono 4 soli pin (IN1, IN2, IN3 e IN4) da collegare ad arduino, oltre che il + e il - da collegare alla batteria. Non saprei com fare a livello di sketch, perché girano, ma uno alla volta......

Posta lo sketch , perchè si fa prima a spiegartelo

prima ho provato usando la libreria Stepper.h

#include <Stepper.h>
#define STEPS  100  
Stepper dx(STEPS, 8, 10, 11, 9) ;
Stepper sx(STEPS, 2, 4, 5, 3) ;
int rchar ; 
void setup() {
 Serial.begin(9600);

}

void loop() {
    if(Serial.available()>0){
      rchar = Serial.read() ;
      if ( rchar == 'a'){
        Serial.println("avanti");
        avanzare() ;
      }
    }
  // ecc
}

void avanzare(){
  dx.setSpeed(200);
  sx.setSpeed(200);
  dx.step(2048);
  sx.step(-2048);
}

qui capisco che vada prima uno e poi l’altro…

POI ho provato senza la libreria con questo codice:

int motorSXPin1 = 8;
int motorSXPin2 = 9; 
int motorSXPin3 = 10; 
int motorSXPin4 = 11;
int motorDXPin1 = 2;
int motorDXPin2 = 3; 
int motorDXPin3 = 4; 
int motorDXPin4 = 5;
int motorSpeed = 1200; //variable to set stepper speed
int count = 0; // count of steps made
int countsperrev = 512; // number of steps per full revolution
int lookup[8] = {B01000, B01100, B00100, B00110, B00010, B00011, B00001, B01001};

int rchar ; 
void setup() {
 Serial.begin(9600);
  pinMode(motorSXPin1, OUTPUT);
  pinMode(motorSXPin2, OUTPUT);
  pinMode(motorSXPin3, OUTPUT);
  pinMode(motorSXPin4, OUTPUT);
  pinMode(motorDXPin1, OUTPUT);
  pinMode(motorDXPin2, OUTPUT);
  pinMode(motorDXPin3, OUTPUT);
  pinMode(motorDXPin4, OUTPUT);
}

void loop() {
    if(Serial.available()>0){
      rchar = Serial.read() ;
      if ( rchar == 'a'){
        Serial.println("avanti");
        avanzare() ;
      }
    }
  // ecc
}

void avanzare(){
  for(int i = 7; i >= 0; i--){
    setOutput(i);
    delayMicroseconds(motorSpeed);
   }
}

void setOutput(int out){
  digitalWrite(motorSXPin1, bitRead(lookup[out], 0));
  digitalWrite(motorDXPin1, bitRead(lookup[out], 0));
  
  digitalWrite(motorSXPin2, bitRead(lookup[out], 1));
  digitalWrite(motorDXPin2, bitRead(lookup[out], 1));
  
  digitalWrite(motorSXPin3, bitRead(lookup[out], 2));
  digitalWrite(motorDXPin3, bitRead(lookup[out], 2));
  
  digitalWrite(motorSXPin4, bitRead(lookup[out], 3));
  digitalWrite(motorDXPin4, bitRead(lookup[out], 3));
}

qui non fa nulla

SONO RIUSCITA:
dimenticavo un ciclo for

nel loop non basta ‘avanzare();’,
ma
int a=0;
for(a=0; a<512; a++)
avanzare() ;
in questo modo per esempio va avanti di 512 passi.
Per ora i motori vanno nella stessa direzione, ora devo farli andare uno in clockwise e l’altro al contrario

posto il codice che funziona, almeno per la parte di avanzamento, ma poi sarà simile per il resto:

int motorSXPin1 = 8;
int motorSXPin2 = 9; 
int motorSXPin3 = 10; 
int motorSXPin4 = 11;
int motorDXPin1 = 2;
int motorDXPin2 = 3; 
int motorDXPin3 = 4; 
int motorDXPin4 = 5;
int motorSpeed = 1200; //variable to set stepper speed
int count = 0; // count of steps made
int countsperrev = 512; // number of steps per full revolution
int lookup1[8] = {B01000, B01100, B00100, B00110, B00010, B00011, B00001, B01001};
int lookup2[8] = {B01001, B00001, B00011, B00010, B00110, B00100, B01100, B01000};

int rchar ; 
void setup() {
 Serial.begin(9600);
  pinMode(motorSXPin1, OUTPUT);
  pinMode(motorSXPin2, OUTPUT);
  pinMode(motorSXPin3, OUTPUT);
  pinMode(motorSXPin4, OUTPUT);
  pinMode(motorDXPin1, OUTPUT);
  pinMode(motorDXPin2, OUTPUT);
  pinMode(motorDXPin3, OUTPUT);
  pinMode(motorDXPin4, OUTPUT);
}

void loop() {
    if(Serial.available()>0){
      rchar = Serial.read() ;
      if ( rchar == 'a'){
        Serial.println("avanti");
        int a=0;
        for(a=0; a<512; a++)
          avanzare() ;
      }
    }
  // ecc
}

void avanzare(){
  for(int i = 7; i >= 0; i--){
    setOutput(i);
    delayMicroseconds(motorSpeed);
   }
}


void setOutput(int out){
  digitalWrite(motorSXPin1, bitRead(lookup1[out], 0));
  digitalWrite(motorDXPin1, bitRead(lookup2[out], 0));
  
  digitalWrite(motorSXPin2, bitRead(lookup1[out], 1));
  digitalWrite(motorDXPin2, bitRead(lookup2[out], 1));
  
  digitalWrite(motorSXPin3, bitRead(lookup1[out], 2));
  digitalWrite(motorDXPin3, bitRead(lookup2[out], 2));
  
  digitalWrite(motorSXPin4, bitRead(lookup1[out], 3));
  digitalWrite(motorDXPin4, bitRead(lookup2[out], 3));
}

questo funziona