From 984c1891e1227d962df700baae629b36dd1b65f3 Mon Sep 17 00:00:00 2001 From: Alexander Klein Date: Wed, 9 Aug 2023 14:37:22 +0200 Subject: [PATCH] run callback in digatalControl only after rotation finished --- src/driveModi/Modi/ManualControl/manualControl.cpp | 7 ++++++- src/driveModi/Modi/ManualControl/manualControl.h | 3 ++- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/src/driveModi/Modi/ManualControl/manualControl.cpp b/src/driveModi/Modi/ManualControl/manualControl.cpp index a8f3643..a02c561 100644 --- a/src/driveModi/Modi/ManualControl/manualControl.cpp +++ b/src/driveModi/Modi/ManualControl/manualControl.cpp @@ -85,5 +85,10 @@ void ManualControl::digitalControl() { this->moveControl->setRotationSpeed(0); if (this->directionChangeWrapper && (x > 120 || x < -120)) - this->directionChangeWrapper->action(); + this->lastLoopTurned = true; + else if (this->lastLoopTurned) { + if (this->directionChangeWrapper) + this->directionChangeWrapper->action(); + this->lastLoopTurned = false; + } } diff --git a/src/driveModi/Modi/ManualControl/manualControl.h b/src/driveModi/Modi/ManualControl/manualControl.h index ad70d2d..35d242d 100644 --- a/src/driveModi/Modi/ManualControl/manualControl.h +++ b/src/driveModi/Modi/ManualControl/manualControl.h @@ -103,8 +103,9 @@ class ManualControl : public DriveModi { void analogControl(); void digitalControl(); - uint32_t lastMillis = 0; + bool lastLoopTurned = false; uint8_t delay = 10; + uint32_t lastMillis = 0; double max_speed = 1; double max_rotation = 7; CalibrateCompass* caliCompass = nullptr;