Hallo,

ich hoffe, ihr empfindet meine Frage nicht als Zumutung.

Ich habe ein etwas kompliziertes Programm aber schon auf das Wesentliche reduziert , um meine Frage zu stellen.

Das ist der (so nicht lauffähige Code) ; meine Anmerkungen dazu sind fett

Code:
#include <CustomStepper.h>

CustomStepper stepper_M2(22, 24, 26, 28);  // Anschlusspinne der Motortreiber
CustomStepper stepper_M3(32, 34, 36, 38);             //

#include <SimpleTimer.h>    // einbinden der Library

SimpleTimer timer1;      // Benennung der Timer




boolean M1solldrehen = false;             // für UP Justierung
boolean M2solldrehen = true;             // für UP Justierung

boolean Zeitaus1 = true;                 // Wird false, wenn Zeit von SimpleTimer 1 abgelaufen ist

int JustPin = 14;                    // mit digital Eingang 14 wird die jeweilige Motorbewegung gestoppt
int zeitId;                          // für den SimpleTimer


void setup() {
  Serial.begin (250000);    //  diese Buadrate muss auch in der Konsole (Serieller Monitor) eingestellt sein
  while (!Serial);

  pinMode (JustPin, INPUT);               // wird nur im UP Justierung benötigt
  digitalWrite(JustPin, HIGH);            //schaltet den PullUp-Widerstand ein
}


void loop() {

    Justierung();   

//  stepper_M2.run();
//  stepper_M3.run();
  
  timer1.run();

}   //*************   ENDE  loop



//  **************************************   UP Justierung   **************************************

void Justierung() {
  static boolean Start_war = false;

  if (Zeitaus1 == false)  {    
    M1solldrehen == true;            wird nach Ablauf des Timers durchlaufen
    M2solldrehen == false;
    goto M2_Sprung;   
  }
  //  11111111111111111111111
  if (digitalRead (JustPin) == HIGH  && M1solldrehen == false)   {

                                      hier wird Spindelstepper eingeschaltet

  }
  //  2222222222222222222222222
  else if (digitalRead (JustPin) == LOW  && M1solldrehen == false)  {    //    Motor 1 justieren
    Serial.print (" 163 ");           Die Ausgabe erfolgt im Seriellen Monitor  ca. 1 s lang und ist  "163 0"
    Serial.println (Start_war);

    //  2a2a2a2a2a2a2a2a2a2a2a2a
    if (Start_war == false)  {    
      zeitId =  timer1.setInterval(1000, Zeitablauf1);    hier wird der Timer gestartet
    }
    // 2b2b2b2b2b2b2b2b2b2b2b2b2b
    else if (Start_war == true)  {                                               // Endposition erreicht
      
      Serial.println (" 170 ");      hier kommt das Programm nicht hin
    }
  }

M2_Sprung:
 
 if (stepper_M2.isDone() &&   M2solldrehen == false  &&  Zeitaus1 == false) {    //Motor 2 justieren

   Serial.println (" M2_Sprung ");

  }

}   //*************     ENDE  UP Justierung



//****************************     UP Zeitablauf1   **************************************
void Zeitablauf1() {    //  wird ausgeführt, wenn SimpleTimer timer 1 abgelaufen ist

  Zeitaus1 = false;    //

  Serial.println (" 255 ");


}     //   ***********  ENDE   UP






void  M2_fahren()  {
    
}


Ohne meine fetten Kommentare tut das Programm, was es soll. Die Konsole zeigt dann:

für 1 s

163
0
Zeitaus1 = 1
163
0
Zeitaus1 = 1
163
0
Zeitaus1 = 1
163

nach der Sekunde

163
0
255
Zeitaus1 = 0
255
255
Zeitaus1 = 0


So weit so gut!

Jetzt mein Problem:

Sobald ich diese Zeilen scharf mache:

// stepper_M2.run();
// stepper_M3.run();

funktioniert das so nicht mehr, obwohl ich sonst nichts ändere und alles was mit den Steppern M2 und M3 zu tun hat, gelöscht habe. Auf der Konsole erscheint nur noch :
Zeitaus1 = 1
163
0
und das nur einmal.

Kann es sein, dass die Librarys sich beeinflussen? Was könnte man denn dagegen tun?

Gruß
fredyxx