ich spiel jetzt einfach mal ein bischen mit dem teil und versuche das er sich so bewegt, wie ich's will. Was ich nicht verstehe ist folgendes:
bei diesem
Code:
void zehn_ms_rechts_rotieren(void)
{
currentMillis = millis();
servo_mitte();
if (currentMillis - previousMillis > dauer_fahrt)
{
Serial.println("zehn ms rechts rotieren");
motor_hl->setSpeed(s_speed);
motor_hr->setSpeed(s_speed+1);
motor_vr->setSpeed(s_speed+1);
motor_vl->setSpeed(s_speed);
motor_hl->run(FORWARD);
motor_hr->run(BACKWARD);
motor_vr->run(BACKWARD);
motor_vl->run(FORWARD);
dauer_fahrt = 10;
}
}
void halbe_sec_rechts_rotieren(void)
{
currentMillis = millis();
servo_mitte();
if (currentMillis - previousMillis > dauer_fahrt)
{
Serial.println("halbe sec rechts rotieren");
motor_hl->setSpeed(s_speed);
motor_hr->setSpeed(s_speed+1);
motor_vr->setSpeed(s_speed+1);
motor_vl->setSpeed(s_speed);
motor_hl->run(FORWARD);
motor_hr->run(BACKWARD);
motor_vr->run(BACKWARD);
motor_vl->run(FORWARD);
dauer_fahrt = 500;
}
}
void zwei_sec_rechts_rotieren(void)
{
currentMillis = millis();
servo_mitte();
if (currentMillis - previousMillis > dauer_fahrt)
{
Serial.println("zwei sec rechts rotieren");
motor_hl->setSpeed(s_speed);
motor_hr->setSpeed(s_speed+1);
motor_vr->setSpeed(s_speed+1);
motor_vl->setSpeed(s_speed);
motor_hl->run(FORWARD);
motor_hr->run(BACKWARD);
motor_vr->run(BACKWARD);
motor_vl->run(FORWARD);
dauer_fahrt = 2000;
}
}
wobei die richtungsangaben hier nur als beispiel zu sehen sind. Aufgerufen wird das hiermit:
Code:
zwei_sec_links_rotieren();
delay(500);
zwei_sec_links_schieben();
delay(500);
zwei_sec_rueckwaerts();
delay(500);
zwei_sec_rechts_schieben();
delay(500);
zwei_sec_vorwaerts();
delay(500);
encoder_auslesen();
Serial.println(out_s);
was mich wundert ist, dass die einzelnen bewegungen, egal ob ich nun 10ms, eine halbe sekunde, oder 2 sec wähle fast gleich lang dauern. Hängt das womöglich mit den ganzen servo und printbefehlen in den funktionen zusammen?
Lesezeichen