diff --git a/config_comred.cmake b/config_comred.cmake index ed4ee8a..2026453 100644 --- a/config_comred.cmake +++ b/config_comred.cmake @@ -89,4 +89,5 @@ set(BOBBYCAR_BUILDFLAGS -DLEDSTRIP_LENGTH=121 -DHEAP_LRGST_CRASH_TEXT_FIX -DLEDSTRIP_WRONG_DIRECTION + -DLEDSTRIP_ANIMATION_DEFAULT=1 ) diff --git a/config_feedc0de.cmake b/config_feedc0de.cmake index 974fdf9..6f013cf 100644 --- a/config_feedc0de.cmake +++ b/config_feedc0de.cmake @@ -88,4 +88,5 @@ set(BOBBYCAR_BUILDFLAGS -DPINS_LEDSTRIP=26 -DLEDSTRIP_LENGTH=200 # -DLEDSTRIP_WRONG_DIRECTION +# -DLEDSTRIP_ANIMATION_DEFAULT=0 ) diff --git a/config_greyhash.cmake b/config_greyhash.cmake index edddb12..ce9bd42 100644 --- a/config_greyhash.cmake +++ b/config_greyhash.cmake @@ -89,4 +89,5 @@ set(BOBBYCAR_BUILDFLAGS -DLEDSTRIP_LENGTH=121 -DLEDSTRIP_DEFAULT_BRIGHTNESS=100 # -DLEDSTRIP_WRONG_DIRECTION +# -DLEDSTRIP_ANIMATION_DEFAULT=0 ) diff --git a/config_mick.cmake b/config_mick.cmake index 2c9b451..da9cfa2 100644 --- a/config_mick.cmake +++ b/config_mick.cmake @@ -87,4 +87,5 @@ set(BOBBYCAR_BUILDFLAGS # -DFEATURE_LEDSTRIP # -DPINS_LEDSTRIP=26 # -DLEDSTRIP_WRONG_DIRECTION +# -DLEDSTRIP_ANIMATION_DEFAULT=0 ) diff --git a/config_peter.cmake b/config_peter.cmake index b191378..4e15f8f 100644 --- a/config_peter.cmake +++ b/config_peter.cmake @@ -1,95 +1,96 @@ set(BOBBY_APP_NAME bobbyquad_peter) add_definitions( - -DUSER_SETUP_LOADED=1 - -DLOAD_GLCD=1 - -DLOAD_FONT2=1 - -DLOAD_FONT4=1 - -DLOAD_FONT7=1 - -DILI9341_DRIVER=1 - -DTFT_MOSI=13 - -DTFT_SCLK=15 - -DTFT_CS=14 - -DTFT_DC=12 - -DTFT_RST=2 - -DSPI_FREQUENCY=27000000 + -DUSER_SETUP_LOADED=1 + -DLOAD_GLCD=1 + -DLOAD_FONT2=1 + -DLOAD_FONT4=1 + -DLOAD_FONT7=1 + -DILI9341_DRIVER=1 + -DTFT_MOSI=13 + -DTFT_SCLK=15 + -DTFT_CS=14 + -DTFT_DC=12 + -DTFT_RST=2 + -DSPI_FREQUENCY=27000000 ) set(BOBBYCAR_BUILDFLAGS - -DFEATURE_ADC_IN - -DPINS_GAS=34 - -DPINS_BREMS=35 - -DDEFAULT_SWAPSCREENBYTES=false - -DFEATURE_CAN - # -DFEATURE_SERIAL - # -DPINS_RX1=4 - # -DPINS_TX1=5 - # -DPINS_RX2=22 - # -DPINS_TX2=23 - -DDEFAULT_INVERTFRONTLEFT=false - -DDEFAULT_INVERTFRONTRIGHT=true - -DDEFAULT_INVERTBACKLEFT=false - -DDEFAULT_INVERTBACKRIGHT=true - -DDEFAULT_WHEELDIAMETER=200 - # -DFEATURE_MOSFETS - # -DPINS_MOSFET0=18 - # -DPINS_MOSFET1=19 - # -DPINS_MOSFET2=21 - -DDEFAULT_IMOTMAX=28 - -DDEFAULT_IDCMAX=30 - -DDEFAULT_NMOTMAX=2000 - -DDEFAULT_FIELDWEAKMAX=7 - -DDEFAULT_FIELDADVMAX=40 - -DDEVICE_PREFIX=peter_bobbyquad - -DAP_PASSWORD=Passwort_123 - -DFEATURE_WEBSERVER - -DFEATURE_OTA - -DFEATURE_DPAD_5WIRESW_2OUT - -DPINS_DPAD_5WIRESW_OUT1=18 - -DPINS_DPAD_5WIRESW_OUT2=19 - -DPINS_DPAD_5WIRESW_IN1=4 - -DPINS_DPAD_5WIRESW_IN2=5 - -DPINS_DPAD_5WIRESW_IN3=27 - -DDPAD_5WIRESW_UP=4 - -DDPAD_5WIRESW_DOWN=7 - -DDPAD_5WIRESW_CONFIRM=1 - -DDPAD_5WIRESW_BACK=10 - -DDPAD_5WIRESW_PROFILE0=11 - -DDPAD_5WIRESW_PROFILE1=8 - -DDPAD_5WIRESW_PROFILE2=5 - -DDPAD_5WIRESW_PROFILE3=2 - -DDPAD_5WIRESW_BLINK_LEFT=9 - -DDPAD_5WIRESW_BLINK_RIGHT=0 - -DDPAD_5WIRESW_QUICKACTION_DOWN=3 - -DDPAD_5WIRESW_QUICKACTION_UP=6 - # -DDPAD_5WIRESW_DEBUG - -DDEFAULT_GASMIN=842 - -DDEFAULT_GASMAX=2480 - -DDEFAULT_BREMSMIN=826 - -DDEFAULT_BREMSMAX=2502 - -DFEATURE_BLE - # -DFEATURE_BLUETOOTH - # -DFEATURE_BMS - # -DFEATURE_GAMETRAK - # -DPINS_GAMETRAKX=34 - # -DPINS_GAMETRAKY=39 - # -DPINS_GAMETRAKDIST=36 - # -DDEFAULT_GAMETRAKXMIN=0 - # -DDEFAULT_GAMETRAKXMAX=4095 - # -DDEFAULT_GAMETRAKYMIN=0 - # -DDEFAULT_GAMETRAKYMAX=4095 - # -DDEFAULT_GAMETRAKDISTMIN=0 - # -DDEFAULT_GAMETRAKDISTMAX=4095 - # -DFEATURE_POWERSUPPLY - -DFEATURE_CLOUD - -DFEATURE_LEDBACKLIGHT - -DPINS_LEDBACKLIGHT=23 - -DLEDBACKLIGHT_INVERTED - -DFEATURE_GARAGE - -DFEATURE_NTP - -DFEATURE_WIRELESS_CONFIG - -DFEATURE_LEDSTRIP - -DPINS_LEDSTRIP=33 - -DLEDSTRIP_LENGTH=288 - # -DLEDSTRIP_WRONG_DIRECTION - ) + -DFEATURE_ADC_IN + -DPINS_GAS=34 + -DPINS_BREMS=35 + -DDEFAULT_SWAPSCREENBYTES=false + -DFEATURE_CAN + # -DFEATURE_SERIAL + # -DPINS_RX1=4 + # -DPINS_TX1=5 + # -DPINS_RX2=22 + # -DPINS_TX2=23 + -DDEFAULT_INVERTFRONTLEFT=false + -DDEFAULT_INVERTFRONTRIGHT=true + -DDEFAULT_INVERTBACKLEFT=false + -DDEFAULT_INVERTBACKRIGHT=true + -DDEFAULT_WHEELDIAMETER=200 + # -DFEATURE_MOSFETS + # -DPINS_MOSFET0=18 + # -DPINS_MOSFET1=19 + # -DPINS_MOSFET2=21 + -DDEFAULT_IMOTMAX=28 + -DDEFAULT_IDCMAX=30 + -DDEFAULT_NMOTMAX=2000 + -DDEFAULT_FIELDWEAKMAX=7 + -DDEFAULT_FIELDADVMAX=40 + -DDEVICE_PREFIX=peter_bobbyquad + -DAP_PASSWORD=Passwort_123 + -DFEATURE_WEBSERVER + -DFEATURE_OTA + -DFEATURE_DPAD_5WIRESW_2OUT + -DPINS_DPAD_5WIRESW_OUT1=18 + -DPINS_DPAD_5WIRESW_OUT2=19 + -DPINS_DPAD_5WIRESW_IN1=4 + -DPINS_DPAD_5WIRESW_IN2=5 + -DPINS_DPAD_5WIRESW_IN3=27 + -DDPAD_5WIRESW_UP=4 + -DDPAD_5WIRESW_DOWN=7 + -DDPAD_5WIRESW_CONFIRM=1 + -DDPAD_5WIRESW_BACK=10 + -DDPAD_5WIRESW_PROFILE0=11 + -DDPAD_5WIRESW_PROFILE1=8 + -DDPAD_5WIRESW_PROFILE2=5 + -DDPAD_5WIRESW_PROFILE3=2 + -DDPAD_5WIRESW_BLINK_LEFT=9 + -DDPAD_5WIRESW_BLINK_RIGHT=0 + -DDPAD_5WIRESW_QUICKACTION_DOWN=3 + -DDPAD_5WIRESW_QUICKACTION_UP=6 + # -DDPAD_5WIRESW_DEBUG + -DDEFAULT_GASMIN=842 + -DDEFAULT_GASMAX=2480 + -DDEFAULT_BREMSMIN=826 + -DDEFAULT_BREMSMAX=2502 + -DFEATURE_BLE + # -DFEATURE_BLUETOOTH + # -DFEATURE_BMS + # -DFEATURE_GAMETRAK + # -DPINS_GAMETRAKX=34 + # -DPINS_GAMETRAKY=39 + # -DPINS_GAMETRAKDIST=36 + # -DDEFAULT_GAMETRAKXMIN=0 + # -DDEFAULT_GAMETRAKXMAX=4095 + # -DDEFAULT_GAMETRAKYMIN=0 + # -DDEFAULT_GAMETRAKYMAX=4095 + # -DDEFAULT_GAMETRAKDISTMIN=0 + # -DDEFAULT_GAMETRAKDISTMAX=4095 + # -DFEATURE_POWERSUPPLY + -DFEATURE_CLOUD + -DFEATURE_LEDBACKLIGHT + -DPINS_LEDBACKLIGHT=23 + -DLEDBACKLIGHT_INVERTED + -DFEATURE_GARAGE + -DFEATURE_NTP + -DFEATURE_WIRELESS_CONFIG + -DFEATURE_LEDSTRIP + -DPINS_LEDSTRIP=33 + -DLEDSTRIP_LENGTH=288 + # -DLEDSTRIP_WRONG_DIRECTION + -DLEDSTRIP_ANIMATION_DEFAULT=1 +) diff --git a/main/actions/ledstripanimationactions.h b/main/actions/ledstripanimationactions.h index 00b80ea..d125d06 100644 --- a/main/actions/ledstripanimationactions.h +++ b/main/actions/ledstripanimationactions.h @@ -12,24 +12,18 @@ namespace { class LedstripAnimationDefaultRainbowAction : public virtual ActionInterface { public: - void triggered() override { blinkAnimation = LEDSTRIP_ANIMATION_DEFAULT; } + void triggered() override { animation_type = LEDSTRIP_ANIMATION_TYPE_DEFAULTRAINBOW; } }; -class LedstripAnimationBlinkLeftAction : public virtual ActionInterface +class LedstripAnimationBetterRainbowAction : public virtual ActionInterface { public: - void triggered() override { blinkAnimation = LEDSTRIP_ANIMATION_BLINKLEFT; } + void triggered() override { animation_type = LEDSTRIP_ANIMATION_TYPE_BETTERRAINBOW; } }; -class LedstripAnimationBlinkRightAction : public virtual ActionInterface +class LedstripAnimationSyncToSpeedAction : public virtual ActionInterface { public: - void triggered() override { blinkAnimation = LEDSTRIP_ANIMATION_BLINKRIGHT; } -}; - -class LedstripAnimationBlinkBothAction : public virtual ActionInterface -{ -public: - void triggered() override { blinkAnimation = LEDSTRIP_ANIMATION_BLINKBOTH; } + void triggered() override { animation_type = LEDSTRIP_ANIMATION_TYPE_SPEEDSYNCANIMATION; } }; } diff --git a/main/actions/ledstripblinkactions.h b/main/actions/ledstripblinkactions.h new file mode 100644 index 0000000..a7db559 --- /dev/null +++ b/main/actions/ledstripblinkactions.h @@ -0,0 +1,35 @@ +#pragma once + +#include "actioninterface.h" +#include "utils.h" +#include "globals.h" +#include "ledstrip.h" +#include "ledstripdefines.h" + +using namespace espgui; + +namespace { +class LedstripAnimationBlinkNoneAction : public virtual ActionInterface +{ +public: + void triggered() override { blinkAnimation = LEDSTRIP_OVERWRITE_NONE; } +}; + +class LedstripAnimationBlinkLeftAction : public virtual ActionInterface +{ +public: + void triggered() override { blinkAnimation = LEDSTRIP_OVERWRITE_BLINKLEFT; } +}; + +class LedstripAnimationBlinkRightAction : public virtual ActionInterface +{ +public: + void triggered() override { blinkAnimation = LEDSTRIP_OVERWRITE_BLINKRIGHT; } +}; + +class LedstripAnimationBlinkBothAction : public virtual ActionInterface +{ +public: + void triggered() override { blinkAnimation = LEDSTRIP_OVERWRITE_BLINKBOTH; } +}; +} diff --git a/main/buttons.h b/main/buttons.h index 50eae28..5f91280 100644 --- a/main/buttons.h +++ b/main/buttons.h @@ -143,14 +143,14 @@ public: if(!pressed)return; #ifdef FEATURE_LEDSTRIP - if(blinkAnimation == LEDSTRIP_ANIMATION_DEFAULT){ //transition from off to left - blinkAnimation = LEDSTRIP_ANIMATION_BLINKLEFT; + if(blinkAnimation == LEDSTRIP_OVERWRITE_NONE){ //transition from off to left + blinkAnimation = LEDSTRIP_OVERWRITE_BLINKLEFT; } - else if(blinkAnimation == LEDSTRIP_ANIMATION_BLINKRIGHT){ // transition to warning - blinkAnimation = LEDSTRIP_ANIMATION_BLINKBOTH; + else if(blinkAnimation == LEDSTRIP_OVERWRITE_BLINKRIGHT){ // transition to warning + blinkAnimation = LEDSTRIP_OVERWRITE_BLINKBOTH; } else{ // transition to off - blinkAnimation = 0; + blinkAnimation = LEDSTRIP_OVERWRITE_NONE; } #endif } @@ -158,14 +158,14 @@ public: static void blinkRightButton(bool pressed){ if(!pressed)return; #ifdef FEATURE_LEDSTRIP - if(blinkAnimation == LEDSTRIP_ANIMATION_DEFAULT){ //transition from off to right - blinkAnimation = LEDSTRIP_ANIMATION_BLINKRIGHT; + if(blinkAnimation == LEDSTRIP_OVERWRITE_NONE){ //transition from off to right + blinkAnimation = LEDSTRIP_OVERWRITE_BLINKRIGHT; } - else if(blinkAnimation == LEDSTRIP_ANIMATION_BLINKLEFT){ // transition to warning - blinkAnimation = LEDSTRIP_ANIMATION_BLINKBOTH; + else if(blinkAnimation == LEDSTRIP_OVERWRITE_BLINKLEFT){ // transition to warning + blinkAnimation = LEDSTRIP_OVERWRITE_BLINKBOTH; } else{ // transition to off - blinkAnimation = 0; + blinkAnimation = LEDSTRIP_OVERWRITE_NONE; } #endif } diff --git a/main/displays/menus/ledstripmenu.h b/main/displays/menus/ledstripmenu.h index 49d9886..9f71162 100644 --- a/main/displays/menus/ledstripmenu.h +++ b/main/displays/menus/ledstripmenu.h @@ -6,6 +6,7 @@ #include "actions/toggleboolaction.h" #include "actions/switchscreenaction.h" #include "ledstripselectanimationmenu.h" +#include "ledstripselectblinkmenu.h" #include "texts.h" #include "icons/back.h" #include "checkboxicon.h" @@ -28,16 +29,6 @@ namespace { class LedstripMenu; class LedstripSelectAnimationMenu; -struct BlinkAnimationAccessor : public RefAccessor { int16_t &getRef() const override { return blinkAnimation; } }; - -using BlinkAnimationChangeScreen = makeComponent< - ChangeValueDisplay, - StaticText, - BlinkAnimationAccessor, - BackActionInterface>, - SwitchScreenAction ->; - using LedsCountChangeScreen = makeComponent< ChangeValueDisplay, StaticText, @@ -86,10 +77,10 @@ class LedstripMenu : public: LedstripMenu() { - constructMenuItem, ToggleBoolAction, CheckboxIcon, EnableLedAnimationAccessor>>(); + constructMenuItem, ToggleBoolAction, CheckboxIcon, EnableLedAnimationAccessor>>(); constructMenuItem, ToggleBoolAction, CheckboxIcon, EnableBrakeLightsAccessor>>(); - constructMenuItem, SwitchScreenAction>>(); -// constructMenuItem, SwitchScreenAction>>(); + constructMenuItem, SwitchScreenAction>>(); + constructMenuItem, SwitchScreenAction>>(); constructMenuItem, SwitchScreenAction>>(); constructMenuItem, SwitchScreenAction>>(); constructMenuItem, SwitchScreenAction>>(); diff --git a/main/displays/menus/ledstripselectanimationmenu.h b/main/displays/menus/ledstripselectanimationmenu.h index 1548ed0..da001ad 100644 --- a/main/displays/menus/ledstripselectanimationmenu.h +++ b/main/displays/menus/ledstripselectanimationmenu.h @@ -27,11 +27,10 @@ namespace { public: LedstripSelectAnimationMenu() { - constructMenuItem, LedstripAnimationDefaultRainbowAction>>(); - constructMenuItem, LedstripAnimationBlinkLeftAction>>(); - constructMenuItem, LedstripAnimationBlinkRightAction>>(); - constructMenuItem, LedstripAnimationBlinkBothAction>>(); - constructMenuItem, SwitchScreenAction, StaticMenuItemIcon<&espgui::icons::back>>>(); + constructMenuItem, LedstripAnimationDefaultRainbowAction>>(); + constructMenuItem, LedstripAnimationBetterRainbowAction>>(); + constructMenuItem, LedstripAnimationSyncToSpeedAction>>(); + constructMenuItem, SwitchScreenAction, StaticMenuItemIcon<&espgui::icons::back>>>(); } }; } // Namespace diff --git a/main/displays/menus/ledstripselectblinkmenu.h b/main/displays/menus/ledstripselectblinkmenu.h new file mode 100644 index 0000000..336d291 --- /dev/null +++ b/main/displays/menus/ledstripselectblinkmenu.h @@ -0,0 +1,37 @@ +#pragma once + +// Local includes +#include "menudisplay.h" +#include "utils.h" +#include "menuitem.h" +#include "ledstrip.h" +#include "ledstripselectanimationmenu.h" +#include "icons/back.h" +#include "texts.h" +#include "actions/dummyaction.h" +#include "actions/ledstripblinkactions.h" +#include "actions/switchscreenaction.h" + +using namespace espgui; + +namespace { + class LedstripMenu; +} + +namespace { + class LedstripSelectBlinkMenu : + public MenuDisplay, + public StaticText, + public BackActionInterface> + { + public: + LedstripSelectBlinkMenu() + { + constructMenuItem, LedstripAnimationBlinkNoneAction>>(); + constructMenuItem, LedstripAnimationBlinkLeftAction>>(); + constructMenuItem, LedstripAnimationBlinkRightAction>>(); + constructMenuItem, LedstripAnimationBlinkBothAction>>(); + constructMenuItem, SwitchScreenAction, StaticMenuItemIcon<&espgui::icons::back>>>(); + } + }; +} // Namespace diff --git a/main/dpad5wire_2out.h b/main/dpad5wire_2out.h index 968f0ec..96e870b 100644 --- a/main/dpad5wire_2out.h +++ b/main/dpad5wire_2out.h @@ -45,8 +45,8 @@ public: bool &profile2{this->at(DPAD_5WIRESW_PROFILE2)}; bool &profile3{this->at(DPAD_5WIRESW_PROFILE3)}; - bool &blink_left{this->at(DPAD_5WIRESW_BLINK_RIGHT)}; - bool &blink_right{this->at(DPAD_5WIRESW_BLINK_LEFT)}; + bool &blink_left{this->at(DPAD_5WIRESW_BLINK_LEFT)}; + bool &blink_right{this->at(DPAD_5WIRESW_BLINK_RIGHT)}; bool &quickaction_down{this->at(DPAD_5WIRESW_QUICKACTION_DOWN)}; bool &quickaction_up{this->at(DPAD_5WIRESW_QUICKACTION_UP)}; }; diff --git a/main/ledstrip.h b/main/ledstrip.h index 662724e..4e8aca1 100644 --- a/main/ledstrip.h +++ b/main/ledstrip.h @@ -1,5 +1,4 @@ #pragma once - #ifdef FEATURE_LEDSTRIP // 3rdparty lib includes #include @@ -14,12 +13,17 @@ namespace { std::vector leds; uint8_t gHue = 0; -int16_t blinkAnimation = LEDSTRIP_ANIMATION_DEFAULT; +int16_t blinkAnimation = LEDSTRIP_OVERWRITE_NONE; +int16_t animation_type = LEDSTRIP_ANIMATION_TYPE_DEFAULTRAINBOW; void showDefaultLedstrip(); +void showAnimation(); +void showBetterRainbow(); +void showSpeedSyncAnimation(); void initLedStrip() { + animation_type = settings.ledstrip.animationType; leds.resize(settings.ledstrip.ledsCount); FastLED.addLeds(&*std::begin(leds), leds.size()) .setCorrection(TypicalSMD5050); @@ -29,7 +33,7 @@ void updateLedStrip() { EVERY_N_MILLISECONDS( 20 ) { gHue++; } - if (cpputils::is_in(blinkAnimation, LEDSTRIP_ANIMATION_BLINKLEFT, LEDSTRIP_ANIMATION_BLINKRIGHT, LEDSTRIP_ANIMATION_BLINKBOTH)) + if (cpputils::is_in(blinkAnimation, LEDSTRIP_OVERWRITE_BLINKLEFT, LEDSTRIP_OVERWRITE_BLINKRIGHT, LEDSTRIP_OVERWRITE_BLINKBOTH)) { std::fill(std::begin(leds), std::end(leds), CRGB{0, 0, 0}); @@ -38,18 +42,17 @@ void updateLedStrip() auto color = CRGB{255, 255, 0}; const auto center = (std::begin(leds) + (leds.size() / 2) + settings.ledstrip.centerOffset); - #ifdef LEDSTRIP_WRONG_DIRECTION - if(blinkAnimation == LEDSTRIP_ANIMATION_BLINKLEFT){ - blinkAnimation = LEDSTRIP_ANIMATION_BLINKRIGHT; - } else if(blinkAnimation == LEDSTRIP_ANIMATION_BLINKRIGHT){ - blinkAnimation = LEDSTRIP_ANIMATION_BLINKLEFT; - } - #endif - - if (blinkAnimation != LEDSTRIP_ANIMATION_BLINKLEFT) +#ifndef LEDSTRIP_WRONG_DIRECTION + if (blinkAnimation != LEDSTRIP_OVERWRITE_BLINKRIGHT) std::fill(center - settings.ledstrip.bigOffset, center - settings.ledstrip.smallOffset, color); - if (blinkAnimation != LEDSTRIP_ANIMATION_BLINKRIGHT) + if (blinkAnimation != LEDSTRIP_OVERWRITE_BLINKLEFT) std::fill(center + settings.ledstrip.smallOffset, center + settings.ledstrip.bigOffset, color); +#else + if (blinkAnimation != LEDSTRIP_OVERWRITE_BLINKLEFT) + std::fill(center - settings.ledstrip.bigOffset, center - settings.ledstrip.smallOffset, color); + if (blinkAnimation != LEDSTRIP_OVERWRITE_BLINKRIGHT) + std::fill(center + settings.ledstrip.smallOffset, center + settings.ledstrip.bigOffset, color); +#endif } } else @@ -77,12 +80,12 @@ void updateLedStrip() } else { - showDefaultLedstrip(); + showAnimation(); } } else { - showDefaultLedstrip(); + showAnimation(); } } @@ -90,6 +93,31 @@ void updateLedStrip() FastLED.show(); } +void showAnimation() { + if (animation_type == LEDSTRIP_ANIMATION_TYPE_DEFAULTRAINBOW) showDefaultLedstrip(); + else if (animation_type == LEDSTRIP_ANIMATION_TYPE_BETTERRAINBOW) showBetterRainbow(); + else if (animation_type == LEDSTRIP_ANIMATION_TYPE_SPEEDSYNCANIMATION) showSpeedSyncAnimation(); + else showDefaultLedstrip(); +} + +void showBetterRainbow() { + if (settings.ledstrip.enableLedAnimation) + { + fill_rainbow(&*std::begin(leds), leds.size(), gHue); + } + else + std::fill(std::begin(leds), std::end(leds), CRGB{0, 0, 0}); +} + +void showSpeedSyncAnimation() { + if (settings.ledstrip.enableLedAnimation) + { + // Code that shows static animation relative to the ground + } + else + std::fill(std::begin(leds), std::end(leds), CRGB{0, 0, 0}); +} + void showDefaultLedstrip() { if (settings.ledstrip.enableLedAnimation) diff --git a/main/ledstripdefines.h b/main/ledstripdefines.h index 36e368d..f292349 100644 --- a/main/ledstripdefines.h +++ b/main/ledstripdefines.h @@ -2,7 +2,13 @@ /* * This file contains a few defines, so you don't have to remember which ledstrip animation is which number */ -#define LEDSTRIP_ANIMATION_DEFAULT 0 -#define LEDSTRIP_ANIMATION_BLINKLEFT 1 -#define LEDSTRIP_ANIMATION_BLINKRIGHT 2 -#define LEDSTRIP_ANIMATION_BLINKBOTH 3 + +#define LEDSTRIP_OVERWRITE_NONE 0 +#define LEDSTRIP_OVERWRITE_BLINKLEFT 1 +#define LEDSTRIP_OVERWRITE_BLINKRIGHT 2 +#define LEDSTRIP_OVERWRITE_BLINKBOTH 3 + + +#define LEDSTRIP_ANIMATION_TYPE_DEFAULTRAINBOW 0 +#define LEDSTRIP_ANIMATION_TYPE_BETTERRAINBOW 1 +#define LEDSTRIP_ANIMATION_TYPE_SPEEDSYNCANIMATION 2 diff --git a/main/presets.h b/main/presets.h index fdf29fb..460a290 100644 --- a/main/presets.h +++ b/main/presets.h @@ -12,6 +12,7 @@ // local includes #include "settings.h" #include "stringsettings.h" +#include "ledstripdefines.h" using namespace std::chrono_literals; @@ -230,7 +231,13 @@ constexpr Settings::Ledstrip defaultLedstrip { .centerOffset = 1, .smallOffset = 4, .bigOffset = 10, - .deziampere = 30 + .deziampere = 30, +#ifdef LEDSTRIP_ANIMATION_DEFAULT + .animationType = LEDSTRIP_ANIMATION_DEFAULT +#else + .animationType = LEDSTRIP_ANIMATION_TYPE_DEFAULTRAINBOW +#endif + }; #endif diff --git a/main/settings.h b/main/settings.h index 1d331c7..d7936dd 100644 --- a/main/settings.h +++ b/main/settings.h @@ -161,6 +161,7 @@ struct Settings int16_t smallOffset; int16_t bigOffset; int16_t deziampere; + int16_t animationType; } ledstrip; #endif @@ -259,7 +260,8 @@ void Settings::executeForEveryCommonSetting(T &&callable) callable("centerOffset", ledstrip.centerOffset); callable("smallOffset", ledstrip.smallOffset); callable("bigOffset", ledstrip.bigOffset); - callable("deziampere", ledstrip.deziampere); + //callable("deziampere", ledstrip.deziampere); + callable("animationType", ledstrip.animationType); #endif callable("lockAlwPresetSw", lockscreen.allowPresetSwitch); diff --git a/main/texts.h b/main/texts.h index 155b7db..3fd3ebe 100644 --- a/main/texts.h +++ b/main/texts.h @@ -243,6 +243,7 @@ constexpr char TEXT_LEDSTRIP[] = "Ledstrip"; constexpr char TEXT_LEDANIMATION[] = "LED Animation"; constexpr char TEXT_BRAKELIGHTS[] = "Brake Lights"; constexpr char TEXT_BLINKANIMATION[] = "Blink animation"; +constexpr char TEXT_ANIMATION_TYPE[] = "Blink animation"; constexpr char TEXT_LEDSCOUNT[] = "LEDs Count"; constexpr char TEXT_CENTEROFFSET[] = "Center Offset"; constexpr char TEXT_SMALLOFFSET[] = "Small Offset"; @@ -253,6 +254,11 @@ constexpr char TEXT_LEDSTRIP_MILLIAMP[] = "Ledstrip 0.1A"; //LedstripSelectAnimationMenu constexpr char TEXT_SELECTANIMATION[] = "Select Animation"; constexpr char TEXT_ANIMATION_DEFAULTRAINBOW[] = "Default Rainbow"; +constexpr char TEXT_ANIMATION_BETTERRAINBOW[] = "Better Rainbow"; +constexpr char TEXT_ANIMATION_SPEEDSYNCANIMATION[] = "Speed Sync"; + +//LedstripSelectBlinkMenu +constexpr char TEXT_ANIMATION_BLINKNONE[] = "Blink Off"; constexpr char TEXT_ANIMATION_BLINKLEFT[] = "Blink Left"; constexpr char TEXT_ANIMATION_BLINKRIGHT[] = "Blink Right"; constexpr char TEXT_ANIMATION_BLINKBOTH[] = "Blink Both";