From 4d13262ec0b512b53b2504efc4b903ffafc359de Mon Sep 17 00:00:00 2001 From: 0xFEEDC0DE64 Date: Mon, 1 Jun 2020 21:02:55 +0200 Subject: [PATCH 1/2] Implemented mosfet toggles --- .travis.yml | 1 + platformio.ini | 37 ++++++++++----------------- src/displays/menus/mainmenu.h | 4 +++ src/displays/menus/mosfetsmenu.h | 43 ++++++++++++++++++++++++++++++++ src/main.cpp | 10 ++++++++ src/screens.h | 7 ++++++ src/texts.h | 7 ++++++ 7 files changed, 85 insertions(+), 24 deletions(-) create mode 100644 src/displays/menus/mosfetsmenu.h diff --git a/.travis.yml b/.travis.yml index 5fad96e..ec78eb2 100644 --- a/.travis.yml +++ b/.travis.yml @@ -22,6 +22,7 @@ env: - BUILD_CONFIG=aveexy_usb - BUILD_CONFIG=testbench_usb - BUILD_CONFIG=mickdermack_usb + - BUILD_CONFIG=peter_usb script: - platformio run -e $BUILD_CONFIG diff --git a/platformio.ini b/platformio.ini index 3b88f09..8f23ee6 100644 --- a/platformio.ini +++ b/platformio.ini @@ -61,32 +61,17 @@ build_flags = -DPINS_GAS=35 -DPINS_BREMS=33 -DFEATURE_OTA - -[peters_platine_reversed] -build_flags = - -DILI9341_DRIVER=1 - -DTFT_MOSI=13 - -DTFT_SCLK=15 - -DTFT_CS=14 - -DTFT_DC=12 - -DTFT_RST=2 - -DSPI_FREQUENCY=27000000 - -DSPI_READ_FREQUENCY=20000000 - -DSPI_TOUCH_FREQUENCY=2500000 - -DDEFAULT_SWAPSCREENBYTES=false - -DPINS_RX1=4 - -DPINS_TX1=5 - -DPINS_RX2=25 - -DPINS_TX2=26 - -DPINS_GAS=33 - -DPINS_BREMS=35 - -DFEATURE_OTA + -DFEATURE_MOSFETS + -DPINS_MOSFET0=18 + -DPINS_MOSFET1=19 + -DPINS_MOSFET2=21 [feedc0de] build_flags = ${common_env_data.build_flags} ${peters_platine.build_flags} + ${default_limits.build_flags} -DDEVICE_PREFIX=bobbyquad -DFEATURE_WEBSERVER -DFEATURE_3WIRESW @@ -102,7 +87,6 @@ build_flags = ; -DPINS_ROTARY_CLK=16 ; -DPINS_ROTARY_DT=27 ; -DPINS_ROTARY_SW=0 - ${default_limits.build_flags} -DDEFAULT_GASMIN=800 -DDEFAULT_GASMAX=3700 -DDEFAULT_BREMSMIN=1300 @@ -202,6 +186,7 @@ upload_port = /dev/ttyUSB* build_flags = ${common_env_data.build_flags} ${peters_platine.build_flags} + ${default_limits.build_flags} -DDEVICE_PREFIX=bobbyquad -DFEATURE_WEBSERVER ; -DFEATURE_3WIRESW @@ -217,7 +202,6 @@ build_flags = ; -DPINS_ROTARY_CLK=16 ; -DPINS_ROTARY_DT=27 ; -DPINS_ROTARY_SW=0 - ${default_limits.build_flags} -DDEFAULT_GASMIN=800 -DDEFAULT_GASMAX=3700 -DDEFAULT_BREMSMIN=1300 @@ -289,6 +273,7 @@ build_flags = ${common_env_data.build_flags} -DDEVICE_PREFIX=bobbyquad -DFEATURE_WEBSERVER + ${default_limits.build_flags} -DUSER_SETUP_LOADED=1 -DRPI_DISPLAY_TYPE -DILI9486_DRIVER @@ -319,7 +304,6 @@ build_flags = ; -DPINS_ROTARY_CLK=4 ; -DPINS_ROTARY_DT=16 ; -DPINS_ROTARY_SW=17 - ${default_limits.build_flags} -DDEFAULT_GASMIN=0 -DDEFAULT_GASMAX=4095 -DDEFAULT_BREMSMIN=0 @@ -330,8 +314,13 @@ build_flags = [peter] build_flags = ${common_env_data.build_flags} - ${peters_platine_reversed.build_flags} + ${peters_platine.build_flags} ${default_limits.build_flags} +; swapped gas brems + -UPINS_GAS + -DPINS_GAS=33 + -UPINS_BREMS + -DPINS_BREMS=35 -DDEVICE_PREFIX=bobbycar -DFEATURE_WEBSERVER -DDEFAULT_GASMIN=1000 diff --git a/src/displays/menus/mainmenu.h b/src/displays/menus/mainmenu.h index 99f7923..753184f 100644 --- a/src/displays/menus/mainmenu.h +++ b/src/displays/menus/mainmenu.h @@ -25,6 +25,7 @@ class GraphsMenu; class BmsMenu; class SettingsMenu; class Lockscreen; +class MosfetsMenu; class DemosMenu; class PoweroffDisplay; class DebugMenu; @@ -45,6 +46,9 @@ class MainMenu : #endif makeComponent, SwitchScreenAction, StaticMenuItemIcon<&icons::settings>>, makeComponent, SwitchScreenAction, StaticMenuItemIcon<&icons::lock>>, +#ifdef FEATURE_MOSFETS + makeComponent, SwitchScreenAction, StaticMenuItemIcon<&icons::lock>>, // TODO icon +#endif makeComponent, SwitchScreenAction, StaticMenuItemIcon<&icons::demos>>, makeComponent, SwitchScreenAction, StaticMenuItemIcon<&icons::poweroff>>, makeComponent, RebootAction, StaticMenuItemIcon<&icons::reboot>>, diff --git a/src/displays/menus/mosfetsmenu.h b/src/displays/menus/mosfetsmenu.h new file mode 100644 index 0000000..61299a9 --- /dev/null +++ b/src/displays/menus/mosfetsmenu.h @@ -0,0 +1,43 @@ +#pragma once + +#include "menudisplay.h" +#include "staticmenudefinition.h" +#include "utils.h" +#include "menuitem.h" +#include "actions/toggleboolaction.h" +#include "actions/switchscreenaction.h" +#include "checkboxicon.h" +#include "icons/back.h" +#include "texts.h" + +namespace { +class MainMenu; +} + +namespace { +#ifdef FEATURE_MOSFETS +template +class GPIOAccessor : public virtual AccessorInterface +{ +public: + bool getValue() const override { return digitalRead(PIN); } + void setValue(bool value) override { digitalWrite(PIN, value ? HIGH : LOW); } +}; + +using Mosfet0Accessor = GPIOAccessor; +using Mosfet1Accessor = GPIOAccessor; +using Mosfet2Accessor = GPIOAccessor; + +class MosfetsMenu : + public MenuDisplay, + public StaticText, + public BackActionInterface>, + public StaticMenuDefinition< + makeComponent, ToggleBoolAction, CheckboxIcon, Mosfet0Accessor>, + makeComponent, ToggleBoolAction, CheckboxIcon, Mosfet1Accessor>, + makeComponent, ToggleBoolAction, CheckboxIcon, Mosfet2Accessor>, + makeComponent, SwitchScreenAction, StaticMenuItemIcon<&icons::back>> + > +{}; +#endif +} diff --git a/src/main.cpp b/src/main.cpp index 2fae159..4e865e4 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -57,6 +57,16 @@ void setup() initRotary(); #endif +#ifdef FEATURE_MOSFETS + pinMode(PINS_MOSFET0, OUTPUT); + pinMode(PINS_MOSFET1, OUTPUT); + pinMode(PINS_MOSFET2, OUTPUT); + + digitalWrite(PINS_MOSFET0, LOW); + digitalWrite(PINS_MOSFET1, LOW); + digitalWrite(PINS_MOSFET2, LOW); +#endif + settings = presets::defaultSettings; if (settingsSaver.init()) diff --git a/src/screens.h b/src/screens.h index 22d5033..ca5094c 100644 --- a/src/screens.h +++ b/src/screens.h @@ -22,6 +22,7 @@ #include "displays/menus/mainmenu.h" #include "displays/menus/tempomatmodesettingsmenu.h" #include "displays/menus/modessettingsmenu.h" +#include "displays/menus/mosfetsmenu.h" #include "displays/menus/motorfeedbackdebugmenu.h" #include "displays/menus/motorstatedebugmenu.h" #include "displays/menus/presetsmenu.h" @@ -82,6 +83,9 @@ union X { MainMenu mainMenu; TempomatModeSettingsMenu tempomatModeSettingsMenu; ModesSettingsMenu modesSettingsMenu; +#ifdef FEATURE_MOSFETS + MosfetsMenu mosfetsMenu; +#endif FrontLeftMotorStateDebugMenu frontLeftMotorStateDebugMenu; FrontRightMotorStateDebugMenu frontRightMotorStateDebugMenu; BackLeftMotorStateDebugMenu backLeftMotorStateDebugMenu; @@ -221,6 +225,9 @@ template<> decltype(displays.limitsSettingsMenu) & template<> decltype(displays.mainMenu) &getRefByType() { return displays.mainMenu; } template<> decltype(displays.tempomatModeSettingsMenu) &getRefByType() { return displays.tempomatModeSettingsMenu; } template<> decltype(displays.modesSettingsMenu) &getRefByType() { return displays.modesSettingsMenu; } +#ifdef FEATURE_MOSFETS +template<> decltype(displays.mosfetsMenu) &getRefByType() { return displays.mosfetsMenu; } +#endif template<> decltype(displays.frontLeftMotorStateDebugMenu) &getRefByType() { return displays.frontLeftMotorStateDebugMenu; } template<> decltype(displays.frontRightMotorStateDebugMenu) &getRefByType() { return displays.frontRightMotorStateDebugMenu; } template<> decltype(displays.backLeftMotorStateDebugMenu) &getRefByType() { return displays.backLeftMotorStateDebugMenu; } diff --git a/src/texts.h b/src/texts.h index 816ce5c..62de1f3 100644 --- a/src/texts.h +++ b/src/texts.h @@ -55,6 +55,7 @@ constexpr char TEXT_GRAPHS[] = "Graphs"; //constexpr char TEXT_BMS[] = "BMS"; constexpr char TEXT_SETTINGS[] = "Settings"; constexpr char TEXT_LOCKVEHICLE[] = "Lock vehicle"; +constexpr char TEXT_MOSFETS[] = "Mosfets"; constexpr char TEXT_DEMOS[] = "Demos"; constexpr char TEXT_POWEROFF[] = "Poweroff"; constexpr char TEXT_REBOOT[] = "Reboot"; @@ -209,6 +210,12 @@ constexpr char TEXT_TEMPOMATMODESETTINGS[] = "Tempomat mode settings"; //constexpr char TEXT_GAMETRAKMODESETTINGS[] = "Gametrak mode settings"; //constexpr char TEXT_BACK[] = "Back"; +//MosfetsMenu +//constexpr char TEXT_MOSFETS[] = "Mosfets"; +constexpr char TEXT_MOSFET0[] = "Mosfet0"; +constexpr char TEXT_MOSFET1[] = "Mosfet1"; +constexpr char TEXT_MOSFET2[] = "Mosfet2"; + //TempomatModeSettingsMenu //constexpr char TEXT_TEMPOMATMODESETTINGS[] = "Tempomat mode settings"; //constexpr char TEXT_SETCONTROLTYPE[] = "Set control type"; From 130db0880ab95a177538714e0f007383e425b53e Mon Sep 17 00:00:00 2001 From: 0xFEEDC0DE64 Date: Mon, 1 Jun 2020 21:13:25 +0200 Subject: [PATCH 2/2] Fixed peters gas/brems swap --- platformio.ini | 23 ++++++++++++++--------- 1 file changed, 14 insertions(+), 9 deletions(-) diff --git a/platformio.ini b/platformio.ini index 8f23ee6..2f4d29a 100644 --- a/platformio.ini +++ b/platformio.ini @@ -42,7 +42,7 @@ build_flags = -DDEFAULT_FIELDWEAKMAX=5 -DDEFAULT_FIELDADVMAX=40 -[peters_platine] +[peters_platine_common] build_flags = -DILI9341_DRIVER=1 -DTFT_MOSI=13 @@ -58,14 +58,24 @@ build_flags = -DPINS_TX1=5 -DPINS_RX2=25 -DPINS_TX2=26 - -DPINS_GAS=35 - -DPINS_BREMS=33 -DFEATURE_OTA -DFEATURE_MOSFETS -DPINS_MOSFET0=18 -DPINS_MOSFET1=19 -DPINS_MOSFET2=21 +[peters_platine] +build_flags = + ${peters_platine_common.build_flags} + -DPINS_GAS=35 + -DPINS_BREMS=33 + +[peters_platine_reversed] +build_flags = + ${peters_platine_common.build_flags} + -DPINS_GAS=33 + -DPINS_BREMS=35 + [feedc0de] build_flags = @@ -314,13 +324,8 @@ build_flags = [peter] build_flags = ${common_env_data.build_flags} - ${peters_platine.build_flags} + ${peters_platine_reversed.build_flags} ${default_limits.build_flags} -; swapped gas brems - -UPINS_GAS - -DPINS_GAS=33 - -UPINS_BREMS - -DPINS_BREMS=35 -DDEVICE_PREFIX=bobbycar -DFEATURE_WEBSERVER -DDEFAULT_GASMIN=1000