Sfoglia il codice sorgente

Fix and optimize case-light code

Scott Lahteine 8 anni fa
parent
commit
61437d988a
2 ha cambiato i file con 27 aggiunte e 34 eliminazioni
  1. 10
    28
      Marlin/Marlin_main.cpp
  2. 17
    6
      Marlin/ultralcd.cpp

+ 10
- 28
Marlin/Marlin_main.cpp Vedi File

@@ -881,27 +881,6 @@ void setup_homepin(void) {
881 881
   #endif
882 882
 }
883 883
 
884
-#if HAS_CASE_LIGHT
885
-
886
-  void setup_case_light() {
887
-    digitalWrite(CASE_LIGHT_PIN,
888
-      #if ENABLED(CASE_LIGHT_DEFAULT_ON)
889
-        255
890
-      #else
891
-        0
892
-      #endif
893
-    );
894
-    analogWrite(CASE_LIGHT_PIN,
895
-      #if ENABLED(CASE_LIGHT_DEFAULT_ON)
896
-        255
897
-      #else
898
-        0
899
-      #endif
900
-    );
901
-  }
902
-
903
-#endif
904
-
905 884
 void setup_powerhold() {
906 885
   #if HAS_SUICIDE
907 886
     OUT_WRITE(SUICIDE_PIN, HIGH);
@@ -7279,6 +7258,13 @@ inline void gcode_M907() {
7279 7258
 
7280 7259
 #if HAS_CASE_LIGHT
7281 7260
 
7261
+  uint8_t case_light_brightness = 255;
7262
+
7263
+  void update_case_light() {
7264
+    digitalWrite(CASE_LIGHT_PIN, case_light_on ? HIGH : LOW);
7265
+    analogWrite(CASE_LIGHT_PIN, case_light_on ? case_light_brightness : 0);
7266
+  }
7267
+
7282 7268
   /**
7283 7269
    * M355: Turn case lights on/off and set brightness
7284 7270
    *
@@ -7286,13 +7272,9 @@ inline void gcode_M907() {
7286 7272
    *   P<byte>  Set case light brightness (PWM pin required)
7287 7273
    */
7288 7274
   inline void gcode_M355() {
7289
-    static uint8_t case_light_brightness = 255;
7290 7275
     if (code_seen('P')) case_light_brightness = code_value_byte();
7291
-    if (code_seen('S')) {
7292
-      case_light_on = code_value_bool();
7293
-      digitalWrite(CASE_LIGHT_PIN, case_light_on ? HIGH : LOW);
7294
-      analogWrite(CASE_LIGHT_PIN, case_light_on ? case_light_brightness : 0);
7295
-    }
7276
+    if (code_seen('S')) case_light_on = code_value_bool();
7277
+    update_case_light();
7296 7278
     SERIAL_ECHO_START;
7297 7279
     SERIAL_ECHOPGM("Case lights ");
7298 7280
     case_light_on ? SERIAL_ECHOLNPGM("on") : SERIAL_ECHOLNPGM("off");
@@ -10020,7 +10002,7 @@ void setup() {
10020 10002
   #endif
10021 10003
 
10022 10004
   #if HAS_CASE_LIGHT
10023
-    setup_case_light();
10005
+    update_case_light();
10024 10006
   #endif
10025 10007
 
10026 10008
   #if HAS_BED_PROBE

+ 17
- 6
Marlin/ultralcd.cpp Vedi File

@@ -110,9 +110,7 @@ uint8_t lcdDrawUpdate = LCDVIEW_CLEAR_CALL_REDRAW; // Set when the LCD needs to
110 110
   #if HAS_POWER_SWITCH
111 111
     extern bool powersupply;
112 112
   #endif
113
-  #if HAS_CASE_LIGHT
114
-    extern bool case_light_on;
115
-  #endif
113
+
116 114
   const float manual_feedrate_mm_m[] = MANUAL_FEEDRATE;
117 115
   void lcd_main_menu();
118 116
   void lcd_tune_menu();
@@ -576,6 +574,19 @@ void kill_screen(const char* lcd_msg) {
576 574
 
577 575
   #endif //SDSUPPORT
578 576
 
577
+  #if HAS_CASE_LIGHT && ENABLED(MENU_ITEM_CASE_LIGHT)
578
+
579
+    extern bool case_light_on;
580
+    extern void update_case_light();
581
+
582
+    void toggle_case_light() {
583
+      case_light_on = !case_light_on;
584
+      lcdDrawUpdate = LCDVIEW_CALL_REDRAW_NEXT;
585
+      update_case_light();
586
+    }
587
+
588
+  #endif // MENU_ITEM_CASE_LIGHT
589
+
579 590
   /**
580 591
    *
581 592
    * "Main" menu
@@ -590,10 +601,10 @@ void kill_screen(const char* lcd_msg) {
590 601
     // Switch case light on/off
591 602
     //
592 603
     #if HAS_CASE_LIGHT && ENABLED(MENU_ITEM_CASE_LIGHT)
593
-      if (case_light_on == 0)
594
-        MENU_ITEM(gcode, MSG_LIGHTS_ON, PSTR("M355 S1"));
604
+      if (case_light_on)
605
+        MENU_ITEM(function, MSG_LIGHTS_OFF, toggle_case_light);
595 606
       else
596
-        MENU_ITEM(gcode, MSG_LIGHTS_OFF, PSTR("M355 S0"));
607
+        MENU_ITEM(function, MSG_LIGHTS_ON, toggle_case_light);
597 608
     #endif
598 609
 
599 610
     #if ENABLED(BLTOUCH)

Loading…
Annulla
Salva