Skip to content

Commit 401ba66

Browse files
committed
🔧 Up to 12 PWM fans
1 parent 19617b7 commit 401ba66

File tree

2 files changed

+44
-29
lines changed

2 files changed

+44
-29
lines changed

Marlin/src/inc/Conditionals_post.h

+31-20
Original file line numberDiff line numberDiff line change
@@ -2473,11 +2473,7 @@
24732473
#define COOLER_MAX_TARGET (COOLER_MAXTEMP - (COOLER_OVERSHOOT))
24742474
#endif
24752475

2476-
#if HAS_HEATED_BED || HAS_TEMP_CHAMBER
2477-
#define BED_OR_CHAMBER 1
2478-
#endif
2479-
2480-
#if HAS_TEMP_HOTEND || BED_OR_CHAMBER || HAS_TEMP_PROBE || HAS_TEMP_COOLER || HAS_TEMP_BOARD || HAS_TEMP_SOC
2476+
#if HAS_TEMP_HOTEND || HAS_HEATED_BED || HAS_TEMP_CHAMBER || HAS_TEMP_PROBE || HAS_TEMP_COOLER || HAS_TEMP_BOARD || HAS_TEMP_SOC
24812477
#define HAS_TEMP_SENSOR 1
24822478
#endif
24832479

@@ -2644,11 +2640,13 @@
26442640
#endif
26452641
#endif
26462642

2647-
// Print Cooling fans (limit)
2643+
/**
2644+
* Up to 12 PWM fans
2645+
*/
26482646
#ifdef NUM_M106_FANS
26492647
#define MAX_FANS NUM_M106_FANS
26502648
#else
2651-
#define MAX_FANS 8 // Max supported fans
2649+
#define MAX_FANS 12 // Max supported fans
26522650
#endif
26532651

26542652
#define _IS_E_AUTO(N,F) (PIN_EXISTS(E##N##_AUTO_FAN) && E##N##_AUTO_FAN_PIN == FAN##F##_PIN)
@@ -2683,21 +2681,30 @@
26832681
#if _HAS_FAN(7)
26842682
#define HAS_FAN7 1
26852683
#endif
2686-
#undef _NOT_E_AUTO
2687-
#undef _HAS_FAN
2688-
2689-
#if BED_OR_CHAMBER || HAS_FAN0
2690-
#define BED_OR_CHAMBER_OR_FAN 1
2684+
#if _HAS_FAN(8)
2685+
#define HAS_FAN8 1
26912686
#endif
2692-
2693-
/**
2694-
* Up to 8 PWM fans
2695-
*/
2696-
#ifndef FAN_INVERTING
2697-
#define FAN_INVERTING false
2687+
#if _HAS_FAN(9)
2688+
#define HAS_FAN9 1
26982689
#endif
2699-
2700-
#if HAS_FAN7
2690+
#if _HAS_FAN(10)
2691+
#define HAS_FAN10 1
2692+
#endif
2693+
#if _HAS_FAN(11)
2694+
#define HAS_FAN11 1
2695+
#endif
2696+
#undef _HAS_FAN
2697+
#undef _IS_E_AUTO
2698+
2699+
#if HAS_FAN11
2700+
#define FAN_COUNT 12
2701+
#elif HAS_FAN10
2702+
#define FAN_COUNT 11
2703+
#elif HAS_FAN9
2704+
#define FAN_COUNT 10
2705+
#elif HAS_FAN8
2706+
#define FAN_COUNT 9
2707+
#elif HAS_FAN7
27012708
#define FAN_COUNT 8
27022709
#elif HAS_FAN6
27032710
#define FAN_COUNT 7
@@ -2721,6 +2728,10 @@
27212728
#define HAS_FAN 1
27222729
#endif
27232730

2731+
#ifndef FAN_INVERTING
2732+
#define FAN_INVERTING false
2733+
#endif
2734+
27242735
#if PIN_EXISTS(FANMUX0)
27252736
#define HAS_FANMUX 1 // Part Cooling fan multipliexer
27262737
#endif

Marlin/src/lcd/dogm/dogm_Statusscreen.h

+13-9
Original file line numberDiff line numberDiff line change
@@ -143,7 +143,7 @@
143143
// Can also be overridden in Configuration_adv.h
144144
// If you can afford it, try the 3-frame fan animation!
145145
// Don't compile in the fan animation with no fan
146-
#if !HAS_FAN0 || (HOTENDS == 5 || (HOTENDS == 4 && BED_OR_CHAMBER) || ALL(STATUS_COMBINE_HEATERS, HAS_HEATED_CHAMBER))
146+
#if !HAS_FAN0 || (HOTENDS == 5 || (HOTENDS == 4 && (HAS_HEATED_BED || HAS_TEMP_CHAMBER)) || ALL(STATUS_COMBINE_HEATERS, HAS_HEATED_CHAMBER))
147147
#undef STATUS_FAN_FRAMES
148148
#elif !STATUS_FAN_FRAMES
149149
#define STATUS_FAN_FRAMES 2
@@ -200,18 +200,22 @@
200200
#undef STATUS_LOGO_WIDTH
201201
#endif
202202

203-
#if !defined(STATUS_HEATERS_X) && ((HAS_HOTEND && STATUS_LOGO_WIDTH && BED_OR_CHAMBER_OR_FAN) || (HOTENDS >= 3 && !BED_OR_CHAMBER_OR_FAN))
204-
#define _STATUS_HEATERS_X(H,S,N) ((LCD_PIXEL_WIDTH - (H * (S + N)) - (_EXTRA_WIDTH) + (STATUS_LOGO_WIDTH)) / 2)
205-
#if STATUS_HOTEND1_WIDTH
206-
#if HOTENDS > 2
207-
#define STATUS_HEATERS_X _STATUS_HEATERS_X(HOTENDS, STATUS_HOTEND1_WIDTH, 6)
203+
#ifndef STATUS_HEATERS_X
204+
#define _BED_OR_CHAMBER_OR_FAN (HAS_HEATED_BED || HAS_TEMP_CHAMBER || HAS_FAN)
205+
#if (HAS_HOTEND && STATUS_LOGO_WIDTH && _BED_OR_CHAMBER_OR_FAN) || (HOTENDS >= 3 && !_BED_OR_CHAMBER_OR_FAN)
206+
#define _STATUS_HEATERS_X(H,S,N) ((LCD_PIXEL_WIDTH - (H * (S + N)) - (_EXTRA_WIDTH) + (STATUS_LOGO_WIDTH)) / 2)
207+
#if STATUS_HOTEND1_WIDTH
208+
#if HOTENDS > 2
209+
#define STATUS_HEATERS_X _STATUS_HEATERS_X(HOTENDS, STATUS_HOTEND1_WIDTH, 6)
210+
#else
211+
#define STATUS_HEATERS_X _STATUS_HEATERS_X(HOTENDS, STATUS_HOTEND1_WIDTH, 4)
212+
#endif
208213
#else
209-
#define STATUS_HEATERS_X _STATUS_HEATERS_X(HOTENDS, STATUS_HOTEND1_WIDTH, 4)
214+
#define STATUS_HEATERS_X _STATUS_HEATERS_X(1, STATUS_HEATERS_WIDTH, 4)
210215
#endif
211-
#else
212-
#define STATUS_HEATERS_X _STATUS_HEATERS_X(1, STATUS_HEATERS_WIDTH, 4)
213216
#endif
214217
#endif
218+
#undef _BED_OR_CHAMBER_OR_FAN
215219
#endif
216220

217221
//

0 commit comments

Comments
 (0)