giro eje Motor PAP obedece a giro eje POT

Hola chicos/as.

Me he montado este code para hacer girar un motor paso a paso, de derecha a izquierda en función del valor del potenciometro.
Es decir el eje del motor se posiciona donde yo posiciono el eje del potenciometro.

Me funciona correctamente tal como lo he configurado.

Ahora bien quiero colocar tan solo un final de carrera que cuando el eje del motor gire a izquierdas para volver a su posición inicial de donde partimos que mecánicamente sea activado, en ese momento quiero que me ponga el valor de pasos a cero, para ello implemente esta línea de código if( finalcarrera ==HIGH) { pasos = 0; } después del for(int i=0; i<pasos; i++) pero cuando añado esa linea el motor no me gira a izquierdas.

Alguien podría orientarme de cómo resolver mi problema ¿

val = map(Data1, 600, 950, 0, 255); // map(Data1, 500Valor donde empezara el pot a trabajar, 950Valor donde terninara de trabajar el pot, 0,255 )
val = constrain(val,0,255); // todo lo que este fuera de 0 y 255 lo desechar

pasos = (val-previoVal);

if ( pasos >= 0 )
{ GIRODERECHA(); }
else { pasos = -pasos;
GIROIZQUIERDA(); }

}
}
void GIRODERECHA() ////////////////////////////////////////////////
{ digitalWrite(DIR, HIGH);

for(int i=0; i<pasos; i++)
{
digitalWrite(STEP, HIGH);
delayMicroseconds(timer);
digitalWrite(STEP, LOW);
delayMicroseconds(timer);
} previoVal = val;

}
void GIROIZQUIERDA() ////////////////////////////////////////////////
{ digitalWrite(DIR, LOW);

for(int i=0; i<pasos; i++)

if( finalcarrera ==HIGH) { pasos = 0; } :slight_smile:

{
digitalWrite(STEP, HIGH);
delayMicroseconds(timer);
digitalWrite(STEP, LOW);
delayMicroseconds(timer);
if ( finalcarrera == HIGH ) { pasos = 0;}
} previoVal = val;

}

:slight_smile:

Hola, tal y como esta el código, cuando detecte el final de carrera parará la ejecución del bucle for de giro izquierda, asignará previoVal=val, empezara un nuevo bucle del programa y leera el valor de val, que de no haber movido el potenciometro seguirá dando el mismo valor por lo que pasos seguira siendo 0 con lo que no mueve el motor ni a derechas ni ha izquierdas hasta que gires el pot a derechas (no volvera automaticamente)

De todas maneras no explica porque no mueve nada a izquierdas, ¿como tienes conectado el final de carrera, como has configurado el pin del final de carrera?