Merge pull request #49 from bobbycar-graz/47-mosfets-control
Implemented mosfet toggles
This commit is contained in:
@@ -22,6 +22,7 @@ env:
|
|||||||
- BUILD_CONFIG=aveexy_usb
|
- BUILD_CONFIG=aveexy_usb
|
||||||
- BUILD_CONFIG=testbench_usb
|
- BUILD_CONFIG=testbench_usb
|
||||||
- BUILD_CONFIG=mickdermack_usb
|
- BUILD_CONFIG=mickdermack_usb
|
||||||
|
- BUILD_CONFIG=peter_usb
|
||||||
|
|
||||||
script:
|
script:
|
||||||
- platformio run -e $BUILD_CONFIG
|
- platformio run -e $BUILD_CONFIG
|
||||||
|
@@ -42,7 +42,7 @@ build_flags =
|
|||||||
-DDEFAULT_FIELDWEAKMAX=5
|
-DDEFAULT_FIELDWEAKMAX=5
|
||||||
-DDEFAULT_FIELDADVMAX=40
|
-DDEFAULT_FIELDADVMAX=40
|
||||||
|
|
||||||
[peters_platine]
|
[peters_platine_common]
|
||||||
build_flags =
|
build_flags =
|
||||||
-DILI9341_DRIVER=1
|
-DILI9341_DRIVER=1
|
||||||
-DTFT_MOSI=13
|
-DTFT_MOSI=13
|
||||||
@@ -58,35 +58,30 @@ build_flags =
|
|||||||
-DPINS_TX1=5
|
-DPINS_TX1=5
|
||||||
-DPINS_RX2=25
|
-DPINS_RX2=25
|
||||||
-DPINS_TX2=26
|
-DPINS_TX2=26
|
||||||
-DPINS_GAS=35
|
|
||||||
-DPINS_BREMS=33
|
|
||||||
-DFEATURE_OTA
|
-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]
|
[peters_platine_reversed]
|
||||||
build_flags =
|
build_flags =
|
||||||
-DILI9341_DRIVER=1
|
${peters_platine_common.build_flags}
|
||||||
-DTFT_MOSI=13
|
-DPINS_GAS=33
|
||||||
-DTFT_SCLK=15
|
-DPINS_BREMS=35
|
||||||
-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
|
|
||||||
|
|
||||||
|
|
||||||
[feedc0de]
|
[feedc0de]
|
||||||
build_flags =
|
build_flags =
|
||||||
${common_env_data.build_flags}
|
${common_env_data.build_flags}
|
||||||
${peters_platine.build_flags}
|
${peters_platine.build_flags}
|
||||||
|
${default_limits.build_flags}
|
||||||
-DDEVICE_PREFIX=bobbyquad
|
-DDEVICE_PREFIX=bobbyquad
|
||||||
-DFEATURE_WEBSERVER
|
-DFEATURE_WEBSERVER
|
||||||
-DFEATURE_3WIRESW
|
-DFEATURE_3WIRESW
|
||||||
@@ -102,7 +97,6 @@ build_flags =
|
|||||||
; -DPINS_ROTARY_CLK=16
|
; -DPINS_ROTARY_CLK=16
|
||||||
; -DPINS_ROTARY_DT=27
|
; -DPINS_ROTARY_DT=27
|
||||||
; -DPINS_ROTARY_SW=0
|
; -DPINS_ROTARY_SW=0
|
||||||
${default_limits.build_flags}
|
|
||||||
-DDEFAULT_GASMIN=800
|
-DDEFAULT_GASMIN=800
|
||||||
-DDEFAULT_GASMAX=3700
|
-DDEFAULT_GASMAX=3700
|
||||||
-DDEFAULT_BREMSMIN=1300
|
-DDEFAULT_BREMSMIN=1300
|
||||||
@@ -202,6 +196,7 @@ upload_port = /dev/ttyUSB*
|
|||||||
build_flags =
|
build_flags =
|
||||||
${common_env_data.build_flags}
|
${common_env_data.build_flags}
|
||||||
${peters_platine.build_flags}
|
${peters_platine.build_flags}
|
||||||
|
${default_limits.build_flags}
|
||||||
-DDEVICE_PREFIX=bobbyquad
|
-DDEVICE_PREFIX=bobbyquad
|
||||||
-DFEATURE_WEBSERVER
|
-DFEATURE_WEBSERVER
|
||||||
; -DFEATURE_3WIRESW
|
; -DFEATURE_3WIRESW
|
||||||
@@ -217,7 +212,6 @@ build_flags =
|
|||||||
; -DPINS_ROTARY_CLK=16
|
; -DPINS_ROTARY_CLK=16
|
||||||
; -DPINS_ROTARY_DT=27
|
; -DPINS_ROTARY_DT=27
|
||||||
; -DPINS_ROTARY_SW=0
|
; -DPINS_ROTARY_SW=0
|
||||||
${default_limits.build_flags}
|
|
||||||
-DDEFAULT_GASMIN=800
|
-DDEFAULT_GASMIN=800
|
||||||
-DDEFAULT_GASMAX=3700
|
-DDEFAULT_GASMAX=3700
|
||||||
-DDEFAULT_BREMSMIN=1300
|
-DDEFAULT_BREMSMIN=1300
|
||||||
@@ -289,6 +283,7 @@ build_flags =
|
|||||||
${common_env_data.build_flags}
|
${common_env_data.build_flags}
|
||||||
-DDEVICE_PREFIX=bobbyquad
|
-DDEVICE_PREFIX=bobbyquad
|
||||||
-DFEATURE_WEBSERVER
|
-DFEATURE_WEBSERVER
|
||||||
|
${default_limits.build_flags}
|
||||||
-DUSER_SETUP_LOADED=1
|
-DUSER_SETUP_LOADED=1
|
||||||
-DRPI_DISPLAY_TYPE
|
-DRPI_DISPLAY_TYPE
|
||||||
-DILI9486_DRIVER
|
-DILI9486_DRIVER
|
||||||
@@ -319,7 +314,6 @@ build_flags =
|
|||||||
; -DPINS_ROTARY_CLK=4
|
; -DPINS_ROTARY_CLK=4
|
||||||
; -DPINS_ROTARY_DT=16
|
; -DPINS_ROTARY_DT=16
|
||||||
; -DPINS_ROTARY_SW=17
|
; -DPINS_ROTARY_SW=17
|
||||||
${default_limits.build_flags}
|
|
||||||
-DDEFAULT_GASMIN=0
|
-DDEFAULT_GASMIN=0
|
||||||
-DDEFAULT_GASMAX=4095
|
-DDEFAULT_GASMAX=4095
|
||||||
-DDEFAULT_BREMSMIN=0
|
-DDEFAULT_BREMSMIN=0
|
||||||
|
@@ -25,6 +25,7 @@ class GraphsMenu;
|
|||||||
class BmsMenu;
|
class BmsMenu;
|
||||||
class SettingsMenu;
|
class SettingsMenu;
|
||||||
class Lockscreen;
|
class Lockscreen;
|
||||||
|
class MosfetsMenu;
|
||||||
class DemosMenu;
|
class DemosMenu;
|
||||||
class PoweroffDisplay;
|
class PoweroffDisplay;
|
||||||
class DebugMenu;
|
class DebugMenu;
|
||||||
@@ -45,6 +46,9 @@ class MainMenu :
|
|||||||
#endif
|
#endif
|
||||||
makeComponent<MenuItem, StaticText<TEXT_SETTINGS>, SwitchScreenAction<SettingsMenu>, StaticMenuItemIcon<&icons::settings>>,
|
makeComponent<MenuItem, StaticText<TEXT_SETTINGS>, SwitchScreenAction<SettingsMenu>, StaticMenuItemIcon<&icons::settings>>,
|
||||||
makeComponent<MenuItem, StaticText<TEXT_LOCKVEHICLE>, SwitchScreenAction<Lockscreen>, StaticMenuItemIcon<&icons::lock>>,
|
makeComponent<MenuItem, StaticText<TEXT_LOCKVEHICLE>, SwitchScreenAction<Lockscreen>, StaticMenuItemIcon<&icons::lock>>,
|
||||||
|
#ifdef FEATURE_MOSFETS
|
||||||
|
makeComponent<MenuItem, StaticText<TEXT_MOSFETS>, SwitchScreenAction<MosfetsMenu>, StaticMenuItemIcon<&icons::lock>>, // TODO icon
|
||||||
|
#endif
|
||||||
makeComponent<MenuItem, StaticText<TEXT_DEMOS>, SwitchScreenAction<DemosMenu>, StaticMenuItemIcon<&icons::demos>>,
|
makeComponent<MenuItem, StaticText<TEXT_DEMOS>, SwitchScreenAction<DemosMenu>, StaticMenuItemIcon<&icons::demos>>,
|
||||||
makeComponent<MenuItem, StaticText<TEXT_POWEROFF>, SwitchScreenAction<PoweroffDisplay>, StaticMenuItemIcon<&icons::poweroff>>,
|
makeComponent<MenuItem, StaticText<TEXT_POWEROFF>, SwitchScreenAction<PoweroffDisplay>, StaticMenuItemIcon<&icons::poweroff>>,
|
||||||
makeComponent<MenuItem, StaticText<TEXT_REBOOT>, RebootAction, StaticMenuItemIcon<&icons::reboot>>,
|
makeComponent<MenuItem, StaticText<TEXT_REBOOT>, RebootAction, StaticMenuItemIcon<&icons::reboot>>,
|
||||||
|
43
src/displays/menus/mosfetsmenu.h
Normal file
43
src/displays/menus/mosfetsmenu.h
Normal file
@@ -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<pin_t PIN>
|
||||||
|
class GPIOAccessor : public virtual AccessorInterface<bool>
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
bool getValue() const override { return digitalRead(PIN); }
|
||||||
|
void setValue(bool value) override { digitalWrite(PIN, value ? HIGH : LOW); }
|
||||||
|
};
|
||||||
|
|
||||||
|
using Mosfet0Accessor = GPIOAccessor<PINS_MOSFET0>;
|
||||||
|
using Mosfet1Accessor = GPIOAccessor<PINS_MOSFET1>;
|
||||||
|
using Mosfet2Accessor = GPIOAccessor<PINS_MOSFET2>;
|
||||||
|
|
||||||
|
class MosfetsMenu :
|
||||||
|
public MenuDisplay,
|
||||||
|
public StaticText<TEXT_MOSFETS>,
|
||||||
|
public BackActionInterface<SwitchScreenAction<MainMenu>>,
|
||||||
|
public StaticMenuDefinition<
|
||||||
|
makeComponent<MenuItem, StaticText<TEXT_MOSFET0>, ToggleBoolAction, CheckboxIcon, Mosfet0Accessor>,
|
||||||
|
makeComponent<MenuItem, StaticText<TEXT_MOSFET1>, ToggleBoolAction, CheckboxIcon, Mosfet1Accessor>,
|
||||||
|
makeComponent<MenuItem, StaticText<TEXT_MOSFET2>, ToggleBoolAction, CheckboxIcon, Mosfet2Accessor>,
|
||||||
|
makeComponent<MenuItem, StaticText<TEXT_BACK>, SwitchScreenAction<MainMenu>, StaticMenuItemIcon<&icons::back>>
|
||||||
|
>
|
||||||
|
{};
|
||||||
|
#endif
|
||||||
|
}
|
10
src/main.cpp
10
src/main.cpp
@@ -57,6 +57,16 @@ void setup()
|
|||||||
initRotary();
|
initRotary();
|
||||||
#endif
|
#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;
|
settings = presets::defaultSettings;
|
||||||
|
|
||||||
if (settingsSaver.init())
|
if (settingsSaver.init())
|
||||||
|
@@ -22,6 +22,7 @@
|
|||||||
#include "displays/menus/mainmenu.h"
|
#include "displays/menus/mainmenu.h"
|
||||||
#include "displays/menus/tempomatmodesettingsmenu.h"
|
#include "displays/menus/tempomatmodesettingsmenu.h"
|
||||||
#include "displays/menus/modessettingsmenu.h"
|
#include "displays/menus/modessettingsmenu.h"
|
||||||
|
#include "displays/menus/mosfetsmenu.h"
|
||||||
#include "displays/menus/motorfeedbackdebugmenu.h"
|
#include "displays/menus/motorfeedbackdebugmenu.h"
|
||||||
#include "displays/menus/motorstatedebugmenu.h"
|
#include "displays/menus/motorstatedebugmenu.h"
|
||||||
#include "displays/menus/presetsmenu.h"
|
#include "displays/menus/presetsmenu.h"
|
||||||
@@ -82,6 +83,9 @@ union X {
|
|||||||
MainMenu mainMenu;
|
MainMenu mainMenu;
|
||||||
TempomatModeSettingsMenu tempomatModeSettingsMenu;
|
TempomatModeSettingsMenu tempomatModeSettingsMenu;
|
||||||
ModesSettingsMenu modesSettingsMenu;
|
ModesSettingsMenu modesSettingsMenu;
|
||||||
|
#ifdef FEATURE_MOSFETS
|
||||||
|
MosfetsMenu mosfetsMenu;
|
||||||
|
#endif
|
||||||
FrontLeftMotorStateDebugMenu frontLeftMotorStateDebugMenu;
|
FrontLeftMotorStateDebugMenu frontLeftMotorStateDebugMenu;
|
||||||
FrontRightMotorStateDebugMenu frontRightMotorStateDebugMenu;
|
FrontRightMotorStateDebugMenu frontRightMotorStateDebugMenu;
|
||||||
BackLeftMotorStateDebugMenu backLeftMotorStateDebugMenu;
|
BackLeftMotorStateDebugMenu backLeftMotorStateDebugMenu;
|
||||||
@@ -221,6 +225,9 @@ template<> decltype(displays.limitsSettingsMenu) &
|
|||||||
template<> decltype(displays.mainMenu) &getRefByType<decltype(displays.mainMenu)>() { return displays.mainMenu; }
|
template<> decltype(displays.mainMenu) &getRefByType<decltype(displays.mainMenu)>() { return displays.mainMenu; }
|
||||||
template<> decltype(displays.tempomatModeSettingsMenu) &getRefByType<decltype(displays.tempomatModeSettingsMenu)>() { return displays.tempomatModeSettingsMenu; }
|
template<> decltype(displays.tempomatModeSettingsMenu) &getRefByType<decltype(displays.tempomatModeSettingsMenu)>() { return displays.tempomatModeSettingsMenu; }
|
||||||
template<> decltype(displays.modesSettingsMenu) &getRefByType<decltype(displays.modesSettingsMenu)>() { return displays.modesSettingsMenu; }
|
template<> decltype(displays.modesSettingsMenu) &getRefByType<decltype(displays.modesSettingsMenu)>() { return displays.modesSettingsMenu; }
|
||||||
|
#ifdef FEATURE_MOSFETS
|
||||||
|
template<> decltype(displays.mosfetsMenu) &getRefByType<decltype(displays.mosfetsMenu)>() { return displays.mosfetsMenu; }
|
||||||
|
#endif
|
||||||
template<> decltype(displays.frontLeftMotorStateDebugMenu) &getRefByType<decltype(displays.frontLeftMotorStateDebugMenu)>() { return displays.frontLeftMotorStateDebugMenu; }
|
template<> decltype(displays.frontLeftMotorStateDebugMenu) &getRefByType<decltype(displays.frontLeftMotorStateDebugMenu)>() { return displays.frontLeftMotorStateDebugMenu; }
|
||||||
template<> decltype(displays.frontRightMotorStateDebugMenu) &getRefByType<decltype(displays.frontRightMotorStateDebugMenu)>() { return displays.frontRightMotorStateDebugMenu; }
|
template<> decltype(displays.frontRightMotorStateDebugMenu) &getRefByType<decltype(displays.frontRightMotorStateDebugMenu)>() { return displays.frontRightMotorStateDebugMenu; }
|
||||||
template<> decltype(displays.backLeftMotorStateDebugMenu) &getRefByType<decltype(displays.backLeftMotorStateDebugMenu)>() { return displays.backLeftMotorStateDebugMenu; }
|
template<> decltype(displays.backLeftMotorStateDebugMenu) &getRefByType<decltype(displays.backLeftMotorStateDebugMenu)>() { return displays.backLeftMotorStateDebugMenu; }
|
||||||
|
@@ -55,6 +55,7 @@ constexpr char TEXT_GRAPHS[] = "Graphs";
|
|||||||
//constexpr char TEXT_BMS[] = "BMS";
|
//constexpr char TEXT_BMS[] = "BMS";
|
||||||
constexpr char TEXT_SETTINGS[] = "Settings";
|
constexpr char TEXT_SETTINGS[] = "Settings";
|
||||||
constexpr char TEXT_LOCKVEHICLE[] = "Lock vehicle";
|
constexpr char TEXT_LOCKVEHICLE[] = "Lock vehicle";
|
||||||
|
constexpr char TEXT_MOSFETS[] = "Mosfets";
|
||||||
constexpr char TEXT_DEMOS[] = "Demos";
|
constexpr char TEXT_DEMOS[] = "Demos";
|
||||||
constexpr char TEXT_POWEROFF[] = "Poweroff";
|
constexpr char TEXT_POWEROFF[] = "Poweroff";
|
||||||
constexpr char TEXT_REBOOT[] = "Reboot";
|
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_GAMETRAKMODESETTINGS[] = "Gametrak mode settings";
|
||||||
//constexpr char TEXT_BACK[] = "Back";
|
//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
|
//TempomatModeSettingsMenu
|
||||||
//constexpr char TEXT_TEMPOMATMODESETTINGS[] = "Tempomat mode settings";
|
//constexpr char TEXT_TEMPOMATMODESETTINGS[] = "Tempomat mode settings";
|
||||||
//constexpr char TEXT_SETCONTROLTYPE[] = "Set control type";
|
//constexpr char TEXT_SETCONTROLTYPE[] = "Set control type";
|
||||||
|
Reference in New Issue
Block a user