Bläddra i källkod

Add support for solenoid articulated extruders

C-o-r-E 10 år sedan
förälder
incheckning
874d3d3fc5
1 ändrade filer med 66 tillägg och 1 borttagningar
  1. 66
    1
      Marlin/Marlin_main.cpp

+ 66
- 1
Marlin/Marlin_main.cpp Visa fil

154
 // M302 - Allow cold extrudes, or set the minimum extrude S<temperature>.
154
 // M302 - Allow cold extrudes, or set the minimum extrude S<temperature>.
155
 // M303 - PID relay autotune S<temperature> sets the target temperature. (default target temperature = 150C)
155
 // M303 - PID relay autotune S<temperature> sets the target temperature. (default target temperature = 150C)
156
 // M304 - Set bed PID parameters P I and D
156
 // M304 - Set bed PID parameters P I and D
157
+// M380 - Activate solenoid on active extruder
158
+// M381 - Disable all solenoids
157
 // M400 - Finish all moves
159
 // M400 - Finish all moves
158
 // M401 - Lower z-probe if present
160
 // M401 - Lower z-probe if present
159
 // M402 - Raise z-probe if present
161
 // M402 - Raise z-probe if present
3497
       }
3499
       }
3498
       break;
3500
       break;
3499
 	#endif
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
     case 400: // M400 finish all moves
3513
     case 400: // M400 finish all moves
3501
     {
3514
     {
3502
       st_synchronize();
3515
       st_synchronize();
4000
            prepare_move();
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
       #endif
4023
       #endif
4004
       SERIAL_ECHO_START;
4024
       SERIAL_ECHO_START;
4005
       SERIAL_ECHO(MSG_ACTIVE_EXTRUDER);
4025
       SERIAL_ECHO(MSG_ACTIVE_EXTRUDER);
4707
   return false;
4727
   return false;
4708
 }
4728
 }
4709
 
4729
 
4710
-
4711
 float calculate_volumetric_multiplier(float diameter) {
4730
 float calculate_volumetric_multiplier(float diameter) {
4712
   if (!volumetric_enabled || diameter == 0) return 1.0;
4731
   if (!volumetric_enabled || diameter == 0) return 1.0;
4713
   float d2 = diameter * 0.5;
4732
   float d2 = diameter * 0.5;
4718
   for (int i=0; i<EXTRUDERS; i++)
4737
   for (int i=0; i<EXTRUDERS; i++)
4719
     volumetric_multiplier[i] = calculate_volumetric_multiplier(filament_size[i]);
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

Laddar…
Avbryt
Spara