Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[WIP] 🔧 Revamp AUTO_FAN configuration #27214

Draft
wants to merge 19 commits into
base: bugfix-2.1.x
Choose a base branch
from
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
78 changes: 52 additions & 26 deletions Marlin/Configuration_adv.h
Original file line number Diff line number Diff line change
Expand Up @@ -671,33 +671,59 @@

/**
* Extruder cooling fans
*
* Extruder auto fans automatically turn on when their extruders'
* temperatures go above EXTRUDER_AUTO_FAN_TEMPERATURE.
*
* Your board's pins file specifies the recommended pins. Override those here
* or set to -1 to disable completely.
*
* Multiple extruders can be assigned to the same pin in which case
* the fan will turn on when any selected extruder is above the threshold.
* These fans turn on automatically whenever their corresponding
* extruder's temperature goes above EXTRUDER_AUTO_FAN_TEMPERATURE.
*/
//#define USE_E0_AUTO_FAN
//#define USE_E1_AUTO_FAN
//#define USE_E2_AUTO_FAN
//#define USE_E3_AUTO_FAN
//#define USE_E4_AUTO_FAN
//#define USE_E5_AUTO_FAN
//#define USE_E6_AUTO_FAN
//#define USE_E7_AUTO_FAN

#define EXTRUDER_AUTO_FAN_TEMPERATURE 50 // (°C) Provide cooling above this temperature
#define EXTRUDER_AUTO_FAN_SPEED 255 // (PWM) Full speed is 255

/**
* Extruder auto fan pins
* Define pin overrides here if needed. Leave undefined to use board defaults.
* Multiple extruders can share the same auto fan pin in which case the fan
* turns on whenever any of its extruders goes above the threshold.
*/
//#define E0_AUTO_FAN_PIN -1
//#define E1_AUTO_FAN_PIN -1
//#define E2_AUTO_FAN_PIN -1
//#define E3_AUTO_FAN_PIN -1
//#define E4_AUTO_FAN_PIN -1
//#define E5_AUTO_FAN_PIN -1
//#define E6_AUTO_FAN_PIN -1
//#define E7_AUTO_FAN_PIN -1

/**
* Chamber auto fan
* Turns on automatically when the chamber temperature
* goes above the CHAMBER_AUTO_FAN_TEMPERATURE.
*/
#define E0_AUTO_FAN_PIN -1
#define E1_AUTO_FAN_PIN -1
#define E2_AUTO_FAN_PIN -1
#define E3_AUTO_FAN_PIN -1
#define E4_AUTO_FAN_PIN -1
#define E5_AUTO_FAN_PIN -1
#define E6_AUTO_FAN_PIN -1
#define E7_AUTO_FAN_PIN -1
#define CHAMBER_AUTO_FAN_PIN -1
#define COOLER_AUTO_FAN_PIN -1

#define EXTRUDER_AUTO_FAN_TEMPERATURE 50
#define EXTRUDER_AUTO_FAN_SPEED 255 // 255 == full speed
#define CHAMBER_AUTO_FAN_TEMPERATURE 30
#define CHAMBER_AUTO_FAN_SPEED 255
#define COOLER_AUTO_FAN_TEMPERATURE 18
#define COOLER_AUTO_FAN_SPEED 255
//#define USE_CHAMBER_AUTO_FAN
#if ENABLED(USE_CHAMBER_AUTO_FAN)
//#define CHAMBER_AUTO_FAN_PIN -1 // Provide a pin. Disable to use the board default.
#define CHAMBER_AUTO_FAN_TEMPERATURE 30 // (°C) Provide cooling above this temperature
#define CHAMBER_AUTO_FAN_SPEED 255 // (PWM) Full speed is 255
#endif

/**
* Cooler auto fan
* Turns on automatically when the cooler temperature
* goes above the COOLER_AUTO_FAN_TEMPERATURE.
*/
//#define USE_COOLER_AUTO_FAN
#if ENABLED(USE_COOLER_AUTO_FAN)
//#define COOLER_AUTO_FAN_PIN -1 // Provide a pin. Disable to use the board default.
#define COOLER_AUTO_FAN_TEMPERATURE 18 // (°C) Provide cooling above this temperature
#define COOLER_AUTO_FAN_SPEED 255 // (PWM) Full speed is 255
#endif

/**
* Hotend Cooling Fans tachometers
Expand Down
52 changes: 52 additions & 0 deletions Marlin/src/inc/Changes.h
Original file line number Diff line number Diff line change
Expand Up @@ -710,6 +710,58 @@
#endif
#endif

// Alert users about updated auto fan settings based on flags set in pins.h
#if CHANGES_ALERT_AUTO_FAN_E0 == 1
#error "Just disable USE_E0_AUTO_FAN and leave E0_AUTO_FAN_PIN undefined."
#elif CHANGES_ALERT_AUTO_FAN_E0 == 2
#error "Either enable USE_E0_AUTO_FAN or comment out E0_AUTO_FAN_PIN."
#endif
#if CHANGES_ALERT_AUTO_FAN_E1 == 1
#error "Just disable USE_E1_AUTO_FAN and leave E1_AUTO_FAN_PIN undefined."
#elif CHANGES_ALERT_AUTO_FAN_E1 == 2
#error "Either enable USE_E1_AUTO_FAN or comment out E1_AUTO_FAN_PIN."
#endif
#if CHANGES_ALERT_AUTO_FAN_E2 == 1
#error "Just disable USE_E2_AUTO_FAN and leave E2_AUTO_FAN_PIN undefined."
#elif CHANGES_ALERT_AUTO_FAN_E2 == 2
#error "Either enable USE_E2_AUTO_FAN or comment out E2_AUTO_FAN_PIN."
#endif
#if CHANGES_ALERT_AUTO_FAN_E3 == 1
#error "Just disable USE_E3_AUTO_FAN and leave E3_AUTO_FAN_PIN undefined."
#elif CHANGES_ALERT_AUTO_FAN_E3 == 2
#error "Either enable USE_E3_AUTO_FAN or comment out E3_AUTO_FAN_PIN."
#endif
#if CHANGES_ALERT_AUTO_FAN_E4 == 1
#error "Just disable USE_E4_AUTO_FAN and leave E4_AUTO_FAN_PIN undefined."
#elif CHANGES_ALERT_AUTO_FAN_E4 == 2
#error "Either enable USE_E4_AUTO_FAN or comment out E4_AUTO_FAN_PIN."
#endif
#if CHANGES_ALERT_AUTO_FAN_E5 == 1
#error "Just disable USE_E5_AUTO_FAN and leave E5_AUTO_FAN_PIN undefined."
#elif CHANGES_ALERT_AUTO_FAN_E5 == 2
#error "Either enable USE_E5_AUTO_FAN or comment out E5_AUTO_FAN_PIN."
#endif
#if CHANGES_ALERT_AUTO_FAN_E6 == 1
#error "Just disable USE_E6_AUTO_FAN and leave E6_AUTO_FAN_PIN undefined."
#elif CHANGES_ALERT_AUTO_FAN_E6 == 2
#error "Either enable USE_E6_AUTO_FAN or comment out E6_AUTO_FAN_PIN."
#endif
#if CHANGES_ALERT_AUTO_FAN_E7 == 1
#error "Just disable USE_E7_AUTO_FAN and leave E7_AUTO_FAN_PIN undefined."
#elif CHANGES_ALERT_AUTO_FAN_E7 == 2
#error "Either enable USE_E7_AUTO_FAN or comment out E7_AUTO_FAN_PIN."
#endif
#if CHANGES_ALERT_AUTO_FAN_CHAMBER == 1
#error "Just disable USE_CHAMBER_AUTO_FAN and leave CHAMBER_AUTO_FAN_PIN undefined."
#elif CHANGES_ALERT_AUTO_FAN_CHAMBER == 2
#error "Either enable USE_CHAMBER_AUTO_FAN or comment out CHAMBER_AUTO_FAN_PIN."
#endif
#if CHANGES_ALERT_AUTO_FAN_COOLER == 1
#error "Just disable USE_COOLER_AUTO_FAN and leave COOLER_AUTO_FAN_PIN undefined."
#elif CHANGES_ALERT_AUTO_FAN_COOLER == 2
#error "Either enable USE_COOLER_AUTO_FAN or comment out COOLER_AUTO_FAN_PIN."
#endif

// Consolidate TMC26X, validate migration (#24373)
#define _ISMAX_1(A) defined(A##_MAX_CURRENT)
#define _ISSNS_1(A) defined(A##_SENSE_RESISTOR)
Expand Down
45 changes: 9 additions & 36 deletions Marlin/src/inc/Conditionals_post.h
Original file line number Diff line number Diff line change
Expand Up @@ -2522,48 +2522,17 @@
#endif

// Auto fans
#if HAS_HOTEND && PIN_EXISTS(E0_AUTO_FAN)
#define HAS_AUTO_FAN_0 1
#endif
#if HAS_MULTI_HOTEND && PIN_EXISTS(E1_AUTO_FAN)
#define HAS_AUTO_FAN_1 1
#endif
#if HOTENDS > 2 && PIN_EXISTS(E2_AUTO_FAN)
#define HAS_AUTO_FAN_2 1
#endif
#if HOTENDS > 3 && PIN_EXISTS(E3_AUTO_FAN)
#define HAS_AUTO_FAN_3 1
#endif
#if HOTENDS > 4 && PIN_EXISTS(E4_AUTO_FAN)
#define HAS_AUTO_FAN_4 1
#endif
#if HOTENDS > 5 && PIN_EXISTS(E5_AUTO_FAN)
#define HAS_AUTO_FAN_5 1
#endif
#if HOTENDS > 6 && PIN_EXISTS(E6_AUTO_FAN)
#define HAS_AUTO_FAN_6 1
#endif
#if HOTENDS > 7 && PIN_EXISTS(E7_AUTO_FAN)
#define HAS_AUTO_FAN_7 1
#endif
#if HAS_TEMP_CHAMBER && PIN_EXISTS(CHAMBER_AUTO_FAN)
#define HAS_AUTO_CHAMBER_FAN 1
#endif
#if HAS_TEMP_COOLER && PIN_EXISTS(COOLER_AUTO_FAN)
#define HAS_AUTO_COOLER_FAN 1
#endif

#if ANY(HAS_AUTO_FAN_0, HAS_AUTO_FAN_1, HAS_AUTO_FAN_2, HAS_AUTO_FAN_3, HAS_AUTO_FAN_4, HAS_AUTO_FAN_5, HAS_AUTO_FAN_6, HAS_AUTO_FAN_7, HAS_AUTO_CHAMBER_FAN, HAS_AUTO_COOLER_FAN)
#if ANY(USE_AUTO_FAN_0, USE_AUTO_FAN_1, USE_AUTO_FAN_2, USE_AUTO_FAN_3, USE_AUTO_FAN_4, USE_AUTO_FAN_5, USE_AUTO_FAN_6, USE_AUTO_FAN_7, USE_CHAMBER_AUTO_FAN, USE_COOLER_AUTO_FAN)
#define HAS_AUTO_FAN 1
#define _FANOVERLAP(I,T) (T##_AUTO_FAN_PIN == E##I##_AUTO_FAN_PIN)
#if HAS_AUTO_CHAMBER_FAN
#if ENABLED(USE_CHAMBER_AUTO_FAN)
#define _CHFANOVERLAP(I) || _FANOVERLAP(I,CHAMBER)
#if (0 REPEAT(8, _CHFANOVERLAP))
#define AUTO_CHAMBER_IS_E 1
#endif
#undef _CHFANOVERLAP
#endif
#if HAS_AUTO_COOLER_FAN
#if ENABLED(USE_COOLER_AUTO_FAN)
#define _COFANOVERLAP(I) || _FANOVERLAP(I,COOLER)
#if (0 REPEAT(8, _COFANOVERLAP))
#define AUTO_COOLER_IS_E 1
Expand Down Expand Up @@ -2611,10 +2580,10 @@
#define HAS_AUTO_REPORTING 1
#endif

#if !HAS_AUTO_CHAMBER_FAN || AUTO_CHAMBER_IS_E
#if DISABLED(USE_CHAMBER_AUTO_FAN) || AUTO_CHAMBER_IS_E
#undef AUTO_POWER_CHAMBER_FAN
#endif
#if !HAS_AUTO_COOLER_FAN || AUTO_COOLER_IS_E
#if DISABLED(USE_COOLER_AUTO_FAN) || AUTO_COOLER_IS_E
#undef AUTO_POWER_COOLER_FAN
#endif
#if !HAS_CUTTER
Expand Down Expand Up @@ -2648,6 +2617,10 @@
#define MAX_FANS 12 // Max supported fans
#endif

/**
* Flags for indexable M106-controllable fans
* i.e., Those that aren't CONTROLLER or E-AUTO fans.
*/
#define _IS_E_AUTO(N,F) (PIN_EXISTS(E##N##_AUTO_FAN) && E##N##_AUTO_FAN_PIN == FAN##F##_PIN)
#define _HAS_FAN(F) (F < MAX_FANS && PIN_EXISTS(FAN##F) \
&& !(HAS_CONTROLLER_FAN && CONTROLLER_FAN_PIN == FAN##F##_PIN) \
Expand Down
27 changes: 26 additions & 1 deletion Marlin/src/inc/SanityCheck.h
Original file line number Diff line number Diff line change
Expand Up @@ -2602,11 +2602,36 @@ static_assert(NUM_SERVOS <= NUM_SERVO_PLUGS, "NUM_SERVOS (or some servo index) i
#define _TEST_PWM(P) 1 // pass
#endif

/**
* Auto Fan pins are required
*/
#if ENABLED(USE_AUTO_FAN_E0) && !PIN_EXISTS(E0_AUTO_FAN_PIN)
#error "E0_AUTO_FAN_PIN is required for USE_AUTO_FAN_E0."
#elif ENABLED(USE_AUTO_FAN_E1) && !PIN_EXISTS(E1_AUTO_FAN_PIN)
#error "E1_AUTO_FAN_PIN is required for USE_AUTO_FAN_E1."
#elif ENABLED(USE_AUTO_FAN_E2) && !PIN_EXISTS(E2_AUTO_FAN_PIN)
#error "E2_AUTO_FAN_PIN is required for USE_AUTO_FAN_E2."
#elif ENABLED(USE_AUTO_FAN_E3) && !PIN_EXISTS(E3_AUTO_FAN_PIN)
#error "E3_AUTO_FAN_PIN is required for USE_AUTO_FAN_E3."
#elif ENABLED(USE_AUTO_FAN_E4) && !PIN_EXISTS(E4_AUTO_FAN_PIN)
#error "E4_AUTO_FAN_PIN is required for USE_AUTO_FAN_E4."
#elif ENABLED(USE_AUTO_FAN_E5) && !PIN_EXISTS(E5_AUTO_FAN_PIN)
#error "E5_AUTO_FAN_PIN is required for USE_AUTO_FAN_E5."
#elif ENABLED(USE_AUTO_FAN_E6) && !PIN_EXISTS(E6_AUTO_FAN_PIN)
#error "E6_AUTO_FAN_PIN is required for USE_AUTO_FAN_E6."
#elif ENABLED(USE_AUTO_FAN_E7) && !PIN_EXISTS(E7_AUTO_FAN_PIN)
#error "E7_AUTO_FAN_PIN is required for USE_AUTO_FAN_E7."
#elif ENABLED(USE_CHAMBER_AUTO_FAN) && !PIN_EXISTS(CHAMBER_AUTO_FAN_PIN)
#error "CHAMBER_AUTO_FAN_PIN is required for USE_CHAMBER_AUTO_FAN."
#elif ENABLED(USE_COOLER_AUTO_FAN) && !PIN_EXISTS(COOLER_AUTO_FAN_PIN)
#error "COOLER_AUTO_FAN_PIN is required for USE_COOLER_AUTO_FAN."
#endif

/**
* Auto Fan check for PWM pins
*/
#if HAS_AUTO_FAN && EXTRUDER_AUTO_FAN_SPEED != 255
#define AF_ASSERT(N) OPTCODE(HAS_AUTO_FAN_##N, static_assert(_TEST_PWM(E##N##_AUTO_FAN_PIN), "E" STRINGIFY(N) "_AUTO_FAN_PIN is not a PWM pin. Set EXTRUDER_AUTO_FAN_SPEED to 255."))
#define AF_ASSERT(N) OPTCODE(USE_AUTO_FAN_##N, static_assert(_TEST_PWM(E##N##_AUTO_FAN_PIN), "E" STRINGIFY(N) "_AUTO_FAN_PIN is not a PWM pin. Set EXTRUDER_AUTO_FAN_SPEED to 255."))
REPEAT(8, AF_ASSERT)
#undef AF_ASSERT
#endif
Expand Down
34 changes: 17 additions & 17 deletions Marlin/src/module/temperature.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1343,13 +1343,13 @@ int16_t Temperature::getHeaterPower(const heater_id_t heater_id) {
RREPEAT_S(1, HOTENDS, _NEXT_FAN)
#endif
#define _NFAN HOTENDS
#if HAS_AUTO_CHAMBER_FAN
#if ENABLED(USE_CHAMBER_AUTO_FAN)
#define _CHFAN(I) _FANOVERLAP(I,CHAMBER) ? I :
, (REPEAT(HOTENDS,_CHFAN) (_NFAN))
#undef _NFAN
#define _NFAN INCREMENT(HOTENDS)
#endif
#if HAS_AUTO_COOLER_FAN
#if ENABLED(USE_COOLER_AUTO_FAN)
#define _COFAN(I) _FANOVERLAP(I,COOLER) ? I :
, (REPEAT(HOTENDS,_COFAN) (_NFAN))
#endif
Expand All @@ -1361,12 +1361,12 @@ int16_t Temperature::getHeaterPower(const heater_id_t heater_id) {
SBI(fanState, pgm_read_byte(&fanBit[e]));
}

#if HAS_AUTO_CHAMBER_FAN
#if ENABLED(USE_CHAMBER_AUTO_FAN)
if (temp_chamber.celsius >= CHAMBER_AUTO_FAN_TEMPERATURE)
SBI(fanState, pgm_read_byte(&fanBit[CHAMBER_FAN_INDEX]));
#endif

#if HAS_AUTO_COOLER_FAN
#if ENABLED(USE_COOLER_AUTO_FAN)
if (temp_cooler.celsius >= COOLER_AUTO_FAN_TEMPERATURE)
SBI(fanState, pgm_read_byte(&fanBit[COOLER_FAN_INDEX]));
#endif
Expand Down Expand Up @@ -1408,14 +1408,14 @@ int16_t Temperature::getHeaterPower(const heater_id_t heater_id) {
#endif
#define _AUTOFAN_CASE(N) case N: _UPDATE_AUTO_FAN(E##N, fan_on, _AUTOFAN_SPEED()); break;
#define _AUTOFAN_NOT(N)
#define AUTOFAN_CASE(N) TERN(HAS_AUTO_FAN_##N, _AUTOFAN_CASE, _AUTOFAN_NOT)(N)
#define AUTOFAN_CASE(N) TERN(USE_AUTO_FAN_##N, _AUTOFAN_CASE, _AUTOFAN_NOT)(N)

switch (f) {
REPEAT(HOTENDS, AUTOFAN_CASE)
#if HAS_AUTO_CHAMBER_FAN && !AUTO_CHAMBER_IS_E
#if ENABLED(USE_CHAMBER_AUTO_FAN) && !AUTO_CHAMBER_IS_E
case CHAMBER_FAN_INDEX: _UPDATE_AUTO_FAN(CHAMBER, fan_on, CHAMBER_AUTO_FAN_SPEED); break;
#endif
#if HAS_AUTO_COOLER_FAN && !AUTO_COOLER_IS_E
#if ENABLED(USE_COOLER_AUTO_FAN) && !AUTO_COOLER_IS_E
case COOLER_FAN_INDEX: _UPDATE_AUTO_FAN(COOLER, fan_on, COOLER_AUTO_FAN_SPEED); break;
#endif
}
Expand Down Expand Up @@ -2947,34 +2947,34 @@ void Temperature::init() {

#if HAS_AUTO_FAN
#define _OREFAN(I,N) || _EFANOVERLAP(I,N)
#if HAS_AUTO_FAN_0
#if ENABLED(USE_AUTO_FAN_0)
INIT_E_AUTO_FAN_PIN(E0_AUTO_FAN_PIN);
#endif
#if HAS_AUTO_FAN_1 && !_EFANOVERLAP(0,1)
#if ENABLED(USE_AUTO_FAN_1) && !_EFANOVERLAP(0,1)
INIT_E_AUTO_FAN_PIN(E1_AUTO_FAN_PIN);
#endif
#if HAS_AUTO_FAN_2 && !(0 REPEAT2(2, _OREFAN, 2))
#if ENABLED(USE_AUTO_FAN_2) && !(0 REPEAT2(2, _OREFAN, 2))
INIT_E_AUTO_FAN_PIN(E2_AUTO_FAN_PIN);
#endif
#if HAS_AUTO_FAN_3 && !(0 REPEAT2(3, _OREFAN, 3))
#if ENABLED(USE_AUTO_FAN_3) && !(0 REPEAT2(3, _OREFAN, 3))
INIT_E_AUTO_FAN_PIN(E3_AUTO_FAN_PIN);
#endif
#if HAS_AUTO_FAN_4 && !(0 REPEAT2(4, _OREFAN, 4))
#if ENABLED(USE_AUTO_FAN_4) && !(0 REPEAT2(4, _OREFAN, 4))
INIT_E_AUTO_FAN_PIN(E4_AUTO_FAN_PIN);
#endif
#if HAS_AUTO_FAN_5 && !(0 REPEAT2(5, _OREFAN, 5))
#if ENABLED(USE_AUTO_FAN_5) && !(0 REPEAT2(5, _OREFAN, 5))
INIT_E_AUTO_FAN_PIN(E5_AUTO_FAN_PIN);
#endif
#if HAS_AUTO_FAN_6 && !(0 REPEAT2(6, _OREFAN, 6))
#if ENABLED(USE_AUTO_FAN_6) && !(0 REPEAT2(6, _OREFAN, 6))
INIT_E_AUTO_FAN_PIN(E6_AUTO_FAN_PIN);
#endif
#if HAS_AUTO_FAN_7 && !(0 REPEAT2(7, _OREFAN, 7))
#if ENABLED(USE_AUTO_FAN_7) && !(0 REPEAT2(7, _OREFAN, 7))
INIT_E_AUTO_FAN_PIN(E7_AUTO_FAN_PIN);
#endif
#if HAS_AUTO_CHAMBER_FAN && !AUTO_CHAMBER_IS_E
#if ENABLED(USE_CHAMBER_AUTO_FAN) && !AUTO_CHAMBER_IS_E
INIT_CHAMBER_AUTO_FAN_PIN(CHAMBER_AUTO_FAN_PIN);
#endif
#if HAS_AUTO_COOLER_FAN && !AUTO_COOLER_IS_E
#if ENABLED(USE_COOLER_AUTO_FAN) && !AUTO_COOLER_IS_E
INIT_COOLER_AUTO_FAN_PIN(COOLER_AUTO_FAN_PIN);
#endif
#endif // HAS_AUTO_FAN
Expand Down
9 changes: 7 additions & 2 deletions Marlin/src/pins/esp32/pins_MKS_TINYBEE.h
Original file line number Diff line number Diff line change
Expand Up @@ -112,8 +112,13 @@
#define FAN1_PIN 148 // FAN2
#define HEATER_BED_PIN 144 // H-BED

//#define CONTROLLER_FAN_PIN 148 // FAN2
//#define E0_AUTO_FAN_PIN 148 // FAN2
#ifndef E0_AUTO_FAN_PIN
#define E0_AUTO_FAN_PIN 148 // FAN1_PIN
#endif

#ifndef CONTROLLER_FAN_PIN
#define CONTROLLER_FAN_PIN 148 // FAN1_PIN
#endif

//
// ADC Reference Voltage
Expand Down
6 changes: 1 addition & 5 deletions Marlin/src/pins/esp32/pins_MM_JOKER.h
Original file line number Diff line number Diff line change
Expand Up @@ -173,11 +173,7 @@
#define FAN0_PIN 143

#ifndef E0_AUTO_FAN_PIN
#define E0_AUTO_FAN_PIN 142 // Enabled in Configuration_adv.h
#endif

#ifndef CONTROLLER_FAN_PIN
//#define CONTROLLER_FAN_PIN -1
#define E0_AUTO_FAN_PIN 142
#endif

#if ENABLED(JOKER_PLUS_2)
Expand Down
Loading
Loading