✨ LCD_BACKLIGHT_TIMEOUT for Neopixel LCD (#25438)
This commit is contained in:
parent
1068963092
commit
866e7d3128
|
@ -3403,7 +3403,8 @@
|
|||
// Use some of the NeoPixel LEDs for static (background) lighting
|
||||
//#define NEOPIXEL_BKGD_INDEX_FIRST 0 // Index of the first background LED
|
||||
//#define NEOPIXEL_BKGD_INDEX_LAST 5 // Index of the last background LED
|
||||
//#define NEOPIXEL_BKGD_COLOR { 255, 255, 255, 0 } // R, G, B, W
|
||||
//#define NEOPIXEL_BKGD_COLOR { 255, 255, 255, 0 } // R, G, B, W
|
||||
//#define NEOPIXEL_BKGD_TIMEOUT_COLOR { 25, 25, 25, 0 } // R, G, B, W
|
||||
//#define NEOPIXEL_BKGD_ALWAYS_ON // Keep the backlight on when other NeoPixels are off
|
||||
#endif
|
||||
|
||||
|
|
|
@ -54,7 +54,15 @@ Adafruit_NeoPixel Marlin_NeoPixel::adaneo1(NEOPIXEL_PIXELS, NEOPIXEL_PIN, NEOPIX
|
|||
set_background_color(background_color);
|
||||
}
|
||||
|
||||
#endif
|
||||
void Marlin_NeoPixel::set_background_off() {
|
||||
#ifndef NEOPIXEL_BKGD_TIMEOUT_COLOR
|
||||
#define NEOPIXEL_BKGD_TIMEOUT_COLOR { 0, 0, 0, 0 }
|
||||
#endif
|
||||
constexpr uint8_t background_color_off[4] = NEOPIXEL_BKGD_TIMEOUT_COLOR;
|
||||
set_background_color(background_color_off);
|
||||
}
|
||||
|
||||
#endif // NEOPIXEL_BKGD_INDEX_FIRST
|
||||
|
||||
void Marlin_NeoPixel::set_color(const uint32_t color) {
|
||||
if (neoindex >= 0) {
|
||||
|
|
|
@ -91,6 +91,7 @@ public:
|
|||
static void set_background_color(const uint8_t r, const uint8_t g, const uint8_t b, const uint8_t w);
|
||||
static void set_background_color(const uint8_t (&rgbw)[4]) { set_background_color(rgbw[0], rgbw[1], rgbw[2], rgbw[3]); }
|
||||
static void reset_background_color();
|
||||
static void set_background_off();
|
||||
#endif
|
||||
|
||||
static void begin() {
|
||||
|
|
|
@ -3241,8 +3241,14 @@ static_assert(X_MAX_LENGTH >= X_BED_SIZE, "Movement bounds (X_MIN_POS, X_MAX_POS
|
|||
#if LCD_BACKLIGHT_TIMEOUT_MINS
|
||||
#if !HAS_ENCODER_ACTION
|
||||
#error "LCD_BACKLIGHT_TIMEOUT_MINS requires an LCD with encoder or keypad."
|
||||
#elif ENABLED(NEOPIXEL_BKGD_INDEX_FIRST)
|
||||
#if PIN_EXISTS(LCD_BACKLIGHT)
|
||||
#error "LCD_BACKLIGHT_PIN and NEOPIXEL_BKGD_INDEX_FIRST are not supported at the same time."
|
||||
#elif ENABLED(NEOPIXEL_BKGD_ALWAYS_ON)
|
||||
#error "LCD_BACKLIGHT_TIMEOUT is not compatible with NEOPIXEL_BKGD_ALWAYS_ON."
|
||||
#endif
|
||||
#elif !PIN_EXISTS(LCD_BACKLIGHT)
|
||||
#error "LCD_BACKLIGHT_TIMEOUT_MINS requires LCD_BACKLIGHT_PIN."
|
||||
#error "LCD_BACKLIGHT_TIMEOUT_MINS requires either LCD_BACKLIGHT_PIN or NEOPIXEL_BKGD_INDEX_FIRST."
|
||||
#endif
|
||||
#endif
|
||||
|
||||
|
|
|
@ -24,7 +24,7 @@
|
|||
|
||||
#include "../MarlinCore.h" // for printingIsPaused
|
||||
|
||||
#if LED_POWEROFF_TIMEOUT > 0 || BOTH(HAS_WIRED_LCD, PRINTER_EVENT_LEDS)
|
||||
#if LED_POWEROFF_TIMEOUT > 0 || BOTH(HAS_WIRED_LCD, PRINTER_EVENT_LEDS) || (defined(LCD_BACKLIGHT_TIMEOUT_MINS) && defined(NEOPIXEL_BKGD_INDEX_FIRST))
|
||||
#include "../feature/leds/leds.h"
|
||||
#endif
|
||||
|
||||
|
@ -186,12 +186,17 @@ constexpr uint8_t epps = ENCODER_PULSES_PER_STEP;
|
|||
#if LCD_BACKLIGHT_TIMEOUT_MINS
|
||||
|
||||
constexpr uint8_t MarlinUI::backlight_timeout_min, MarlinUI::backlight_timeout_max;
|
||||
|
||||
uint8_t MarlinUI::backlight_timeout_minutes; // Initialized by settings.load()
|
||||
millis_t MarlinUI::backlight_off_ms = 0;
|
||||
|
||||
void MarlinUI::refresh_backlight_timeout() {
|
||||
backlight_off_ms = backlight_timeout_minutes ? millis() + backlight_timeout_minutes * 60UL * 1000UL : 0;
|
||||
WRITE(LCD_BACKLIGHT_PIN, HIGH);
|
||||
#ifdef NEOPIXEL_BKGD_INDEX_FIRST
|
||||
neo.reset_background_color();
|
||||
neo.show();
|
||||
#elif PIN_EXISTS(LCD_BACKLIGHT)
|
||||
WRITE(LCD_BACKLIGHT_PIN, HIGH);
|
||||
#endif
|
||||
}
|
||||
|
||||
#elif HAS_DISPLAY_SLEEP
|
||||
|
@ -1196,8 +1201,14 @@ void MarlinUI::init() {
|
|||
#endif
|
||||
|
||||
#if LCD_BACKLIGHT_TIMEOUT_MINS
|
||||
|
||||
if (backlight_off_ms && ELAPSED(ms, backlight_off_ms)) {
|
||||
WRITE(LCD_BACKLIGHT_PIN, LOW); // Backlight off
|
||||
#ifdef NEOPIXEL_BKGD_INDEX_FIRST
|
||||
neo.set_background_off();
|
||||
neo.show();
|
||||
#elif PIN_EXIST(LCD_BACKLIGHT)
|
||||
WRITE(LCD_BACKLIGHT_PIN, LOW); // Backlight off
|
||||
#endif
|
||||
backlight_off_ms = 0;
|
||||
}
|
||||
#elif HAS_DISPLAY_SLEEP
|
||||
|
|
|
@ -17,7 +17,7 @@ restore_configs
|
|||
opt_set MOTHERBOARD BOARD_RAMPS_14_RE_ARM_EFB SERIAL_PORT_3 3 \
|
||||
NEOPIXEL_TYPE NEO_RGB RGB_LED_R_PIN P2_12 RGB_LED_G_PIN P1_23 RGB_LED_B_PIN P1_22 RGB_LED_W_PIN P1_24
|
||||
opt_enable FYSETC_MINI_12864_2_1 SDSUPPORT SDCARD_READONLY SERIAL_PORT_2 RGBW_LED E_DUAL_STEPPER_DRIVERS \
|
||||
NEOPIXEL_LED NEOPIXEL_IS_SEQUENTIAL NEOPIXEL_STARTUP_TEST NEOPIXEL_BKGD_INDEX_FIRST NEOPIXEL_BKGD_INDEX_LAST NEOPIXEL_BKGD_COLOR NEOPIXEL_BKGD_ALWAYS_ON
|
||||
NEOPIXEL_LED NEOPIXEL_IS_SEQUENTIAL NEOPIXEL_STARTUP_TEST NEOPIXEL_BKGD_INDEX_FIRST NEOPIXEL_BKGD_INDEX_LAST NEOPIXEL_BKGD_COLOR NEOPIXEL_BKGD_TIMEOUT_COLOR NEOPIXEL_BKGD_ALWAYS_ON
|
||||
exec_test $1 $2 "ReARM EFB VIKI2, SDSUPPORT, 2 Serial ports (USB CDC + UART0), NeoPixel" "$3"
|
||||
|
||||
#restore_configs
|
||||
|
|
Loading…
Reference in a new issue