Modificar código que controla DCmoto para que controle Nema17 con MC338870

Hola a todos

De regreso con problemas controlando motores

A qui tengo este código que me funciona muy bien controlando un motor DC

/*
 
 
 The code is written by Farshid Jafari Harandi,
 (C) Spekel, Spekel.se y modificado por cuchara con ayuda del foro arduino
 
 */
int Revers =5;       // boton de cambi de direccion 
int ledPin =  13;    // LED connected to digital pin 13
int pwmPin = 11;     // PWM Motor driver (/D2 pin pin on MC338870 motor board)
int motorPin1 = 7;   // Motor pin 1 (IN1 on MC338870 motor board)
int motorPin2 = 8;   // Motor pin 2 (IN2 on MC338870 motor board)
int pot = 0;        // Potentiometer pin on analog input 0
                    //Leave D1 and /FS and /FB unconnceted
                    //Connect the EN to +5V on Arduino board


int state = HIGH;      // the current state of the output pin
int reading;           // the current reading from the input pin
int previous = LOW;    // the previous reading from the input pin

// the follow variables are long's because the time, measured in miliseconds,
// will quickly become a bigger number than can be stored in an int.
long time = 0;         // the last time the output pin was toggled
long debounce = 200;   // the debounce time, increase if the output flickers







int val;
// The setup() method runs once, when the sketch starts

 void setup()   {         
  pinMode(Revers, INPUT);       
  pinMode(ledPin, OUTPUT); // initialize the digital pin as an output:
  pinMode(pwmPin, OUTPUT); // initialize the digital pin as an output:
  pinMode(motorPin1, OUTPUT); // initialize the digital pin as an output:
  pinMode(motorPin2, OUTPUT); // initialize the digital pin as an output:
  digitalWrite(Revers,HIGH);
   
   Serial.begin(9600);
}

// the loop() method runs over and over again,
// as long as the Arduino has power

void loop()                     
{

 
   reading = digitalRead(Revers);

  // if the input just went from LOW and HIGH and we've waited long enough
  // to ignore any noise on the circuit, toggle the output pin and remember
  // the time
  if (reading == HIGH && previous == LOW && millis() - time > debounce) {
    if (state == HIGH)
      state = LOW;
    else
      state = HIGH;

    time = millis();    
  }

  digitalWrite(ledPin, state);

  previous = reading;


val = analogRead(pot);
 val = map(val,0,1023,-255,255);
 Serial.println(val);


  if (state){
 if (val >= 0) 
  
     {
    digitalWrite(ledPin,HIGH);
    digitalWrite(motorPin1,LOW);
    digitalWrite(motorPin2,HIGH);
    analogWrite(pwmPin,val);
     }
   else
   {
    val *= -1;
    digitalWrite(ledPin,LOW);
    digitalWrite(motorPin1,HIGH);
    digitalWrite(motorPin2,LOW);
    analogWrite(pwmPin,val);
   }
  }
  if (!state)  {
    if (val >= 0) {
    digitalWrite(ledPin,HIGH);
    digitalWrite(motorPin1,HIGH);
    digitalWrite(motorPin2,LOW);
    analogWrite(pwmPin,val);
   }
   else {
    val *= -1;
    digitalWrite(ledPin,LOW);
    digitalWrite(motorPin1,LOW);
    digitalWrite(motorPin2,HIGH);
    analogWrite(pwmPin,val);
   }
  
  }
   
   delay(100);

  
   
}

lo conecto así

Lo que estoy buscan y no consigo es obtener los mismos resultado controlando un motor paso a paso nema17

probe muchas modificaciones en el código pro no creo que sean de utilidad ya que no pasa nada

Espero me puedan ayudar

de antemano gracias

:frowning: cualquier consejo es bienvenido

a qui les muesto lo que modifique básicamente encendí los pinas de salida de la placa MC338870

#define step_pin 3  // Pin 3 connected to Steps pin on EasyDriver
#define dir_pin 2   // Pin 2 connected to Direction pin
#define MS1 5       // Pin 5 connected to MS1 pin
#define MS2 4       // Pin 4 connected to MS2 pin
#define SLEEP 7     // Pin 7 connected to SLEEP pin
#define X_pin A0    // Pin A0 connected to joystick x axis

int direction;    // Variable to set Rotation (CW-CCW) of the motor
int steps = 1025; // Assumes the belt clip is in the Middle

void setup() {
   pinMode(MS1, OUTPUT);
   pinMode(MS2, OUTPUT);
   pinMode(dir_pin, OUTPUT);
   pinMode(step_pin, OUTPUT);
   pinMode(SLEEP, OUTPUT);
   
   digitalWrite(SLEEP, HIGH);  // Wake up EasyDriver
   delay(5);  // Wait for EasyDriver wake up
   

/* Configure type of Steps on EasyDriver:
// MS1 MS2
//
// LOW LOW = Full Step //
// HIGH LOW = Half Step //
// LOW HIGH = A quarter of Step //
// HIGH HIGH = An eighth of Step //
*/

   digitalWrite(MS1, LOW);      // Configures to Full Steps
   digitalWrite(MS2, LOW);    // Configures to Full Steps
   
}

void loop() {
  while (analogRead(X_pin) >= 0 && analogRead(X_pin) <= 100) {
    if (steps > 0) {
      digitalWrite(dir_pin, HIGH);  // (HIGH = anti-clockwise / LOW = clockwise)
      digitalWrite(step_pin, HIGH);
      delay(1);
      digitalWrite(step_pin, LOW);
      delay(1);
      steps--;
    }      
  }
  
    while (analogRead(X_pin) > 100 && analogRead(X_pin) <= 400) {
      if (steps < 512) {
        digitalWrite(dir_pin, LOW);  // (HIGH = anti-clockwise / LOW = clockwise)
        digitalWrite(step_pin, HIGH);
        delay(1);
         digitalWrite(step_pin, LOW);
        delay(1);
        steps++;
      }    
      if (steps > 512) {
        digitalWrite(dir_pin, HIGH);
        digitalWrite(step_pin, HIGH);
        delay(1);
         digitalWrite(step_pin, LOW);
        delay(1);
        steps--;
      }
    }    
      
    while (analogRead(X_pin) > 401 && analogRead(X_pin) <= 600) {
      if (steps < 1025) {
        digitalWrite(dir_pin, LOW);
        digitalWrite(step_pin, HIGH);
        delay(1);
         digitalWrite(step_pin, LOW);
        delay(1);
        steps++;
      }    
      if (steps > 1025) {
        digitalWrite(dir_pin, HIGH);
        digitalWrite(step_pin, HIGH);
        delay(1);
         digitalWrite(step_pin, LOW);
        delay(1);
        steps--;
      } 
    } 

    while (analogRead(X_pin) > 601 && analogRead(X_pin) <= 900) {
      if (steps < 1535) {
        digitalWrite(dir_pin, LOW);
        digitalWrite(step_pin, HIGH);
        delay(1);
         digitalWrite(step_pin, LOW);
        delay(1);
        steps++;
      }    
      if (steps > 1535) {
        digitalWrite(dir_pin, HIGH);
        digitalWrite(step_pin, HIGH);
        delay(1);
         digitalWrite(step_pin, LOW);
        delay(1);
        steps--;
      }    
    }   
   
    while (analogRead(X_pin) > 900 && analogRead(X_pin) <= 1024) {
      if (steps < 2050) {
        digitalWrite(dir_pin, LOW);
        digitalWrite(step_pin, HIGH);
        delay(1);
         digitalWrite(step_pin, LOW);
        delay(1);
        steps++;
      }
    }
}