From 561c413cf9596b9d611fed5a8a0db603f291af4d Mon Sep 17 00:00:00 2001 From: Mathijs Batstra Date: Wed, 9 Sep 2026 14:21:14 +0200 Subject: [PATCH 1/2] fix compile error on case-sensitive filesystems --- dualpid/src/outputdrv.cpp | 2 +- dualpid/src/outputdrv.h | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/dualpid/src/outputdrv.cpp b/dualpid/src/outputdrv.cpp index a72e91e..875c46f 100644 --- a/dualpid/src/outputdrv.cpp +++ b/dualpid/src/outputdrv.cpp @@ -190,7 +190,7 @@ void UnitSSRDriver::_off() { _ssr.setRelay(_inverted); }; #endif // OUTPUTDRV_M5UNIT_SSR_ENABLED #ifdef OUTPUTDRV_M5UNIT_HBRIDGE_ENABLED -#include +#include bool M5UnitHbridgeDriver::begin(const output_driver_config_t &cfg, const int32_t channel_id) { uint8_t addr = cfg.m5unit_hbridge.i2c_addr ? (uint8_t)cfg.m5unit_hbridge.i2c_addr : M5UNIT_HBRIDGE_ADDRESS_DEFAULT; diff --git a/dualpid/src/outputdrv.h b/dualpid/src/outputdrv.h index 9d2c37c..a8e7ded 100644 --- a/dualpid/src/outputdrv.h +++ b/dualpid/src/outputdrv.h @@ -185,7 +185,7 @@ class UnitSSRDriver : public SlowPWMBase #endif // OUTPUTDRV_M5UNIT_SSR_ENABLED #ifdef OUTPUTDRV_M5UNIT_HBRIDGE_ENABLED -#include +#include class M5UnitHbridgeDriver : public SlowPWMBase { public: @@ -200,4 +200,4 @@ class M5UnitHbridgeDriver : public SlowPWMBase }; #endif // OUTPUTDRV_M5UNIT_HBRIDGE_ENABLED -#endif // __OUTPUT_H \ No newline at end of file +#endif // __OUTPUT_H From adcbade723872d390feb08c710db81a4c8976a08 Mon Sep 17 00:00:00 2001 From: Mathijs Batstra Date: Wed, 9 Sep 2026 14:28:02 +0200 Subject: [PATCH 2/2] add menu entry to set sensor input offset --- dualpid/src/pidloop.cpp | 2 +- dualpid/src/pidloop.h | 4 +++- dualpid/src/screens/menu.cpp | 1 + 3 files changed, 5 insertions(+), 2 deletions(-) diff --git a/dualpid/src/pidloop.cpp b/dualpid/src/pidloop.cpp index 69dae47..7c5fc14 100644 --- a/dualpid/src/pidloop.cpp +++ b/dualpid/src/pidloop.cpp @@ -307,7 +307,7 @@ void PIDLoop::do_input() return; }; - double read = _inputdrv->read(); + double read = _inputdrv->read() + _settings.input_offset; // reset filter if previous was NaN if(isnan(_input_value)) diff --git a/dualpid/src/pidloop.h b/dualpid/src/pidloop.h index 2f97e29..e120738 100644 --- a/dualpid/src/pidloop.h +++ b/dualpid/src/pidloop.h @@ -58,9 +58,11 @@ class PIDLoop: private NonCopyable int32_t _reserved; // left from previous double lock_window int32_t lock_time; double input_filter; + double input_offset; int32_t input_drv; // input_driver_config_t input_cfg; int32_t fixed_output_value; + double temp_offset_c; } settings_t; PIDLoop(uint32_t id, PIDLoop::settings_t& s); @@ -109,4 +111,4 @@ class PIDLoop: private NonCopyable bool _outputdrv_ok; }; -#endif // __PIDLOOP_H \ No newline at end of file +#endif // __PIDLOOP_H diff --git a/dualpid/src/screens/menu.cpp b/dualpid/src/screens/menu.cpp index f786a22..759c007 100644 --- a/dualpid/src/screens/menu.cpp +++ b/dualpid/src/screens/menu.cpp @@ -209,6 +209,7 @@ MenuScreen::MenuScreen(SooghGUI& g) : Screen(g) sub->addSeparator("Input"); sub->addSelector("Sensor", &set.input_drv, input_drivers)->onChange(set_need_reboot); sub->addSpinbox("Input Filter", &set.input_filter, 0, 1, 2); + sub->addSpinbox("Input Offset", &set.input_offset, -99, 99, 2); sub->addSeparator("PID"); sub->addSelector("Looptime", &set.looptime, pid_loop_times); sub->addSelector("Lock Time", &set.lock_time, lock_times);