ESP8266 x a4988(モータードライバー) x nema 17系ステッピングモータ

ステッピングモータについてきたケーブルの色は適当なので注意
また、今回はケーブルがクロスしており状況に応じて真ん中の二本をクロスせずに接続する場合もある

arduinoと A4998は
pinMode(14,OUTPUT); // Enable  D5
pinMode(5,OUTPUT); // Step D1
pinMode(4,OUTPUT); // Dir D2
また、ボタンは下記(ボタンの反対側はグランド)
const int PIN_PUSHBUTTON1 = 12; //D6
const int PIN_PUSHBUTTON2 = 13; //D7

ソースコード
ソースコード2




//https://blog.goo.ne.jp/snagai4500/e/ca8bbfca4c6c7f1c772d129ea5ea4e65

#define PIN_PUSHBUTTON1 2   //d4
#define PIN_LED1  13         //d7
#define PIN_PUSHBUTTON2 0    //d3
#define PIN_LED2  12      //d6

#define DEBOUNCEDELAY1 500
#define DEBOUNCEDELAY2 500
int iState_prev1 = LOW;
unsigned long ulMillis_prev1 = 0;
bool bLedState1 = false;

int iState_prev2 = LOW;
unsigned long ulMillis_prev2 = 0;
bool bLedState2 = false;


int x;
void setup() { 
  pinMode(14,OUTPUT); // Enable → Arduinoの6番ピンへ  //   D5
  pinMode(5,OUTPUT); // Step → Arduinoの5番ピンへ    //     SDA
  pinMode(4,OUTPUT); // Dir → Arduinoの4番ピンへ     //     SCL
  digitalWrite(14,LOW); // Set Enable low → Low状態でEnable  //D5

 Serial.begin( 115200 );
    pinMode(PIN_PUSHBUTTON1, INPUT);
    pinMode(PIN_LED1, OUTPUT);
    pinMode(PIN_PUSHBUTTON2, INPUT);
    pinMode(PIN_LED2, OUTPUT);
    


//  pinMode(2,OUTPUT); // Dir → Arduinoの4番ピンへ

 digitalWrite(PIN_LED1,  LOW );
 digitalWrite(PIN_LED2,  LOW );

}

int cnt_str = 0;


void loop() {

 
    /*
  
  digitalWrite(4,HIGH); // Set Dir High → 回転方向をセット
  for(x = 0; x < 200; x++) // 括弧内を200回実行
  {
    digitalWrite(5,HIGH); // 5番ピンをHigh状態へ
    delayMicroseconds(500); // 500ms待って
    digitalWrite(5,LOW); // 5番ピンをLow状態へ
    delayMicroseconds(500); // 500ms待って 
  }
delay(1000); // 1秒待つ
digitalWrite(4,LOW); // Set Dir Low → 回転方向を反対方向へセット
  for(x = 0; x < 200; x++) // 括弧内を200回実行
  {
    digitalWrite(5,HIGH); // 5番ピンをHigh状態へ
    delayMicroseconds(500); // 500ms待って
    digitalWrite(5,LOW); // 5番ピンをLow状態へ
    delayMicroseconds(500); // 500ms待って 
  }
  delay(1000); // 1秒待つ
*/
int iState1 = digitalRead(PIN_PUSHBUTTON1); //
if(!iState1 ){
  if(cnt_str == 0){
  Serial.println("回転方向をセット");
cnt_str = 1;
  digitalWrite(4,HIGH); // Set Dir High → 回転方向をセット

  }

   for(x = 0; x < 200; x++) // Loop 200 times
  {
      digitalWrite(PIN_LED1,  HIGH );
    digitalWrite(5,HIGH); // Output high
    delay(10); // Wait
    digitalWrite(5,LOW); // Output low
    delay(100); // Wait
  }
  Serial.println("Pause");
  delay(1000); // pause one second
  
 
 //digitalWrite(PIN_LED2,  LOW );
}else{
   digitalWrite(PIN_LED1,  LOW );

int iState2 = digitalRead(PIN_PUSHBUTTON2);  //ao
if(!iState2 ){
  if(cnt_str == 0){
  Serial.println("逆回転方向をセット");
cnt_str = 1;
  digitalWrite(4,LOW); // Set Dir High → 回転方向をセット

  }

for(x = 0; x < 200; x++) // Loop 200 times
  {
      digitalWrite(PIN_LED2,  HIGH );
    digitalWrite(5,HIGH); // Output high
    delay(10); // Wait
    digitalWrite(5,LOW); // Output low
    delay(100); // Wait
  }
  Serial.println("Pause");
  delay(1000); // pause one second
  
  
 // Serial.println("$");
//   digitalWrite(PIN_LED2,  HIGH );
}else{
 digitalWrite(PIN_LED2,  LOW );
cnt_str = 0;

}

}


    /*
    if( LOW == iState_prev1  && HIGH == iState1 )
    { // OFF→ON時
        unsigned long ulMillis = millis();
        
        if( DEBOUNCEDELAY1 < (ulMillis - ulMillis_prev1) )
        { // デバウンス時間よりも経過しているならば、正当な「OFF→ON」とみなす
            onPress1();
        }
        
        ulMillis_prev1 = ulMillis;
    }
    
    iState_prev1 = iState1;

int iState2 = digitalRead(PIN_PUSHBUTTON2);
    
    if( LOW == iState_prev2  && HIGH == iState2 )
    { // OFF→ON時
        unsigned long ulMillis = millis();
        
        if( DEBOUNCEDELAY2 < (ulMillis - ulMillis_prev2) )
        { // デバウンス時間よりも経過しているならば、正当な「OFF→ON」とみなす
            onPress2();
        }
        
        ulMillis_prev2 = ulMillis;
    }
    
    iState_prev2 = iState2;
*/

}

void onPress1()
{
    bLedState1 = !bLedState1;
    digitalWrite(PIN_LED1, bLedState1 ? HIGH : LOW );
}
void onPress2()
{
    bLedState2 = !bLedState2;
    digitalWrite(PIN_LED2, bLedState2 ? HIGH : LOW );
}