2.0 IDEX Independent z offset and other fixes (#11862)
* Add Formbot Raptor board Co-Authored-By: InsanityAutomation <insanityautomation@users.noreply.github.com> * Add a second Z probe Z offset Co-Authored-By: InsanityAutomation <insanityautomation@users.noreply.github.com> * Modify method to utilize live adjustment of hotend z offset Should probably move config option to babystepping and rename as it may now apply to all multiextruder systems * Move config item and catchup other code to current method
This commit is contained in:
		
				
					committed by
					
						
						Roxy-3D
					
				
			
			
				
	
			
			
			
						parent
						
							217e0efd20
						
					
				
				
					commit
					1104054d73
				
			@@ -775,6 +775,10 @@
 | 
				
			|||||||
  #define DOUBLECLICK_MAX_INTERVAL 1250 // Maximum interval between clicks, in milliseconds.
 | 
					  #define DOUBLECLICK_MAX_INTERVAL 1250 // Maximum interval between clicks, in milliseconds.
 | 
				
			||||||
                                        // Note: Extra time may be added to mitigate controller latency.
 | 
					                                        // Note: Extra time may be added to mitigate controller latency.
 | 
				
			||||||
  //#define BABYSTEP_ZPROBE_GFX_OVERLAY // Enable graphical overlay on Z-offset editor
 | 
					  //#define BABYSTEP_ZPROBE_GFX_OVERLAY // Enable graphical overlay on Z-offset editor
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  // Allow babystepping tool z offsets, allowing compensation for tools at different heights.
 | 
				
			||||||
 | 
					  // Ignored in Independent X Carriage Duplicate mode, where tool 0 Z probe offset will be used.
 | 
				
			||||||
 | 
					  //#define BABYSTEP_HOTEND_Z_OFFSET
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// @section extruder
 | 
					// @section extruder
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -138,7 +138,7 @@
 | 
				
			|||||||
// The following define selects which electronics board you have.
 | 
					// The following define selects which electronics board you have.
 | 
				
			||||||
// Please choose the name from boards.h that matches your setup
 | 
					// Please choose the name from boards.h that matches your setup
 | 
				
			||||||
#ifndef MOTHERBOARD
 | 
					#ifndef MOTHERBOARD
 | 
				
			||||||
  #define MOTHERBOARD BOARD_FORMBOT_TREX2
 | 
					  #define MOTHERBOARD BOARD_FORMBOT_TREX2PLUS
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// Optional custom name for your RepStrap or other custom machine
 | 
					// Optional custom name for your RepStrap or other custom machine
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -75,8 +75,9 @@
 | 
				
			|||||||
#define BOARD_AZTEEG_X3_PRO     68    // Azteeg X3 Pro
 | 
					#define BOARD_AZTEEG_X3_PRO     68    // Azteeg X3 Pro
 | 
				
			||||||
#define BOARD_ULTIMAIN_2        72    // Ultimainboard 2.x (Uses TEMP_SENSOR 20)
 | 
					#define BOARD_ULTIMAIN_2        72    // Ultimainboard 2.x (Uses TEMP_SENSOR 20)
 | 
				
			||||||
#define BOARD_RUMBA             80    // Rumba
 | 
					#define BOARD_RUMBA             80    // Rumba
 | 
				
			||||||
#define BOARD_FORMBOT_TREX2     81    // Formbot version 1
 | 
					#define BOARD_FORMBOT_TREX2PLUS 95    // Formbot version 1
 | 
				
			||||||
#define BOARD_FORMBOT_TREX3     82    // Formbot T-Rex 3 revision
 | 
					#define BOARD_FORMBOT_TREX3     96    // Formbot T-Rex 3 revision
 | 
				
			||||||
 | 
					#define BOARD_FORMBOT_RAPTOR    97    // Formbot version 1
 | 
				
			||||||
#define BOARD_BQ_ZUM_MEGA_3D    503   // bq ZUM Mega 3D
 | 
					#define BOARD_BQ_ZUM_MEGA_3D    503   // bq ZUM Mega 3D
 | 
				
			||||||
#define BOARD_MAKEBOARD_MINI    431   // MakeBoard Mini v2.1.2 is a control board sold by MicroMake
 | 
					#define BOARD_MAKEBOARD_MINI    431   // MakeBoard Mini v2.1.2 is a control board sold by MicroMake
 | 
				
			||||||
#define BOARD_TRIGORILLA_13     343   // TriGorilla Anycubic version 1.3 based on RAMPS EFB
 | 
					#define BOARD_TRIGORILLA_13     343   // TriGorilla Anycubic version 1.3 based on RAMPS EFB
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -36,9 +36,23 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
#if ENABLED(BABYSTEP_ZPROBE_OFFSET)
 | 
					#if ENABLED(BABYSTEP_ZPROBE_OFFSET)
 | 
				
			||||||
  FORCE_INLINE void mod_zprobe_zoffset(const float &offs) {
 | 
					  FORCE_INLINE void mod_zprobe_zoffset(const float &offs) {
 | 
				
			||||||
 | 
					    #if ENABLED(BABYSTEP_HOTEND_Z_OFFSET)
 | 
				
			||||||
 | 
					      if (active_extruder == 0)
 | 
				
			||||||
 | 
					      {
 | 
				
			||||||
        zprobe_zoffset += offs;
 | 
					        zprobe_zoffset += offs;
 | 
				
			||||||
        SERIAL_ECHO_START();
 | 
					        SERIAL_ECHO_START();
 | 
				
			||||||
        SERIAL_ECHOLNPAIR(MSG_PROBE_Z_OFFSET ": ", zprobe_zoffset);
 | 
					        SERIAL_ECHOLNPAIR(MSG_PROBE_Z_OFFSET ": ", zprobe_zoffset);
 | 
				
			||||||
 | 
					      } else {
 | 
				
			||||||
 | 
					          hotend_offset[Z_AXIS][active_extruder] -= offs;
 | 
				
			||||||
 | 
					          SERIAL_ECHO_START();
 | 
				
			||||||
 | 
					          SERIAL_ECHOLNPAIR(MSG_IDEX_Z_OFFSET ": ", hotend_offset[Z_AXIS][active_extruder]);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    #else
 | 
				
			||||||
 | 
					      zprobe_zoffset += offs;
 | 
				
			||||||
 | 
					      SERIAL_ECHO_START();
 | 
				
			||||||
 | 
					      SERIAL_ECHOLNPAIR(MSG_PROBE_Z_OFFSET ": ", zprobe_zoffset);
 | 
				
			||||||
 | 
					    #endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -32,7 +32,9 @@ void GcodeSuite::M851() {
 | 
				
			|||||||
  if (parser.seenval('Z')) {
 | 
					  if (parser.seenval('Z')) {
 | 
				
			||||||
    const float value = parser.value_linear_units();
 | 
					    const float value = parser.value_linear_units();
 | 
				
			||||||
    if (WITHIN(value, Z_PROBE_OFFSET_RANGE_MIN, Z_PROBE_OFFSET_RANGE_MAX))
 | 
					    if (WITHIN(value, Z_PROBE_OFFSET_RANGE_MIN, Z_PROBE_OFFSET_RANGE_MAX))
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
      zprobe_zoffset = value;
 | 
					      zprobe_zoffset = value;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
    else {
 | 
					    else {
 | 
				
			||||||
      SERIAL_ERROR_START();
 | 
					      SERIAL_ERROR_START();
 | 
				
			||||||
      SERIAL_ERRORLNPGM("?Z out of range (" STRINGIFY(Z_PROBE_OFFSET_RANGE_MIN) " to " STRINGIFY(Z_PROBE_OFFSET_RANGE_MAX) ")");
 | 
					      SERIAL_ERRORLNPGM("?Z out of range (" STRINGIFY(Z_PROBE_OFFSET_RANGE_MIN) " to " STRINGIFY(Z_PROBE_OFFSET_RANGE_MAX) ")");
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1317,15 +1317,35 @@ void lcd_quick_feedback(const bool clear_buttons) {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
          const float new_zoffset = zprobe_zoffset + planner.steps_to_mm[Z_AXIS] * babystep_increment;
 | 
					          const float new_zoffset = zprobe_zoffset + planner.steps_to_mm[Z_AXIS] * babystep_increment;
 | 
				
			||||||
          if (WITHIN(new_zoffset, Z_PROBE_OFFSET_RANGE_MIN, Z_PROBE_OFFSET_RANGE_MAX)) {
 | 
					          if (WITHIN(new_zoffset, Z_PROBE_OFFSET_RANGE_MIN, Z_PROBE_OFFSET_RANGE_MAX)) {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            #if ENABLED(BABYSTEP_HOTEND_Z_OFFSET)
 | 
				
			||||||
 | 
					              if (active_extruder == 0)
 | 
				
			||||||
 | 
					              {
 | 
				
			||||||
                thermalManager.babystep_axis(Z_AXIS, babystep_increment);
 | 
					                thermalManager.babystep_axis(Z_AXIS, babystep_increment);
 | 
				
			||||||
                zprobe_zoffset = new_zoffset;
 | 
					                zprobe_zoffset = new_zoffset;
 | 
				
			||||||
 | 
					              } else {
 | 
				
			||||||
 | 
					                  thermalManager.babystep_axis(Z_AXIS, babystep_increment);
 | 
				
			||||||
 | 
					                  hotend_offset[Z_AXIS][active_extruder] -= (planner.steps_to_mm[Z_AXIS] * babystep_increment);
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					            #else
 | 
				
			||||||
 | 
					              zprobe_zoffset = new_zoffset;
 | 
				
			||||||
 | 
					            #endif
 | 
				
			||||||
            lcdDrawUpdate = LCDVIEW_CALL_REDRAW_NEXT;
 | 
					            lcdDrawUpdate = LCDVIEW_CALL_REDRAW_NEXT;
 | 
				
			||||||
          }
 | 
					          }
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
        if (lcdDrawUpdate) {
 | 
					        if (lcdDrawUpdate) {
 | 
				
			||||||
 | 
					          #if ENABLED(BABYSTEP_HOTEND_Z_OFFSET)
 | 
				
			||||||
 | 
					            if (active_extruder == 0) {
 | 
				
			||||||
              lcd_implementation_drawedit(PSTR(MSG_ZPROBE_ZOFFSET), ftostr43sign(zprobe_zoffset));
 | 
					              lcd_implementation_drawedit(PSTR(MSG_ZPROBE_ZOFFSET), ftostr43sign(zprobe_zoffset));
 | 
				
			||||||
 | 
					            } else {
 | 
				
			||||||
 | 
					              lcd_implementation_drawedit(PSTR(MSG_IDEX_Z_OFFSET), ftostr43sign(hotend_offset[Z_AXIS][active_extruder]));
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					          #endif
 | 
				
			||||||
          #if ENABLED(BABYSTEP_ZPROBE_GFX_OVERLAY)
 | 
					          #if ENABLED(BABYSTEP_ZPROBE_GFX_OVERLAY)
 | 
				
			||||||
 | 
					            if (active_extruder == 0) {
 | 
				
			||||||
              _lcd_zoffset_overlay_gfx(zprobe_zoffset);
 | 
					              _lcd_zoffset_overlay_gfx(zprobe_zoffset);
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
          #endif
 | 
					          #endif
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -46,6 +46,7 @@
 | 
				
			|||||||
    #include "../module/motion.h" // for active_extruder
 | 
					    #include "../module/motion.h" // for active_extruder
 | 
				
			||||||
  #endif
 | 
					  #endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  void lcd_return_to_status();
 | 
				
			||||||
  bool lcd_hasstatus();
 | 
					  bool lcd_hasstatus();
 | 
				
			||||||
  void lcd_setstatus(const char* message, const bool persist=false);
 | 
					  void lcd_setstatus(const char* message, const bool persist=false);
 | 
				
			||||||
  void lcd_setstatusPGM(const char* message, const int8_t level=0);
 | 
					  void lcd_setstatusPGM(const char* message, const int8_t level=0);
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -153,7 +153,8 @@ typedef struct SettingsDataStruct {
 | 
				
			|||||||
  //
 | 
					  //
 | 
				
			||||||
  // HAS_BED_PROBE
 | 
					  // HAS_BED_PROBE
 | 
				
			||||||
  //
 | 
					  //
 | 
				
			||||||
  float zprobe_zoffset;                                 // M851 Z
 | 
					
 | 
				
			||||||
 | 
					  float zprobe_zoffset;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  //
 | 
					  //
 | 
				
			||||||
  // ABL_PLANAR
 | 
					  // ABL_PLANAR
 | 
				
			||||||
@@ -494,11 +495,11 @@ void MarlinSettings::postprocess() {
 | 
				
			|||||||
      for (uint8_t q = mesh_num_x * mesh_num_y; q--;) EEPROM_WRITE(dummy);
 | 
					      for (uint8_t q = mesh_num_x * mesh_num_y; q--;) EEPROM_WRITE(dummy);
 | 
				
			||||||
    #endif // MESH_BED_LEVELING
 | 
					    #endif // MESH_BED_LEVELING
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    _FIELD_TEST(zprobe_zoffset);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    #if !HAS_BED_PROBE
 | 
					    #if !HAS_BED_PROBE
 | 
				
			||||||
      const float zprobe_zoffset = 0;
 | 
					      const float zprobe_zoffset = 0;
 | 
				
			||||||
    #endif
 | 
					    #endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      _FIELD_TEST(zprobe_zoffset);
 | 
				
			||||||
      EEPROM_WRITE(zprobe_zoffset);
 | 
					      EEPROM_WRITE(zprobe_zoffset);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    //
 | 
					    //
 | 
				
			||||||
@@ -1180,11 +1181,11 @@ void MarlinSettings::postprocess() {
 | 
				
			|||||||
        for (uint16_t q = mesh_num_x * mesh_num_y; q--;) EEPROM_READ(dummy);
 | 
					        for (uint16_t q = mesh_num_x * mesh_num_y; q--;) EEPROM_READ(dummy);
 | 
				
			||||||
      #endif // MESH_BED_LEVELING
 | 
					      #endif // MESH_BED_LEVELING
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      _FIELD_TEST(zprobe_zoffset);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
      #if !HAS_BED_PROBE
 | 
					      #if !HAS_BED_PROBE
 | 
				
			||||||
        float zprobe_zoffset;
 | 
					        float zprobe_zoffset;
 | 
				
			||||||
      #endif
 | 
					      #endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        _FIELD_TEST(zprobe_zoffset);
 | 
				
			||||||
        EEPROM_READ(zprobe_zoffset);
 | 
					        EEPROM_READ(zprobe_zoffset);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      //
 | 
					      //
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1502,15 +1502,15 @@ void homeaxis(const AxisEnum axis) {
 | 
				
			|||||||
          soft_endstop_max[X_AXIS] = dual_max_x;
 | 
					          soft_endstop_max[X_AXIS] = dual_max_x;
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
        else if (dxc_is_duplicating()) {
 | 
					        else if (dxc_is_duplicating()) {
 | 
				
			||||||
          // In Duplication Mode, T0 can move as far left as X_MIN_POS
 | 
					          // In Duplication Mode, T0 can move as far left as X1_MIN_POS
 | 
				
			||||||
          // but not so far to the right that T1 would move past the end
 | 
					          // but not so far to the right that T1 would move past the end
 | 
				
			||||||
          soft_endstop_min[X_AXIS] = base_min_pos(X_AXIS);
 | 
					          soft_endstop_min[X_AXIS] = X1_MIN_POS;
 | 
				
			||||||
          soft_endstop_max[X_AXIS] = MIN(base_max_pos(X_AXIS), dual_max_x - duplicate_extruder_x_offset);
 | 
					          soft_endstop_max[X_AXIS] = MIN(X1_MAX_POS, dual_max_x - duplicate_extruder_x_offset);
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
        else {
 | 
					        else {
 | 
				
			||||||
          // In other modes, T0 can move from X_MIN_POS to X_MAX_POS
 | 
					          // In other modes, T0 can move from X1_MIN_POS to X1_MAX_POS
 | 
				
			||||||
          soft_endstop_min[axis] = base_min_pos(axis);
 | 
					          soft_endstop_min[X_AXIS] = X1_MIN_POS;
 | 
				
			||||||
          soft_endstop_max[axis] = base_max_pos(axis);
 | 
					          soft_endstop_max[X_AXIS] = X1_MAX_POS;
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
    #elif ENABLED(DELTA)
 | 
					    #elif ENABLED(DELTA)
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -22,13 +22,12 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
#include "tool_change.h"
 | 
					#include "tool_change.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include "probe.h"
 | 
				
			||||||
#include "motion.h"
 | 
					#include "motion.h"
 | 
				
			||||||
#include "planner.h"
 | 
					#include "planner.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#include "../Marlin.h"
 | 
					#include "../Marlin.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#include "../inc/MarlinConfig.h"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#if ENABLED(PARKING_EXTRUDER) && PARKING_EXTRUDER_SOLENOIDS_DELAY > 0
 | 
					#if ENABLED(PARKING_EXTRUDER) && PARKING_EXTRUDER_SOLENOIDS_DELAY > 0
 | 
				
			||||||
  #include "../gcode/gcode.h" // for dwell()
 | 
					  #include "../gcode/gcode.h" // for dwell()
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
@@ -57,6 +56,10 @@
 | 
				
			|||||||
  #include "../feature/fanmux.h"
 | 
					  #include "../feature/fanmux.h"
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#if ENABLED(ULTIPANEL)
 | 
				
			||||||
 | 
					  #include "../lcd/ultralcd.h"
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#if DO_SWITCH_EXTRUDER
 | 
					#if DO_SWITCH_EXTRUDER
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  #if EXTRUDERS > 3
 | 
					  #if EXTRUDERS > 3
 | 
				
			||||||
@@ -498,12 +501,25 @@ void tool_change(const uint8_t tmp_extruder, const float fr_mm_s/*=0.0*/, bool n
 | 
				
			|||||||
            active_extruder = tmp_extruder;
 | 
					            active_extruder = tmp_extruder;
 | 
				
			||||||
            update_software_endstops(X_AXIS);
 | 
					            update_software_endstops(X_AXIS);
 | 
				
			||||||
            active_extruder = !tmp_extruder;
 | 
					            active_extruder = !tmp_extruder;
 | 
				
			||||||
          #endif
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
            // Don't move the new extruder out of bounds
 | 
					            // Don't move the new extruder out of bounds
 | 
				
			||||||
            if (!WITHIN(current_position[X_AXIS], soft_endstop_min[X_AXIS], soft_endstop_max[X_AXIS]))
 | 
					            if (!WITHIN(current_position[X_AXIS], soft_endstop_min[X_AXIS], soft_endstop_max[X_AXIS]))
 | 
				
			||||||
              no_move = true;
 | 
					              no_move = true;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					          #else
 | 
				
			||||||
 | 
					              // No software endstops? Use the configured limits
 | 
				
			||||||
 | 
					              if (active_extruder == 0) {
 | 
				
			||||||
 | 
					                if (!WITHIN(current_position[X_AXIS], X2_MIN_POS, X2_MAX_POS))
 | 
				
			||||||
 | 
					                  no_move = true;
 | 
				
			||||||
 | 
					              }
 | 
				
			||||||
 | 
					              else if (!WITHIN(current_position[X_AXIS], X1_MIN_POS, X1_MAX_POS))
 | 
				
			||||||
 | 
					                no_move = true;
 | 
				
			||||||
 | 
					          #endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					          #if ENABLED(ULTIPANEL)
 | 
				
			||||||
 | 
					            lcd_return_to_status();
 | 
				
			||||||
 | 
					          #endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
          if (!no_move) set_destination_from_current();
 | 
					          if (!no_move) set_destination_from_current();
 | 
				
			||||||
          dualx_tool_change(tmp_extruder, no_move); // Can modify no_move
 | 
					          dualx_tool_change(tmp_extruder, no_move); // Can modify no_move
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -569,6 +585,13 @@ void tool_change(const uint8_t tmp_extruder, const float fr_mm_s/*=0.0*/, bool n
 | 
				
			|||||||
          #if ENABLED(DEBUG_LEVELING_FEATURE)
 | 
					          #if ENABLED(DEBUG_LEVELING_FEATURE)
 | 
				
			||||||
            if (DEBUGGING(LEVELING)) DEBUG_POS("Move back", destination);
 | 
					            if (DEBUGGING(LEVELING)) DEBUG_POS("Move back", destination);
 | 
				
			||||||
          #endif
 | 
					          #endif
 | 
				
			||||||
 | 
					          #if ENABLED(DUAL_X_CARRIAGE)
 | 
				
			||||||
 | 
					            // Dual x carriage does not properly apply these to current position due to command ordering
 | 
				
			||||||
 | 
					            // So we apply the offsets for y and z to the destination here. X cannot have an offset in this mode
 | 
				
			||||||
 | 
					            // as it is utilized for X2 home position.
 | 
				
			||||||
 | 
					            destination[Y_AXIS] -= hotend_offset[Y_AXIS][active_extruder] - hotend_offset[Y_AXIS][tmp_extruder];
 | 
				
			||||||
 | 
					            destination[Z_AXIS] -= hotend_offset[Z_AXIS][active_extruder] - hotend_offset[Z_AXIS][tmp_extruder];
 | 
				
			||||||
 | 
					          #endif
 | 
				
			||||||
          // Move back to the original (or tweaked) position
 | 
					          // Move back to the original (or tweaked) position
 | 
				
			||||||
          do_blocking_move_to(destination[X_AXIS], destination[Y_AXIS], destination[Z_AXIS]);
 | 
					          do_blocking_move_to(destination[X_AXIS], destination[Y_AXIS], destination[Z_AXIS]);
 | 
				
			||||||
          #if ENABLED(DUAL_X_CARRIAGE)
 | 
					          #if ENABLED(DUAL_X_CARRIAGE)
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -132,8 +132,10 @@
 | 
				
			|||||||
  #include "pins_AZTEEG_X3_PRO.h"     // ATmega2560                                 env:megaatmega2560
 | 
					  #include "pins_AZTEEG_X3_PRO.h"     // ATmega2560                                 env:megaatmega2560
 | 
				
			||||||
#elif MB(ULTIMAIN_2)
 | 
					#elif MB(ULTIMAIN_2)
 | 
				
			||||||
  #include "pins_ULTIMAIN_2.h"        // ATmega2560                                 env:megaatmega2560
 | 
					  #include "pins_ULTIMAIN_2.h"        // ATmega2560                                 env:megaatmega2560
 | 
				
			||||||
#elif MB(FORMBOT_TREX2)
 | 
					#elif MB(FORMBOT_RAPTOR)
 | 
				
			||||||
  #include "pins_FORMBOT_TREX2.h"     // ATmega2560                                 env:megaatmega2560
 | 
					  #include "pins_FORMBOT_RAPTOR.h"    // ATmega2560                                 env:megaatmega2560
 | 
				
			||||||
 | 
					#elif MB(FORMBOT_TREX2PLUS)
 | 
				
			||||||
 | 
					  #include "pins_FORMBOT_TREX2PLUS.h" // ATmega2560                                 env:megaatmega2560
 | 
				
			||||||
#elif MB(FORMBOT_TREX3)
 | 
					#elif MB(FORMBOT_TREX3)
 | 
				
			||||||
  #include "pins_FORMBOT_TREX3.h"     // ATmega2560                                 env:megaatmega2560
 | 
					  #include "pins_FORMBOT_TREX3.h"     // ATmega2560                                 env:megaatmega2560
 | 
				
			||||||
#elif MB(RUMBA)
 | 
					#elif MB(RUMBA)
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										184
									
								
								Marlin/src/pins/pins_FORMBOT_RAPTOR.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										184
									
								
								Marlin/src/pins/pins_FORMBOT_RAPTOR.h
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,184 @@
 | 
				
			|||||||
 | 
					/**
 | 
				
			||||||
 | 
					 * Marlin 3D Printer Firmware
 | 
				
			||||||
 | 
					 * Copyright (C) 2016 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * Based on Sprinter and grbl.
 | 
				
			||||||
 | 
					 * Copyright (C) 2011 Camiel Gubbels / Erik van der Zalm
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * This program is free software: you can redistribute it and/or modify
 | 
				
			||||||
 | 
					 * it under the terms of the GNU General Public License as published by
 | 
				
			||||||
 | 
					 * the Free Software Foundation, either version 3 of the License, or
 | 
				
			||||||
 | 
					 * (at your option) any later version.
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * This program is distributed in the hope that it will be useful,
 | 
				
			||||||
 | 
					 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 | 
				
			||||||
 | 
					 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 | 
				
			||||||
 | 
					 * GNU General Public License for more details.
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * You should have received a copy of the GNU General Public License
 | 
				
			||||||
 | 
					 * along with this program.  If not, see <http://www.gnu.org/licenses/>.
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/**
 | 
				
			||||||
 | 
					 * Formbot pin assignments
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifndef __AVR_ATmega2560__
 | 
				
			||||||
 | 
					  #error "Oops!  Make sure you have 'Arduino Mega' selected from the 'Tools -> Boards' menu."
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#if E_STEPPERS > 3 || HOTENDS > 3
 | 
				
			||||||
 | 
					  #error "Formbot supports up to 3 hotends / E-steppers. Comment this line to keep going."
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#define DEFAULT_MACHINE_NAME "Formbot Raptor"
 | 
				
			||||||
 | 
					#define BOARD_NAME           "Formbot Raptor"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					//
 | 
				
			||||||
 | 
					// Servos
 | 
				
			||||||
 | 
					//
 | 
				
			||||||
 | 
					#define SERVO0_PIN         11
 | 
				
			||||||
 | 
					#define SERVO1_PIN          6
 | 
				
			||||||
 | 
					#define SERVO2_PIN          5
 | 
				
			||||||
 | 
					#define SERVO3_PIN         -1
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					//
 | 
				
			||||||
 | 
					// Limit Switches
 | 
				
			||||||
 | 
					//
 | 
				
			||||||
 | 
					#define X_MIN_PIN           3
 | 
				
			||||||
 | 
					#ifndef X_MAX_PIN
 | 
				
			||||||
 | 
					  #define X_MAX_PIN         2
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					#define Y_MIN_PIN          14
 | 
				
			||||||
 | 
					#define Y_MAX_PIN          15
 | 
				
			||||||
 | 
					#define Z_MIN_PIN          18
 | 
				
			||||||
 | 
					#define Z_MAX_PIN          19
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					//
 | 
				
			||||||
 | 
					// Z Probe (when not Z_MIN_PIN)
 | 
				
			||||||
 | 
					//
 | 
				
			||||||
 | 
					#ifndef Z_MIN_PROBE_PIN
 | 
				
			||||||
 | 
					  #define Z_MIN_PROBE_PIN  32
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					//
 | 
				
			||||||
 | 
					// Steppers
 | 
				
			||||||
 | 
					//
 | 
				
			||||||
 | 
					#define X_STEP_PIN         54
 | 
				
			||||||
 | 
					#define X_DIR_PIN          55
 | 
				
			||||||
 | 
					#define X_ENABLE_PIN       38
 | 
				
			||||||
 | 
					#ifndef X_CS_PIN
 | 
				
			||||||
 | 
					  #define X_CS_PIN         53
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#define Y_STEP_PIN         60
 | 
				
			||||||
 | 
					#define Y_DIR_PIN          61
 | 
				
			||||||
 | 
					#define Y_ENABLE_PIN       56
 | 
				
			||||||
 | 
					#ifndef Y_CS_PIN
 | 
				
			||||||
 | 
					  #define Y_CS_PIN         49
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#define Z_STEP_PIN         46
 | 
				
			||||||
 | 
					#define Z_DIR_PIN          48
 | 
				
			||||||
 | 
					#define Z_ENABLE_PIN       62
 | 
				
			||||||
 | 
					#ifndef Z_CS_PIN
 | 
				
			||||||
 | 
					  #define Z_CS_PIN         40
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#define E0_STEP_PIN        26
 | 
				
			||||||
 | 
					#define E0_DIR_PIN         28
 | 
				
			||||||
 | 
					#define E0_ENABLE_PIN      24
 | 
				
			||||||
 | 
					#ifndef E0_CS_PIN
 | 
				
			||||||
 | 
					  #define E0_CS_PIN        42
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#define E1_STEP_PIN        36
 | 
				
			||||||
 | 
					#define E1_DIR_PIN         34
 | 
				
			||||||
 | 
					#define E1_ENABLE_PIN      30
 | 
				
			||||||
 | 
					#ifndef E1_CS_PIN
 | 
				
			||||||
 | 
					  #define E1_CS_PIN        44
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#define E2_STEP_PIN        42
 | 
				
			||||||
 | 
					#define E2_DIR_PIN         43
 | 
				
			||||||
 | 
					#define E2_ENABLE_PIN      44
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					//
 | 
				
			||||||
 | 
					// Temperature Sensors
 | 
				
			||||||
 | 
					//
 | 
				
			||||||
 | 
					#define TEMP_0_PIN         13   // Analog Input
 | 
				
			||||||
 | 
					#define TEMP_1_PIN         15   // Analog Input
 | 
				
			||||||
 | 
					#define TEMP_BED_PIN       14   // Analog Input
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// SPI for Max6675 or Max31855 Thermocouple
 | 
				
			||||||
 | 
					#if DISABLED(SDSUPPORT)
 | 
				
			||||||
 | 
					  #define MAX6675_SS       66 // Do not use pin 53 if there is even the remote possibility of using Display/SD card
 | 
				
			||||||
 | 
					#else
 | 
				
			||||||
 | 
					  #define MAX6675_SS       66 // Do not use pin 49 as this is tied to the switch inside the SD card socket to detect if there is an SD card present
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					//
 | 
				
			||||||
 | 
					// Augmentation for auto-assigning RAMPS plugs
 | 
				
			||||||
 | 
					//
 | 
				
			||||||
 | 
					#if DISABLED(IS_RAMPS_EEB) && DISABLED(IS_RAMPS_EEF) && DISABLED(IS_RAMPS_EFB) && DISABLED(IS_RAMPS_EFF) && DISABLED(IS_RAMPS_SF) && !PIN_EXISTS(MOSFET_D)
 | 
				
			||||||
 | 
					  #if HOTENDS > 1
 | 
				
			||||||
 | 
					    #if TEMP_SENSOR_BED
 | 
				
			||||||
 | 
					      #define IS_RAMPS_EEB
 | 
				
			||||||
 | 
					    #else
 | 
				
			||||||
 | 
					      #define IS_RAMPS_EEF
 | 
				
			||||||
 | 
					    #endif
 | 
				
			||||||
 | 
					  #elif TEMP_SENSOR_BED
 | 
				
			||||||
 | 
					    #define IS_RAMPS_EFB
 | 
				
			||||||
 | 
					  #else
 | 
				
			||||||
 | 
					    #define IS_RAMPS_EFF
 | 
				
			||||||
 | 
					  #endif
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					//
 | 
				
			||||||
 | 
					// Heaters / Fans
 | 
				
			||||||
 | 
					//
 | 
				
			||||||
 | 
					#define HEATER_0_PIN       10
 | 
				
			||||||
 | 
					#define HEATER_1_PIN        7
 | 
				
			||||||
 | 
					#define HEATER_BED_PIN     8
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#define LED4_PIN            5
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#define FAN_PIN             9
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#if DISABLED(FILAMENT_RUNOUT_SENSOR)
 | 
				
			||||||
 | 
					  #define FAN1_PIN          4
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					//
 | 
				
			||||||
 | 
					// Misc. Functions
 | 
				
			||||||
 | 
					//
 | 
				
			||||||
 | 
					#define SDSS               53
 | 
				
			||||||
 | 
					#define LED_PIN            13
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// Use the RAMPS 1.4 Analog input 5 on the AUX2 connector
 | 
				
			||||||
 | 
					#define FILWIDTH_PIN        5   // Analog Input
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifndef PS_ON_PIN
 | 
				
			||||||
 | 
					  #define PS_ON_PIN        12
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					//
 | 
				
			||||||
 | 
					// LCD / Controller
 | 
				
			||||||
 | 
					//
 | 
				
			||||||
 | 
					// Formbot only supports REPRAP_DISCOUNT_SMART_CONTROLLER
 | 
				
			||||||
 | 
					//
 | 
				
			||||||
 | 
					#if ENABLED(REPRAP_DISCOUNT_SMART_CONTROLLER)
 | 
				
			||||||
 | 
					  #define LCD_PINS_RS      16
 | 
				
			||||||
 | 
					  #define LCD_PINS_ENABLE  17
 | 
				
			||||||
 | 
					  #define LCD_PINS_D4      23
 | 
				
			||||||
 | 
					  #define LCD_PINS_D5      25
 | 
				
			||||||
 | 
					  #define LCD_PINS_D6      27
 | 
				
			||||||
 | 
					  #define LCD_PINS_D7      29
 | 
				
			||||||
 | 
					  #define BEEPER_PIN       37
 | 
				
			||||||
 | 
					  #define BTN_EN1          31
 | 
				
			||||||
 | 
					  #define BTN_EN2          33
 | 
				
			||||||
 | 
					  #define BTN_ENC          35
 | 
				
			||||||
 | 
					  #define SD_DETECT_PIN    49
 | 
				
			||||||
 | 
					  #define KILL_PIN         41
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
@@ -143,15 +143,15 @@
 | 
				
			|||||||
#define HEATER_BED_PIN     58
 | 
					#define HEATER_BED_PIN     58
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#define FAN_PIN             9
 | 
					#define FAN_PIN             9
 | 
				
			||||||
//#define FAN1_PIN            4
 | 
					#if(DISABLED(FILAMENT_RUNOUT_SENSOR))
 | 
				
			||||||
 | 
					  // Though defined as a fan pin, it is utilized as a dedicated laser pin by Formbot. May
 | 
				
			||||||
 | 
					  // swapped plug and play with a fil;ament runout sensor.
 | 
				
			||||||
 | 
					  #define FAN1_PIN            4 
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#if ENABLED(FILAMENT_RUNOUT_SENSOR)
 | 
				
			||||||
#if DISABLED(ICSP_PORT_SWITCHES)
 | 
					  #define FIL_RUNOUT_PIN   4
 | 
				
			||||||
  //#define FIL_RUNOUT_PIN    22
 | 
					  //#define FIL_RUNOUT2_PIN  -1
 | 
				
			||||||
  //#define FIL_RUNOUT2_PIN   21
 | 
					 | 
				
			||||||
#elif ENABLED(FILAMENT_RUNOUT_SENSOR)
 | 
					 | 
				
			||||||
  #define FIL_RUNOUT_PIN   52
 | 
					 | 
				
			||||||
  #define FIL_RUNOUT2_PIN  50
 | 
					 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
//
 | 
					//
 | 
				
			||||||
		Reference in New Issue
	
	Block a user