ciao a tutti.. ho un problema con questo codice.
il motore deve eseguire un ciclo in avanti se si trova nella posizione corretta ovvero se il finecorsa 7 che per mia comodita ho chiamato pulsante e impegnato altrimenti deve ruotare in senso contrario fino a impegnare il finecorsa e poi eseguire il ciclo in avanti. funziona pero ripete il ciclo e io ho la necessita di farlo eseguire una sola volta.Ho provato mettendolo nel void setup funziona in parte, diciamo se lui e in posizione quindi il pulsante e HIGH esegue il ciclo con il comando for se pero deve tornare in dietro esegue solamente uno stepp.
int motorPin2 = 11;
int motorPin3 = 12;
int motorPin4 = 13;
int delayTime = 20; // velocita motore
int pulsante; //finecorsa
int ciclo=40;
void setup()
{
pinMode(8,INPUT);
pinMode(motorPin1, OUTPUT);
pinMode(motorPin2, OUTPUT);
pinMode(motorPin3, OUTPUT);
pinMode(motorPin4, OUTPUT);
}
void loop()
{
pulsante=digitalRead( 8 );
if (pulsante==LOW)
{
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);
}
pulsante=digitalRead ( 8 );
if (pulsante==HIGH)
{
for (int i=1; i <= ciclo; i++)
{
digitalWrite(motorPin1, HIGH);
digitalWrite(motorPin2, LOW);
digitalWrite(motorPin3, LOW);
digitalWrite(motorPin4, LOW);
delay(delayTime);
digitalWrite(motorPin1, LOW);
digitalWrite(motorPin2, LOW);
digitalWrite(motorPin3, HIGH);
digitalWrite(motorPin4, LOW);
delay(delayTime);
digitalWrite(motorPin1, LOW);
digitalWrite(motorPin2, HIGH);
digitalWrite(motorPin3, LOW);
digitalWrite(motorPin4, LOW);
delay(delayTime);
digitalWrite(motorPin1, LOW);
digitalWrite(motorPin2, LOW);
digitalWrite(motorPin3, LOW);
digitalWrite(motorPin4, HIGH);
delay(delayTime);
}
}
}