WeMos D1 reiniciando 2-5 segundos en el motor paso a paso

0

He configurado una plataforma básica para motores paso a paso con los componentes más comúnmente usados y L298n como controlador, WeMos D1 (ESP8266) como controlador: enlace

Se supone que el programa golpea el interruptor de límite debajo del cinturón (funciona) y luego se mueve hasta la parte superior (se reinicia a mitad de camino).

He intentado encender esto con una fuente de alimentación de escritorio, e incluso encender stepper y WeMos con 2 baterías separadas: el mismo problema de reinicio.

¿Algún consejo? Gracias.

    

1 respuesta

1

El problema fue que mi loop() se estaba ejecutando demasiado tiempo y WeMos pensó que estaba atascado. Para resolver esto, agregué delay(1); en lugares relevantes.

#include <Stepper.h>

Stepper stepper(200, 5, 4, 0, 2);

void setup() {
  stepper.setSpeed(30);
  pinMode(16, INPUT_PULLUP);
  Serial.begin(9600);
}

void home() {
  Serial.println("looking for home");
  while (digitalRead(16) == HIGH) {
    stepper.step(1);
    delay(1); // Prevent "Soft WDT reset"
  }
  while (digitalRead(16) == LOW) {
    stepper.step(-1);
    delay(1); // Prevent "Soft WDT reset"
  }
  Serial.println("at home");
}

void loop() {
  home();
  delay(1000);
  for (int i = 0; i < 100; i++) {
    Serial.println("step " + String(i));
    stepper.step(-1);
    delay(1); // Prevent "Soft WDT reset"
  }
  delay(5000);
}
    
respondido por el Maxim Kachurovskiy

Lea otras preguntas en las etiquetas