diff --git a/main/modes/wheelchairmode.cpp b/main/modes/wheelchairmode.cpp index 1f4320d..d0f3dac 100644 --- a/main/modes/wheelchairmode.cpp +++ b/main/modes/wheelchairmode.cpp @@ -10,23 +10,11 @@ WheelchairMode wheelchairMode; void WheelchairMode::start() { Base::start(); - - copyFromSettings(); } // left_right gas // front_back brems -void WheelchairMode::copyFromSettings() -{ - m_gasMitte = configs.gasMitte.value; - m_gasMin = configs.gasMin.value; - m_gasMax = configs.gasMax.value; - m_bremsMitte = configs.bremsMitte.value; - m_bremsMin = configs.bremsMin.value; - m_bremsMax = configs.bremsMax.value; -} - void WheelchairMode::update() { auto pair = split(profileSettings.defaultMode.modelMode); @@ -45,8 +33,8 @@ void WheelchairMode::update() } else { - const auto left_right = m_gasMin == m_gasMax ? 0 : map_analog_stick(m_gasMitte, m_gasMin, m_gasMax, *raw_gas); - const auto front_back = m_bremsMin == m_bremsMax ? 0 : map_analog_stick(m_bremsMitte, m_bremsMin, m_bremsMax, *raw_brems); + const auto left_right = configs.gasMin.value == configs.gasMax.value ? 0 : map_analog_stick(configs.gasMitte.value, configs.gasMin.value, configs.gasMax.value, *raw_gas); + const auto front_back = configs.bremsMin.value == configs.bremsMax.value ? 0 : map_analog_stick(configs.bremsMitte.value, configs.bremsMin.value, configs.bremsMax.value, *raw_brems); float local_gas = 0; float local_brems = 0; diff --git a/main/modes/wheelchairmode.h b/main/modes/wheelchairmode.h index 97a6737..5e6e2bf 100644 --- a/main/modes/wheelchairmode.h +++ b/main/modes/wheelchairmode.h @@ -26,14 +26,10 @@ public: bool waitForGasLoslass{false}; bool waitForBremsLoslass{false}; - void copyFromSettings(); - private: espchrono::millis_clock::time_point m_lastTime{espchrono::millis_clock::now()}; float m_x{0}; float m_lastPwm{0}; - - int16_t m_gasMin, m_gasMax, m_bremsMin, m_bremsMax, m_gasMitte, m_bremsMitte; }; namespace modes { diff --git a/main/newsettings.h b/main/newsettings.h index 78aa258..ed2bb91 100644 --- a/main/newsettings.h +++ b/main/newsettings.h @@ -134,6 +134,7 @@ public: ConfigWrapper bremsMin {0, DoReset, MinMaxValue, "bremsMin" }; ConfigWrapper bremsMax {4096, DoReset, MinMaxValue, "bremsMax" }; ConfigWrapper bremsMitte {2048, DoReset, MinMaxValue, "bremsMiddle" }; + ConfigWrapper deadband {20, DoReset, MinMaxValue,"deadband" }; ConfigWrapper dpadDebounce {25, DoReset, {}, "dpadDebounce" }; @@ -427,6 +428,7 @@ public: x(bremsMin) \ x(bremsMax) \ x(bremsMitte) \ + x(deadband) \ \ x(dpadDebounce) \ \ diff --git a/main/utils.cpp b/main/utils.cpp index b12e19c..b613e9a 100644 --- a/main/utils.cpp +++ b/main/utils.cpp @@ -285,8 +285,15 @@ std::string local_clock_string() int16_t map_analog_stick(uint16_t middle, uint16_t start, uint16_t end, uint16_t raw) { + if (abs(raw - middle) < configs.deadband.value) + { + return 0; + } + if (raw < middle) { + raw += configs.deadband.value; + end += configs.deadband.value; const auto return_val = map(raw, start, middle, -1000, 0); if (return_val > 0) return 0; @@ -296,6 +303,8 @@ int16_t map_analog_stick(uint16_t middle, uint16_t start, uint16_t end, uint16_t } else { + raw -= configs.deadband.value; + end -= configs.deadband.value; const auto return_val = map(raw, middle, end, 0, 1000); if (return_val < 0) return 0;