diff --git a/Marlin/src/Marlin.cpp b/Marlin/src/Marlin.cpp index 9ccd57566..eb0526787 100644 --- a/Marlin/src/Marlin.cpp +++ b/Marlin/src/Marlin.cpp @@ -130,6 +130,10 @@ #include "feature/leds/tempstat.h" #endif +#if HAS_CASE_LIGHT + #include "feature/caselight.h" +#endif + bool Running = true; /** @@ -358,8 +362,6 @@ void quickstop_stepper() { SYNC_PLAN_POSITION_KINEMATIC(); } -#include "gcode/feature/caselight/M355.h" - #if ENABLED(MIXING_EXTRUDER) #include "gcode/feature/mixing/M163.h" #if MIXING_VIRTUAL_TOOLS > 1 @@ -859,8 +861,6 @@ void setup() { #endif #if HAS_CASE_LIGHT - case_light_on = CASE_LIGHT_DEFAULT_ON; - case_light_brightness = CASE_LIGHT_DEFAULT_BRIGHTNESS; update_case_light(); #endif diff --git a/Marlin/src/feature/caselight.cpp b/Marlin/src/feature/caselight.cpp new file mode 100644 index 000000000..6d755ff9d --- /dev/null +++ b/Marlin/src/feature/caselight.cpp @@ -0,0 +1,46 @@ +/** + * Marlin 3D Printer Firmware + * Copyright (C) 2016 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] + * + * Based on Sprinter and grbl. + * Copyright (C) 2011 Camiel Gubbels / Erik van der Zalm + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + * + */ + +#include "../inc/MarlinConfig.h" + +#if HAS_CASE_LIGHT + +int case_light_brightness = CASE_LIGHT_DEFAULT_BRIGHTNESS; +bool case_light_on = CASE_LIGHT_DEFAULT_ON; + +#ifndef INVERT_CASE_LIGHT + #define INVERT_CASE_LIGHT false +#endif + +void update_case_light() { + SET_OUTPUT(CASE_LIGHT_PIN); + uint8_t case_light_bright = (uint8_t)case_light_brightness; + if (case_light_on) { + if (USEABLE_HARDWARE_PWM(CASE_LIGHT_PIN)) { + analogWrite(CASE_LIGHT_PIN, INVERT_CASE_LIGHT ? 255 - case_light_brightness : case_light_brightness ); + } + else WRITE(CASE_LIGHT_PIN, INVERT_CASE_LIGHT ? LOW : HIGH); + } + else WRITE(CASE_LIGHT_PIN, INVERT_CASE_LIGHT ? HIGH : LOW); +} + +#endif // HAS_CASE_LIGHT diff --git a/Marlin/src/feature/caselight.h b/Marlin/src/feature/caselight.h new file mode 100644 index 000000000..98b8c7d52 --- /dev/null +++ b/Marlin/src/feature/caselight.h @@ -0,0 +1,31 @@ +/** + * Marlin 3D Printer Firmware + * Copyright (C) 2016 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] + * + * Based on Sprinter and grbl. + * Copyright (C) 2011 Camiel Gubbels / Erik van der Zalm + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + * + */ + +#ifndef __CASELIGHT_H__ +#define __CASELIGHT_H__ + +extern int case_light_brightness; // LCD routine wants INT +extern bool case_light_on; + +void update_case_light(); + +#endif // __CASELIGHT_H__ diff --git a/Marlin/src/gcode/feature/caselight/M355.h b/Marlin/src/gcode/feature/caselight/M355.cpp similarity index 73% rename from Marlin/src/gcode/feature/caselight/M355.h rename to Marlin/src/gcode/feature/caselight/M355.cpp index 4a8edaf8a..2daebf61a 100644 --- a/Marlin/src/gcode/feature/caselight/M355.h +++ b/Marlin/src/gcode/feature/caselight/M355.cpp @@ -20,27 +20,13 @@ * */ +#include "../../gcode.h" + +#include "../../../inc/MarlinConfig.h" + #if HAS_CASE_LIGHT - - #ifndef INVERT_CASE_LIGHT - #define INVERT_CASE_LIGHT false - #endif - int case_light_brightness; // LCD routine wants INT - bool case_light_on; - - void update_case_light() { - pinMode(CASE_LIGHT_PIN, OUTPUT); // digitalWrite doesn't set the port mode - uint8_t case_light_bright = (uint8_t)case_light_brightness; - if (case_light_on) { - if (USEABLE_HARDWARE_PWM(CASE_LIGHT_PIN)) { - analogWrite(CASE_LIGHT_PIN, INVERT_CASE_LIGHT ? 255 - case_light_brightness : case_light_brightness ); - } - else WRITE(CASE_LIGHT_PIN, INVERT_CASE_LIGHT ? LOW : HIGH); - } - else WRITE(CASE_LIGHT_PIN, INVERT_CASE_LIGHT ? HIGH : LOW); - } - -#endif // HAS_CASE_LIGHT + #include "../../../feature/caselight.h" +#endif /** * M355: Turn case light on/off and set brightness @@ -54,7 +40,7 @@ * M355 P200 S0 turns off the light & sets the brightness level * M355 S1 turns on the light with a brightness of 200 (assuming a PWM pin) */ -void gcode_M355() { +void GcodeSuite::M355() { #if HAS_CASE_LIGHT uint8_t args = 0; if (parser.seenval('P')) ++args, case_light_brightness = parser.value_byte(); diff --git a/Marlin/src/gcode/gcode.cpp b/Marlin/src/gcode/gcode.cpp index 971da19aa..065bf1fe2 100644 --- a/Marlin/src/gcode/gcode.cpp +++ b/Marlin/src/gcode/gcode.cpp @@ -119,7 +119,6 @@ void GcodeSuite::dwell(millis_t time) { extern void gcode_M163(); extern void gcode_M164(); extern void gcode_M165(); -extern void gcode_M355(); extern void gcode_M999(); extern void gcode_T(uint8_t tmp_extruder); @@ -676,9 +675,7 @@ void GcodeSuite::process_next_command() { case 351: M351(); break; // M351: Toggle MS1 MS2 pins directly, S# determines MS1 or MS2, X# sets the pin high/low. #endif - case 355: // M355 set case light brightness - gcode_M355(); - break; + case 355: M355(); break; // M355: Set case light brightness #if ENABLED(DEBUG_GCODE_PARSER) case 800: