// https://github.com/MicroBahner/MobaTools/blob/master/examples/_Stepper/Stepper_02/Stepper_02.ino

/*  Demo zum Anschluß eines unipolaren Stepmotors 28BYJ-48
 *  mit Verwendung einer Beschleunigungsrampe
 *  Dieses Beispiel läuft nicht auf ESP8266
 *      Danke an 'agmue' vom arduino.cc Forum für dieses Beispiel
*/
/* Demo for connecting a unipolar stepper motor 28BYJ-48 with use of an acceleration ramp
   This example does not run on ESP8266
*/
#include <MobaTools.h>
MoToStepper Step1(4096);           // HALFSTEP ist default
MoToTimer   delayTime;


void setup() {
  Step1.attach( 4, 5, 6, 7 ); // Anschluß an digitalen Ausgängen; Treiber IN1,IN2,IN3,IN4
  //Step1.attach( SPI_1 );        // alternativ über SPI
  Step1.setSpeed( 240 );        // = 24 U/Min
  Step1.setRampLen(500);        // Beschleunigung
  Step1.setZero();              // Referenzpunkt für Motor 1 setzen
}

void loop() {
  static byte status;               // Schrittkettenstatus

  switch (status) {
    case 0:
      if ( !delayTime.running() ) {     // warten bis delay-Zeit abgelaufen ist
        Step1.write(360);                 // 1 Umdrehung zur�ck
        status++;
      }
      break;
    case 1:
      if ( !Step1.moving() ) {          // warten bis die Bewegung abgeschlossen ist
        delayTime.setTime(1000);        // Timer aufziehen
        status++;
      }
      break;
    case 2:
      if ( !delayTime.running() ) {     // warten bis delay-Zeit abgelaufen ist
        Step1.write(0);                 // 1 Umdrehung zur�ck
        status++;
      }
      break;
    case 3:
      if ( !Step1.moving() ) {          // warten bis die Bewegung abgeschlossen ist
        delayTime.setTime(1000);        // Timer aufziehen
        status++;
      }
      break;
    default:
      status = 0;
  }
  simLimitSwitches();
}

void simLimitSwitches(void){
  const byte L1Pin = 13;
  const byte L2Pin = 12;
  static bool initialized = false;
  if(! initialized){
    initialized = true;
    pinMode(L1Pin, OUTPUT);
    pinMode(L2Pin, OUTPUT);
  }
  if(digitalRead(L1Pin) == HIGH && Step1.readSteps() < 100){
    digitalWrite(L1Pin,LOW);
  }
    if(digitalRead(L1Pin) == LOW && Step1.readSteps() >= 100){
    digitalWrite(L1Pin,HIGH);
  }

  if(digitalRead(L2Pin) == HIGH && Step1.readSteps() >= 2000){
    digitalWrite(L2Pin,LOW);
  }
    if(digitalRead(L2Pin) == LOW && Step1.readSteps() < 2000){
    digitalWrite(L2Pin,HIGH);
  }
}
L298N Breakout
ScopeBreakout