danke für den tipp...
das werde ich ausgiebig testenIch 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);, eigentlich müsste man die restlichen konfigurationsbefehle für die Stepper ähnlich manipulieren können, oder?
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