From a41130f8548b478d202e6bee95f1e4561740c2ea Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Sat, 16 Sep 2017 05:09:34 -0500 Subject: [PATCH] Temp stat LEDs --- Marlin/src/Marlin.cpp | 35 ++-------------- Marlin/src/feature/leds/tempstat.cpp | 60 ++++++++++++++++++++++++++++ Marlin/src/feature/leds/tempstat.h | 32 +++++++++++++++ 3 files changed, 96 insertions(+), 31 deletions(-) create mode 100644 Marlin/src/feature/leds/tempstat.cpp create mode 100644 Marlin/src/feature/leds/tempstat.h diff --git a/Marlin/src/Marlin.cpp b/Marlin/src/Marlin.cpp index f96ef14d80..f55673646a 100644 --- a/Marlin/src/Marlin.cpp +++ b/Marlin/src/Marlin.cpp @@ -129,6 +129,10 @@ #include "feature/pause.h" #endif +#if ENABLED(TEMP_STAT_LEDS) + #include "feature/leds/tempstat.h" +#endif + bool Running = true; /** @@ -657,37 +661,6 @@ void quickstop_stepper() { #endif // USE_CONTROLLER_FAN -#if ENABLED(TEMP_STAT_LEDS) - - static bool red_led = false; - static millis_t next_status_led_update_ms = 0; - - void handle_status_leds(void) { - if (ELAPSED(millis(), next_status_led_update_ms)) { - next_status_led_update_ms += 500; // Update every 0.5s - float max_temp = 0.0; - #if HAS_TEMP_BED - max_temp = MAX3(max_temp, thermalManager.degTargetBed(), thermalManager.degBed()); - #endif - HOTEND_LOOP() - max_temp = MAX3(max_temp, thermalManager.degHotend(e), thermalManager.degTargetHotend(e)); - const bool new_led = (max_temp > 55.0) ? true : (max_temp < 54.0) ? false : red_led; - if (new_led != red_led) { - red_led = new_led; - #if PIN_EXISTS(STAT_LED_RED) - WRITE(STAT_LED_RED_PIN, new_led ? HIGH : LOW); - #if PIN_EXISTS(STAT_LED_BLUE) - WRITE(STAT_LED_BLUE_PIN, new_led ? LOW : HIGH); - #endif - #else - WRITE(STAT_LED_BLUE_PIN, new_led ? HIGH : LOW); - #endif - } - } - } - -#endif - #if ENABLED(FILAMENT_RUNOUT_SENSOR) void handle_filament_runout() { diff --git a/Marlin/src/feature/leds/tempstat.cpp b/Marlin/src/feature/leds/tempstat.cpp new file mode 100644 index 0000000000..8f2be49f2a --- /dev/null +++ b/Marlin/src/feature/leds/tempstat.cpp @@ -0,0 +1,60 @@ +/** + * 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 . + * + */ + +/** + * Marlin RGB LED general support + */ + +#include "../../inc/MarlinConfig.h" + +#if ENABLED(TEMP_STAT_LEDS) + +#include "tempstat.h" +#include "../../module/temperature.h" + +void handle_status_leds(void) { + static bool red_led = false; + static millis_t next_status_led_update_ms = 0; + if (ELAPSED(millis(), next_status_led_update_ms)) { + next_status_led_update_ms += 500; // Update every 0.5s + float max_temp = 0.0; + #if HAS_TEMP_BED + max_temp = MAX3(max_temp, thermalManager.degTargetBed(), thermalManager.degBed()); + #endif + HOTEND_LOOP() + max_temp = MAX3(max_temp, thermalManager.degHotend(e), thermalManager.degTargetHotend(e)); + const bool new_led = (max_temp > 55.0) ? true : (max_temp < 54.0) ? false : red_led; + if (new_led != red_led) { + red_led = new_led; + #if PIN_EXISTS(STAT_LED_RED) + WRITE(STAT_LED_RED_PIN, new_led ? HIGH : LOW); + #if PIN_EXISTS(STAT_LED_BLUE) + WRITE(STAT_LED_BLUE_PIN, new_led ? LOW : HIGH); + #endif + #else + WRITE(STAT_LED_BLUE_PIN, new_led ? HIGH : LOW); + #endif + } + } +} + +#endif // TEMP_STAT_LEDS diff --git a/Marlin/src/feature/leds/tempstat.h b/Marlin/src/feature/leds/tempstat.h new file mode 100644 index 0000000000..290e73f1c0 --- /dev/null +++ b/Marlin/src/feature/leds/tempstat.h @@ -0,0 +1,32 @@ +/** + * 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 . + * + */ + +/** + * Marlin general RGB LED support + */ + +#ifndef __TEMPSTAT_H__ +#define __TEMPSTAT_H__ + +void handle_status_leds(void); + +#endif // __TEMPSTAT_H__