danke für den tipp...
das werde ich ausgiebig testen , eigentlich müsste man die restlichen konfigurationsbefehle für die Stepper ähnlich manipulieren können, oder?Ich denke schon, dass es geht.
Am besten packst du z.B. trpm in nen eigenes Unterprogramm, und rufst das dann bei Bedarf auf:
void drehZahl(float a,b,c,d)
{
stepper[stepper_VL].setRPM(a);
stepper[stepper_HL].setRPM(b);
stepper[stepper_HR].setRPM(c);
stepper[stepper_VR].setRPM(d);
}
An das Unterprogramm schickst du dann einfach die gewünschten Werte:
drehZahl(12.2, 17.45, 12.92, 14);
glaube ich nicht, dass die Stepper nicht nachkommen, vor allem ist es ja nur der neuer, ausgewechselter:Was deine verlorenen Schritte angeht: kann es sein, dass das Programm einfach zu schnell läuft, so dass die Motoren einfach nicht nachkommen?
das ist die loop:
und "fahrt_ausfuehren()" und "fahrt fertig()" verwenden ja schon "isDone":Code:void loop() { lcd.setBacklight(LOW); hindernis_vorh(); { alle_stepper_vorwaerts(); bewegung = bewegung + 1; fahrt_ausfuehren(); } if (bewegung >= 20) { lcd.setBacklight(HIGH); //previous_millis = current_millis; bewegung = 0; for (pos_1 = 0; pos_1 < 180; pos_1 += 1) { myservo_1.write(pos_1); delay(15); myservo_2.write(pos_1); delay(15); } for (pos_1 = 180; pos_1 >= 1; pos_1 -= 1) { myservo_1.write(pos_1); delay(15); myservo_2.write(pos_1); delay(15); } myservo_1.write(90); delay(15); myservo_2.write(90); delay(15); lcd.setBacklight(LOW); } }
Code:boolean fahrt_fertig() { return stepper[stepper_VL].isDone() && stepper[stepper_HL].isDone() && stepper[stepper_VR].isDone() && stepper[stepper_HR].isDone(); } void fahrt_ausfuehren() { while ( ! fahrt_fertig() ) { for (idx = stepper_VL; idx < stepper_MAX; idx++) { stepper[idx].run(); // delay(1); } } }
Lesezeichen