Função da biblioteca Stepper.h do motor de passo não esta respondendo aos comando enviados para o Esp8266 ( Acess Point )


#1

Configurei em meu código para o Mini Wemos Esp8266 para ser um Acess Point e com isto posso acessar ele e enviar dois tipos de comandos “L” e “R” para que assim possa ter controle da rotação de um motor de passo, mas o problema é que quando envio o comando para o Esp8266 ele me retorna as mensagens client.println(“Comando Sentido Horario”); então isto quer dizer que o código esta funcionando mas o principal que é a movimentação do motor de passo não esta no lugar certo.

Estou usando as funções que funcionam se Eu colocar sozinha como no exemplo abaixo:

void loop()
{
      myStepper.step(stepsPerRevolution);
      //myStepper.step(-stepsPerRevolution);
}

A pergunta é como faço para enviar o comando para o Esp8266 e assim fazer o motor de passo girar em conformidade com a direção desejada.

Código abaixo para analise

#include <Stepper.h>
#include <ESP8266WiFi.h>

const char* ssid = "Host_Churrasco";
const char* password = "12345678";
WiFiServer server(80);
 
const int stepsPerRevolution = 500; 

Stepper myStepper(stepsPerRevolution, D1, D2, D5, D6); 

void setup() 
{
  Serial.begin(115200);
  
  IPAddress staticIP(192, 168, 4, 2); // IP set to Static
  IPAddress gateway(192, 168, 4, 1);// gateway set to Static
  IPAddress subnet(255, 255, 255, 0);// subnet set to Static
  
  WiFi.mode(WIFI_AP);
  WiFi.softAP(ssid, password, 2, 0);
  WiFi.config(staticIP, gateway, subnet);

  server.begin();

  Serial.println("Server started"); 
  Serial.println(WiFi.softAPIP());
  
  myStepper.setSpeed(60);
} 
 
void loop() 
{
  tcpCleanup();
  WiFiClient client = server.available();
  if (!client) {
    return;
  }

  while (!client.available()) {
    delay(1);
  }

  String req = client.readStringUntil('\r');
  req = req.substring(req.indexOf("/") + 1, req.indexOf("HTTP") - 1);
  Serial.println(req);
  client.flush();

  if (req.indexOf("L") != -1)
  {
    client.println("Comando Sentido Horario   ");
    for(int i = 0; i < 100
    myStepper.step(stepsPerRevolution);    
  }
  else if (req.indexOf("R") != -1)
  {
    client.println("Comando Sentido Anti-Horario   ");    
    myStepper.step(-stepsPerRevolution);    
  }  
  else {
    client.print("Invalid Request");
    client.flush();
    client.stop();
    return;
  }
  client.print("HTTP/1.1 200 OK\n\n");
  client.flush();
  tcpCleanup();
}

#2

A alimentação do motor de passo deve ser externa à MCU, além de que você deve suprir a tensão e corrente adequadas. Se for o caso, dê uma olhada: