|
@@ -154,6 +154,8 @@
|
154
|
154
|
// M302 - Allow cold extrudes, or set the minimum extrude S<temperature>.
|
155
|
155
|
// M303 - PID relay autotune S<temperature> sets the target temperature. (default target temperature = 150C)
|
156
|
156
|
// M304 - Set bed PID parameters P I and D
|
|
157
|
+// M380 - Activate solenoid on active extruder
|
|
158
|
+// M381 - Disable all solenoids
|
157
|
159
|
// M400 - Finish all moves
|
158
|
160
|
// M401 - Lower z-probe if present
|
159
|
161
|
// M402 - Raise z-probe if present
|
|
@@ -3497,6 +3499,17 @@ Sigma_Exit:
|
3497
|
3499
|
}
|
3498
|
3500
|
break;
|
3499
|
3501
|
#endif
|
|
3502
|
+
|
|
3503
|
+#ifdef EXT_SOLENOID
|
|
3504
|
+ case 380:
|
|
3505
|
+ enable_solenoid_on_active_extruder();
|
|
3506
|
+ break;
|
|
3507
|
+
|
|
3508
|
+ case 381:
|
|
3509
|
+ disable_all_solenoids();
|
|
3510
|
+ break;
|
|
3511
|
+#endif //EXT_SOLENOID
|
|
3512
|
+
|
3500
|
3513
|
case 400: // M400 finish all moves
|
3501
|
3514
|
{
|
3502
|
3515
|
st_synchronize();
|
|
@@ -4000,6 +4013,13 @@ case 404: //M404 Enter the nominal filament width (3mm, 1.75mm ) N<3.0> or disp
|
4000
|
4013
|
prepare_move();
|
4001
|
4014
|
}
|
4002
|
4015
|
}
|
|
4016
|
+
|
|
4017
|
+#ifdef EXT_SOLENOID
|
|
4018
|
+ st_synchronize();
|
|
4019
|
+ disable_all_solenoids();
|
|
4020
|
+ enable_solenoid_on_active_extruder();
|
|
4021
|
+#endif //EXT_SOLENOID
|
|
4022
|
+
|
4003
|
4023
|
#endif
|
4004
|
4024
|
SERIAL_ECHO_START;
|
4005
|
4025
|
SERIAL_ECHO(MSG_ACTIVE_EXTRUDER);
|
|
@@ -4707,7 +4727,6 @@ bool setTargetedHotend(int code){
|
4707
|
4727
|
return false;
|
4708
|
4728
|
}
|
4709
|
4729
|
|
4710
|
|
-
|
4711
|
4730
|
float calculate_volumetric_multiplier(float diameter) {
|
4712
|
4731
|
if (!volumetric_enabled || diameter == 0) return 1.0;
|
4713
|
4732
|
float d2 = diameter * 0.5;
|
|
@@ -4718,3 +4737,49 @@ void calculate_volumetric_multipliers() {
|
4718
|
4737
|
for (int i=0; i<EXTRUDERS; i++)
|
4719
|
4738
|
volumetric_multiplier[i] = calculate_volumetric_multiplier(filament_size[i]);
|
4720
|
4739
|
}
|
|
4740
|
+
|
|
4741
|
+#ifdef EXT_SOLENOID
|
|
4742
|
+void enable_solenoid(uint8_t num) {
|
|
4743
|
+ if(num == 0) {
|
|
4744
|
+ SET_OUTPUT(SOL0_PIN);
|
|
4745
|
+ WRITE(SOL0_PIN,HIGH);
|
|
4746
|
+ }
|
|
4747
|
+
|
|
4748
|
+ if(num == 1){
|
|
4749
|
+ SET_OUTPUT(SOL1_PIN);
|
|
4750
|
+ WRITE(SOL1_PIN,HIGH);
|
|
4751
|
+ }
|
|
4752
|
+
|
|
4753
|
+ if(num == 2){
|
|
4754
|
+ SET_OUTPUT(SOL2_PIN);
|
|
4755
|
+ WRITE(SOL2_PIN,HIGH);
|
|
4756
|
+ }
|
|
4757
|
+
|
|
4758
|
+ if(num == 3){
|
|
4759
|
+ SET_OUTPUT(SOL3_PIN);
|
|
4760
|
+ WRITE(SOL3_PIN,HIGH);
|
|
4761
|
+ }
|
|
4762
|
+
|
|
4763
|
+ return;
|
|
4764
|
+ }
|
|
4765
|
+
|
|
4766
|
+void enable_solenoid_on_active_extruder() {
|
|
4767
|
+ enable_solenoid(active_extruder);
|
|
4768
|
+ return;
|
|
4769
|
+ }
|
|
4770
|
+
|
|
4771
|
+void disable_all_solenoids() {
|
|
4772
|
+ SET_OUTPUT(SOL0_PIN);
|
|
4773
|
+ SET_OUTPUT(SOL1_PIN);
|
|
4774
|
+ SET_OUTPUT(SOL2_PIN);
|
|
4775
|
+ SET_OUTPUT(SOL3_PIN);
|
|
4776
|
+
|
|
4777
|
+ WRITE(SOL0_PIN,LOW);
|
|
4778
|
+ WRITE(SOL1_PIN,LOW);
|
|
4779
|
+ WRITE(SOL2_PIN,LOW);
|
|
4780
|
+ WRITE(SOL3_PIN,LOW);
|
|
4781
|
+
|
|
4782
|
+ return;
|
|
4783
|
+ }
|
|
4784
|
+
|
|
4785
|
+#endif //EXT_SOLENOID
|