From 15204470a8da2b579dab029cf8bdf6038914e462 Mon Sep 17 00:00:00 2001 From: ladismrkolj Date: Sun, 5 Dec 2021 22:41:39 +0100 Subject: [PATCH] =?UTF-8?q?=F0=9F=94=A7=20Chamber=20Fan=20index=20option?= =?UTF-8?q?=20(#23262)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Marlin/Configuration_adv.h | 3 ++- Marlin/src/inc/SanityCheck.h | 4 ++-- Marlin/src/inc/Warnings.cpp | 4 ++++ Marlin/src/module/temperature.cpp | 4 +++- 4 files changed, 11 insertions(+), 4 deletions(-) diff --git a/Marlin/Configuration_adv.h b/Marlin/Configuration_adv.h index 081210825a..afae421a54 100644 --- a/Marlin/Configuration_adv.h +++ b/Marlin/Configuration_adv.h @@ -186,7 +186,8 @@ //#define CHAMBER_FAN // Enable a fan on the chamber #if ENABLED(CHAMBER_FAN) - #define CHAMBER_FAN_MODE 2 // Fan control mode: 0=Static; 1=Linear increase when temp is higher than target; 2=V-shaped curve; 3=similar to 1 but fan is always on. + //#define CHAMBER_FAN_INDEX 2 // Index of a fan to repurpose as the chamber fan. (Default: first unused fan) + #define CHAMBER_FAN_MODE 2 // Fan control mode: 0=Static; 1=Linear increase when temp is higher than target; 2=V-shaped curve; 3=similar to 1 but fan is always on. #if CHAMBER_FAN_MODE == 0 #define CHAMBER_FAN_BASE 255 // Chamber fan PWM (0-255) #elif CHAMBER_FAN_MODE == 1 diff --git a/Marlin/src/inc/SanityCheck.h b/Marlin/src/inc/SanityCheck.h index 743796fcc4..3fae2f953a 100644 --- a/Marlin/src/inc/SanityCheck.h +++ b/Marlin/src/inc/SanityCheck.h @@ -2272,8 +2272,8 @@ static_assert(Y_MAX_LENGTH >= Y_BED_SIZE, "Movement bounds (Y_MIN_POS, Y_MAX_POS #error "LASER_COOLANT_FLOW_METER requires FLOWMETER_PIN and LASER_FEATURE." #endif -#if ENABLED(CHAMBER_FAN) && !(defined(CHAMBER_FAN_MODE) && WITHIN(CHAMBER_FAN_MODE, 0, 2)) - #error "CHAMBER_FAN_MODE must be between 0 and 2." +#if ENABLED(CHAMBER_FAN) && !(defined(CHAMBER_FAN_MODE) && WITHIN(CHAMBER_FAN_MODE, 0, 3)) + #error "CHAMBER_FAN_MODE must be between 0 and 3." #endif #if ENABLED(CHAMBER_VENT) diff --git a/Marlin/src/inc/Warnings.cpp b/Marlin/src/inc/Warnings.cpp index 1976c09581..b7eef9c49f 100644 --- a/Marlin/src/inc/Warnings.cpp +++ b/Marlin/src/inc/Warnings.cpp @@ -524,6 +524,10 @@ #endif #endif +#if ENABLED(CHAMBER_FAN) && !defined(CHAMBER_FAN_INDEX) + #warning "Auto-assigned CHAMBER_FAN_INDEX to the first free FAN pin." +#endif + #if IS_LEGACY_TFT #warning "Don't forget to update your TFT settings in Configuration.h." #endif diff --git a/Marlin/src/module/temperature.cpp b/Marlin/src/module/temperature.cpp index a41930d927..83d401b439 100644 --- a/Marlin/src/module/temperature.cpp +++ b/Marlin/src/module/temperature.cpp @@ -865,7 +865,9 @@ int16_t Temperature::getHeaterPower(const heater_id_t heater_id) { #define INIT_CHAMBER_AUTO_FAN_PIN(P) SET_OUTPUT(P) #endif - #define CHAMBER_FAN_INDEX HOTENDS + #ifndef CHAMBER_FAN_INDEX + #define CHAMBER_FAN_INDEX HOTENDS + #endif void Temperature::update_autofans() { #define _EFAN(B,A) _EFANOVERLAP(A,B) ? B :