Comandare 2 stepper motor in modo alternato per determinati passi

Ciao a tutti, come già scritto nella mia presentazione sto imparando a programmare, non voglio che qualcuno scriva il programma per me, voglio bensi capire quale formula può fare al mio caso per integrarla al mio progetto.
Venendo a noi, ho scritto il programma, sicuramente fatto in modo poco professionale, ma fa le funzioni da me richieste, il che mi rende soddisfatto.
Praticamente ho 2 stepper motor comandata da una scheda a4988 tramite arduino uno, un potenziomentro per regolare la velocita del motore e un pulsante per avviare il motore.
Ora vorrei implementare le funzioni, con un if faccio in modo che premendo il tasto i motori partino, il che va benissimo, vorrei però fare in modo che premendo il pulsante parti il primo motore per un determinato numero di step, che quando il primo ha fatto i suoi giri parta il secondo per unaltro numero di giri. in realtà vorrei aggiungere anche altre funzione ma facciamo le cose per passi, cosi capisco e imparo a programmare.
Ho provato ad implementare con un ciclo for ma va sempre e solo il primo motore e non parte mai il secondo.
Dove sbaglio?
Quale può essere la funzione che fa al mio caso?
Grazie

Dacci lo sketch.
Ciao Uwe

Potresti usare più condizioni if e una variabile contatore che conta gli step del motore.

Se pulsante attivo metto true una variabile

se variabile è true muovo di un passo il motore
conto i passi passi++

se pulsante due attivo metto a true la variabileDue

se variabileDue è true e passi maggiori di mioValore
muovo secondo motore

Ciao e grazie per le risposte.
Aggiungo sketch come richiesto.
Mi interessa la questione dei True in quanto forse è più gestibule per me, in quanto dovrei far muovere motore x in senso orario per determinati passi, poi motore y in senso orario per determinati passi, nuovamente motore x in senso antiorario e infine motore y in senso antiorario e li finire la sequesnza fino al nuovo avvio tramite pulsante

motori stepper.txt (1.31 KB)

Non ti leggiamo nella mente, non sappiamo esattamente cosa vuoi fare :slight_smile: tu descrivi un problema parziale ti si può proporre una soluzione, ma poi se l'intento finale è diverso allora magari occorrerebbe una soluzione del tutto diversa.

Esempio nel tuo ultimo post, una soluzione che risolve solo e soltanto quello che hai descritto "non va bene se devi fare altre cose" è

Se il pulsante è premuto

Primo ciclo for rotazione oraria x

secondo ciclo for rotazione oraria y

terzo ciclo for rotazione antioraria x

quarto ciclo for rotazione antioraria y

Ciao Torn e grazie per la risposta.
No io devo fare esattamente ciò che ho scritto, muovere i due motori in successione per differenti passi.
Ho provato con il ciclo for, come vedi nello sketch allegato.
Non capisco dove sbaglio ma va sempre e solo il motore x, poi pausa di un secondo e riprende ad andare solo il motore x.
So che essendo neofita mi sta sfuggendo qualche stupidata che per altri può essere una cosa palese, se aggiungo il ciclo for anche sul motore y, questo cmq non va, bensi riparte il motore x.

Ciao! Nel codice che hai allegato c'è un unico ciclo for e al suo interno di da impulsi solo all'asse x. Quindi con quel for muovi solo l'asse x. Metti in successione 4 for, mi raccomando non uno all'interno dell'altro ma uno dopo l'altro. Primo for graffa aperta graffa chiusa, secondo for graffa aperta graffa chiusa, terzo e quarto, all'interno di ogni for muovi per un numero di passi l'asse che ti interessa.

Ciao, scusami se ti rispondo solo ora ma purtroppo non ho avuto tempo.
In realtà, per fortuna e a furia di far prove, domenica sera sono riuscito a scrivere e testare un ciclo completo.
Ora l’ho riprovato e sembra che ci ho avvecato.
Unica cosa, sulla quale devo ancora fare prove e scoprire nuovi trucchi, è che non esce più dal ciclo for schiacciando il pulsante e passando quindi in !run.
Forse devo aggiungere un nuovo pulsante o posso usare sempre lo stesso ma con il cambio di stato?
Allego codice aggiornato e funzionante, se vuoi dargli una sbirciata e se c’è qualche suggerimento per un neofita come me che programma da meno di un mese.
Grazie mille per la disponibilità Torn.

motori stepper.txt (2.27 KB)

Ciao! Tu premi il pulsante e la variabile diventa 1, poi dopo aver eseguito i cicli for inverti il valore della variabile e diventa 0, per cui ogni volta che premi il pulsante la variabile ha valore uno e i for vengono ripetuti a ogni pressione del pulsante.

Ciao Torn, si esatto, ho messo io la fine del ciclo altrimenti dopo il 4° passaggio sarebbe ripartito dal primo, cosa che appunto non volevo.
Devo capire e trovare il modo per far si che durante uno qualunque dei cicli for, premendo il pulsante e mandandolo a 0 si fermi/stoppi il ciclo e, se possibile, quanto rimetto su uno il ciclo riparta da dove e stato fermato e non dall’inizio del if e quindi tutta la serie di for.