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







Zitieren
Lesezeichen