|
@@ -28,60 +28,70 @@
|
28
|
28
|
|
29
|
29
|
#include "../module/motion.h" // for active_extruder
|
30
|
30
|
|
31
|
|
-void enable_solenoid(const uint8_t num) {
|
|
31
|
+#if ENABLED(MANUAL_SOLENOID_CONTROL)
|
|
32
|
+ #define HAS_SOLENOID(N) HAS_SOLENOID_##N
|
|
33
|
+#else
|
|
34
|
+ #define HAS_SOLENOID(N) (HAS_SOLENOID_##N && EXTRUDERS > N)
|
|
35
|
+#endif
|
|
36
|
+
|
|
37
|
+// Used primarily with MANUAL_SOLENOID_CONTROL
|
|
38
|
+static void set_solenoid(const uint8_t num, const bool active) {
|
|
39
|
+ const uint8_t value = active ? HIGH : LOW;
|
32
|
40
|
switch (num) {
|
33
|
41
|
case 0:
|
34
|
|
- OUT_WRITE(SOL0_PIN, HIGH);
|
|
42
|
+ OUT_WRITE(SOL0_PIN, value);
|
35
|
43
|
break;
|
36
|
|
- #if HAS_SOLENOID_1 && EXTRUDERS > 1
|
37
|
|
- case 1:
|
38
|
|
- OUT_WRITE(SOL1_PIN, HIGH);
|
39
|
|
- break;
|
40
|
|
- #endif
|
41
|
|
- #if HAS_SOLENOID_2 && EXTRUDERS > 2
|
42
|
|
- case 2:
|
43
|
|
- OUT_WRITE(SOL2_PIN, HIGH);
|
44
|
|
- break;
|
45
|
|
- #endif
|
46
|
|
- #if HAS_SOLENOID_3 && EXTRUDERS > 3
|
47
|
|
- case 3:
|
48
|
|
- OUT_WRITE(SOL3_PIN, HIGH);
|
49
|
|
- break;
|
50
|
|
- #endif
|
51
|
|
- #if HAS_SOLENOID_4 && EXTRUDERS > 4
|
52
|
|
- case 4:
|
53
|
|
- OUT_WRITE(SOL4_PIN, HIGH);
|
54
|
|
- break;
|
55
|
|
- #endif
|
56
|
|
- #if HAS_SOLENOID_5 && EXTRUDERS > 5
|
57
|
|
- case 5:
|
58
|
|
- OUT_WRITE(SOL5_PIN, HIGH);
|
59
|
|
- break;
|
60
|
|
- #endif
|
|
44
|
+ #if HAS_SOLENOID(1)
|
|
45
|
+ case 1:
|
|
46
|
+ OUT_WRITE(SOL1_PIN, value);
|
|
47
|
+ break;
|
|
48
|
+ #endif
|
|
49
|
+ #if HAS_SOLENOID(2)
|
|
50
|
+ case 2:
|
|
51
|
+ OUT_WRITE(SOL2_PIN, value);
|
|
52
|
+ break;
|
|
53
|
+ #endif
|
|
54
|
+ #if HAS_SOLENOID(3)
|
|
55
|
+ case 3:
|
|
56
|
+ OUT_WRITE(SOL3_PIN, value);
|
|
57
|
+ break;
|
|
58
|
+ #endif
|
|
59
|
+ #if HAS_SOLENOID(4)
|
|
60
|
+ case 4:
|
|
61
|
+ OUT_WRITE(SOL4_PIN, value);
|
|
62
|
+ break;
|
|
63
|
+ #endif
|
|
64
|
+ #if HAS_SOLENOID(5)
|
|
65
|
+ case 5:
|
|
66
|
+ OUT_WRITE(SOL5_PIN, value);
|
|
67
|
+ break;
|
|
68
|
+ #endif
|
61
|
69
|
default:
|
62
|
70
|
SERIAL_ECHO_MSG(MSG_INVALID_SOLENOID);
|
63
|
71
|
break;
|
64
|
72
|
}
|
65
|
73
|
}
|
66
|
74
|
|
|
75
|
+void enable_solenoid(const uint8_t num) { set_solenoid(num, true); }
|
|
76
|
+void disable_solenoid(const uint8_t num) { set_solenoid(num, false); }
|
67
|
77
|
void enable_solenoid_on_active_extruder() { enable_solenoid(active_extruder); }
|
68
|
78
|
|
69
|
79
|
void disable_all_solenoids() {
|
70
|
|
- OUT_WRITE(SOL0_PIN, LOW);
|
71
|
|
- #if HAS_SOLENOID_1 && EXTRUDERS > 1
|
72
|
|
- OUT_WRITE(SOL1_PIN, LOW);
|
|
80
|
+ disable_solenoid(0);
|
|
81
|
+ #if HAS_SOLENOID(1)
|
|
82
|
+ disable_solenoid(1);
|
73
|
83
|
#endif
|
74
|
|
- #if HAS_SOLENOID_2 && EXTRUDERS > 2
|
75
|
|
- OUT_WRITE(SOL2_PIN, LOW);
|
|
84
|
+ #if HAS_SOLENOID(2)
|
|
85
|
+ disable_solenoid(2);
|
76
|
86
|
#endif
|
77
|
|
- #if HAS_SOLENOID_3 && EXTRUDERS > 3
|
78
|
|
- OUT_WRITE(SOL3_PIN, LOW);
|
|
87
|
+ #if HAS_SOLENOID(3)
|
|
88
|
+ disable_solenoid(3);
|
79
|
89
|
#endif
|
80
|
|
- #if HAS_SOLENOID_4 && EXTRUDERS > 4
|
81
|
|
- OUT_WRITE(SOL4_PIN, LOW);
|
|
90
|
+ #if HAS_SOLENOID(4)
|
|
91
|
+ disable_solenoid(4);
|
82
|
92
|
#endif
|
83
|
|
- #if HAS_SOLENOID_5 && EXTRUDERS > 5
|
84
|
|
- OUT_WRITE(SOL5_PIN, LOW);
|
|
93
|
+ #if HAS_SOLENOID(5)
|
|
94
|
+ disable_solenoid(5);
|
85
|
95
|
#endif
|
86
|
96
|
}
|
87
|
97
|
|