Schrittmotor mit einem Button bewegen

Liebe Community

Ich versuche mit dem von mir zusammen gebastelten Code unten, einen Schrittmotor zu betreiben. Und zwar soll dieser durch drücken des Schalters (switchPin 4) ausgelöst eine bestimmte Anzahl von Steps - hier im Beispiel 10 abschreiten und danach wieder stehen bleiben, bis zum nächsten drücken des Schalters.

Nun läuft mein Sketch soweit, dass beim drücken des Schalters die einzelnen 10 Schrite absolviert werden, aber danach nicht stehen bleiben , sondern den Loop endlos wiederholen. Was übersehe ich da?

#include <Stepper.h>

int button1 = 4; //button pin, connect to ground to move servo
bool press1 ;
bool oldpress1 = false;
bool sweep1state = false;

int switchPin = 4;              // switch is connected to pin 4
int val;                        // variable for reading the pin status
int buttonState;                // variable to hold the button state
int buttonPresses = 0;

int stepCount = 0;

const int stepsPerRevolution = 4;  // change this to fit the number of steps per revolution
// for your motor

// initialize the stepper library on pins 8 through 11:
Stepper myStepper(stepsPerRevolution, 8, 9, 10, 11);

void setup() {

   pinMode(button1, INPUT_PULLUP);
   
  // set the speed at 40 rpm:
  
  myStepper.setSpeed(80);
  
  // initialize the serial port:
  
  Serial.begin(9600);
  #define STEPS 48
}

void loop() {

   press1 = digitalRead(button1);  // check button1
  if (press1 == LOW && oldpress1 == HIGH) // test if button has been pressed
  {
    sweep1state = HIGH;         // if yes
  }
  if (sweep1state == HIGH)    
  
  {  
 myStepper.step(10);
  Serial.print("steps:");
  Serial.println(stepCount);
  stepCount++;
  delay(1000); 
  }
 
 oldpress1 = press1; 

  
}

Hallo,

wozu ist das sweep1state = HIGH; gut ? das muss irgendwann ja mal wieder auh LOW , sonst gehts immer weiter

Heinz

Habe den Fehler selbst gefunden:

Hatte den sweep1state = LOW; vergessen!

myStepper.step(10);
Serial.print("steps:");
Serial.println(stepCount);
stepCount++;
sweep1state = LOW;
}

Rentner:
Hallo,

wozu ist das sweep1state = HIGH; gut ? das muss irgendwann ja mal wieder auh LOW , sonst gehts immer weiter

Heinz

Ja, genau richtig. Hatte das völlig übersehen.