Stepper.h e due motori passo passo

Salve,
sto usando questo semplice codice per pilotare due motori passo passo.
Gli assi dei motori sono le ruote di un piccolo robot.
Ho bisogno di muovere contemporaneamente i due motori ma non riesco a farlo con la libreria stepper.h: si muove prima un motore poi l’altro.
Che problema c’è?

ecco il codice:

#include <Stepper.h>

#define STEPS 48

Stepper stepper1(STEPS, 12, 11, 10, 9);
Stepper stepper2(STEPS, 8, 7, 6, 5);

void setup()
{
  stepper1.setSpeed(20);
  stepper2.setSpeed(20);
}

void loop()
{
  stepper1.step(100);
  stepper2.step(-100);
}

Io credo sia per il fatto che Arduino non è multitasking.
Potresti creare una funzione di timeslicing, ovvero dai un paio di millisecondi ad un comando, lo stoppi e dai altri 2 millisecondi all’altro, così almeno fanno i moderni calcolatori multitasking (escludendo i multicore).
Al limite potresti tentare per via elettronica, ma non sono ferratissimo sull’argomento :frowning:

obnubilated: Io credo sia per il fatto che Arduino non è multitasking. Potresti creare una funzione di timeslicing, ovvero dai un paio di millisecondi ad un comando, lo stoppi e dai altri 2 millisecondi all'altro, così almeno fanno i moderni calcolatori multitasking (escludendo i multicore).

Anch'io ho pensato a questa soluzione, però forse così non verrebbe mai sfruttata a pieno la potenza dei motori.. no?

Effettivamente, non verrebbe usata tutta la potenza del motore, ma se è per piccole cose può andare. Però effettivamente dev'esserci una soluzione a livello elettronico e non software, aspettiamo chi ne sa qualcosa in più! :)

c'è sicuramente anche a livello software la soluzione. ma probabilmente in tal caso non è possibile usare la libreria stepper.h. Volevo capire se c'era un modo di usare la libreria per il mio problema visto che mi risulterebbe tutto molto più semplice.

Ciao la butto lì
ma un ciclo for?di certo non è corretto ma è un modo veloce per aggirare l’ostacolo

#include <Stepper.h>

#define STEPS 48

Stepper stepper1(STEPS, 12, 11, 10, 9);
Stepper stepper2(STEPS, 8, 7, 6, 5);

void setup()
{
  stepper1.setSpeed(20);
  stepper2.setSpeed(20);
}

void loop()
{
  for (int i=0; i < 100; i++){//dove 100 sono i passi da eseguire
  stepper1.step(1);
  stepper2.step(-1);
  }
}

}