Problema con motor paso a paso y dos pulsadores

Hola muy buenas. Estoy intentando dominar un motor paso a paso pero el canalla no se deja.
En teoria todo está correcto. Todo bien montado, los botones funcionan, el motor está bien, el Arduino y el módulo tambien.
El caso es que quiere funcionar bien, una vuelta para un lado con un botón y otra vuelta para el otro con el otro botón. Pero cuando le sale de ahí se vuelve loco y hace lo que quiere.
A veces con el mismo botón se cambia de dirección. Otras veces apretes el botón que apretes sigue la misma de dirección. Ya no sé qué más hacer.
¿Algun camino a seguir?

#include <Stepper.h>
const int stepsPerRevolution = 2048; 
int buttonState = 0;
int buttonState1 = 0;
Stepper stepperName = Stepper(stepsPerRevolution, 8, 10, 9, 11);

void setup(){
  pinMode(2, INPUT);  
  pinMode(3, INPUT);  
  stepperName.setSpeed(12); }

void loop(){   
  buttonState = digitalRead(2);        
  buttonState1 = digitalRead(3);
  
 if (buttonState == HIGH) {
 stepperName.step(stepsPerRevolution); 
// delay(100); 
}
  if (buttonState1 == HIGH) {
 stepperName.step(-stepsPerRevolution);  
 //delay(100);     
 } 

}

Este me hace lo mismo:

#include <Stepper.h>
const int stepsPerRevolution = 2048;  
int buttonState = 2;
int buttonState1 = 3;
  int value1;
  int value2;
Stepper stepperName = Stepper(stepsPerRevolution, 8, 10, 9, 11);

void setup(){
  pinMode(buttonState, INPUT);  
  pinMode(buttonState1, INPUT);  
  stepperName.setSpeed(12); }
  
void loop(){   
  value1 = digitalRead(buttonState);       
  value2 = digitalRead(buttonState1);
  
               // buttonState
 if (value1 == HIGH) {
  for (int i = 0; i <= 0; i++){         // Numero de vueltas
 stepperName.step(stepsPerRevolution);
 }
// delay(1); 
}

else{      
                      // buttonState1
  if (value2 == HIGH) {
   for (int i = 0; i <= 0; i++){         // Numero de vueltas
 stepperName.step(-stepsPerRevolution);
 } 
// delay(1);     
 }
 else{
      stepperName.step(0);}
 }

}

Un cordial saludo

¿Has conectado resistencias a GND a los pines de los pulsadores (pines 2 y 3)?

Adjunta un esquema con las conexiones (puedes hacerlo a mano y subir una foto, lo importante es que se entienda).

Hola, buenas.
Creo que lo tengo todo bien puesto. Los cables de los pines tambien los he probado cambiandolos a la otra patilla negativa del pulsador pero no soluciona nada, el motor hace lo que quiere.
El motor va en los dos sentidos, ya que a veces va bien, pero casi siempre va para donde quiere. Cuando hace el cambio de giro bien a veces dura unas cuantas pulsaciones pero lo normal es que a la primera o la segunda pulsación deje de hacer los cambios de giro.
Tambien hay veces que nada mas pulsar ya va directamente en una sola dirección sin importar que pulsador use.
Haciendo mas pruebas he visto que a veces pulsando el mismo botón el motor cambia de sentido de giro.
Las resistencias son de 330Ω, tambien he probado con unas de 10kΩ (lo leí por algún sitio)

El motor lo tengo conectado a 12v.
Cuando enciendo la fuente y el arduino los leds ABCD del modulo están apagados.
Cuando pulso indistintamente algún boton los leds B y D se encienden.
Cuando se para el motor el led B se queda encendido.
Cuando vuelvo a pulsar cualquier botón se vuelven a encender los leds B y D.

No se me ocurre nada más.
Un cordial saludo.

2048 pulsos por revolucion? es raro. No conozco stepper con tal cantidad.
Tal vez 200, 400, pero valores potencias de 2 muy raro. y menos 2048.

Corriste los programas ejemplo de la librería Stepper adaptados a tus pines? Deberían funcionar bien.

¡Solucionado!
El cable del modulo al arduino, tenía dos cables cortados.
Ya me estaba volviendo majareta porque al principio funcionaba bien.
Gracias por los consejos.

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.