✨ LCD_BACKLIGHT_TIMEOUT for Neopixel LCD (#25438)
This commit is contained in:
@@ -3403,7 +3403,8 @@
|
|||||||
// Use some of the NeoPixel LEDs for static (background) lighting
|
// 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_FIRST 0 // Index of the first background LED
|
||||||
//#define NEOPIXEL_BKGD_INDEX_LAST 5 // Index of the last 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
|
//#define NEOPIXEL_BKGD_ALWAYS_ON // Keep the backlight on when other NeoPixels are off
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
@@ -54,7 +54,15 @@ Adafruit_NeoPixel Marlin_NeoPixel::adaneo1(NEOPIXEL_PIXELS, NEOPIXEL_PIN, NEOPIX
|
|||||||
set_background_color(background_color);
|
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) {
|
void Marlin_NeoPixel::set_color(const uint32_t color) {
|
||||||
if (neoindex >= 0) {
|
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 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 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 reset_background_color();
|
||||||
|
static void set_background_off();
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
static void begin() {
|
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 LCD_BACKLIGHT_TIMEOUT_MINS
|
||||||
#if !HAS_ENCODER_ACTION
|
#if !HAS_ENCODER_ACTION
|
||||||
#error "LCD_BACKLIGHT_TIMEOUT_MINS requires an LCD with encoder or keypad."
|
#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)
|
#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
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
@@ -24,7 +24,7 @@
|
|||||||
|
|
||||||
#include "../MarlinCore.h" // for printingIsPaused
|
#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"
|
#include "../feature/leds/leds.h"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@@ -186,12 +186,17 @@ constexpr uint8_t epps = ENCODER_PULSES_PER_STEP;
|
|||||||
#if LCD_BACKLIGHT_TIMEOUT_MINS
|
#if LCD_BACKLIGHT_TIMEOUT_MINS
|
||||||
|
|
||||||
constexpr uint8_t MarlinUI::backlight_timeout_min, MarlinUI::backlight_timeout_max;
|
constexpr uint8_t MarlinUI::backlight_timeout_min, MarlinUI::backlight_timeout_max;
|
||||||
|
|
||||||
uint8_t MarlinUI::backlight_timeout_minutes; // Initialized by settings.load()
|
uint8_t MarlinUI::backlight_timeout_minutes; // Initialized by settings.load()
|
||||||
millis_t MarlinUI::backlight_off_ms = 0;
|
millis_t MarlinUI::backlight_off_ms = 0;
|
||||||
|
|
||||||
void MarlinUI::refresh_backlight_timeout() {
|
void MarlinUI::refresh_backlight_timeout() {
|
||||||
backlight_off_ms = backlight_timeout_minutes ? millis() + backlight_timeout_minutes * 60UL * 1000UL : 0;
|
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
|
#elif HAS_DISPLAY_SLEEP
|
||||||
@@ -1196,8 +1201,14 @@ void MarlinUI::init() {
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if LCD_BACKLIGHT_TIMEOUT_MINS
|
#if LCD_BACKLIGHT_TIMEOUT_MINS
|
||||||
|
|
||||||
if (backlight_off_ms && ELAPSED(ms, backlight_off_ms)) {
|
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;
|
backlight_off_ms = 0;
|
||||||
}
|
}
|
||||||
#elif HAS_DISPLAY_SLEEP
|
#elif HAS_DISPLAY_SLEEP
|
||||||
|
@@ -17,7 +17,7 @@ restore_configs
|
|||||||
opt_set MOTHERBOARD BOARD_RAMPS_14_RE_ARM_EFB SERIAL_PORT_3 3 \
|
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
|
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 \
|
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"
|
exec_test $1 $2 "ReARM EFB VIKI2, SDSUPPORT, 2 Serial ports (USB CDC + UART0), NeoPixel" "$3"
|
||||||
|
|
||||||
#restore_configs
|
#restore_configs
|
||||||
|
Reference in New Issue
Block a user