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