ein gutes neues jahr 2016 allen,
hallo botty,
Deinen erklärungen konnte ich folgen, danke...
irgendwie funktioniert bei mir die erkennung ob die Stepper mit der vorgesehen einen drehung fertig sind aber nicht und ich finde keinen unterschied zu Deinen codebeispielen in meinem loop:
hier noch die ausgabe im terminal, wie man sehen kann werden zwar die if abfragen mit "rotiere links" und "rotiere rechts" erreicht, die befehle selbst aber nicht ausgeführt, daraus würde ich schliessen, dass die Stepper eben noch nicht fertig sind?Code:void loop() { hindernis_vorh(); /****************************************/ for (idx = stepper_VL; idx < stepper_MAX; idx++) { if (rueckwaerts == false && hindernis == true) { Serial.println("start - Stepper rückwärts- if-abfrage_1"); alle_stepper_rueckwaerts(); } else if (vorwaerts == false && hindernis == false) { Serial.println("start - Stepper vorwärts- else-abfrage_1"); alle_stepper_vorwaerts(); } } /*************************************/ for (idx = stepper_VL; idx < stepper_MAX; idx++) { if (rueckwaerts == false && rotate_li == false) { Serial.println("loop - rotiere_links - if-abfrage_2"); rotieren_links(); } } for (idx = stepper_VL; idx < stepper_MAX; idx++) { if (rotate_li == true && vorwaerts == false) { Serial.println("loop - alle_stepper_vorwärts - if-abfrage_3"); alle_stepper_vorwaerts(); } } for (idx = stepper_VL; idx < stepper_MAX; idx++) { if (vorwaerts == true && rotate_re == false) { Serial.println("loop - rotiere_rechts - if-abfrage_4"); rotieren_rechts(); } } for (idx = stepper_VL; idx < stepper_MAX; idx++) { if (rotate_re == true && vorwaerts == true) { Serial.println("loop - alle_stepper_vorwärts - if-abfrage_5"); alle_stepper_vorwaerts(); } } /*****************************************/ while ( ! (stepper[stepper_VL].isDone() && stepper[stepper_HL].isDone() && stepper[stepper_VR].isDone() && stepper[stepper_HR].isDone() ) ) { for (idx = stepper_VL; idx < stepper_MAX; idx++) { stepper[idx].run(); // delay(1); } } }
ergänze ich einer dieser if abfragen mit der afrage ob z.b. der "stepper_VL" fertig ist, wird der printbefehl auch übersprungen, die abfrage 2 also gar nicht ausgeführt...Code:setup_ende Ping: 83 cm start - Stepper vorwärts- else-abfrage_1 Ping: 71 cm loop - rotiere_links - if-abfrage_2 loop - rotiere_rechts - if-abfrage_4 loop - alle_stepper_vorwärts - if-abfrage_5 Ping: 82 cm loop - alle_stepper_vorwärts - if-abfrage_5 Ping: 82 cm
Code:for (idx = stepper_VL; idx < stepper_MAX; idx++) { if (stepper[stepper_VL].isDone()) if (rueckwaerts == false && rotate_li == false) { Serial.println("loop - rotiere_links - if-abfrage_2"); rotieren_links(); } }







Zitieren

Lesezeichen