Browse Source

Active MMU slot indicator (#21842)

charlespick 3 years ago
parent
commit
ec2f4f512e
2 changed files with 270 additions and 10 deletions
  1. 267 7
      Marlin/src/lcd/dogm/status/hotend.h
  2. 3 3
      Marlin/src/lcd/dogm/status_screen_DOGM.cpp

+ 267 - 7
Marlin/src/lcd/dogm/status/hotend.h

@@ -25,16 +25,21 @@
 // lcd/dogm/status/hotend.h - Status Screen Hotends bitmaps
 //
 
-#define STATUS_HOTEND1_WIDTH  16
-
-#define MAX_HOTEND_BITMAPS     5
-#if HOTENDS > MAX_HOTEND_BITMAPS
-  #define STATUS_HOTEND_BITMAPS MAX_HOTEND_BITMAPS
+#if HAS_MMU
+  #define STATUS_HOTEND_BITMAPS EXTRUDERS
+  #define MAX_HOTEND_BITMAPS 8
 #else
   #define STATUS_HOTEND_BITMAPS HOTENDS
+  #define MAX_HOTEND_BITMAPS 5
+#endif
+#if STATUS_HOTEND_BITMAPS > MAX_HOTEND_BITMAPS
+  #undef STATUS_HOTEND_BITMAPS
+  #define STATUS_HOTEND_BITMAPS MAX_HOTEND_BITMAPS
 #endif
 
-#if HOTENDS == 1 || ENABLED(STATUS_HOTEND_NUMBERLESS)
+#define STATUS_HOTEND1_WIDTH  16
+
+#if STATUS_HOTEND_BITMAPS == 1 || ENABLED(STATUS_HOTEND_NUMBERLESS)
 
   const unsigned char status_hotend_a_bmp[] PROGMEM = {
     B00011111,B11100000,
@@ -70,7 +75,7 @@
 
   #endif
 
-#elif HOTENDS >= 2
+#elif STATUS_HOTEND_BITMAPS > 1
 
   #ifdef STATUS_HOTEND_ANIM
 
@@ -483,4 +488,259 @@
 
   #endif
 
+  #if STATUS_HOTEND_BITMAPS >= 6
+
+    #ifdef STATUS_HOTEND_ANIM
+
+      const unsigned char status_hotend6_a_bmp[] PROGMEM = {
+        B00011111,B11100000,
+        B00111111,B11110000,
+        #if LCD_FIRST_TOOL == 0
+          B00111000,B01110000,
+          B00111011,B11110000,
+          B00011000,B11100000,
+          B00011111,B01100000,
+          B00111111,B01110000,
+          B00111011,B01110000,
+          B00111100,B11110000,
+        #else
+          B00111100,B01110000,
+          B00111011,B11110000,
+          B00011011,B11100000,
+          B00011000,B11100000,
+          B00111011,B01110000,
+          B00111011,B01110000,
+          B00111100,B11110000,
+        #endif
+        B00001111,B11000000,
+        B00000111,B10000000,
+        B00000011,B00000000
+      };
+
+      const unsigned char status_hotend6_b_bmp[] PROGMEM = {
+        B00011111,B11100000,
+        B00100000,B00010000,
+        #if LCD_FIRST_TOOL == 0
+          B00100111,B10010000,
+          B00100100,B00010000,
+          B00010111,B00100000,
+          B00010000,B10100000,
+          B00100000,B10010000,
+          B00100100,B10010000,
+          B00110011,B00110000,
+        #else
+          B00100011,B10010000,
+          B00100100,B00010000,
+          B00010100,B00100000,
+          B00010111,B00100000,
+          B00100100,B10010000,
+          B00100100,B10010000,
+          B00110011,B00110000,
+        #endif
+        B00001000,B01000000,
+        B00000100,B10000000,
+        B00000011,B00000000
+      };
+
+    #else
+
+      const unsigned char status_hotend6_a_bmp[] PROGMEM = {
+        B00011111,B11100000,
+        #if LCD_FIRST_TOOL == 0
+          B00111000,B01110000,
+          B00111011,B11110000,
+          B00111000,B11110000,
+          B00011111,B01100000,
+          B00011111,B01100000,
+          B00111011,B01110000,
+          B00111100,B11110000,
+        #else
+          B00111100,B01110000,
+          B00111011,B11110000,
+          B00111011,B11110000,
+          B00011000,B11100000,
+          B00011011,B01100000,
+          B00111011,B01110000,
+          B00111100,B11110000,
+        #endif
+        B00111111,B11110000,
+        B00001111,B11000000,
+        B00000111,B10000000,
+        B00000011,B00000000
+      };
+
+    #endif
+
+  #endif
+
+  #if STATUS_HOTEND_BITMAPS >= 7
+
+    #ifdef STATUS_HOTEND_ANIM
+
+      const unsigned char status_hotend7_a_bmp[] PROGMEM = {
+        B00011111,B11100000,
+        B00111111,B11110000,
+        #if LCD_FIRST_TOOL == 0
+          B00111100,B01110000,
+          B00111011,B11110000,
+          B00011011,B11100000,
+          B00011000,B11100000,
+          B00111011,B01110000,
+          B00111011,B01110000,
+          B00111100,B11110000,
+        #else
+          B00111000,B01110000,
+          B00111011,B01110000,
+          B00011111,B01100000,
+          B00011110,B11100000,
+          B00111110,B11110000,
+          B00111101,B11110000,
+          B00111101,B11110000,
+        #endif
+        B00001111,B11000000,
+        B00000111,B10000000,
+        B00000011,B00000000
+      };
+
+      const unsigned char status_hotend7_b_bmp[] PROGMEM = {
+        B00011111,B11100000,
+        B00100000,B00010000,
+        #if LCD_FIRST_TOOL == 0
+          B00100011,B10010000,
+          B00100100,B00010000,
+          B00010100,B00100000,
+          B00010111,B00100000,
+          B00100100,B10010000,
+          B00100100,B10010000,
+          B00110011,B00110000,
+        #else
+          B00100111,B10010000,
+          B00100100,B10010000,
+          B00010000,B10100000,
+          B00010001,B00100000,
+          B00100001,B00010000,
+          B00100010,B00010000,
+          B00110010,B00110000,
+        #endif
+        B00001000,B01000000,
+        B00000100,B10000000,
+        B00000011,B00000000
+      };
+
+    #else
+
+      const unsigned char status_hotend7_a_bmp[] PROGMEM = {
+        B00011111,B11100000,
+        #if LCD_FIRST_TOOL == 0
+          B00111100,B01110000,
+          B00111011,B11110000,
+          B00111011,B11110000,
+          B00011000,B11100000,
+          B00011011,B01100000,
+          B00111011,B01110000,
+          B00111100,B11110000,
+        #else
+          B00111000,B01110000,
+          B00111011,B01110000,
+          B00111111,B01110000,
+          B00011110,B11100000,
+          B00011110,B11100000,
+          B00111101,B11110000,
+          B00111101,B11110000,
+        #endif
+        B00111111,B11110000,
+        B00001111,B11000000,
+        B00000111,B10000000,
+        B00000011,B00000000
+      };
+
+    #endif
+
+  #endif
+
+  #if STATUS_HOTEND_BITMAPS >= 8
+
+    #ifdef STATUS_HOTEND_ANIM
+
+      const unsigned char status_hotend8_a_bmp[] PROGMEM = {
+        B00011111,B11100000,
+        B00111111,B11110000,
+        #if LCD_FIRST_TOOL == 0
+          B00111000,B01110000,
+          B00111011,B01110000,
+          B00011111,B01100000,
+          B00011110,B11100000,
+          B00111110,B11110000,
+          B00111101,B11110000,
+          B00111101,B11110000,
+        #else
+          B00111100,B11110000,
+          B00111011,B01110000,
+          B00011011,B01100000,
+          B00011100,B11100000,
+          B00111011,B01110000,
+          B00111011,B01110000,
+          B00111100,B11110000,
+        #endif
+        B00001111,B11000000,
+        B00000111,B10000000,
+        B00000011,B00000000
+      };
+
+      const unsigned char status_hotend8_b_bmp[] PROGMEM = {
+        B00011111,B11100000,
+        B00100000,B00010000,
+        #if LCD_FIRST_TOOL == 0
+          B00100111,B10010000,
+          B00100100,B10010000,
+          B00010000,B10100000,
+          B00010001,B00100000,
+          B00100001,B00010000,
+          B00100010,B00010000,
+          B00110010,B00110000,
+        #else
+          B00100011,B00010000,
+          B00100100,B10010000,
+          B00010100,B10100000,
+          B00010011,B00100000,
+          B00100100,B10010000,
+          B00100100,B10010000,
+          B00110011,B00110000,
+        #endif
+        B00001000,B01000000,
+        B00000100,B10000000,
+        B00000011,B00000000
+      };
+
+    #else
+
+      const unsigned char status_hotend8_a_bmp[] PROGMEM = {
+        B00011111,B11100000,
+        #if LCD_FIRST_TOOL == 0
+          B00111000,B01110000,
+          B00111011,B01110000,
+          B00111111,B01110000,
+          B00011110,B11100000,
+          B00011110,B11100000,
+          B00111101,B11110000,
+          B00111101,B11110000,
+        #else
+          B00111100,B11110000,
+          B00111011,B01110000,
+          B00111011,B01110000,
+          B00011100,B11100000,
+          B00011011,B01100000,
+          B00111011,B01110000,
+          B00111100,B11110000,
+        #endif
+        B00111111,B11110000,
+        B00001111,B11000000,
+        B00000111,B10000000,
+        B00000011,B00000000
+      };
+
+    #endif
+
+  #endif
+
 #endif

+ 3 - 3
Marlin/src/lcd/dogm/status_screen_DOGM.cpp

@@ -274,12 +274,12 @@ FORCE_INLINE void _draw_centered_temp(const celsius_t temp, const uint8_t tx, co
         #if ENABLED(STATUS_HEAT_PERCENT)
           if (isHeat && tall <= BAR_TALL) {
             const uint8_t ph = STATUS_HEATERS_HEIGHT - 1 - tall;
-            u8g.drawBitmapP(hx, STATUS_HEATERS_Y, bw, ph, HOTEND_BITMAP(heater_id, false));
-            u8g.drawBitmapP(hx, STATUS_HEATERS_Y + ph, bw, tall + 1, HOTEND_BITMAP(heater_id, true) + ph * bw);
+            u8g.drawBitmapP(hx, STATUS_HEATERS_Y, bw, ph, HOTEND_BITMAP(TERN(HAS_MMU, active_extruder, heater_id), false));
+            u8g.drawBitmapP(hx, STATUS_HEATERS_Y + ph, bw, tall + 1, HOTEND_BITMAP(TERN(HAS_MMU, active_extruder, heater_id), true) + ph * bw);
           }
           else
         #endif
-            u8g.drawBitmapP(hx, STATUS_HEATERS_Y, bw, STATUS_HEATERS_HEIGHT, HOTEND_BITMAP(heater_id, isHeat));
+            u8g.drawBitmapP(hx, STATUS_HEATERS_Y, bw, STATUS_HEATERS_HEIGHT, HOTEND_BITMAP(TERN(HAS_MMU, active_extruder, heater_id), isHeat));
       #endif
 
     } // PAGE_CONTAINS