diff --git a/main/modes/wheelchairmode.cpp b/main/modes/wheelchairmode.cpp index d0f3dac..60148aa 100644 --- a/main/modes/wheelchairmode.cpp +++ b/main/modes/wheelchairmode.cpp @@ -33,8 +33,8 @@ void WheelchairMode::update() } else { - 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); + const int16_t left_right = configs.gasMin.value == configs.gasMax.value ? 0 : *gas; + const int16_t front_back = configs.bremsMin.value == configs.bremsMax.value ? 0 : -*brems; float local_gas = 0; float local_brems = 0; @@ -60,7 +60,7 @@ void WheelchairMode::update() local_brems = 0; } - ESP_LOGI("BOBBY", "left_right: %i, front_back: %i, local_gas: %.2f, local_brems: %.2f gas: %.2f, brems: %.2f", left_right, front_back, local_gas, local_brems, *gas, *brems); + // ESP_LOGI("BOBBY", "left_right: %i, front_back: %i, local_gas: %.2f, local_brems: %.2f gas: %.2f, brems: %.2f", left_right, front_back, local_gas, local_brems, *gas, *brems); auto gas_processed = profileSettings.defaultMode.squareGas ? (local_gas * local_gas) / 1000.f : local_gas; auto brems_processed = profileSettings.defaultMode.squareBrems ? (local_brems * local_brems) / 1000 : local_brems; @@ -240,13 +240,13 @@ void WheelchairMode::update() controller.command.left.ctrlTyp = pair.first; controller.command.left.ctrlMod = pair.second; - controller.command.left.pwm = (pwm + steer); + controller.command.left.pwm = (pwm - steer); controller.command.left.cruiseCtrlEna = false; controller.command.left.nCruiseMotTgt = 0; controller.command.right.ctrlTyp = pair.first; controller.command.right.ctrlMod = pair.second; - controller.command.right.pwm = (pwm - steer); + controller.command.right.pwm = (pwm + steer); controller.command.right.cruiseCtrlEna = false; controller.command.right.nCruiseMotTgt = 0; } diff --git a/main/potis.cpp b/main/potis.cpp index 0e32744..256ed41 100644 --- a/main/potis.cpp +++ b/main/potis.cpp @@ -10,6 +10,7 @@ #include "can.h" #endif #include "newsettings.h" +#include "utils.h" using namespace std::chrono_literals; @@ -65,6 +66,7 @@ void readPotis() raw_brems = sampleMultipleTimes(PINS_BREMS); #endif +#ifndef FEATURE_JOYSTICK if (raw_gas) gas = cpputils::mapValueClamped(*raw_gas, configs.gasMin.value, configs.gasMax.value, 0., 1000.); else @@ -73,6 +75,20 @@ void readPotis() brems = cpputils::mapValueClamped(*raw_brems, configs.bremsMin.value, configs.bremsMax.value, 0., 1000.); else brems = std::nullopt; +#else + if (raw_gas) + { + gas = map_analog_stick(configs.gasMitte.value, configs.gasMin.value, configs.gasMax.value, *raw_gas); + } + else + gas = std::nullopt; + if (raw_brems) + { + brems = map_analog_stick(configs.bremsMitte.value, configs.bremsMin.value, configs.bremsMax.value, *raw_brems); + } + else + brems = std::nullopt; +#endif #ifdef FEATURE_GAMETRAK raw_gametrakX = sampleMultipleTimes(PINS_GAMETRAKX); diff --git a/main/utils.cpp b/main/utils.cpp index b613e9a..27410e2 100644 --- a/main/utils.cpp +++ b/main/utils.cpp @@ -293,7 +293,7 @@ int16_t map_analog_stick(uint16_t middle, uint16_t start, uint16_t end, uint16_t if (raw < middle) { raw += configs.deadband.value; - end += configs.deadband.value; + start += configs.deadband.value; const auto return_val = map(raw, start, middle, -1000, 0); if (return_val > 0) return 0;