Merge pull request #49 from bobbycar-graz/47-mosfets-control

Implemented mosfet toggles
This commit is contained in:
2020-06-02 15:52:55 +02:00
committed by GitHub
7 changed files with 89 additions and 23 deletions

View File

@ -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

View File

@ -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,35 +58,30 @@ 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 =
-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
${peters_platine_common.build_flags}
-DPINS_GAS=33
-DPINS_BREMS=35
[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 +97,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 +196,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 +212,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 +283,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 +314,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

View File

@ -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<MenuItem, StaticText<TEXT_SETTINGS>, SwitchScreenAction<SettingsMenu>, StaticMenuItemIcon<&icons::settings>>,
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_POWEROFF>, SwitchScreenAction<PoweroffDisplay>, StaticMenuItemIcon<&icons::poweroff>>,
makeComponent<MenuItem, StaticText<TEXT_REBOOT>, RebootAction, StaticMenuItemIcon<&icons::reboot>>,

View 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
}

View File

@ -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())

View File

@ -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<decltype(displays.mainMenu)>() { return displays.mainMenu; }
template<> decltype(displays.tempomatModeSettingsMenu) &getRefByType<decltype(displays.tempomatModeSettingsMenu)>() { return displays.tempomatModeSettingsMenu; }
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.frontRightMotorStateDebugMenu) &getRefByType<decltype(displays.frontRightMotorStateDebugMenu)>() { return displays.frontRightMotorStateDebugMenu; }
template<> decltype(displays.backLeftMotorStateDebugMenu) &getRefByType<decltype(displays.backLeftMotorStateDebugMenu)>() { return displays.backLeftMotorStateDebugMenu; }

View File

@ -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";