// Pin-Definitionen für den Schrittmotortreiber
const int stepPin = 5; // PUL+ (Takt-Signal) steuert die Schritte
const int dirPin = 6;  // DIR+ (Richtungs-Signal) steuert Vor/Zurück

void setup() {
  // Beide Pins müssen als Ausgang definiert werden
  pinMode(stepPin, OUTPUT);
  pinMode(dirPin, OUTPUT);
}

void loop() {
  // ========================================================
  // 1. VORWÄRTS FAHREN
  // ========================================================
  digitalWrite(dirPin, HIGH); // Richtung auf HIGH setzen (z. B. Uhrzeigersinn)

  // Eine Schleife, die genau 1600 Mal wiederholt wird (entspricht 1 Umdrehung)
  for(int i = 0; i < 1600; i++) {
    digitalWrite(stepPin, HIGH);        // Einen Stromimpuls starten...
    delayMicroseconds(550);             // ...kurz warten (bestimmt die Geschwindigkeit)...
    digitalWrite(stepPin, LOW);         // ...den Stromimpuls beenden...
    delayMicroseconds(550);             // ...wieder kurz warten vor dem nächsten Schritt.
  }

  delay(1000); // Am Ziel angekommen: 1 Sekunde (1000 ms) Pause machen

  // ========================================================
  // 2. RÜCKWÄRTS FAHREN
  // ========================================================
  digitalWrite(dirPin, LOW); // Richtung auf LOW ändern (Gegen-Uhrzeigersinn)

  // Wieder genau 1600 Schritte zurück zum Startpunkt fahren
  for(int i = 0; i < 1600; i++) {
    digitalWrite(stepPin, HIGH);        // Impuls EIN
    delayMicroseconds(550);             // Pause
    digitalWrite(stepPin, LOW);         // Impuls AUS
    delayMicroseconds(550);             // Pause
  }

  delay(1000); // Zurück am Startpunkt: Wieder 1 Sekunde Pause vor der nächsten Runde
}