浏览代码

Add support for solenoid articulated extruders

C-o-r-E 10 年前
父节点
当前提交
874d3d3fc5
共有 1 个文件被更改,包括 66 次插入1 次删除
  1. 66
    1
      Marlin/Marlin_main.cpp

+ 66
- 1
Marlin/Marlin_main.cpp 查看文件

@@ -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

正在加载...
取消
保存