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
