motore passo passo

UN saluto a tutti quanti..finalmente dopo molti sforzi e ore sono riuscito a fare il mio primo programma FUNZIONANTE! :smiley:
Ora pero, vorrei fargli fare solo un numero definito di step, ma non so come eseguire il comando.
Grazie mille

int motorPin1 = 10;
int motorPin2 = 11;
int motorPin3 = 12;
int motorPin4 = 13;
int delayTime = 20;
int pulsante;
void setup() {
pinMode(7,INPUT);
pinMode(motorPin1, OUTPUT);
pinMode(motorPin2, OUTPUT);
pinMode(motorPin3, OUTPUT);
pinMode(motorPin4, OUTPUT);
}
void loop(){
pulsante=digitalRead(7);
if (pulsante==HIGH) {
digitalWrite(motorPin1, LOW);
digitalWrite(motorPin2, LOW);
digitalWrite(motorPin3, LOW);
digitalWrite(motorPin4, HIGH);
delay(delayTime);
digitalWrite(motorPin1, LOW);
digitalWrite(motorPin2, HIGH);
digitalWrite(motorPin3, LOW);
digitalWrite(motorPin4, LOW);
delay(delayTime);
digitalWrite(motorPin1, LOW);
digitalWrite(motorPin2, LOW);
digitalWrite(motorPin3, HIGH);
digitalWrite(motorPin4, LOW);
delay(delayTime);
digitalWrite(motorPin1, HIGH);
digitalWrite(motorPin2, LOW);
digitalWrite(motorPin3, LOW);
digitalWrite(motorPin4, LOW);
delay(delayTime);
}
}

:astonished:
Puoi fare una roba tipo:

Variabile bool per sapere se deve steppare
Variabile globale per sapere che fase c'è accesa

funzione steppa(int wut)
{
 fase++
 se fase > motorPin4 fase = motorPin1
 metto high fase
 metto tutti gli altri pin low
 delay(wut);
}

setup{.....uguale....}

void loop()
{
     pulsante=digitalRead(7);
     if (pulsante==HIGH)
     {
        accendimotore = true;
     }
     else
     {
        accendimotore = false;
     }

     if (accendimotore )
        steppa(delayTime); 
}

Facendo cosi finche tieni premuto va poi si ferma
Se ti serve che quando premi faccia tipo 100 step poi si fermi da solo devi togliere l'else poi ti basta mettere un'altra variabile che conta fino a 100 poi metta accendimotore=false da solo

metti il ciclo che Ti fa 4 step in un ciclo for(). cosí ogni volta che premi il pulsante ti fa x passi.
Ciao Uwe

Grazie.....geniale, penso che ci sarei arrivato anche da solo....tra 2 milioni di anni! :blush:

uff non riesco ad ottenere quello che voglio... qualcuno gentilmente mi puo spiegare come funziona la funzione for?
for (int i=0; i<=0; i++) { }
grazie mille

for (int i=0; i <= numero; i++)
{ fai questo per numero volte}

veroda:
for (int i=0; i<=0; i++) { }

Scritta così non funziona perché la condizione di uscita è subito verificata.
--> http://programmazione.html.it/guide/lezione/1167/il-ciclo-for/

Faccina:
for (int i=0; i <= numero; i++)
{ fai questo per numero volte}

Non del tutto esatto: siccome ha messo "i <= numero" le istruzioni si ripetono per numero volte + 1

PaoloP:

veroda:
for (int i=0; i<=0; i++) { }

Scritta così non funziona perché la condizione di uscita è subito verificata.
--> http://programmazione.html.it/guide/lezione/1167/il-ciclo-for/

Sempre per il carattere uguale la condizione si verifica almeno una volta, quindi le istruzioni vengono eseguite una volta sola

Non del tutto esatto: siccome ha messo "i <= numero" le istruzioni si ripetono per numero volte + 1

L'ho copincollato aggiungendo solo gli spazi, non ci avevo fatto caso, comunque se mette i=1 invece di i=0 fa solo numero volte non numero+1

E se mette ++i l'indice viene incrementato all'inizio e fa il ciclo n volte. :wink:

E se invece di ++ mette -- la variabile i decrementa il suo valore....
Dai raga, ormai la frittata è fatta... :sweat_smile:

Grazie a tutti per le importanti informazioni che mi ha avete dato. Sono riuscito a fare quello che volevo.
ora continuo a giocare per prepararmi al mio grande progetto. ]:smiley:
CIao a tutti.