Ciao a tutti,
ho la necessità di gestire più motori step in maniera indipendente tramite timer ma mi trovo in una situazione dalla quale non riesco ad uscirne.
Supponiamo che siano solo due i motori (ma saranno 8) che devono funzionare in questo modo:
- il primo deve fare un giro orario e uno antiorario, fermarsi per 5 secondi e ripetere il ciclo (tutto questo all'infinito)
- il secondo deve fare un giro orario, fermarsi per 10 secondi e ripetere il ciclo (tutto questo all'infinito)
i due motori devono essere indipendenti quindi nel momento in cui parte il primo deve partire anche il secondo..
Il problema è che una volta entrato nel primo if ci rimane fino a quando il motore non ha terminato il giro orario e quello antiorario, ciò comporta che il secondo motore non partirà fino a quando il primo motore non avrà terminato la sua routine.
Avete qualche idea?
#include <Stepper.h>
Stepper myStepper(2048, 11, 9, 10, 8);
unsigned long t1; //intervallo che definisce ogni quanto deve girare il motore
unsigned long dt = 0; //variabile per il confronto del tempo attuale
unsigned long t2; //intervallo che definisce ogni quanto deve girare il motore
unsigned long dt2 = 0; //variabile per il confronto del tempo attuale
void setup(){
Serial.begin(9600);
myStepper.setSpeed(4);
t1 = 5000;
t1 = 10000;
}
void loop(){
if (millis()>= dt){
float gradi = 360;
gradi = map(gradi, 0 ,360, 0, 2048);
myStepper.step(gradi); //gira in senso orario
myStepper.step(-gradi); //gira in senso anti-orario
dt = millis() + t1;
}
if (millis()>= dt2){
float gradi = 360;
gradi = map(gradi, 0 ,360, 0, 2048);
myStepper.step(gradi); //gira in senso orario
dt2 = millis() + t2;
}
}
Grazie mille in anticipo a tutti