Implement DUAL_NOZZLE_DUPLICATION_MODE
This commit is contained in:
		
							parent
							
								
									91777dd76c
								
							
						
					
					
						commit
						cbc7f22ad9
					
				| @ -134,7 +134,7 @@ void idle( | ||||
| 
 | ||||
| void manage_inactivity(bool ignore_stepper_queue = false); | ||||
| 
 | ||||
| #if ENABLED(DUAL_X_CARRIAGE) | ||||
| #if ENABLED(DUAL_X_CARRIAGE) || ENABLED(DUAL_NOZZLE_DUPLICATION_MODE) | ||||
|   extern bool extruder_duplication_enabled; | ||||
| #endif | ||||
| 
 | ||||
|  | ||||
| @ -1392,6 +1392,10 @@ XYZ_CONSTS_FROM_CONFIG(float, max_length,     MAX_LENGTH); | ||||
| XYZ_CONSTS_FROM_CONFIG(float, home_bump_mm,   HOME_BUMP_MM); | ||||
| XYZ_CONSTS_FROM_CONFIG(signed char, home_dir, HOME_DIR); | ||||
| 
 | ||||
| #if ENABLED(DUAL_X_CARRIAGE) || ENABLED(DUAL_NOZZLE_DUPLICATION_MODE) | ||||
|   bool extruder_duplication_enabled = false; // Used in Dual X mode 2
 | ||||
| #endif | ||||
| 
 | ||||
| #if ENABLED(DUAL_X_CARRIAGE) | ||||
| 
 | ||||
|   #define DXC_FULL_CONTROL_MODE 0 | ||||
| @ -1423,7 +1427,6 @@ XYZ_CONSTS_FROM_CONFIG(signed char, home_dir, HOME_DIR); | ||||
|   static millis_t delayed_move_time = 0; // used in mode 1
 | ||||
|   static float duplicate_extruder_x_offset = DEFAULT_DUPLICATION_X_OFFSET; // used in mode 2
 | ||||
|   static float duplicate_extruder_temp_offset = 0; // used in mode 2
 | ||||
|   bool extruder_duplication_enabled = false; // used in mode 2
 | ||||
| 
 | ||||
| #endif //DUAL_X_CARRIAGE
 | ||||
| 
 | ||||
| @ -2820,12 +2823,13 @@ inline void gcode_G4() { | ||||
|     current_position[X_AXIS] = current_position[Y_AXIS] = 0.0; | ||||
|     sync_plan_position(); | ||||
| 
 | ||||
|     #if ENABLED(DUAL_X_CARRIAGE) | ||||
|       int x_axis_home_dir = x_home_dir(active_extruder); | ||||
|       extruder_duplication_enabled = false; | ||||
|     #else | ||||
|       int x_axis_home_dir = home_dir(X_AXIS); | ||||
|     #endif | ||||
|     int x_axis_home_dir = | ||||
|       #if ENABLED(DUAL_X_CARRIAGE) | ||||
|         x_home_dir(active_extruder) | ||||
|       #else | ||||
|         home_dir(X_AXIS) | ||||
|       #endif | ||||
|     ; | ||||
| 
 | ||||
|     float mlx = max_length(X_AXIS), | ||||
|           mly = max_length(Y_AXIS), | ||||
| @ -2878,6 +2882,10 @@ inline void gcode_G28() { | ||||
|     tool_change(0, 0, true); | ||||
|   #endif | ||||
| 
 | ||||
|   #if ENABLED(DUAL_X_CARRIAGE) || ENABLED(DUAL_NOZZLE_DUPLICATION_MODE) | ||||
|     extruder_duplication_enabled = false; | ||||
|   #endif | ||||
| 
 | ||||
|   /**
 | ||||
|    * For mesh bed leveling deactivate the mesh calculations, will be turned | ||||
|    * on again when homing all axis | ||||
| @ -2996,7 +3004,6 @@ inline void gcode_G28() { | ||||
|     if (home_all_axis || homeX) { | ||||
|       #if ENABLED(DUAL_X_CARRIAGE) | ||||
|         int tmp_extruder = active_extruder; | ||||
|         extruder_duplication_enabled = false; | ||||
|         active_extruder = !active_extruder; | ||||
|         HOMEAXIS(X); | ||||
|         inactive_extruder_x_pos = current_position[X_AXIS]; | ||||
| @ -6473,7 +6480,17 @@ inline void gcode_M503() { | ||||
|     delayed_move_time = 0; | ||||
|   } | ||||
| 
 | ||||
| #endif // DUAL_X_CARRIAGE
 | ||||
| #elif ENABLED(DUAL_NOZZLE_DUPLICATION_MODE) | ||||
| 
 | ||||
|   inline void gcode_M605() { | ||||
|     stepper.synchronize(); | ||||
|     extruder_duplication_enabled = code_seen('S') && code_value_int() == 2; | ||||
|     SERIAL_ECHO_START; | ||||
|     SERIAL_ECHOPAIR(MSG_DUPLICATION_MODE, extruder_duplication_enabled ? MSG_ON : MSG_OFF); | ||||
|     SERIAL_EOL; | ||||
|   } | ||||
| 
 | ||||
| #endif // M605
 | ||||
| 
 | ||||
| #if ENABLED(LIN_ADVANCE) | ||||
|   /**
 | ||||
|  | ||||
| @ -159,6 +159,7 @@ | ||||
| #define MSG_ENDSTOP_HIT                     "TRIGGERED" | ||||
| #define MSG_ENDSTOP_OPEN                    "open" | ||||
| #define MSG_HOTEND_OFFSET                   "Hotend offsets:" | ||||
| #define MSG_DUPLICATION_MODE                "Duplication mode: " | ||||
| 
 | ||||
| #define MSG_SD_CANT_OPEN_SUBDIR             "Cannot open subdir " | ||||
| #define MSG_SD_INIT_FAIL                    "SD init fail" | ||||
|  | ||||
| @ -195,7 +195,7 @@ | ||||
|   #define NORM_E_DIR() { switch (current_block->active_extruder) { case 0: E0_DIR_WRITE(!INVERT_E0_DIR); break; case 1: E1_DIR_WRITE(!INVERT_E1_DIR); break; case 2: E2_DIR_WRITE(!INVERT_E2_DIR); } } | ||||
|   #define REV_E_DIR() { switch (current_block->active_extruder) { case 0: E0_DIR_WRITE(INVERT_E0_DIR); break; case 1: E1_DIR_WRITE(INVERT_E1_DIR); break; case 2: E2_DIR_WRITE(INVERT_E2_DIR); } } | ||||
| #elif EXTRUDERS > 1 | ||||
|   #if DISABLED(DUAL_X_CARRIAGE) | ||||
|   #if DISABLED(DUAL_X_CARRIAGE) && DISABLED(DUAL_NOZZLE_DUPLICATION_MODE) | ||||
|     #define E_STEP_WRITE(v) { if (current_block->active_extruder == 0) { E0_STEP_WRITE(v); } else { E1_STEP_WRITE(v); } } | ||||
|     #define NORM_E_DIR() { if (current_block->active_extruder == 0) { E0_DIR_WRITE(!INVERT_E0_DIR); } else { E1_DIR_WRITE(!INVERT_E1_DIR); } } | ||||
|     #define REV_E_DIR() { if (current_block->active_extruder == 0) { E0_DIR_WRITE(INVERT_E0_DIR); } else { E1_DIR_WRITE(INVERT_E1_DIR); } } | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user