Такая проблема: создал пару кнопок в HTML, чтобы управлять шаговым двигателем. Суть при нажатии кнопки вверх двигатель делает заданное в коде количество оборотов, вниз аналогично. С браузера посылаю запрос по выданному IP/get1 (вверх). Если прокрутился до конца, посылаю запрос IP/get2 крутится в низ, т.е. все нормально. НО если нажал вверх и во время движения нажал вниз, то скрипт зависает и больше ни на что не реагирует.
Подскажите что нужно поправить, что бы не нужно было ждать пока он докрутится до конца, а можно было прервать и направить в противоположную сторону.
Спасибо.
Спойлер
Код: Выделить всё
#include <CustomStepper.h>
#include <ESP8266WiFi.h>
#include <ESP8266WebServer.h>
#define verh 0
#define niz 8
long schet = 0; //Счетчик шагов
long shagi = 0;
CustomStepper stepper(32, 33, 25, 26);
const char* ssid = "xxxxx";
const char* password = "xxxxx";
ESP8266WebServer server(80);
void setup() {
Serial.begin(115200);
delay(100);
Serial.println("Connecting to ");
Serial.println(ssid);
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED)
{
delay(1000);
Serial.print(".");
}
Serial.println("");
Serial.println("WiFi connected..!");
Serial.print("Got IP: ");
Serial.println(WiFi.localIP());
server.on("/get1", get1);
server.on("/get2", get2);
server.begin();
Serial.println("HTTP server started");
stepper.setRPM(12); // Устанавливаем кол-во оборотов в минуту
stepper.setSPR(2048);
}
void get1()
{
shagi = niz;
server.send ( 200, "text/plain", "works well" );
}
void get2()
{
shagi = verh;
server.send ( 200, "text/plain", "works well" );
}
void loop() {
server.handleClient(); // обработка входящих WEB запросов
if (stepper.isDone() && schet < shagi){
Serial.println("Up");
stepper.setDirection(CCW); // Устанавливает направление вращения. Может принимать 3 значения: CW - по часовой, CCW - против часовой
stepper.rotateDegrees(45); // В градусах
schet++;
}
if (stepper.isDone() && schet > shagi){
Serial.println("Down");
stepper.setDirection(CW);
stepper.rotateDegrees(45);
schet--;
}
stepper.run();
}

