Problem bei einem Sketch. Kann mir jemand helfen?

Hallo an die Arduino-Community,

ich bin noch sehr neu auf diesem Gebiet und habe ein Problem bei einem Sketch. Ich hoffe ihr könnt mir weiterhelfen. Würde mich über jede Antwort freuen.

Nun aber erstmal der Sketch:

#include <Stepper.h>
int SPMU = 2048;
Stepper stepper1(SPMU,8,10,9,11);
Stepper stepper2(SPMU,4,6,5,7);


void setup() {
 stepper1.setSpeed(15);
 stepper2.setSpeed(2);
 pinMode(2,INPUT);
 

}

void loop() {
int B = 2;
while (B == 2){

 
int Schalterzustand = digitalRead(2);


if (Schalterzustand == 1){    
 stepper1.step(2048);
 delay(9);
   stepper1.step(2048);
 delay(9);                  //Runterfahren
   stepper1.step(2048);
 delay(9);
 stepper1.step(1750 );
 delay(8000);


 
  stepper1.step(-2048);
 delay(9);
   stepper1.step(-2048);
 delay(9);
   stepper1.step(-2048);  //Hochheben
 delay(9);
 stepper1.step(-1750);
 delay(3000);



 stepper2.step(-265); 
 delay(3000);             //Drehen



  stepper1.step(2048);
 delay(9);
   stepper1.step(2048);
 delay(9);
   stepper1.step(2048);    //Ablassen
 delay(9);
 stepper1.step(2048);
 delay(9);
 stepper1.step(2048);
 delay(9); 
 stepper1.step( 900);
 delay(3000);



 stepper2.step(80);   //Rausdrehen
 delay(3000);

 

 stepper1.step(-2048);
 delay(9);
   stepper1.step(-2048);
 delay(9);
   stepper1.step(-2048);
 delay(9);
 stepper1.step(-2048);     //Hochfahren
 delay(9);
 stepper1.step(-2048);
 delay(9); 
 stepper1.step(-500);
 delay(3000);

 stepper2.step(185);   //Zurückdrehen
 delay(2000);


stepper1.step(2048);
delay(9);
 stepper1.step(2048);  //2te Fracht
delay(9);
stepper1.step(2048);   //Runterfahren
delay(9);
stepper1.step(1510);
delay(8000);

stepper1.step(-2048);
delay(9);
stepper1.step(-2048);
delay(9);                //Hochheben
stepper1.step(-2048);
delay(9);
stepper1.step(-1400);
delay(2000);




stepper2.step(-180);      //Drehen
delay(2000);



stepper1.step(2048);
 delay(9);
   stepper1.step(2048);
 delay(9);
   stepper1.step(2048);    //Ablassen
 delay(9);
 stepper1.step(2048);
 delay(9);
 stepper1.step(2048);
 delay(9); 
 stepper1.step(860);
 delay(3000);



 stepper2.step(50);
 delay(9);           //Rausdrehen
 int B = 3;

}
}


int A = 1;                                                                Und hier klappt es nicht so richtig.
                                                                             Nach den beiden geschweiften
                                                                             Klammern soll der Arduino auf einen
                                                                             Knopfdruck warten. Dies passiert aber nicht 
                                                                             sondern er springt wieder an den Anfang.

while ( A == 1 ){

int Schalterzustand1 = digitalRead(2);


if (Schalterzustand1 == 1){

stepper2.step(-60);     //Einhaken
delay(3000);


stepper1.step(-2048);
 delay(9);
   stepper1.step(-2048);
 delay(9);
   stepper1.step(-2048);
 delay(9);
 stepper1.step(-2048);     //Hochheben
 delay(9);
 stepper1.step(-2048);
 delay(9); 
 stepper1.step(-500);
 delay(3000);


 stepper2.step(190);      //Drehen
 delay(2000);


 
stepper1.step(2048);
 delay(9);
   stepper1.step(2048);
 delay(9);                  //Runterlassen
   stepper1.step(2048);
 delay(9);
 stepper1.step(1650);
 delay(8000);


stepper2.step(40);
delay(1000);                ///Rausdrehen



stepper1.step(-2048);
 delay(9);
   stepper1.step(-2048);
 delay(9);
   stepper1.step(-2048);  //Hochziehen
 delay(9);
 stepper1.step(-1800);
 delay(3000);


 stepper2.step(-205);
 delay(15);                      //Drehen


  stepper1.step(2048);
 delay(9);
   stepper1.step(2048);
 delay(9);
   stepper1.step(2048);    //Runterlassen
 delay(9);
 stepper1.step(2048);
 delay(9);
 stepper1.step(2048);
 delay(9); 
 stepper1.step(700);
 delay(3000);


 stepper2.step(-60);          //Eindrehen
 delay(1000);



  stepper1.step(-2048);
 delay(9);
   stepper1.step(-2048);
 delay(9);
   stepper1.step(-2048);
 delay(9);
 stepper1.step(-2048);     //Hochheben
 delay(9);
 stepper1.step(-2048);
 delay(9); 
 stepper1.step(-500);
 delay(3000);

stepper2.step(260);
delay(3000);                     //Drehen



stepper1.step(2048);
 delay(9);
   stepper1.step(2048);
 delay(9);                  //Runterlassen
   stepper1.step(2048);
 delay(9);
 stepper1.step(1650);
 delay(8000);


   stepper2.step(50);
   delay(1000);         //Rausdrehen


 stepper1.step(-2048);
 delay(9);
   stepper1.step(-2048);    //Hochfahren
 delay(9);


 stepper2.step(-60);
 delay(10);                  // auf Postion drehen


 stepper1.step(-2048);  
 delay(9);                    //Hochfahren
 stepper1.step(-2000);
 int A = 0;
 delay(3000);
 
 }
}
 
}

Hat jemand eine Idee? Habe es mit der while-Schleife versucht. Etwas abenteuerlich, klappt aber immer nicht nicht.

Danke im Voraus
LG lmh111

Und wir haben Probleme den Sketch richtig zu lesen.
Setze den bitte in Code-Tags.

Verwende dazu die Schaltfläche </> oben links im Editorfenster.
Das kannst du auch nachträglich machen.
Dazu den Sketch markieren und die Schaltfläche klicken.

Damit wird dieser für alle besser lesbar.

Grundsätzlich wartet der Controller nicht auf eine Eingabe.
Dann würde er ja nichts machen, das muss verhindert werden.

Wie hast du den Schalter/Knopf angeschlossen?

Du möchtest Knöpfe auswerten und 2 Motoren steuern.
Das nennt man z.B Ablaufsteuerung.

Ablaufsteuerung

Meine Standardantwort zu Ablaufsteuerungen:
Eine Stichworte Sammlung für Google Suchen:
Endlicher Automat,
State Machine,
Multitasking,
Coroutinen,
Ablaufsteuerung,
Schrittkette,
BlinkWithoutDelay,

Blink Without Delay
Der Wachmann

Multitasking Macros
Intervall Macro

Du kannst an der entsprechenden Stelle eine "if-Abfrage" einsetzen.
Sobald der gewünschte Zustand erreicht ist, wird er hinter der Abfrage weiter machen.

Da es mit dem Warten nicht funktioniert, hatte ich ja schon geschrieben.
Und die vielen delays blockieren den Ablauf total, wurde dir ja auch von combie schon geschrieben.

Hallo HotSystems,

das mit der if-Abfrage habe ich schon probiert. Das Problem ist, dass wenn die Bedingung der if-Abfrage nicht erfüllt ist, sie übersprungen wird. Und man dann wieder am Anfang steht. Oder?
LG lmh111

lmh111:
Hallo HotSystems,

das mit der if-Abfrage habe ich schon probiert. Das Problem ist, dass wenn die Bedingung der if-Abfrage nicht erfüllt ist, sie übersprungen wird. Und man dann wieder am Anfang steht. Oder?
LG lmh111

Das ist richtig und auch Sinn der Sache.

das spielt sich alles in einer Loop ab. So heißt die Hauptschleife im Sketch.

Aber ich möchte ja darauf warten, dass der Schalter gedrückt ist. Wie realisiere ich das dann? Sorry für die aus eurer Sicht wahrscheinlich "lächerlichen" Fragen. Bin aber erst 14 und beschäftige mich mit dem Arduinno erst seit ca 2 Wochen.

while(!SchalterGedrückt);

Schlechtes Beispiel.
Die Variable SchalterGedrückt ändert sich ja innerhalb der while nicht

while(digitalRead(schalterpin)); // mit pullup, Taster gg. Gnd