
Zitat von
Rabenauge
Du wirst aus dem Motorprogramm raus das Sonar auch abfragen müssen, oder?
ja sicher, hatte ich schon, habs aber bei meiner vorhergehenden frage nicht so explizit erwähnt...
Das hier ist nur eine alternative von vielen:
Code:
void alle_stepper_vorwaerts()
{
hindernis_vorh();
if (hindernis == true)
{
Serial.print("hindernisabfrage in - alle_stepper_vorwärts -");
alle_stepper_rueckwaerts();
}
else alle_stepper_vorwaerts();
vorwaerts = true;
stepper_VL.setRPM(12);
stepper_HL.setRPM(12);
stepper_HR.setRPM(12);
stepper_VR.setRPM(12);
stepper_VL.setSPR(4075.7728395);
stepper_HL.setSPR(4075.7728395);
stepper_HR.setSPR(4075.7728395);
stepper_VR.setSPR(4075.7728395);
stepper_VL.setDirection(CW);
stepper_VL.rotate(1);
stepper_HL.setDirection(CW);
stepper_HL.rotate(1);
stepper_HR.setDirection(CW);
stepper_HR.rotate(1);
stepper_VR.setDirection(CW);
stepper_VR.rotate(1);
//vorwaerts = true;
}
void alle_stepper_rueckwaerts()
{
Serial.print("fahre rückwärts nach hindernisabfrage in - alle_stepper_vorwärts -");
rueckwaerts = true;
stepper_VL.setRPM(12);
stepper_HL.setRPM(12);
stepper_HR.setRPM(12);
stepper_VR.setRPM(12);
stepper_VL.setSPR(4075.7728395);
stepper_HL.setSPR(4075.7728395);
stepper_HR.setSPR(4075.7728395);
stepper_VR.setSPR(4075.7728395);
stepper_VL.setDirection(CCW);
stepper_VL.rotate(1);
stepper_HL.setDirection(CCW);
stepper_HL.rotate(1);
stepper_HR.setDirection(CCW);
stepper_HR.rotate(1);
stepper_VR.setDirection(CCW);
stepper_VR.rotate(1);
//rueckwaerts = true;
}
- beim start MIT hindernis davor fährt er sofort nach hinten los, ausgabe im terminal:
Code:
Ping: 4 cm
fahre rückwärts nach hindernisabfrage in - alle_stepper_vorwärts -
- beim start OHNE ein hindernis davor bleibt er stehen, fährt also nicht nach vorne los, ausgabe im terminal:
Code:
Ping: 80 cm
Ping: 79 cm
Ping: 79 cm
Ping: 79 cm
das ist die ausgabe von "ping_distanz", kommt ungefähr alle 8 sekunden...
- wenn sich ihm in dieser phase ein hindernis von vorne nähert (handfläche) fährt er nach hinten los. Dann kommt im terminal:
Code:
Ping: 3 cm
fahre rückwärts nach hindernisabfrage in - alle_stepper_vorwärts -
ich schliesse daraus nur, dass er die freie strecke vor sich zwar erkennt, irgendwas hindert ihn aber daran die fahrbefehle in "alle_stepper_vorwaerts" auch auszuführen, er wartet nur (in etwas so lange, wie auch die fahrt dauern würde) und pingt...
Timingprobleme?
Lesezeichen