Merge pull request #2809 from ingDIY/0_14

defines improvement
This commit is contained in:
Blaž Kristan 2022-10-06 12:15:30 +02:00 committed by GitHub
commit 6a3ef2a2e4
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
7 changed files with 64 additions and 26 deletions

View File

@ -1,20 +1,17 @@
# Auto Save # Auto Save
v2 Usermod to automatically save settings v2 Usermod to automatically save settings
to preset number AUTOSAVE_PRESET_NUM after a change to any of to preset number AUTOSAVE_PRESET_NUM after a change to any of:
* brightness * brightness
* effect speed * effect speed
* effect intensity * effect intensity
* mode (effect) * mode (effect)
* palette * palette
but it will wait for AUTOSAVE_SETTLE_MS milliseconds, a "settle" but it will wait for AUTOSAVE_AFTER_SEC seconds,
period in case there are other changes (any change will a "settle" period in case there are other changes (any change will extend the "settle" window).
extend the "settle" window).
It will additionally load preset AUTOSAVE_PRESET_NUM at startup. It will additionally load preset AUTOSAVE_PRESET_NUM at startup during the first `loop()`.
during the first `loop()`. Reasoning below.
AutoSaveUsermod is standalone, but if FourLineDisplayUsermod is installed, it will notify the user of the saved changes. AutoSaveUsermod is standalone, but if FourLineDisplayUsermod is installed, it will notify the user of the saved changes.
@ -29,9 +26,20 @@ This file should be placed in the same directory as `platformio.ini`.
### Define Your Options ### Define Your Options
* `USERMOD_AUTO_SAVE` - define this to have this the Auto Save usermod included wled00\usermods_list.cpp * `USERMOD_AUTO_SAVE` - define this to have this the Auto Save usermod included wled00\usermods_list.cpp
* `USERMOD_FOUR_LINE_DISPLAY` - define this to have this the Four Line Display mod included wled00\usermods_list.cpp - also tells this usermod that the display is available (see the Four Line Display usermod `readme.md` for more details) * `AUTOSAVE_AFTER_SEC` - define the delay time after the settings auto-saving routine should be executed
* `AUTOSAVE_PRESET_NUM` - define the preset number used by autosave usermod
* `USERMOD_AUTO_SAVE_ON_BOOT` - define if autosave should be enabled on boot
* `USERMOD_FOUR_LINE_DISPLAY` - define this to have this the Four Line Display mod included wled00\usermods_list.cpp
also tells this usermod that the display is available
(see the Four Line Display usermod `readme.md` for more details)
You can configure auto-save parameters using Usermods settings page. Example to add in platformio_override:
-D USERMOD_AUTO_SAVE
-D AUTOSAVE_AFTER_SEC=10
-D AUTOSAVE_PRESET_NUM=100
-D USERMOD_AUTO_SAVE_ON_BOOT=true
You can also configure auto-save parameters using Usermods settings page.
### PlatformIO requirements ### PlatformIO requirements

View File

@ -33,9 +33,23 @@ class AutoSaveUsermod : public Usermod {
bool enabled = true; bool enabled = true;
// configurable parameters // configurable parameters
#ifdef AUTOSAVE_AFTER_SEC
uint16_t autoSaveAfterSec = AUTOSAVE_AFTER_SEC;
#else
uint16_t autoSaveAfterSec = 15; // 15s by default uint16_t autoSaveAfterSec = 15; // 15s by default
#endif
#ifdef AUTOSAVE_PRESET_NUM
uint8_t autoSavePreset = AUTOSAVE_PRESET_NUM;
#else
uint8_t autoSavePreset = 250; // last possible preset uint8_t autoSavePreset = 250; // last possible preset
#endif
#ifdef USERMOD_AUTO_SAVE_ON_BOOT
bool applyAutoSaveOnBoot = USERMOD_AUTO_SAVE_ON_BOOT;
#else
bool applyAutoSaveOnBoot = false; // do we load auto-saved preset on boot? bool applyAutoSaveOnBoot = false; // do we load auto-saved preset on boot?
#endif
// If we've detected the need to auto save, this will be non zero. // If we've detected the need to auto save, this will be non zero.
unsigned long autoSaveAfter = 0; unsigned long autoSaveAfter = 0;

View File

@ -16,10 +16,16 @@ This file should be placed in the same directory as `platformio.ini`.
### Define Your Options ### Define Your Options
* `USERMOD_ROTARY_ENCODER_UI` - define this to have this user mod included wled00\usermods_list.cpp * `USERMOD_ROTARY_ENCODER_UI` - define this to have this user mod included wled00\usermods_list.cpp
* `USERMOD_FOUR_LINE_DISPLAY` - define this to have this the Four Line Display mod included wled00\usermods_list.cpp - also tells this usermod that the display is available (see the Four Line Display usermod `readme.md` for more details) * `USERMOD_ROTARY_ENCODER_GPIO` - define the GPIO function (INPUT, INPUT_PULLUP, etc...)
* `USERMOD_FOUR_LINE_DISPLAY` - define this to have this the Four Line Display mod included wled00\usermods_list.cpp
also tells this usermod that the display is available
(see the Four Line Display usermod `readme.md` for more details)
* `ENCODER_DT_PIN` - The encoders DT pin, defaults to 12 * `ENCODER_DT_PIN` - The encoders DT pin, defaults to 12
* `ENCODER_CLK_PIN` - The encoders CLK pin, defaults to 14 * `ENCODER_CLK_PIN` - The encoders CLK pin, defaults to 14
* `ENCODER_SW_PIN` - The encoders SW pin, defaults to 13 * `ENCODER_SW_PIN` - The encoders SW pin, defaults to 13
* `USERMOD_ROTARY_ENCODER_GPIO` - The GPIO functionality:
`INPUT_PULLUP` to use internal pull-up
`INPUT` to use pull-up on the PCB
### PlatformIO requirements ### PlatformIO requirements

View File

@ -110,9 +110,13 @@ public:
return; return;
} }
pinMode(pinA, INPUT_PULLUP); #ifndef USERMOD_ROTARY_ENCODER_GPIO
pinMode(pinB, INPUT_PULLUP); #define USERMOD_ROTARY_ENCODER_GPIO INPUT_PULLUP
pinMode(pinC, INPUT_PULLUP); #endif
pinMode(pinA, USERMOD_ROTARY_ENCODER_GPIO);
pinMode(pinB, USERMOD_ROTARY_ENCODER_GPIO);
pinMode(pinC, USERMOD_ROTARY_ENCODER_GPIO);
currentTime = millis(); currentTime = millis();
loopTime = currentTime; loopTime = currentTime;

View File

@ -278,9 +278,13 @@ public:
return; return;
} }
pinMode(pinA, INPUT_PULLUP); #ifndef USERMOD_ROTARY_ENCODER_GPIO
pinMode(pinB, INPUT_PULLUP); #define USERMOD_ROTARY_ENCODER_GPIO INPUT_PULLUP
pinMode(pinC, INPUT_PULLUP); #endif
pinMode(pinA, USERMOD_ROTARY_ENCODER_GPIO);
pinMode(pinB, USERMOD_ROTARY_ENCODER_GPIO);
pinMode(pinC, USERMOD_ROTARY_ENCODER_GPIO);
loopTime = millis(); loopTime = millis();
currentCCT = (approximateKelvinFromRGB(RGBW32(col[0], col[1], col[2], col[3])) - 1900) >> 5; currentCCT = (approximateKelvinFromRGB(RGBW32(col[0], col[1], col[2], col[3])) - 1900) >> 5;

View File

@ -314,11 +314,13 @@
#define E131_MAX_UNIVERSE_COUNT 12 #define E131_MAX_UNIVERSE_COUNT 12
#endif #endif
#endif #endif
#define ABL_MILLIAMPS_DEFAULT 200
#ifndef ABL_MILLIAMPS_DEFAULT #ifndef ABL_MILLIAMPS_DEFAULT
#define ABL_MILLIAMPS_DEFAULT 850 // auto lower brightness to stay close to milliampere limit #define ABL_MILLIAMPS_DEFAULT 850 // auto lower brightness to stay close to milliampere limit
#else #else
#if ABL_MILLIAMPS_DEFAULT < 250 // make sure value is at least 250 #if ABL_MILLIAMPS_DEFAULT == 0 // disable ABL
#elif ABL_MILLIAMPS_DEFAULT < 250 // make sure value is at least 250
#warning "make sure value is at least 250"
#define ABL_MILLIAMPS_DEFAULT 250 #define ABL_MILLIAMPS_DEFAULT 250
#endif #endif
#endif #endif

View File

@ -27,7 +27,7 @@
//#define WLED_DISABLE_ALEXA // saves 11kb //#define WLED_DISABLE_ALEXA // saves 11kb
//#define WLED_DISABLE_BLYNK // saves 6kb //#define WLED_DISABLE_BLYNK // saves 6kb
//#define WLED_DISABLE_HUESYNC // saves 4kb //#define WLED_DISABLE_HUESYNC // saves 4kb
//#define WLED_DISABLE_INFRARED // saves 12kb //#define WLED_DISABLE_INFRARED // saves 12kb, there is no pin left for this on ESP8266-01
#ifndef WLED_DISABLE_MQTT #ifndef WLED_DISABLE_MQTT
#define WLED_ENABLE_MQTT // saves 12kb #define WLED_ENABLE_MQTT // saves 12kb
#endif #endif