Update to the Z-offset screen. Updated Configuration_LulzBot.h

master
Marcio Teixeira 7 years ago
parent bf328f7cbf
commit bf12ae9834

@ -0,0 +1,720 @@
#ifndef CONDITIONALS_LULZBOT
#define CONDITIONALS_LULZBOT
/* We define the LULZBOT_ values based on which printer or toolhead variants we are compiling
* for, these constants are then placed where appropriate in the following files:
*
* - Configuration.h
* - Configuration_adv.h
* - pins.h
* - Default_Version.h
*
* Using our own set of constants and limiting modification to Marlin's files makes it easier to
* merge from upstream. All values are prefixed with LULZBOT_ so that it is easy to see what
* was changed and where. If a setting is commented out, we define a LULZBOT_{SETTING}_DISABLED
* here, just so we have a record of things that got disabled.
*/
#if ( \
!defined(LULZBOT_Gladiola_Mini) && \
!defined(LULZBOT_Huerfano_Mini) && \
!defined(LULZBOT_Gladiola_GLCD) && \
!defined(LULZBOT_Oliveoil_TAZ_6) && \
!defined(LULZBOT_Huerfano_TAZ_7) \
) || ( \
!defined(TOOLHEAD_Gladiola_SingleExtruder) && \
!defined(TOOLHEAD_Albatross_Flexystruder) && \
!defined(TOOLHEAD_Heather_Aero) && \
!defined(TOOLHEAD_Oliveoil_SingleExtruder) && \
!defined(TOOLHEAD_Kanyu_Flexystruder) && \
!defined(TOOLHEAD_Opah_Moarstruder) && \
!defined(TOOLHEAD_Javelin_DualExtruder) && \
!defined(TOOLHEAD_Longfin_FlexyDually) && \
!defined(TOOLHEAD_Yellowfin_DualExtruder) && \
!defined(TOOLHEAD_Angelfish_Aero) \
)
#error Must specify model and toolhead to build:
#error
#error make clean
#error make MODEL=<model> TOOLHEAD=<toolhead>
#error
#error Printer Model Choices:
#error Gladiola_Mini // Lulzbot Mini (Gladiola)
#error Huerfano_Mini // Lulzbot Mini (Huerfano)
#error Gladiola_GLCD // Lulzbot Mini (Gladiola w/ LCD)
#error Oliveoil_TAZ_6 // Lulzbot TAZ 6 (Olive Oil)
#error Huerfano_TAZ_7 // Lulzbot TAZ 7 (Huerfano)
#error
#error Mini Toolhead Choices:
#error Gladiola_SingleExtruder // Standard Single Extruder (Gladiola)
#error Albatross_Flexystruder // Flexystruder (Albatross)
#error Heather_Aero // Titan AERO (Heather)
#error
#error TAZ Toolhead Choices:
#error Oliveoil_SingleExtruder // Standard Single Extruder (TAZ Olive)
#error Kanyu_Flexystruder // Flexystruder (Kanyu)
#error Opah_Moarstruder // Moarstruder (Opah)
#error Javelin_DualExtruder // Dual Extruder v2 (Javelin)
#error Longfin_FlexyDually // FlexyDually (Longfin)
#error Yellowfin_DualExtruder // Dual Extruder v3 (Yellowfin)
#error Angelfish_Aero // Titan AERO (Angelfish)
#endif
#define LULZBOT_FW_VERSION ".10"
// Select options based on printer model
#if defined(LULZBOT_Gladiola_Mini)
#define LULZBOT_CUSTOM_MACHINE_NAME "Mini"
#define LULZBOT_IS_MINI
#define LULZBOT_MINI_BED
#endif
#if defined(LULZBOT_Huerfano_Mini)
// Prototype Mini w/ Z-Belt
#define LULZBOT_CUSTOM_MACHINE_NAME "Mini Z-Belt"
#define LULZBOT_IS_MINI
#define LULZBOT_MINI_BED
#endif
#if defined(LULZBOT_Gladiola_GLCD)
#define LULZBOT_CUSTOM_MACHINE_NAME "Mini GLCD"
#define LULZBOT_IS_MINI
#define LULZBOT_MINI_BED
#define LULZBOT_USE_LCD_DISPLAY
#endif
#if defined(LULZBOT_Oliveoil_TAZ_6)
#define LULZBOT_CUSTOM_MACHINE_NAME "TAZ 6"
#define LULZBOT_IS_TAZ
#define LULZBOT_TAZ_BED
#define LULZBOT_USE_LCD_DISPLAY
#endif
#if defined(LULZBOT_Huerfano_TAZ_7)
// Prototype TAZ w/ Z-Belt
#define LULZBOT_CUSTOM_MACHINE_NAME "TAZ 7"
#define LULZBOT_IS_TAZ
#define LULZBOT_TAZ_BED
#define LULZBOT_USE_LCD_DISPLAY
#endif
// Shared values
#define LULZBOT_STRING_CONFIG_H_AUTHOR "(Aleph Objects Inc., LulzBot Diffusion)"
#define LULZBOT_BUFSIZE 10
#define LULZBOT_EEPROM_SETTINGS
#define LULZBOT_EMERGENCY_PARSER
// Temperature settings
#define LULZBOT_TEMP_SENSOR_0 5
#define LULZBOT_TEMP_SENSOR_BED 7
#define LULZBOT_TEMP_RESIDENCY_TIME 1
#define LULZBOT_TEMP_HYSTERESIS 10
#define LULZBOT_TEMP_WINDOW 10
#define LULZBOT_TEMP_BED_RESIDENCY_TIME 1
#define LULZBOT_TEMP_BED_HYSTERESIS 5
#define LULZBOT_TEMP_BED_WINDOW 5
#define LULZBOT_HEATER_MAXTEMP 305
#define LULZBOT_EXTRUDE_MINTEMP 120
#define LULZBOT_PIDTEMPBED
#define LULZBOT_MAX_BED_POWER 206
#define LULZBOT_THERMAL_PROTECTION_PERIOD 15 // Seconds
#define LULZBOT_THERMAL_PROTECTION_HYSTERESIS 30 // Degrees Celsius
#define LULZBOT_THERMAL_PROTECTION_BED_PERIOD 15 // Seconds
#define LULZBOT_THERMAL_PROTECTION_BED_HYSTERESIS 10 // Degrees Celsius
// Motherboard specifics and custom pins for probing.
#if defined(LULZBOT_IS_MINI)
#define LULZBOT_MOTHERBOARD BOARD_MINIRAMBO
#define LULZBOT_CONTROLLER_FAN_PIN FAN1_PIN // Digital pin 6
#define LULZBOT_Z_MIN_PROBE_USES_Z_MIN_ENDSTOP_PIN
#define LULZBOT_BAUDRATE 115200
#elif defined(LULZBOT_IS_TAZ)
#define LULZBOT_MOTHERBOARD BOARD_RAMBO
#define LULZBOT_CONTROLLER_FAN_PIN FAN2_PIN // Digital pin 2
#define LULZBOT_Z_MIN_PROBE_ENDSTOP
#define LULZBOT_Z_MIN_PROBE_PIN SERVO0_PIN // Digital pin 22
#define LULZBOT_BAUDRATE 250000
#endif
#define LULZBOT_USE_CONTROLLER_FAN
#define LULZBOT_USE_XMIN_PLUG
#define LULZBOT_USE_YMIN_PLUG
#define LULZBOT_USE_ZMIN_PLUG
#define LULZBOT_USE_XMAX_PLUG
#define LULZBOT_USE_YMAX_PLUG
#define LULZBOT_USE_ZMAX_PLUG
/* Endstop settings are determined by printer model, except for the
* X_MAX which varies by toolhead. */
#if defined(LULZBOT_Gladiola_Mini) || defined(LULZBOT_Gladiola_GLCD)
#define LULZBOT_X_MIN_ENDSTOP_INVERTING true
#define LULZBOT_Y_MIN_ENDSTOP_INVERTING true
#define LULZBOT_Y_MAX_ENDSTOP_INVERTING true
#define LULZBOT_Z_MAX_ENDSTOP_INVERTING true
#elif defined(LULZBOT_IS_TAZ) || defined(LULZBOT_Huerfano_Mini)
#define LULZBOT_X_MIN_ENDSTOP_INVERTING false
#define LULZBOT_Y_MIN_ENDSTOP_INVERTING false
#define LULZBOT_Y_MAX_ENDSTOP_INVERTING false
#define LULZBOT_Z_MAX_ENDSTOP_INVERTING false
#endif
#define LULZBOT_Z_MIN_ENDSTOP_INVERTING true
#define LULZBOT_Z_MIN_PROBE_ENDSTOP_INVERTING true
#define LULZBOT_INVERT_X_DIR false
#define LULZBOT_INVERT_Y_DIR true
#define LULZBOT_INVERT_Z_DIR false
#define LULZBOT_INVERT_E0_DIR true
#define LULZBOT_INVERT_E1_DIR true
#if defined(LULZBOT_IS_MINI)
#define LULZBOT_HOMING_Z_WITH_PROBE false
#define LULZBOT_INVERT_X_HOME_DIR -1
#define LULZBOT_INVERT_Y_HOME_DIR 1
#define LULZBOT_INVERT_Z_HOME_DIR 1
#define LULZBOT_QUICKHOME
#elif defined(LULZBOT_IS_TAZ)
#define LULZBOT_HOMING_Z_WITH_PROBE true
#define LULZBOT_INVERT_X_HOME_DIR -1
#define LULZBOT_INVERT_Y_HOME_DIR 1
#define LULZBOT_INVERT_Z_HOME_DIR -1
#define LULZBOT_QUICKHOME
#endif
#if defined(LULZBOT_MINI_BED)
#define LULZBOT_LEFT_PROBE_BED_POSITION 0
#define LULZBOT_RIGHT_PROBE_BED_POSITION 164
#define LULZBOT_BACK_PROBE_BED_POSITION 162
#define LULZBOT_FRONT_PROBE_BED_POSITION -6
#define LULZBOT_HOMING_FEEDRATE_XY (30*60)
#define LULZBOT_HOMING_FEEDRATE_Z (12*60)
#elif defined(LULZBOT_TAZ_BED)
#define LULZBOT_LEFT_PROBE_BED_POSITION -9
#define LULZBOT_RIGHT_PROBE_BED_POSITION 288
#define LULZBOT_BACK_PROBE_BED_POSITION 289
#define LULZBOT_FRONT_PROBE_BED_POSITION -9
#define LULZBOT_HOMING_FEEDRATE_XY (50*60)
#define LULZBOT_HOMING_FEEDRATE_Z (8*60)
// Only the TAZ models have a Z-homing button
#define LULZBOT_Z_SAFE_HOMING
#define LULZBOT_Z_SAFE_HOMING_X_POINT (-19)
#define LULZBOT_Z_SAFE_HOMING_Y_POINT (258)
#define LULZBOT_Z_HOMING_HEIGHT 5
#define LULZBOT_AFTER_Z_HOME_CMD "G0 Z5" // Raise to clear homing button
#endif
#if defined(LULZBOT_MINI_BED)
// Mini has a horizontal wiping pad on the back of the bed
#define LULZBOT_WIPE_X1 115
#define LULZBOT_WIPE_X2 45
#define LULZBOT_WIPE_Y1 173
#define LULZBOT_WIPE_Y2 173
#elif defined(LULZBOT_TAZ_BED)
// TAZ has a vertical wiping pad on the left side of the bed
#define LULZBOT_WIPE_X1 -16
#define LULZBOT_WIPE_X2 -16
#define LULZBOT_WIPE_Y1 95
#define LULZBOT_WIPE_Y2 25
#endif
#define LULZBOT_NOZZLE_CLEAN_FEATURE
#define LULZBOT_AUTO_BED_LEVELING_3POINT
#define LULZBOT_ABL_PROBE_PT_1_X LULZBOT_LEFT_PROBE_BED_POSITION
#define LULZBOT_ABL_PROBE_PT_1_Y LULZBOT_FRONT_PROBE_BED_POSITION
#define LULZBOT_ABL_PROBE_PT_2_X LULZBOT_RIGHT_PROBE_BED_POSITION
#define LULZBOT_ABL_PROBE_PT_2_Y LULZBOT_FRONT_PROBE_BED_POSITION
#define LULZBOT_ABL_PROBE_PT_3_X LULZBOT_RIGHT_PROBE_BED_POSITION
#define LULZBOT_ABL_PROBE_PT_3_Y LULZBOT_BACK_PROBE_BED_POSITION
/* Define probe parameters related to bed leveling,
* e.g. the washers on the bed. These are confusingly
* named Z_MIN_PROBE in Marlin. The Z-Home switch
* is called Z_MIN_ENDSTOP
*/
#define LULZBOT_FIX_MOUNTED_PROBE
#define LULZBOT_PROBE_DOUBLE_TOUCH
#define LULZBOT_X_PROBE_OFFSET_FROM_EXTRUDER 0
#define LULZBOT_Y_PROBE_OFFSET_FROM_EXTRUDER 0
#define LULZBOT_Z_PROBE_OFFSET_FROM_EXTRUDER -1.5
#define LULZBOT_Z_PROBE_OFFSET_RANGE_MIN -2
#define LULZBOT_Z_PROBE_OFFSET_RANGE_MAX 5
#define LULZBOT_XY_PROBE_SPEED 6000
#define LULZBOT_Z_PROBE_SPEED_SLOW (1*60)
#define LULZBOT_Z_PROBE_SPEED_FAST (8*60)
#define LULZBOT_Z_CLEARANCE_DEPLOY_PROBE 5
#define LULZBOT_Z_CLEARANCE_BETWEEN_PROBES 5
/* We use G92 for adjusting the coordinate space in the Yellowfin toolhead,
* however upstream Marlin has made it so G92 adjusts the software endstops,
* which makes G92 unusable for our use case. As an interim measure, revert
* to the previous behavior of G29 using NO_WORKSPACE_OFFSETS
*/
#define LULZBOT_NO_WORKSPACE_OFFSETS
/* Enable the probe pins only only when homing/probing,
* as this helps reduce EMI by grounding the lines.
*
* On Mini:
* Z_MIN_PIN are the bed washers.
*
* On TAZ:
* Z_MIN_PIN corresponds to the Z-Home push button.
* LULZBOT_Z_MIN_PROBE_PIN are the bed washers.
*/
#if defined(LULZBOT_MINI_BED)
#define LULZBOT_ENABLE_PROBE_PINS(enable) { \
if(enable) { \
/* Set as inputs with pull-up resistor */ \
SET_INPUT(Z_MIN_PIN); \
WRITE(Z_MIN_PIN, HIGH); \
} else { \
/* Ground to prevent EMI */ \
SET_OUTPUT(Z_MIN_PIN); \
WRITE(Z_MIN_PIN, LOW); \
} \
}
#elif defined(LULZBOT_TAZ_BED)
#define LULZBOT_ENABLE_PROBE_PINS(enable) { \
if(enable) { \
/* Set both as inputs with pull-up resistor */ \
SET_INPUT(LULZBOT_Z_MIN_PROBE_PIN); \
WRITE(LULZBOT_Z_MIN_PROBE_PIN, HIGH); \
SET_INPUT(Z_MIN_PIN); \
WRITE(Z_MIN_PIN, HIGH); \
} else { \
/* Ground both pins to prevent EMI */ \
SET_OUTPUT(LULZBOT_Z_MIN_PROBE_PIN); \
WRITE(LULZBOT_Z_MIN_PROBE_PIN, LOW); \
SET_OUTPUT(Z_MIN_PIN); \
WRITE(Z_MIN_PIN, LOW); \
} \
}
#endif
#define LULZBOT_FAN_KICKSTART_TIME 100
#define LULZBOT_FAN_MIN_PWM 70
#define LULZBOT_HOST_KEEPALIVE_FEATURE_DISABLED
#if defined(LULZBOT_USE_LCD_DISPLAY)
#define LULZBOT_REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER
#define LULZBOT_SDSUPPORT
#define LULZBOT_XYZ_HOLLOW_FRAME_DISABLE
#define LULZBOT_MENU_HOLLOW_FRAME_DISABLE
#define LULZBOT_USE_SMALL_INFOFONT
#define LULZBOT_BABYSTEPPING
#define LULZBOT_BABYSTEP_ZPROBE_OFFSET
#define LULZBOT_SHOW_CUSTOM_BOOTSCREEN
#define LULZBOT_ENCODER_PULSES_PER_STEP 2
#define LULZBOT_ENCODER_STEPS_PER_MENU_ITEM 1
#define LULZBOT_COOLING_MESSAGES
#define LULZBOT_MENU_BED_LEVELING_GCODE "G28 XY\nM109 S175\nG28 Z\nM109 R145\nG12\nG29\nM104 S0"
#if defined(LULZBOT_Gladiola_GLCD)
// In the experimental Gladiola_GLCD, the encoder direction is reversed.
#define LULZBOT_REVERSE_ENCODER_DIRECTION
#endif
// Confusingly, Marlin shows three separate e-step settings: the active nozzle, nozzle1, nozzle2.
// We hide the first since it is redundant.
#define LULZBOT_HIDE_E_STEPS_FOR_ACTIVE_NOZZLE
#endif
/*********************************************** COMMON TOOLHEADS PARAMETERS *****************************/
#define LULZBOT_DEFAULT_EJERK 10.0
#if defined(LULZBOT_IS_TAZ)
#define LULZBOT_E_STEPS 830
#elif defined(LULZBOT_IS_MINI)
#define LULZBOT_E_STEPS 833
#endif
/*********************************************** MINI TOOLHEADS *******************************************/
#if defined(TOOLHEAD_Gladiola_SingleExtruder) || defined(TOOLHEAD_Albatross_Flexystruder) || defined(TOOLHEAD_Heather_Aero)
#define LULZBOT_TOOLHEAD_VER VERSION_STRING
#define LULZBOT_UUID "351487b6-ca9a-4c1a-8765-d668b1da6585"
#define LULZBOT_EXTRUDERS 1
#define LULZBOT_X_MAX_POS 175
#define LULZBOT_X_MIN_POS 0
#define LULZBOT_Y_MAX_POS 191
#define LULZBOT_Y_MIN_POS -10
#define LULZBOT_AO_Hexagon
#define PWM_MOTOR_CURRENT_E 1250
#endif /* TOOLHEAD_Gladiola_SingleExtruder || TOOLHEAD_Albatross_Flexystruder || TOOLHEAD_Heather_Aero */
#if defined(TOOLHEAD_Gladiola_SingleExtruder)
#define LULZBOT_LCD_TOOLHEAD_NAME "Single Extruder"
// 16 chars max ^^^^^^^^^^^^^^^
#define LULZBOT_X_MAX_ENDSTOP_INVERTING true
#endif /* TOOLHEAD_Gladiola_SingleExtruder */
#if defined(TOOLHEAD_Albatross_Flexystruder)
#define LULZBOT_LCD_TOOLHEAD_NAME "Flexystruder"
// 16 chars max ^^^^^^^^^^^^^^^
#define LULZBOT_X_MAX_ENDSTOP_INVERTING true
#endif /* TOOLHEAD_Albatross_Flexystruder */
#if defined(TOOLHEAD_Heather_Aero)
// Prototype Aero toolhead for Mini
#define LULZBOT_LCD_TOOLHEAD_NAME "Titan AERO"
// 16 chars max ^^^^^^^^^^^^^^^
#define LULZBOT_X_MAX_ENDSTOP_INVERTING true
#endif /* TOOLHEAD_Heather_Aero */
/*********************************************** TAZ TOOLHEADS *******************************************/
#if defined(TOOLHEAD_Oliveoil_SingleExtruder) || defined(TOOLHEAD_Angelfish_Aero)
#define LULZBOT_TOOLHEAD_VER VERSION_STRING
#define LULZBOT_UUID "845f003c-aebd-4e53-a6b9-7d0984fde609"
#define LULZBOT_EXTRUDERS 1
#define LULZBOT_X_MAX_POS 300
#define LULZBOT_X_MIN_POS -20
#define LULZBOT_Y_MAX_POS 303
#define LULZBOT_Y_MIN_POS -20
#define LULZBOT_AO_Hexagon
#endif /* TOOLHEAD_Oliveoil_SingleExtruder || TOOLHEAD_Angelfish_Aero */
#if defined(TOOLHEAD_Oliveoil_SingleExtruder)
#define LULZBOT_LCD_TOOLHEAD_NAME "Single Extruder"
// 16 chars max ^^^^^^^^^^^^^^^
#define LULZBOT_BUILD_VARIANT " LulzBot"
#define DIGIPOT_MOTOR_CURRENT_E 135,135 // Values 0-255 (RAMBO 135 = ~0.75A, 185 = ~1A)
#define LULZBOT_X_MAX_ENDSTOP_INVERTING false
#endif /* TOOLHEAD_Oliveoil_SingleExtruder */
#if defined(TOOLHEAD_Angelfish_Aero)
// Prototype Aero for TAZ
#define LULZBOT_LCD_TOOLHEAD_NAME "Titan AERO"
// 16 chars max ^^^^^^^^^^^^^^^
#define LULZBOT_BUILD_VARIANT " LulzBot AERO"
#define DIGIPOT_MOTOR_CURRENT_E 160 // Values 0-255 (RAMBO 135 = ~0.75A, 185 = ~1A)
#define LULZBOT_X_MAX_ENDSTOP_INVERTING false
#endif /* TOOLHEAD_Angelfish_Aero */
#if defined(TOOLHEAD_Kanyu_Flexystruder)
#define LULZBOT_TOOLHEAD_VER VERSION_STRING" Flexystruder"
#define LULZBOT_LCD_TOOLHEAD_NAME "Flexystruder"
// 16 chars max ^^^^^^^^^^^^^^^
#define LULZBOT_BUILD_VARIANT " LulzBot Flexy"
#define DIGIPOT_MOTOR_CURRENT_E 67 // Values 0-255 (RAMBO 135 = ~0.75A, 185 = ~1A)
#define LULZBOT_EXTRUDERS 1
#define LULZBOT_UUID "564bab1c-704c-4225-b329-ac1a093d2638"
#define LULZBOT_X_MAX_ENDSTOP_INVERTING true
#define LULZBOT_X_MAX_POS 288
#define LULZBOT_X_MIN_POS -27
#define LULZBOT_Y_MAX_POS 302
#define LULZBOT_Y_MIN_POS -20
#define LULZBOT_AO_Hexagon
#endif /* TOOLHEAD_Kanyu_Flexystruder */
#if defined(TOOLHEAD_Opah_Moarstruder)
#define LULZBOT_TOOLHEAD_VER VERSION_STRING
#define LULZBOT_LCD_TOOLHEAD_NAME "MOARstruder"
// 16 chars max ^^^^^^^^^^^^^^^
#define LULZBOT_BUILD_VARIANT " LulzBot MOAR"
#define LULZBOT_DEFAULT_ACCELERATION 250
#define DIGIPOT_MOTOR_CURRENT_E 135 // Values 0-255 (RAMBO 135 = ~0.75A, 185 = ~1A)
#define LULZBOT_EXTRUDERS 1
#define LULZBOT_UUID "d651819d-4a79-4b73-bc5b-ae1fe1aab36b"
#define LULZBOT_X_MAX_ENDSTOP_INVERTING true
#define LULZBOT_X_MAX_POS 290
#define LULZBOT_X_MIN_POS -20
#define LULZBOT_Y_MAX_POS 303
#define LULZBOT_Y_MIN_POS -20
#define LULZBOT_Moarstruder
#endif /* TOOLHEAD_Opah_Moarstruder */
#if defined(TOOLHEAD_Javelin_DualExtruder) || defined(TOOLHEAD_Longfin_FlexyDually) || defined(TOOLHEAD_Yellowfin_DualExtruder)
#define LULZBOT_TOOLHEAD_VER VERSION_STRING" Dual"
#define LULZBOT_BUILD_VARIANT " LulzBot Dual"
#define LULZBOT_SWAP_FAN_PINS_6_AND_8 // For backwards compatibility
#define DIGIPOT_MOTOR_CURRENT_E 160, 160 // Values 0-255 (RAMBO 135 = ~0.75A, 185 = ~1A)
#define LULZBOT_EXTRUDERS 2
#define LULZBOT_UUID "c5077702-4ecd-4532-beaf-6acf94acc404"
#define LULZBOT_X_MAX_POS 288
#define LULZBOT_X_MIN_POS -22
#define LULZBOT_Y_MAX_POS 303
#define LULZBOT_Y_MIN_POS -20
#define LULZBOT_TEMP_SENSOR_1 5
#define LULZBOT_AO_Hexagon
#endif /* TOOLHEAD_Javelin_DualExtruder || TOOLHEAD_Longfin_FlexyDually || TOOLHEAD_Yellowfin_DualExtruder */
#if defined(TOOLHEAD_Javelin_DualExtruder)
#define LULZBOT_LCD_TOOLHEAD_NAME "Dual Extruder 2"
// 16 chars max ^^^^^^^^^^^^^^^
#undef LULZBOT_WIPE_Y2
#define LULZBOT_WIPE_Y2 73
#define LULZBOT_X_MAX_ENDSTOP_INVERTING true
#endif /* TOOLHEAD_Javelin_DualExtruder */
#if defined(TOOLHEAD_Longfin_FlexyDually)
#define LULZBOT_LCD_TOOLHEAD_NAME "FlexyDually v2"
// 16 chars max ^^^^^^^^^^^^^^^
#undef LULZBOT_WIPE_Y2
#define LULZBOT_WIPE_Y2 73
#define LULZBOT_X_MAX_ENDSTOP_INVERTING true
#define LULZBOT_DISTINCT_E_FACTORS
#endif /* TOOLHEAD_Longfin_FlexyDually */
#if defined(TOOLHEAD_Yellowfin_DualExtruder)
// Prototype Dual v3 for TAZ.
#define LULZBOT_LCD_TOOLHEAD_NAME "Dual Extruder 3"
// 16 chars max ^^^^^^^^^^^^^^^
#undef LULZBOT_AFTER_Z_HOME_CMD
#define LULZBOT_AFTER_Z_HOME_CMD "G92 Z5.5\nG0 Z16" // Correction for raised homing button
#undef LULZBOT_WIPE_X1
#undef LULZBOT_WIPE_X2
#define LULZBOT_WIPE_X1 -22
#define LULZBOT_WIPE_X2 -22
#undef LULZBOT_Z_HOMING_HEIGHT
#define LULZBOT_Z_HOMING_HEIGHT 10
#undef LULZBOT_Z_SAFE_HOMING_X_POINT
#undef LULZBOT_Z_SAFE_HOMING_Y_POINT
#define LULZBOT_Z_SAFE_HOMING_X_POINT (-22) // X point for Z homing when homing all axis (G28)
#define LULZBOT_Z_SAFE_HOMING_Y_POINT (265) // Y point for Z homing when homing all axis (G28)
#undef LULZBOT_X_MAX_POS
#define LULZBOT_X_MAX_POS 290
#define LULZBOT_X_MAX_ENDSTOP_INVERTING false
#undef LULZBOT_INVERT_E0_DIR
#define LULZBOT_INVERT_E0_DIR false
#define LULZBOT_AO_Hexagon
#endif /* TOOLHEAD_Yellowfin_DualExtruder */
/* HOTEND Variants */
#if defined(LULZBOT_Moarstruder)
// LulzBot MOARstruder (40v)
#define LULZBOT_DEFAULT_Kp 55.64
#define LULZBOT_DEFAULT_Ki 6.79
#define LULZBOT_DEFAULT_Kd 113.94
#endif /* LULZBOT_Moarstruder */
#if defined(LULZBOT_AO_Hexagon)
// LulzBot AO-Hexagon (24v)
#define LULZBOT_DEFAULT_Kp 28.79
#define LULZBOT_DEFAULT_Ki 1.91
#define LULZBOT_DEFAULT_Kd 108.51
#endif /* LULZBOT_AO_Hexagon */
// Heated bed parameters
//24V 360W silicone heater from NPH on 3mm borosilicate (TAZ 2.2+)
#if defined(LULZBOT_TAZ_BED)
#define LULZBOT_DEFAULT_bedKp 162
#define LULZBOT_DEFAULT_bedKi 17
#define LULZBOT_DEFAULT_bedKd 378
#elif defined(LULZBOT_MINI_BED)
#define LULZBOT_DEFAULT_bedKp 294
#define LULZBOT_DEFAULT_bedKi 65
#define LULZBOT_DEFAULT_bedKd 382
#endif
// Nozzle wiping points (varies by toolhead, as the nozzle position varies)
#define LULZBOT_NOZZLE_CLEAN_START_POINT {LULZBOT_WIPE_X1, LULZBOT_WIPE_Y1, 1}
#define LULZBOT_NOZZLE_CLEAN_END_POINT {LULZBOT_WIPE_X2, LULZBOT_WIPE_Y2, 1}
// Acceleration, feedrate, motor steps and motor currents for XYZ vary
// by printer model (steps and motor currents for E vary by toolhead).
// Z values additionally vary depending on whether the Z assembly is
// rod or belt driven.
#if defined(LULZBOT_IS_MINI)
#define PWM_MOTOR_CURRENT_XY 1300
#define LULZBOT_XY_STEPS 100.5
#define LULZBOT_DEFAULT_MAX_FEEDRATE {800, 800, 8, 40} // (mm/sec)
#define LULZBOT_DEFAULT_MAX_ACCELERATION {9000,9000,100,10000}
#define LULZBOT_DEFAULT_XJERK 12.0
#define LULZBOT_DEFAULT_YJERK 12.0
#define LULZBOT_DEFAULT_ZJERK 0.4
#define LULZBOT_DEFAULT_ACCELERATION 2000
#define LULZBOT_DEFAULT_TRAVEL_ACCELERATION 3000
#define LULZBOT_Z_MAX_POS 160
#define LULZBOT_Z_MIN_POS 0
#elif defined(LULZBOT_IS_TAZ)
#define DIGIPOT_MOTOR_CURRENT_XY 175
#define LULZBOT_XY_STEPS 100.5
#define LULZBOT_DEFAULT_XJERK 8.0
#define LULZBOT_DEFAULT_YJERK 8.0
#define LULZBOT_DEFAULT_ZJERK 0.4
#if not defined(LULZBOT_DEFAULT_ACCELERATION)
#define LULZBOT_DEFAULT_ACCELERATION 500
#endif
#define LULZBOT_DEFAULT_TRAVEL_ACCELERATION 3000
#define LULZBOT_Z_MIN_POS 0
#endif
#if defined(LULZBOT_Gladiola_Mini) || defined(LULZBOT_Gladiola_GLCD)
#define PWM_MOTOR_CURRENT_Z 1630
#define LULZBOT_Z_STEPS 1600
#elif defined(LULZBOT_Huerfano_Mini)
#define PWM_MOTOR_CURRENT_Z 1000
// Prototype Z-Belt Mini
#define Z_FULL_STEPS_PER_ROTATION 200
#define Z_MICROSTEPS 16
#define Z_BELT_PITCH 2
#define Z_PULLEY_TEETH 24
#define Z_MOTOR_GEAR_REDUCTION 26.8512396694
#define LULZBOT_Z_STEPS (Z_FULL_STEPS_PER_ROTATION * Z_MICROSTEPS * Z_MOTOR_GEAR_REDUCTION / double(Z_BELT_PITCH) / double(Z_PULLEY_TEETH))
#undef LULZBOT_Z_MAX_POS
#define LULZBOT_Z_MAX_POS 183
#elif defined(LULZBOT_Oliveoil_TAZ_6)
#define DIGIPOT_MOTOR_CURRENT_Z 200
#define LULZBOT_DEFAULT_MAX_FEEDRATE {800, 800, 3, 40} // (mm/sec)
#define LULZBOT_DEFAULT_MAX_ACCELERATION {9000,9000,100,10000}
#define LULZBOT_Z_STEPS 1600
#define LULZBOT_Z_MAX_POS 270
#elif defined(LULZBOT_Huerfano_TAZ_7)
#define DIGIPOT_MOTOR_CURRENT_Z 175
// Prototype Z-belt driven TAZ 7
#define LULZBOT_DEFAULT_MAX_FEEDRATE {800, 800, 600, 40} // (mm/sec)
#define LULZBOT_DEFAULT_MAX_ACCELERATION {9000,9000,10,10000}
#define LULZBOT_Z_STEPS 1790.08264463
#define LULZBOT_Z_MAX_POS 290
#endif
#if defined(PWM_MOTOR_CURRENT_XY) && defined(PWM_MOTOR_CURRENT_Z) && defined(PWM_MOTOR_CURRENT_E)
#define LULZBOT_PWM_MOTOR_CURRENT { \
PWM_MOTOR_CURRENT_XY, \
PWM_MOTOR_CURRENT_Z, \
PWM_MOTOR_CURRENT_E \
} // Values in milliamps
#elif defined(DIGIPOT_MOTOR_CURRENT_XY) && defined(DIGIPOT_MOTOR_CURRENT_Z) && defined(DIGIPOT_MOTOR_CURRENT_E)
#define LULZBOT_DIGIPOT_MOTOR_CURRENT { \
DIGIPOT_MOTOR_CURRENT_XY, \
DIGIPOT_MOTOR_CURRENT_XY, \
DIGIPOT_MOTOR_CURRENT_Z, \
DIGIPOT_MOTOR_CURRENT_E \
} // Values 0-255 (RAMBO 135 = ~0.75A, 185 = ~1A)
#else
#error Motor currents not defined
#endif
// default steps per unit for LulzBot TAZ.
#if defined(LULZBOT_DISTINCT_E_FACTORS) && LULZBOT_EXTRUDERS == 2
#define LULZBOT_DEFAULT_AXIS_STEPS_PER_UNIT {LULZBOT_XY_STEPS,LULZBOT_XY_STEPS,LULZBOT_Z_STEPS,LULZBOT_E_STEPS,LULZBOT_E_STEPS}
#else
#define LULZBOT_DEFAULT_AXIS_STEPS_PER_UNIT {LULZBOT_XY_STEPS,LULZBOT_XY_STEPS,LULZBOT_Z_STEPS,LULZBOT_E_STEPS}
#endif
// Gralco's customized Z Offset overlay (also requires dogm_bitmaps_Lulzbot.h)
#define LULZBOT_ZOFFSET_OVERLAY(zprobe_zoffset) \
static int dir = 0; \
static float old_zprobe_zoffset = 0; \
if(zprobe_zoffset != old_zprobe_zoffset) { \
dir = (zprobe_zoffset > old_zprobe_zoffset) ? 1 : -1; \
old_zprobe_zoffset = zprobe_zoffset; \
} \
const int left = 5; \
const int right = 90; \
const int nozzle = 60; \
u8g.drawBitmapP(nozzle + 6, 4 - dir,2,12,nozzle_bmp); \
u8g.drawBitmapP(nozzle + 0,20,3,1,offset_bedline_bmp); \
u8g.drawBitmapP(left + 0, 47, 3, 16, ccw_bmp); \
u8g.drawBitmapP(right + 0, 47, 3, 16, cw_bmp); \
u8g.drawBitmapP(right + 20, 48 - dir, 2, 13, up_arrow_bmp); \
u8g.drawBitmapP(left + 20, 49 - dir, 2, 13, down_arrow_bmp);
// Customized splash screen
#define LULZBOT_CUSTOM_BOOTSCREEN() \
u8g.firstPage(); \
do { \
u8g.drawBitmapP(0,0,CEILING(CUSTOM_BOOTSCREEN_BMPWIDTH, 8),CUSTOM_BOOTSCREEN_BMPHEIGHT,custom_start_bmp); \
u8g.setFont(u8g_font_6x13); \
u8g.drawStr(61,17,LULZBOT_CUSTOM_MACHINE_NAME); \
u8g.setFont(u8g_font_04b_03); \
u8g.drawStr(62,28,LULZBOT_LCD_TOOLHEAD_NAME); \
u8g.setFont(u8g_font_5x8); \
u8g.drawStr(63,41,"LulzBot.com"); \
u8g.setFont(u8g_font_5x8); \
u8g.drawStr(62,62,"v"); \
u8g.drawStr(67,62,SHORT_BUILD_VERSION LULZBOT_FW_VERSION); \
} while( u8g.nextPage() );
// Customize version string
#define LULZBOT_DETAILED_BUILD_VERSION SHORT_BUILD_VERSION LULZBOT_FW_VERSION " (LulzBot " LULZBOT_CUSTOM_MACHINE_NAME " " LULZBOT_LCD_TOOLHEAD_NAME ")"
#define LULZBOT_STRING_DISTRIBUTION_DATE __DATE__ __TIME__
#define LULZBOT_SOURCE_CODE_URL "https://code.alephobjects.com/diffusion/MARLIN"
// Bed Probe w/ Rewipe
#define LULZBOT_NUM_REWIPES 1
#define LULZBOT_BED_PROBE_MIN -2 // How far to push into bed before failing.
#if defined(LULZBOT_USE_LCD_DISPLAY)
#define LULZBOT_STOP_JOB_CMD card.stopSDPrint();
#else
#define LULZBOT_STOP_JOB_CMD
#endif
#define LULZBOT_PROBE_Z_WITH_REWIPE(speed) \
do_probe_move(LULZBOT_BED_PROBE_MIN, speed); /* probe; if we reach limit, the probe failed */ \
for(int rewipes = 1; current_position[Z_AXIS] == LULZBOT_BED_PROBE_MIN; rewipes++) { \
SERIAL_ERRORLNPGM(MSG_REWIPE); \
LCD_MESSAGEPGM(MSG_REWIPE); \
do_blocking_move_to_z(10, MMM_TO_MMS(speed)); /* raise nozzle */ \
Nozzle::clean(0, 2, 0, 0); /* wipe nozzle */ \
do_probe_move(LULZBOT_BED_PROBE_MIN, speed); /* reprobe */ \
if(rewipes >= LULZBOT_NUM_REWIPES) { /* max of tries */ \
SERIAL_ERRORLNPGM("PROBE FAIL CLEAN NOZZLE"); /* cura listens for this message specifically */ \
LCD_MESSAGEPGM(MSG_LEVEL_FAIL); /* use a more friendly message on the LCD */ \
BUZZ(25, 880); BUZZ(50, 0); /* play tone */ \
BUZZ(25, 880); BUZZ(50, 0); \
BUZZ(25, 880); BUZZ(50, 0); \
BUZZ(75, 880); BUZZ(50, 0); \
BUZZ(75, 880); BUZZ(50, 0); \
BUZZ(75, 880); BUZZ(50, 0); \
BUZZ(25, 880); BUZZ(50, 0); \
BUZZ(25, 880); BUZZ(50, 0); \
BUZZ(25, 880); BUZZ(50, 0); \
do_blocking_move_to_z(100, MMM_TO_MMS(Z_PROBE_SPEED_FAST)); /* raise head */ \
LULZBOT_STOP_JOB_CMD; /* stop print job */ \
clear_command_queue(); \
print_job_timer.stop(); \
return NAN; /* abort the leveling in progress */ \
} \
}
// Raise after home cmd, used only on TAZ to lift the print head after homing
#if defined(LULZBOT_AFTER_Z_HOME_CMD)
#define LULZBOT_AFTER_Z_HOME_ACTION \
if(home_all || homeZ) { \
enqueue_and_echo_commands_P(PSTR(LULZBOT_AFTER_Z_HOME_CMD)); \
}
#else
#define LULZBOT_AFTER_Z_HOME_ACTION
#endif
#endif /* CONDITIONALS_LULZBOT */

@ -1,736 +1,42 @@
#ifndef CONFIGURATION_LULZBOT #ifndef CONFIGURATION_LULZBOT
#define CONFIGURATION_LULZBOT #define CONFIGURATION_LULZBOT
// Change printer model and toolhead here /*
#define LULZBOT_Oliveoil_TAZ_6 If compiling from the command line:
#define TOOLHEAD_Oliveoil_SingleExtruder
/* We define the LULZBOT_ values based on which printer or toolhead variants we are compiling build-all-taz-toolheads.sh
* for, these constants are then placed where appropriate in the following files:
*
* - Configuration.h
* - Configuration_adv.h
* - pins.h
* - Default_Version.h
*
* Using our own set of constants and limiting modification to Marlin's files makes it easier to
* merge from upstream. All values are prefixed with LULZBOT_ so that it is easy to see what
* was changed and where. If a setting is commented out, we define a LULZBOT_{SETTING}_DISABLED
* here, just so we have a record of things that got disabled.
*/
#if ( \
!defined(LULZBOT_Gladiola_Mini) && \
!defined(LULZBOT_Huerfano_Mini) && \
!defined(LULZBOT_Gladiola_GLCD) && \
!defined(LULZBOT_Oliveoil_TAZ_6) && \
!defined(LULZBOT_Huerfano_TAZ_7) \
) || ( \
!defined(TOOLHEAD_Gladiola_SingleExtruder) && \
!defined(TOOLHEAD_Albatross_Flexystruder) && \
!defined(TOOLHEAD_Heather_Aero) && \
!defined(TOOLHEAD_Oliveoil_SingleExtruder) && \
!defined(TOOLHEAD_Kanyu_Flexystruder) && \
!defined(TOOLHEAD_Opah_Moarstruder) && \
!defined(TOOLHEAD_Javelin_DualExtruder) && \
!defined(TOOLHEAD_Longfin_FlexyDually) && \
!defined(TOOLHEAD_Yellowfin_DualExtruder) && \
!defined(TOOLHEAD_Angelfish_Aero) \
)
#error Must specify model and toolhead to build:
#error
#error make clean
#error make MODEL=<model> TOOLHEAD=<toolhead>
#error
#error Printer Model Choices:
#error Gladiola_Mini // Lulzbot Mini (Gladiola)
#error Huerfano_Mini // Lulzbot Mini (Huerfano)
#error Gladiola_GLCD // Lulzbot Mini (Gladiola w/ LCD)
#error Oliveoil_TAZ_6 // Lulzbot TAZ 6 (Olive Oil)
#error Huerfano_TAZ_7 // Lulzbot TAZ 7 (Huerfano)
#error
#error Mini Toolhead Choices:
#error Gladiola_SingleExtruder // Standard Single Extruder (Gladiola)
#error Albatross_Flexystruder // Flexystruder (Albatross)
#error Heather_Aero // Titan AERO (Heather)
#error
#error TAZ Toolhead Choices:
#error Oliveoil_SingleExtruder // Standard Single Extruder (TAZ Olive)
#error Kanyu_Flexystruder // Flexystruder (Kanyu)
#error Opah_Moarstruder // Moarstruder (Opah)
#error Javelin_DualExtruder // Dual Extruder v2 (Javelin)
#error Longfin_FlexyDually // FlexyDually (Longfin)
#error Yellowfin_DualExtruder // Dual Extruder v3 (Yellowfin)
#error Angelfish_Aero // Titan AERO (Angelfish)
#endif
#define LULZBOT_FW_VERSION ".9"
// Select options based on printer model
#if defined(LULZBOT_Gladiola_Mini)
#define LULZBOT_CUSTOM_MACHINE_NAME "Mini"
#define LULZBOT_IS_MINI
#define LULZBOT_MINI_BED
#endif
#if defined(LULZBOT_Huerfano_Mini)
// Prototype Mini w/ Z-Belt
#define LULZBOT_CUSTOM_MACHINE_NAME "Mini Z-Belt"
#define LULZBOT_IS_MINI
#define LULZBOT_MINI_BED
#endif
#if defined(LULZBOT_Gladiola_GLCD)
#define LULZBOT_CUSTOM_MACHINE_NAME "Mini GLCD"
#define LULZBOT_IS_MINI
#define LULZBOT_MINI_BED
#define LULZBOT_USE_LCD_DISPLAY
#endif
#if defined(LULZBOT_Oliveoil_TAZ_6)
#define LULZBOT_CUSTOM_MACHINE_NAME "TAZ 6"
#define LULZBOT_IS_TAZ
#define LULZBOT_TAZ_BED
#define LULZBOT_USE_LCD_DISPLAY
#endif
#if defined(LULZBOT_Huerfano_TAZ_7)
// Prototype TAZ w/ Z-Belt
#define LULZBOT_CUSTOM_MACHINE_NAME "TAZ 7"
#define LULZBOT_IS_TAZ
#define LULZBOT_TAZ_BED
#define LULZBOT_USE_LCD_DISPLAY
#endif
// Shared values
#define LULZBOT_STRING_CONFIG_H_AUTHOR "(Aleph Objects Inc., LulzBot Diffusion)"
#define LULZBOT_BUFSIZE 10
#define LULZBOT_EEPROM_SETTINGS
#define LULZBOT_EMERGENCY_PARSER
// Temperature settings
#define LULZBOT_TEMP_SENSOR_0 5
#define LULZBOT_TEMP_SENSOR_BED 7
#define LULZBOT_TEMP_RESIDENCY_TIME 1
#define LULZBOT_TEMP_HYSTERESIS 10
#define LULZBOT_TEMP_WINDOW 10
#define LULZBOT_TEMP_BED_RESIDENCY_TIME 1
#define LULZBOT_TEMP_BED_HYSTERESIS 5
#define LULZBOT_TEMP_BED_WINDOW 5
#define LULZBOT_HEATER_MAXTEMP 305
#define LULZBOT_EXTRUDE_MINTEMP 120
#define LULZBOT_PIDTEMPBED
#define LULZBOT_MAX_BED_POWER 206
#define LULZBOT_THERMAL_PROTECTION_PERIOD 15 // Seconds
#define LULZBOT_THERMAL_PROTECTION_HYSTERESIS 30 // Degrees Celsius
#define LULZBOT_THERMAL_PROTECTION_BED_PERIOD 15 // Seconds
#define LULZBOT_THERMAL_PROTECTION_BED_HYSTERESIS 10 // Degrees Celsius
// Motherboard specifics and custom pins for probing.
#if defined(LULZBOT_IS_MINI)
#define LULZBOT_MOTHERBOARD BOARD_MINIRAMBO
#define LULZBOT_CONTROLLER_FAN_PIN FAN1_PIN // Digital pin 6
#define LULZBOT_Z_MIN_PROBE_USES_Z_MIN_ENDSTOP_PIN
#define LULZBOT_BAUDRATE 115200
#elif defined(LULZBOT_IS_TAZ)
#define LULZBOT_MOTHERBOARD BOARD_RAMBO
#define LULZBOT_CONTROLLER_FAN_PIN FAN2_PIN // Digital pin 2
#define LULZBOT_Z_MIN_PROBE_ENDSTOP
#define LULZBOT_Z_MIN_PROBE_PIN SERVO0_PIN // Digital pin 22
#define LULZBOT_BAUDRATE 250000
#endif
#define LULZBOT_USE_CONTROLLER_FAN
#define LULZBOT_USE_XMIN_PLUG
#define LULZBOT_USE_YMIN_PLUG
#define LULZBOT_USE_ZMIN_PLUG
#define LULZBOT_USE_XMAX_PLUG
#define LULZBOT_USE_YMAX_PLUG
#define LULZBOT_USE_ZMAX_PLUG
/* Endstop settings are determined by printer model, except for the
* X_MAX which varies by toolhead. */
#if defined(LULZBOT_Gladiola_Mini) || defined(LULZBOT_Gladiola_GLCD) Else, if compiling using Arduino IDE, edit lines 38 and 39.
#define LULZBOT_X_MIN_ENDSTOP_INVERTING true
#define LULZBOT_Y_MIN_ENDSTOP_INVERTING true
#define LULZBOT_Y_MAX_ENDSTOP_INVERTING true
#define LULZBOT_Z_MAX_ENDSTOP_INVERTING true
#elif defined(LULZBOT_IS_TAZ) || defined(LULZBOT_Huerfano_Mini) Printer Model Choices:
#define LULZBOT_X_MIN_ENDSTOP_INVERTING false Gladiola_Mini // Lulzbot Mini (Gladiola)
#define LULZBOT_Y_MIN_ENDSTOP_INVERTING false Huerfano_Mini // Lulzbot Mini (Huerfano)
#define LULZBOT_Y_MAX_ENDSTOP_INVERTING false Gladiola_GLCD // Lulzbot Mini (Gladiola w/ LCD)
#define LULZBOT_Z_MAX_ENDSTOP_INVERTING false Oliveoil_TAZ_6 // Lulzbot TAZ 6 (Olive Oil)
#endif Huerfano_TAZ_7 // Lulzbot TAZ 7 (Huerfano)
#define LULZBOT_Z_MIN_ENDSTOP_INVERTING true Mini Toolhead Choices:
#define LULZBOT_Z_MIN_PROBE_ENDSTOP_INVERTING true Gladiola_SingleExtruder // Standard Single Extruder (Gladiola)
Albatross_Flexystruder // Flexystruder (Albatross)
Heather_Aero // Titan AERO (Heather)
#define LULZBOT_INVERT_X_DIR false TAZ Toolhead Choices:
#define LULZBOT_INVERT_Y_DIR true Oliveoil_SingleExtruder // Standard Single Extruder (TAZ Olive)
#define LULZBOT_INVERT_Z_DIR false Kanyu_Flexystruder // Flexystruder (Kanyu)
#define LULZBOT_INVERT_E0_DIR true Opah_Moarstruder // Moarstruder (Opah)
#define LULZBOT_INVERT_E1_DIR true Javelin_DualExtruder // Dual Extruder v2 (Javelin)
Longfin_FlexyDually // FlexyDually (Longfin)
Yellowfin_DualExtruder // Dual Extruder v3 (Yellowfin)
Angelfish_Aero // Titan AERO (Angelfish)
#if defined(LULZBOT_IS_MINI)
#define LULZBOT_HOMING_Z_WITH_PROBE false
#define LULZBOT_INVERT_X_HOME_DIR -1
#define LULZBOT_INVERT_Y_HOME_DIR 1
#define LULZBOT_INVERT_Z_HOME_DIR 1
#define LULZBOT_QUICKHOME
#elif defined(LULZBOT_IS_TAZ)
#define LULZBOT_HOMING_Z_WITH_PROBE true
#define LULZBOT_INVERT_X_HOME_DIR -1
#define LULZBOT_INVERT_Y_HOME_DIR 1
#define LULZBOT_INVERT_Z_HOME_DIR -1
#define LULZBOT_QUICKHOME
#endif
#if defined(LULZBOT_MINI_BED)
#define LULZBOT_LEFT_PROBE_BED_POSITION 0
#define LULZBOT_RIGHT_PROBE_BED_POSITION 164
#define LULZBOT_BACK_PROBE_BED_POSITION 162
#define LULZBOT_FRONT_PROBE_BED_POSITION -6
#define LULZBOT_HOMING_FEEDRATE_XY (30*60)
#define LULZBOT_HOMING_FEEDRATE_Z (12*60)
#elif defined(LULZBOT_TAZ_BED)
#define LULZBOT_LEFT_PROBE_BED_POSITION -9
#define LULZBOT_RIGHT_PROBE_BED_POSITION 288
#define LULZBOT_BACK_PROBE_BED_POSITION 289
#define LULZBOT_FRONT_PROBE_BED_POSITION -9
#define LULZBOT_HOMING_FEEDRATE_XY (50*60)
#define LULZBOT_HOMING_FEEDRATE_Z (8*60)
// Only the TAZ models have a Z-homing button
#define LULZBOT_Z_SAFE_HOMING
#define LULZBOT_Z_SAFE_HOMING_X_POINT (-19)
#define LULZBOT_Z_SAFE_HOMING_Y_POINT (258)
#define LULZBOT_Z_HOMING_HEIGHT 5
#define LULZBOT_AFTER_Z_HOME_CMD "G0 Z5" // Raise to clear homing button
#endif
#if defined(LULZBOT_MINI_BED)
// Mini has a horizontal wiping pad on the back of the bed
#define LULZBOT_WIPE_X1 115
#define LULZBOT_WIPE_X2 45
#define LULZBOT_WIPE_Y1 173
#define LULZBOT_WIPE_Y2 173
#elif defined(LULZBOT_TAZ_BED)
// TAZ has a vertical wiping pad on the left side of the bed
#define LULZBOT_WIPE_X1 -16
#define LULZBOT_WIPE_X2 -16
#define LULZBOT_WIPE_Y1 95
#define LULZBOT_WIPE_Y2 25
#endif
#define LULZBOT_NOZZLE_CLEAN_FEATURE
#define LULZBOT_AUTO_BED_LEVELING_3POINT
#define LULZBOT_ABL_PROBE_PT_1_X LULZBOT_LEFT_PROBE_BED_POSITION
#define LULZBOT_ABL_PROBE_PT_1_Y LULZBOT_FRONT_PROBE_BED_POSITION
#define LULZBOT_ABL_PROBE_PT_2_X LULZBOT_RIGHT_PROBE_BED_POSITION
#define LULZBOT_ABL_PROBE_PT_2_Y LULZBOT_FRONT_PROBE_BED_POSITION
#define LULZBOT_ABL_PROBE_PT_3_X LULZBOT_RIGHT_PROBE_BED_POSITION
#define LULZBOT_ABL_PROBE_PT_3_Y LULZBOT_BACK_PROBE_BED_POSITION
/* Define probe parameters related to bed leveling,
* e.g. the washers on the bed. These are confusingly
* named Z_MIN_PROBE in Marlin. The Z-Home switch
* is called Z_MIN_ENDSTOP
*/ */
#define LULZBOT_FIX_MOUNTED_PROBE
#define LULZBOT_PROBE_DOUBLE_TOUCH
#define LULZBOT_X_PROBE_OFFSET_FROM_EXTRUDER 0
#define LULZBOT_Y_PROBE_OFFSET_FROM_EXTRUDER 0
#define LULZBOT_Z_PROBE_OFFSET_FROM_EXTRUDER -1.5
#define LULZBOT_Z_PROBE_OFFSET_RANGE_MIN -2
#define LULZBOT_Z_PROBE_OFFSET_RANGE_MAX 5
#define LULZBOT_XY_PROBE_SPEED 6000
#define LULZBOT_Z_PROBE_SPEED_SLOW (1*60)
#define LULZBOT_Z_PROBE_SPEED_FAST (8*60)
#define LULZBOT_Z_CLEARANCE_DEPLOY_PROBE 5
#define LULZBOT_Z_CLEARANCE_BETWEEN_PROBES 5
/* We use G92 for adjusting the coordinate space in the Yellowfin toolhead,
* however upstream Marlin has made it so G92 adjusts the software endstops,
* which makes G92 unusable for our use case. As an interim measure, revert
* to the previous behavior of G29 using NO_WORKSPACE_OFFSETS
*/
#define LULZBOT_NO_WORKSPACE_OFFSETS
/* Enable the probe pins only only when homing/probing,
* as this helps reduce EMI by grounding the lines.
*
* On Mini:
* Z_MIN_PIN are the bed washers.
*
* On TAZ:
* Z_MIN_PIN corresponds to the Z-Home push button.
* LULZBOT_Z_MIN_PROBE_PIN are the bed washers.
*/
#if defined(LULZBOT_MINI_BED)
#define LULZBOT_ENABLE_PROBE_PINS(enable) { \
if(enable) { \
/* Set as inputs with pull-up resistor */ \
SET_INPUT(Z_MIN_PIN); \
WRITE(Z_MIN_PIN, HIGH); \
} else { \
/* Ground to prevent EMI */ \
SET_OUTPUT(Z_MIN_PIN); \
WRITE(Z_MIN_PIN, LOW); \
} \
}
#elif defined(LULZBOT_TAZ_BED)
#define LULZBOT_ENABLE_PROBE_PINS(enable) { \
if(enable) { \
/* Set both as inputs with pull-up resistor */ \
SET_INPUT(LULZBOT_Z_MIN_PROBE_PIN); \
WRITE(LULZBOT_Z_MIN_PROBE_PIN, HIGH); \
SET_INPUT(Z_MIN_PIN); \
WRITE(Z_MIN_PIN, HIGH); \
} else { \
/* Ground both pins to prevent EMI */ \
SET_OUTPUT(LULZBOT_Z_MIN_PROBE_PIN); \
WRITE(LULZBOT_Z_MIN_PROBE_PIN, LOW); \
SET_OUTPUT(Z_MIN_PIN); \
WRITE(Z_MIN_PIN, LOW); \
} \
}
#endif
#define LULZBOT_FAN_KICKSTART_TIME 100
#define LULZBOT_FAN_MIN_PWM 70
#define LULZBOT_HOST_KEEPALIVE_FEATURE_DISABLED
#if defined(LULZBOT_USE_LCD_DISPLAY)
#define LULZBOT_REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER
#define LULZBOT_SDSUPPORT
#define LULZBOT_XYZ_HOLLOW_FRAME_DISABLE
#define LULZBOT_MENU_HOLLOW_FRAME_DISABLE
#define LULZBOT_USE_SMALL_INFOFONT
#define LULZBOT_BABYSTEPPING
#define LULZBOT_BABYSTEP_ZPROBE_OFFSET
#define LULZBOT_SHOW_CUSTOM_BOOTSCREEN
#define LULZBOT_ENCODER_PULSES_PER_STEP 2
#define LULZBOT_ENCODER_STEPS_PER_MENU_ITEM 1
#define LULZBOT_COOLING_MESSAGES
#define LULZBOT_MENU_BED_LEVELING_GCODE "G28 XY\nM109 S175\nG28 Z\nM109 R145\nG12\nG29\nM104 S0"
#if defined(LULZBOT_Gladiola_GLCD)
// In the experimental Gladiola_GLCD, the encoder direction is reversed.
#define LULZBOT_REVERSE_ENCODER_DIRECTION
#endif
// Confusingly, Marlin shows three separate e-step settings: the active nozzle, nozzle1, nozzle2.
// We hide the first since it is redundant.
#define LULZBOT_HIDE_E_STEPS_FOR_ACTIVE_NOZZLE
#endif
/*********************************************** COMMON TOOLHEADS PARAMETERS *****************************/
#define LULZBOT_DEFAULT_EJERK 10.0
#if defined(LULZBOT_IS_TAZ)
#define LULZBOT_E_STEPS 830
#elif defined(LULZBOT_IS_MINI)
#define LULZBOT_E_STEPS 833
#endif
/*********************************************** MINI TOOLHEADS *******************************************/
#if defined(TOOLHEAD_Gladiola_SingleExtruder) || defined(TOOLHEAD_Albatross_Flexystruder) || defined(TOOLHEAD_Heather_Aero)
#define LULZBOT_TOOLHEAD_VER VERSION_STRING
#define LULZBOT_UUID "351487b6-ca9a-4c1a-8765-d668b1da6585"
#define LULZBOT_EXTRUDERS 1
#define LULZBOT_X_MAX_POS 175
#define LULZBOT_X_MIN_POS 0
#define LULZBOT_Y_MAX_POS 191
#define LULZBOT_Y_MIN_POS -10
#define LULZBOT_AO_Hexagon
#define PWM_MOTOR_CURRENT_E 1250
#endif /* TOOLHEAD_Gladiola_SingleExtruder || TOOLHEAD_Albatross_Flexystruder || TOOLHEAD_Heather_Aero */
#if defined(TOOLHEAD_Gladiola_SingleExtruder)
#define LULZBOT_LCD_TOOLHEAD_NAME "Single Extruder"
// 16 chars max ^^^^^^^^^^^^^^^
#define LULZBOT_X_MAX_ENDSTOP_INVERTING true
#endif /* TOOLHEAD_Gladiola_SingleExtruder */
#if defined(TOOLHEAD_Albatross_Flexystruder)
#define LULZBOT_LCD_TOOLHEAD_NAME "Flexystruder"
// 16 chars max ^^^^^^^^^^^^^^^
#define LULZBOT_X_MAX_ENDSTOP_INVERTING true
#endif /* TOOLHEAD_Albatross_Flexystruder */
#if defined(TOOLHEAD_Heather_Aero)
// Prototype Aero toolhead for Mini
#define LULZBOT_LCD_TOOLHEAD_NAME "Titan AERO"
// 16 chars max ^^^^^^^^^^^^^^^
#define LULZBOT_X_MAX_ENDSTOP_INVERTING true
#endif /* TOOLHEAD_Heather_Aero */
/*********************************************** TAZ TOOLHEADS *******************************************/
#if defined(TOOLHEAD_Oliveoil_SingleExtruder) || defined(TOOLHEAD_Angelfish_Aero)
#define LULZBOT_TOOLHEAD_VER VERSION_STRING
#define LULZBOT_UUID "845f003c-aebd-4e53-a6b9-7d0984fde609"
#define LULZBOT_EXTRUDERS 1
#define LULZBOT_X_MAX_POS 300
#define LULZBOT_X_MIN_POS -20
#define LULZBOT_Y_MAX_POS 303
#define LULZBOT_Y_MIN_POS -20
#define LULZBOT_AO_Hexagon
#endif /* TOOLHEAD_Oliveoil_SingleExtruder || TOOLHEAD_Angelfish_Aero */
#if defined(TOOLHEAD_Oliveoil_SingleExtruder)
#define LULZBOT_LCD_TOOLHEAD_NAME "Single Extruder"
// 16 chars max ^^^^^^^^^^^^^^^
#define LULZBOT_BUILD_VARIANT " LulzBot"
#define DIGIPOT_MOTOR_CURRENT_E 135,135 // Values 0-255 (RAMBO 135 = ~0.75A, 185 = ~1A)
#define LULZBOT_X_MAX_ENDSTOP_INVERTING false
#endif /* TOOLHEAD_Oliveoil_SingleExtruder */
#if defined(TOOLHEAD_Angelfish_Aero)
// Prototype Aero for TAZ
#define LULZBOT_LCD_TOOLHEAD_NAME "Titan AERO"
// 16 chars max ^^^^^^^^^^^^^^^
#define LULZBOT_BUILD_VARIANT " LulzBot AERO"
#define DIGIPOT_MOTOR_CURRENT_E 160 // Values 0-255 (RAMBO 135 = ~0.75A, 185 = ~1A)
#define LULZBOT_X_MAX_ENDSTOP_INVERTING false
#endif /* TOOLHEAD_Angelfish_Aero */
#if defined(TOOLHEAD_Kanyu_Flexystruder)
#define LULZBOT_TOOLHEAD_VER VERSION_STRING" Flexystruder"
#define LULZBOT_LCD_TOOLHEAD_NAME "Flexystruder"
// 16 chars max ^^^^^^^^^^^^^^^
#define LULZBOT_BUILD_VARIANT " LulzBot Flexy"
#define DIGIPOT_MOTOR_CURRENT_E 67 // Values 0-255 (RAMBO 135 = ~0.75A, 185 = ~1A)
#define LULZBOT_EXTRUDERS 1
#define LULZBOT_UUID "564bab1c-704c-4225-b329-ac1a093d2638"
#define LULZBOT_X_MAX_ENDSTOP_INVERTING true
#define LULZBOT_X_MAX_POS 288
#define LULZBOT_X_MIN_POS -27
#define LULZBOT_Y_MAX_POS 302
#define LULZBOT_Y_MIN_POS -20
#define LULZBOT_AO_Hexagon
#endif /* TOOLHEAD_Kanyu_Flexystruder */
#if defined(TOOLHEAD_Opah_Moarstruder)
#define LULZBOT_TOOLHEAD_VER VERSION_STRING
#define LULZBOT_LCD_TOOLHEAD_NAME "MOARstruder"
// 16 chars max ^^^^^^^^^^^^^^^
#define LULZBOT_BUILD_VARIANT " LulzBot MOAR"
#define LULZBOT_DEFAULT_ACCELERATION 250
#define DIGIPOT_MOTOR_CURRENT_E 135 // Values 0-255 (RAMBO 135 = ~0.75A, 185 = ~1A)
#define LULZBOT_EXTRUDERS 1
#define LULZBOT_UUID "d651819d-4a79-4b73-bc5b-ae1fe1aab36b"
#define LULZBOT_X_MAX_ENDSTOP_INVERTING true
#define LULZBOT_X_MAX_POS 290
#define LULZBOT_X_MIN_POS -20
#define LULZBOT_Y_MAX_POS 303
#define LULZBOT_Y_MIN_POS -20
#define LULZBOT_Moarstruder
#endif /* TOOLHEAD_Opah_Moarstruder */
#if defined(TOOLHEAD_Javelin_DualExtruder) || defined(TOOLHEAD_Longfin_FlexyDually) || defined(TOOLHEAD_Yellowfin_DualExtruder)
#define LULZBOT_TOOLHEAD_VER VERSION_STRING" Dual"
#define LULZBOT_BUILD_VARIANT " LulzBot Dual"
#define LULZBOT_SWAP_FAN_PINS_6_AND_8 // For backwards compatibility
#define DIGIPOT_MOTOR_CURRENT_E 160, 160 // Values 0-255 (RAMBO 135 = ~0.75A, 185 = ~1A)
#define LULZBOT_EXTRUDERS 2
#define LULZBOT_UUID "c5077702-4ecd-4532-beaf-6acf94acc404"
#define LULZBOT_X_MAX_POS 288
#define LULZBOT_X_MIN_POS -22
#define LULZBOT_Y_MAX_POS 303
#define LULZBOT_Y_MIN_POS -20
#define LULZBOT_TEMP_SENSOR_1 5
#define LULZBOT_AO_Hexagon
#endif /* TOOLHEAD_Javelin_DualExtruder || TOOLHEAD_Longfin_FlexyDually || TOOLHEAD_Yellowfin_DualExtruder */
#if defined(TOOLHEAD_Javelin_DualExtruder)
#define LULZBOT_LCD_TOOLHEAD_NAME "Dual Extruder 2"
// 16 chars max ^^^^^^^^^^^^^^^
#undef LULZBOT_WIPE_Y2
#define LULZBOT_WIPE_Y2 73
#define LULZBOT_X_MAX_ENDSTOP_INVERTING true
#endif /* TOOLHEAD_Javelin_DualExtruder */
#if defined(TOOLHEAD_Longfin_FlexyDually)
#define LULZBOT_LCD_TOOLHEAD_NAME "FlexyDually v2"
// 16 chars max ^^^^^^^^^^^^^^^
#undef LULZBOT_WIPE_Y2
#define LULZBOT_WIPE_Y2 73
#define LULZBOT_X_MAX_ENDSTOP_INVERTING true
#define LULZBOT_DISTINCT_E_FACTORS
#endif /* TOOLHEAD_Longfin_FlexyDually */
#if defined(TOOLHEAD_Yellowfin_DualExtruder)
// Prototype Dual v3 for TAZ.
#define LULZBOT_LCD_TOOLHEAD_NAME "Dual Extruder 3"
// 16 chars max ^^^^^^^^^^^^^^^
#undef LULZBOT_AFTER_Z_HOME_CMD
#define LULZBOT_AFTER_Z_HOME_CMD "G92 Z5.5\nG0 Z16" // Correction for raised homing button
#undef LULZBOT_WIPE_X1
#undef LULZBOT_WIPE_X2
#define LULZBOT_WIPE_X1 -22
#define LULZBOT_WIPE_X2 -22
#undef LULZBOT_Z_HOMING_HEIGHT
#define LULZBOT_Z_HOMING_HEIGHT 10
#undef LULZBOT_Z_SAFE_HOMING_X_POINT
#undef LULZBOT_Z_SAFE_HOMING_Y_POINT
#define LULZBOT_Z_SAFE_HOMING_X_POINT (-22) // X point for Z homing when homing all axis (G28)
#define LULZBOT_Z_SAFE_HOMING_Y_POINT (265) // Y point for Z homing when homing all axis (G28)
#undef LULZBOT_X_MAX_POS
#define LULZBOT_X_MAX_POS 290
#define LULZBOT_X_MAX_ENDSTOP_INVERTING false
#undef LULZBOT_INVERT_E0_DIR
#define LULZBOT_INVERT_E0_DIR false
#define LULZBOT_AO_Hexagon
#endif /* TOOLHEAD_Yellowfin_DualExtruder */
/* HOTEND Variants */
#if defined(LULZBOT_Moarstruder)
// LulzBot MOARstruder (40v)
#define LULZBOT_DEFAULT_Kp 55.64
#define LULZBOT_DEFAULT_Ki 6.79
#define LULZBOT_DEFAULT_Kd 113.94
#endif /* LULZBOT_Moarstruder */
#if defined(LULZBOT_AO_Hexagon)
// LulzBot AO-Hexagon (24v)
#define LULZBOT_DEFAULT_Kp 28.79
#define LULZBOT_DEFAULT_Ki 1.91
#define LULZBOT_DEFAULT_Kd 108.51
#endif /* LULZBOT_AO_Hexagon */
// Heated bed parameters
//24V 360W silicone heater from NPH on 3mm borosilicate (TAZ 2.2+)
#if defined(LULZBOT_TAZ_BED)
#define LULZBOT_DEFAULT_bedKp 162
#define LULZBOT_DEFAULT_bedKi 17
#define LULZBOT_DEFAULT_bedKd 378
#elif defined(LULZBOT_MINI_BED)
#define LULZBOT_DEFAULT_bedKp 294
#define LULZBOT_DEFAULT_bedKi 65
#define LULZBOT_DEFAULT_bedKd 382
#endif
// Nozzle wiping points (varies by toolhead, as the nozzle position varies)
#define LULZBOT_NOZZLE_CLEAN_START_POINT {LULZBOT_WIPE_X1, LULZBOT_WIPE_Y1, 1}
#define LULZBOT_NOZZLE_CLEAN_END_POINT {LULZBOT_WIPE_X2, LULZBOT_WIPE_Y2, 1}
// Acceleration, feedrate, motor steps and motor currents for XYZ vary
// by printer model (steps and motor currents for E vary by toolhead).
// Z values additionally vary depending on whether the Z assembly is
// rod or belt driven.
#if defined(LULZBOT_IS_MINI)
#define PWM_MOTOR_CURRENT_XY 1300
#define LULZBOT_XY_STEPS 100.5
#define LULZBOT_DEFAULT_MAX_FEEDRATE {800, 800, 8, 40} // (mm/sec)
#define LULZBOT_DEFAULT_MAX_ACCELERATION {9000,9000,100,10000}
#define LULZBOT_DEFAULT_XJERK 12.0
#define LULZBOT_DEFAULT_YJERK 12.0
#define LULZBOT_DEFAULT_ZJERK 0.4
#define LULZBOT_DEFAULT_ACCELERATION 2000
#define LULZBOT_DEFAULT_TRAVEL_ACCELERATION 3000
#define LULZBOT_Z_MAX_POS 160
#define LULZBOT_Z_MIN_POS 0
#elif defined(LULZBOT_IS_TAZ)
#define DIGIPOT_MOTOR_CURRENT_XY 175
#define LULZBOT_XY_STEPS 100.5
#define LULZBOT_DEFAULT_XJERK 8.0
#define LULZBOT_DEFAULT_YJERK 8.0
#define LULZBOT_DEFAULT_ZJERK 0.4
#if not defined(LULZBOT_DEFAULT_ACCELERATION)
#define LULZBOT_DEFAULT_ACCELERATION 500
#endif
#define LULZBOT_DEFAULT_TRAVEL_ACCELERATION 3000
#define LULZBOT_Z_MIN_POS 0
#endif
#if defined(LULZBOT_Gladiola_Mini) || defined(LULZBOT_Gladiola_GLCD)
#define PWM_MOTOR_CURRENT_Z 1630
#define LULZBOT_Z_STEPS 1600
#elif defined(LULZBOT_Huerfano_Mini)
#define PWM_MOTOR_CURRENT_Z 1000
// Prototype Z-Belt Mini
#define Z_FULL_STEPS_PER_ROTATION 200
#define Z_MICROSTEPS 16
#define Z_BELT_PITCH 2
#define Z_PULLEY_TEETH 24
#define Z_MOTOR_GEAR_REDUCTION 26.8512396694
#define LULZBOT_Z_STEPS (Z_FULL_STEPS_PER_ROTATION * Z_MICROSTEPS * Z_MOTOR_GEAR_REDUCTION / double(Z_BELT_PITCH) / double(Z_PULLEY_TEETH))
#undef LULZBOT_Z_MAX_POS
#define LULZBOT_Z_MAX_POS 183
#elif defined(LULZBOT_Oliveoil_TAZ_6)
#define DIGIPOT_MOTOR_CURRENT_Z 200
#define LULZBOT_DEFAULT_MAX_FEEDRATE {800, 800, 3, 40} // (mm/sec)
#define LULZBOT_DEFAULT_MAX_ACCELERATION {9000,9000,100,10000}
#define LULZBOT_Z_STEPS 1600
#define LULZBOT_Z_MAX_POS 270
#elif defined(LULZBOT_Huerfano_TAZ_7)
#define DIGIPOT_MOTOR_CURRENT_Z 175
// Prototype Z-belt driven TAZ 7
#define LULZBOT_DEFAULT_MAX_FEEDRATE {800, 800, 600, 40} // (mm/sec)
#define LULZBOT_DEFAULT_MAX_ACCELERATION {9000,9000,10,10000}
#define LULZBOT_Z_STEPS 1790.08264463
#define LULZBOT_Z_MAX_POS 290
#endif
#if defined(PWM_MOTOR_CURRENT_XY) && defined(PWM_MOTOR_CURRENT_Z) && defined(PWM_MOTOR_CURRENT_E)
#define LULZBOT_PWM_MOTOR_CURRENT { \
PWM_MOTOR_CURRENT_XY, \
PWM_MOTOR_CURRENT_Z, \
PWM_MOTOR_CURRENT_E \
} // Values in milliamps
#elif defined(DIGIPOT_MOTOR_CURRENT_XY) && defined(DIGIPOT_MOTOR_CURRENT_Z) && defined(DIGIPOT_MOTOR_CURRENT_E)
#define LULZBOT_DIGIPOT_MOTOR_CURRENT { \
DIGIPOT_MOTOR_CURRENT_XY, \
DIGIPOT_MOTOR_CURRENT_XY, \
DIGIPOT_MOTOR_CURRENT_Z, \
DIGIPOT_MOTOR_CURRENT_E \
} // Values 0-255 (RAMBO 135 = ~0.75A, 185 = ~1A)
#else
#error Motor currents not defined
#endif
// default steps per unit for LulzBot TAZ.
#if defined(LULZBOT_DISTINCT_E_FACTORS) && LULZBOT_EXTRUDERS == 2
#define LULZBOT_DEFAULT_AXIS_STEPS_PER_UNIT {LULZBOT_XY_STEPS,LULZBOT_XY_STEPS,LULZBOT_Z_STEPS,LULZBOT_E_STEPS,LULZBOT_E_STEPS}
#else
#define LULZBOT_DEFAULT_AXIS_STEPS_PER_UNIT {LULZBOT_XY_STEPS,LULZBOT_XY_STEPS,LULZBOT_Z_STEPS,LULZBOT_E_STEPS}
#endif
// Gralco's customized Z Offset overlay (also requires dogm_bitmaps_Lulzbot.h)
#define LULZBOT_ZOFFSET_OVERLAY(zprobe_zoffset) \
static float old_zprobe_zoffset = 0; \
static bool up_arrow; \
if(zprobe_zoffset != old_zprobe_zoffset) { \
up_arrow = zprobe_zoffset > old_zprobe_zoffset; \
} \
old_zprobe_zoffset = zprobe_zoffset; \
uint8_t noz_pos = -6*zprobe_zoffset; \
u8g.drawBitmapP(66,noz_pos,2,12,nozzle_bmp); \
u8g.drawBitmapP(60,24,3,1,offset_bedline_bmp); \
u8g.drawBitmapP(0,47,3,16,ccw_bmp); \
u8g.drawStr(27,60,"Z"); \
u8g.drawBitmapP(34,49,2,10,down_arrow_bmp); \
u8g.drawBitmapP(85,47,3,16,cw_bmp); \
u8g.drawStr(107,60,"Z"); \
u8g.drawBitmapP(113,51,2,10,up_arrow_bmp); \
if (up_arrow) { \
u8g.setColorIndex(0); \
u8g.drawBox(113,46,16,13); \
u8g.setColorIndex(1); \
u8g.drawBitmapP(113,48,2,13,longup_arrow_bmp); \
} else { \
u8g.setColorIndex(0); \
u8g.drawBox(34,49,16,13); \
u8g.setColorIndex(1); \
u8g.drawBitmapP(34,49,2,13,longdown_arrow_bmp); \
}
// Customized splash screen
#define LULZBOT_CUSTOM_BOOTSCREEN() \
u8g.firstPage(); \
do { \
u8g.drawBitmapP(0,0,CEILING(CUSTOM_BOOTSCREEN_BMPWIDTH, 8),CUSTOM_BOOTSCREEN_BMPHEIGHT,custom_start_bmp); \
u8g.setFont(u8g_font_6x13); \
u8g.drawStr(61,17,LULZBOT_CUSTOM_MACHINE_NAME); \
u8g.setFont(u8g_font_04b_03); \
u8g.drawStr(62,28,LULZBOT_LCD_TOOLHEAD_NAME); \
u8g.setFont(u8g_font_5x8); \
u8g.drawStr(63,41,"LulzBot.com"); \
u8g.setFont(u8g_font_5x8); \
u8g.drawStr(62,62,"v"); \
u8g.drawStr(67,62,SHORT_BUILD_VERSION LULZBOT_FW_VERSION); \
} while( u8g.nextPage() );
// Customize version string
#define LULZBOT_DETAILED_BUILD_VERSION SHORT_BUILD_VERSION LULZBOT_FW_VERSION " (LulzBot " LULZBOT_CUSTOM_MACHINE_NAME " " LULZBOT_LCD_TOOLHEAD_NAME ")"
#define LULZBOT_STRING_DISTRIBUTION_DATE __DATE__ __TIME__
#define LULZBOT_SOURCE_CODE_URL "https://code.alephobjects.com/diffusion/MARLIN"
// Bed Probe w/ Rewipe
#define LULZBOT_NUM_REWIPES 1
#define LULZBOT_BED_PROBE_MIN -2 // How far to push into bed before failing.
#if defined(LULZBOT_USE_LCD_DISPLAY) // If compiling using the Arduino IDE, change printer model and toolhead here:
#define LULZBOT_STOP_JOB_CMD card.stopSDPrint();
#else
#define LULZBOT_STOP_JOB_CMD
#endif
#define LULZBOT_PROBE_Z_WITH_REWIPE(speed) \ #define LULZBOT_Huerfano_TAZ_7
do_probe_move(LULZBOT_BED_PROBE_MIN, speed); /* probe; if we reach limit, the probe failed */ \ #define TOOLHEAD_Angelfish_Aero
for(int rewipes = 1; current_position[Z_AXIS] == LULZBOT_BED_PROBE_MIN; rewipes++) { \
SERIAL_ERRORLNPGM(MSG_REWIPE); \
LCD_MESSAGEPGM(MSG_REWIPE); \
do_blocking_move_to_z(10, MMM_TO_MMS(speed)); /* raise nozzle */ \
Nozzle::clean(0, 2, 0, 0); /* wipe nozzle */ \
do_probe_move(LULZBOT_BED_PROBE_MIN, speed); /* reprobe */ \
if(rewipes >= LULZBOT_NUM_REWIPES) { /* max of tries */ \
SERIAL_ERRORLNPGM("PROBE FAIL CLEAN NOZZLE"); /* cura listens for this message specifically */ \
LCD_MESSAGEPGM(MSG_LEVEL_FAIL); /* use a more friendly message on the LCD */ \
BUZZ(25, 880); BUZZ(50, 0); /* play tone */ \
BUZZ(25, 880); BUZZ(50, 0); \
BUZZ(25, 880); BUZZ(50, 0); \
BUZZ(75, 880); BUZZ(50, 0); \
BUZZ(75, 880); BUZZ(50, 0); \
BUZZ(75, 880); BUZZ(50, 0); \
BUZZ(25, 880); BUZZ(50, 0); \
BUZZ(25, 880); BUZZ(50, 0); \
BUZZ(25, 880); BUZZ(50, 0); \
do_blocking_move_to_z(100, MMM_TO_MMS(Z_PROBE_SPEED_FAST)); /* raise head */ \
LULZBOT_STOP_JOB_CMD; /* stop print job */ \
clear_command_queue(); \
print_job_timer.stop(); \
return NAN; /* abort the leveling in progress */ \
} \
}
// Raise after home cmd, used only on TAZ to lift the print head after homing #include "Conditionals_LulzBot.h"
#if defined(LULZBOT_AFTER_Z_HOME_CMD)
#define LULZBOT_AFTER_Z_HOME_ACTION \
if(home_all || homeZ) { \
enqueue_and_echo_commands_P(PSTR(LULZBOT_AFTER_Z_HOME_CMD)); \
}
#else
#define LULZBOT_AFTER_Z_HOME_ACTION
#endif
#endif /* CONFIGURATION_LULZBOT */ #endif /* CONFIGURATION_LULZBOT */

@ -89,66 +89,42 @@ const unsigned char cw_bmp[] PROGMEM = { //AVR-GCC, WinAVR
const unsigned char ccw_bmp[] PROGMEM = { //AVR-GCC, WinAVR const unsigned char ccw_bmp[] PROGMEM = { //AVR-GCC, WinAVR
/* /*
000000000001111111100000 000000011111111000000000
000000000011000000110000 000000110000001100000000
000000000100000000001000 000001000000000010000000
000000001000000000000100 000010000000000001000000
000000011000000000000110 000110000000000001100000
000000010000000000000010 000100000000000000100000
000001111100000000000010 011111000000000000100000
000000111000000000000010 001110000000000000100000
000000010000000000000010 000100000000000000100000
000000000000000000000010 000000000000000000100000
000000000000000000000010 000000000000000000100000
000000000000000000000110 000000000000000001100000
000000000000000000000100 000000000000000001000000
000000000000000000001000 000000000000000010000000
000000000011000000110000 000000110000001100000000
000000000001111111100000 000000011111111000000000
*/ */
0x00,0x1f,0xe0, 0x01,0xfe,0x00,
0x00,0x30,0x30, 0x03,0x03,0x00,
0x00,0x40,0x08, 0x04,0x00,0x80,
0x00,0x80,0x04, 0x08,0x00,0x40,
0x01,0x80,0x06, 0x18,0x00,0x60,
0x01,0x00,0x02, 0x10,0x00,0x20,
0x07,0xc0,0x02, 0x7c,0x00,0x20,
0x03,0x80,0x02, 0x38,0x00,0x20,
0x01,0x00,0x02, 0x10,0x00,0x20,
0x00,0x00,0x02, 0x00,0x00,0x20,
0x00,0x00,0x02, 0x00,0x00,0x20,
0x00,0x00,0x06, 0x00,0x00,0x60,
0x00,0x00,0x04, 0x00,0x00,0x40,
0x00,0x00,0x08, 0x00,0x00,0x80,
0x00,0x30,0x30, 0x03,0x03,0x00,
0x00,0x1f,0xe0 0x01,0xfe,0x00
}; };
const unsigned char up_arrow_bmp[] PROGMEM = { //AVR-GCC, WinAVR const unsigned char up_arrow_bmp[] PROGMEM = { //AVR-GCC, WinAVR
/*0000 0110 0000
0000 1111 0000
0001 1111 1000
0011 1111 1100
0000 0110 0000
0000 0110 0000
0000 0110 0000
0000 0110 0000
0000 0110 0000
0000 0110 0000*/
0x06,0x00,
0x0F,0x00,
0x1F,0x80,
0x3F,0xC0,
0x06,0x00,
0x06,0x00,
0x06,0x00,
0x06,0x00,
0x06,0x00,
0x06,0x00
};
const unsigned char longup_arrow_bmp[] PROGMEM = { //AVR-GCC, WinAVR
/*0000 0110 0000 /*0000 0110 0000
0000 1111 0000 0000 1111 0000
0001 1111 1000 0001 1111 1000
@ -179,31 +155,6 @@ const unsigned char longup_arrow_bmp[] PROGMEM = { //AVR-GCC, WinAVR
}; };
const unsigned char down_arrow_bmp[] PROGMEM = { //AVR-GCC, WinAVR const unsigned char down_arrow_bmp[] PROGMEM = { //AVR-GCC, WinAVR
/*0000 0110 0000
0000 0110 0000
0000 0110 0000
0000 0110 0000
0000 0110 0000
0000 0110 0000
0000 0110 0000
0011 1111 1100
0001 1111 1000
0000 1111 0000
0000 0110 0000*/
0x06,0x00,
0x06,0x00,
0x06,0x00,
0x06,0x00,
0x06,0x00,
0x06,0x00,
0x3F,0xC0,
0x1F,0x80,
0x0F,0x00,
0x06,0x00
};
const unsigned char longdown_arrow_bmp[] PROGMEM = { //AVR-GCC, WinAVR
/*0000 0110 0000 /*0000 0110 0000
0000 0110 0000 0000 0110 0000
0000 0110 0000 0000 0110 0000

Loading…
Cancel
Save