diff --git a/src/driveModi/Modi/Autopilot/autopilot.cpp b/src/driveModi/Modi/Autopilot/autopilot.cpp index 7fbbc25..8122237 100644 --- a/src/driveModi/Modi/Autopilot/autopilot.cpp +++ b/src/driveModi/Modi/Autopilot/autopilot.cpp @@ -57,16 +57,18 @@ void Autopilot::runAutopilot() { if (this->routeInfo.currentPoint >= 2 && this->state == State::GetToStartPoint) this->state = State::SelfDrivingAvailable; - if (this->state == State::SelfDrivingAvailable - && ControlPadButton::isControlPadButtonPressed(this->input, ControlPadButton::PadButton::Action)) { - this->state = State::SelfDriving; - this->updateDisplay = true; - } - - if (this->state == State::SelfDriving - && ControlPadButton::isControlPadButtonPressed(this->input, ControlPadButton::PadButton::Action)) { + if (ControlPadButton::isControlPadButtonPressed(this->input, ControlPadButton::PadButton::Action) + && millis() - this->lastAutopilotChangeMillis > this->autopilotChangeDelayMillis) { + + if (this->state == State::SelfDrivingAvailable) { + this->state = State::SelfDriving; + this->updateDisplay = true; + this->lastAutopilotChangeMillis = millis(); + } else if (this->state == State::SelfDriving) { this->state = State::SelfDrivingAvailable; this->updateDisplay = true; + this->lastAutopilotChangeMillis = millis(); + } } if (this->state == State::SelfDriving) { diff --git a/src/driveModi/Modi/Autopilot/autopilot.h b/src/driveModi/Modi/Autopilot/autopilot.h index 2af0554..e9e4577 100644 --- a/src/driveModi/Modi/Autopilot/autopilot.h +++ b/src/driveModi/Modi/Autopilot/autopilot.h @@ -126,9 +126,11 @@ class Autopilot : public ManualControl { uint8_t ntripReconnectMaxAttemps = 10; uint16_t displayUpdateDelayMillis = 1000; uint16_t reconnectNtripDelayMillis = 1000; + uint16_t autopilotChangeDelayMillis = 500; uint32_t displayUpdateLastMillis = 0; uint32_t loopLastMillis = 0; uint32_t reconnectNtripLastMillis = 0; + uint32_t lastAutopilotChangeMillis = 0; }; #endif // AUTOPILOT_H