Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Power off hotend and heatbed when print #190

Open
ZhenyaKa opened this issue Jan 8, 2019 · 22 comments
Open

Power off hotend and heatbed when print #190

ZhenyaKa opened this issue Jan 8, 2019 · 22 comments

Comments

@ZhenyaKa
Copy link

ZhenyaKa commented Jan 8, 2019

Just power off both heater and bed :(((

Two different (mirrored) pcs at the same heigh.

Hardware: DUE+RAMPS-FD+LV8729 (XY) 8825 (Z+E)

Repetier, Marlin 2.0 works well

`/**

  • MK4duo Firmware for 3D Printer, Laser and CNC
  • Based on Marlin, Sprinter and grbl
  • Copyright (C) 2011 Camiel Gubbels / Erik van der Zalm
  • Copyright (C) 2013 Alberto Cotronei @MagoKimbra
  • 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/.
    */

/**

  • Configuration_Overall.h
  • Here you can define all your custom settings and they will overwrite configurations in the main configuration files.
    */

/*******************************

  • Firmware Version V4.3.7 *
    *******************************/

#define CONFIGURATION_OVERALL

/***********************

  • Configuration_Basic *
    ***********************/
    #define SERIAL_PORT_1 0
    #define BAUDRATE_1 250000
    #define SERIAL_PORT_2 -1
    #define BAUDRATE_2 250000
    #define STRING_CONFIG_H_AUTHOR "(none, default config)"
    #define MACHINE_UUID "00000000-0000-0000-0000-000000000000"
    #define KILL_METHOD 0
    #define NO_TIMEOUTS 1000
    //#define ADVANCED_OK
    //#define EMERGENCY_PARSER
    #define FASTER_GCODE_PARSER
    #define FASTER_GCODE_EXECUTE
    #define HOST_KEEPALIVE_FEATURE
    #define DEFAULT_KEEPALIVE_INTERVAL 2
    #define MOTHERBOARD BOARD_RAMPS_FD_V1
    #define MECHANISM MECH_COREXY
    //#define MECHANISM MECH_COREXY
    //#define MECHANISM MECH_COREYX
    //#define MECHANISM MECH_COREXZ
    //#define MECHANISM MECH_COREZX
    //#define MECHANISM MECH_COREYZ
    //#define MECHANISM MECH_COREZY
    //#define MECHANISM MECH_DELTA
    //#define MECHANISM MECH_MORGAN_SCARA
    //#define MECHANISM MECH_MAKERARM_SCARA
    //#define MECHANISM MECH_MUVE3D
    #define POWER_SUPPLY 0
    #define PS_DEFAULT_OFF false
    #define DELAY_AFTER_POWER_ON 5
    #define POWER_TIMEOUT 30
    #define EXTRUDERS 1
    #define DRIVER_EXTRUDERS 1

/*****************************

  • Configuration_Temperature *
    *****************************/
    //#define TEMPERATURE_UNITS_SUPPORT
    #define TEMP_SENSOR_0 2
    #define TEMP_SENSOR_1 0
    #define TEMP_SENSOR_2 0
    #define TEMP_SENSOR_3 0
    #define TEMP_SENSOR_BED 2
    #define TEMP_SENSOR_CHAMBER 0
    #define TEMP_SENSOR_COOLER 0
    #define THERMISTOR_SERIES_RS 4700
    #define T9_NAME "User sensor"
    #define T9_R25 100000
    #define T9_BETA 4036
    //#define DHT_SENSOR
    #define DHT_TYPE 11
    #define TEMP_SENSOR_AD595_OFFSET 0
    #define TEMP_SENSOR_AD595_GAIN 1
    #define DUMMY_THERMISTOR_998_VALUE 25
    #define DUMMY_THERMISTOR_999_VALUE 25
    #define TEMP_RESIDENCY_TIME 10 // (seconds)
    #define TEMP_HYSTERESIS 3 // (degC) range of +/- temperatures considered "close" to the target one
    #define TEMP_WINDOW 1 // (degC) Window around target to start the residency timer x degC early.
    #define HEATER_0_MAXTEMP 275
    #define HEATER_1_MAXTEMP 275
    #define HEATER_2_MAXTEMP 275
    #define HEATER_3_MAXTEMP 275
    #define BED_MAXTEMP 150
    #define CHAMBER_MAXTEMP 150
    #define COOLER_MAXTEMP 150
    #define HEATER_0_MINTEMP 5
    #define HEATER_1_MINTEMP 5
    #define HEATER_2_MINTEMP 5
    #define HEATER_3_MINTEMP 5
    #define BED_MINTEMP 5
    #define CHAMBER_MINTEMP 5
    #define COOLER_MINTEMP 5
    #define PREHEAT_1_LABEL "PLA"
    #define PREHEAT_1_TEMP_HOTEND 190
    #define PREHEAT_1_TEMP_BED 60
    #define PREHEAT_1_FAN_SPEED 255
    #define PREHEAT_2_LABEL "ABS"
    #define PREHEAT_2_TEMP_HOTEND 240
    #define PREHEAT_2_TEMP_BED 100
    #define PREHEAT_2_FAN_SPEED 255
    #define PREHEAT_3_LABEL "GUM"
    #define PREHEAT_3_TEMP_HOTEND 230
    #define PREHEAT_3_TEMP_BED 60
    #define PREHEAT_3_FAN_SPEED 255
    #define AUTOTEMP
    #define AUTOTEMP_OLDWEIGHT 0.98
    //#define TEMP_STAT_LEDS
    #define HEATER_PWM_SPEED 0
    #define PIDTEMP true
    #define PID_MAX 255
    #define PID_DRIVE_MIN 40
    #define PID_DRIVE_MAX 255
    #define PID_FUNCTIONAL_RANGE 20
    #define PID_AUTOTUNE_MENU // Add PID Autotune to the LCD "Temperature" menu to run M303 and apply the result.
    //#define PID_DEBUG // Sends debug data to the serial port.
    //#define PID_ADD_EXTRUSION_RATE
    #define LPQ_MAX_LEN 50
    #define DEFAULT_Kp {41.51,41.51,41.51,41.51}
    #define DEFAULT_Ki {7.28,7.28,7.28,7.28}
    #define DEFAULT_Kd {59.17,59.17,59.17,59.17}
    #define DEFAULT_Kc {100,100,100,100}
    #define PIDTEMPBED true
    #define BED_HYSTERESIS 2 // Only disable heating if T>target+BED_HYSTERESIS and enable heating if T<target-BED_HYSTERESIS
    #define BED_CHECK_INTERVAL 5000 // ms between checks in bang-bang control

//#Kp:83.73 Ki:16.61 Kd:105.49
#define DEFAULT_bedKp 83.73
#define DEFAULT_bedKi 16.61
#define DEFAULT_bedKd 105.49
#define PIDTEMPCHAMBER false
#define CHAMBER_HYSTERESIS 2 // only disable heating if T>target+CHAMBER_HYSTERESIS and enable heating if T<target-CHAMBER_HYSTERESIS
#define CHAMBER_CHECK_INTERVAL 5000 // ms between checks in bang-bang control
#define CHAMBER_PID_MAX 255 // Limits current to chamber while in PID mode; 255 = full current
#define CHAMBER_PID_DRIVE_MIN 80 // Limits min current to chamber while PID is active; 0 = no current
#define CHAMBER_PID_DRIVE_MAX 255 // Limits max current to chamber while PID is active; 255 = full current
#define DEFAULT_chamberKp 10
#define DEFAULT_chamberKi 1
#define DEFAULT_chamberKd 305
#define PIDTEMPCOOLER false
//#define FAST_PWM_COOLER
#define COOLER_HYSTERESIS 2 // only disable heating if T<target-COOLER_HYSTERESIS and enable heating if T>target+COOLER_HYSTERESIS
#define COOLER_CHECK_INTERVAL 5000 // ms between checks in bang-bang control
#define COOLER_PID_MAX 255 // Limits current to cooler while in PID mode; 255 = full current
#define COOLER_PID_DRIVE_MIN 80 // Limits min current to cooler while PID is active; 0 = no current
#define COOLER_PID_DRIVE_MAX 255 // Limits max current to cooler while PID is active; 255 = full current
#define DEFAULT_coolerKp 10
#define DEFAULT_coolerKi 1
#define DEFAULT_coolerKd 305
#define INVERTED_HEATER_PINS true
#define INVERTED_BED_PIN true
#define INVERTED_CHAMBER_PIN false
#define INVERTED_COOLER_PIN false
#define THERMAL_PROTECTION_HOTENDS false
#define THERMAL_PROTECTION_BED false
#define THERMAL_PROTECTION_CHAMBER false
#define THERMAL_PROTECTION_COOLER false
#define THERMAL_PROTECTION_PERIOD 40
#define THERMAL_PROTECTION_HYSTERESIS 4
#define WATCH_TEMP_PERIOD 20
#define WATCH_TEMP_INCREASE 2
#define WATCH_BED_TEMP_PERIOD 60
#define WATCH_BED_TEMP_INCREASE 2
#define WATCH_CHAMBER_TEMP_PERIOD 60
#define WATCH_CHAMBER_TEMP_INCREASE 2
#define WATCH_COOLER_TEMP_PERIOD 60
#define WATCH_COOLER_TEMP_INCREASE 2
#define PREVENT_COLD_EXTRUSION
#define EXTRUDE_MINTEMP 170
//#define PREVENT_LENGTHY_EXTRUDE
#define EXTRUDE_MAXLENGTH 400

/**********************

  • Configuration_Core *
    ***************/
    #define CONFIGURATION_CORE_H
    #define KNOWN_MECH
    #define CUSTOM_MACHINE_NAME "MaKe3D"
    #define CORE_FACTOR 1
    #define ENDSTOPPULLUP_XMIN false
    #define ENDSTOPPULLUP_YMIN false
    #define ENDSTOPPULLUP_ZMIN false
    #define ENDSTOPPULLUP_XMAX false
    #define ENDSTOPPULLUP_YMAX false
    #define ENDSTOPPULLUP_ZMAX false
    #define ENDSTOPPULLUP_Z2MIN false
    #define ENDSTOPPULLUP_Z3MIN false
    #define ENDSTOPPULLUP_Z2MAX false
    #define ENDSTOPPULLUP_Z3MAX false
    #define ENDSTOPPULLUP_ZPROBE false
    #define X_MIN_ENDSTOP_LOGIC true
    #define Y_MIN_ENDSTOP_LOGIC true
    #define Z_MIN_ENDSTOP_LOGIC true
    #define X_MAX_ENDSTOP_LOGIC true
    #define Y_MAX_ENDSTOP_LOGIC true
    #define Z_MAX_ENDSTOP_LOGIC true
    #define Z2_MIN_ENDSTOP_LOGIC false
    #define Z3_MIN_ENDSTOP_LOGIC false
    #define Z2_MAX_ENDSTOP_LOGIC false
    #define Z3_MAX_ENDSTOP_LOGIC false
    #define Z_PROBE_ENDSTOP_LOGIC false
    //#define ENDSTOP_INTERRUPTS_FEATURE
    #define Z_PROBE_SERVO_NR -1
    #define Z_SERVO_ANGLES {90,0} // Z Servo Deploy and Stow angles
    //#define PROBE_MANUALLY
    //#define Z_PROBE_FIX_MOUNTED
    //#define BLTOUCH
    //#define BLTOUCH_DELAY 375 // (ms) Enable and increase if needed
    //#define Z_PROBE_SENSORLESS
    //#define Z_PROBE_SLED
    #define SLED_DOCKING_OFFSET 5
    #define X_PROBE_OFFSET_FROM_NOZZLE 0
    #define Y_PROBE_OFFSET_FROM_NOZZLE 0
    #define Z_PROBE_OFFSET_FROM_NOZZLE -1
    #define XY_PROBE_SPEED 8000
    #define Z_PROBE_SPEED_FAST 1000
    #define Z_PROBE_SPEED_SLOW 500
    #define Z_PROBE_REPETITIONS 1
    //#define Z_MIN_PROBE_REPEATABILITY_TEST
    //#define PAUSE_BEFORE_DEPLOY_STOW
    #define Z_PROBE_DEPLOY_HEIGHT 15
    #define Z_PROBE_BETWEEN_HEIGHT 10
    #define Z_PROBE_AFTER_PROBING 0
    #define Z_PROBE_LOW_POINT -2
    #define Z_PROBE_OFFSET_RANGE_MIN -50
    #define Z_PROBE_OFFSET_RANGE_MAX 50
    //#define PROBING_HEATERS_OFF // Turn heaters off when probing
    //#define PROBING_FANS_OFF // Turn fans off when probing
    //#define LCD_BED_LEVELING
    #define MESH_EDIT_Z_STEP 0.025 // Step size while manually probing Z axis.
    #define LCD_PROBE_Z_RANGE 4 // Z Range centered on Z MIN POS for LCD Z adjustment
    //#define MESH_EDIT_MENU // Add a menu to edit mesh points
    //#define LEVEL_BED_CORNERS
    #define LEVEL_CORNERS_INSET 30 // (mm) An inset for corner leveling
    //#define LEVEL_CENTER_TOO // Move to the center after the last corner
    #define X_HOME_DIR -1
    #define Y_HOME_DIR -1
    #define Z_HOME_DIR -1
    #define MIN_Z_HEIGHT_FOR_HOMING 3
    #define X_ENABLE_ON 0
    #define Y_ENABLE_ON 0
    #define Z_ENABLE_ON 0
    #define E_ENABLE_ON 0
    #define INVERT_X_STEP_PIN false
    #define INVERT_Y_STEP_PIN false
    #define INVERT_Z_STEP_PIN false
    #define INVERT_E_STEP_PIN false
    #define INVERT_X_DIR false
    #define INVERT_Y_DIR false
    #define INVERT_Z_DIR false
    #define INVERT_E0_DIR false
    #define INVERT_E1_DIR false
    #define INVERT_E2_DIR false
    #define INVERT_E3_DIR false
    #define INVERT_E4_DIR false
    #define INVERT_E5_DIR false
    #define DISABLE_X false
    #define DISABLE_Y false
    #define DISABLE_Z false
    #define DISABLE_E false
    //#define DISABLE_INACTIVE_EXTRUDER
    #define X_MAX_POS 200
    #define X_MIN_POS 0
    #define Y_MAX_POS 200
    #define Y_MIN_POS 0
    #define Z_MAX_POS 200
    #define Z_MIN_POS 0
    #define E_MIN_POS 0
    #define AXIS_RELATIVE_MODES {false, false, false, false}
    #define Z_SAFE_HOMING
    #define Z_SAFE_HOMING_X_POINT 10
    #define Z_SAFE_HOMING_Y_POINT 10
    //#define MESH_BED_LEVELING
    //#define AUTO_BED_LEVELING_UBL
    //#define AUTO_BED_LEVELING_LINEAR
    //#define AUTO_BED_LEVELING_BILINEAR
    //#define AUTO_BED_LEVELING_3POINT
    //#define MESH_EDIT_GFX_OVERLAY
    #define MESH_INSET 10
    //#define G26_MESH_VALIDATION
    #define MESH_TEST_NOZZLE_SIZE 0.4 // (mm) Diameter of primary nozzle.
    #define MESH_TEST_LAYER_HEIGHT 0.2 // (mm) Default layer height for the G26 Mesh Validation Tool.
    #define MESH_TEST_HOTEND_TEMP 200.0 // (c) Default nozzle temperature for the G26 Mesh Validation Tool.
    #define MESH_TEST_BED_TEMP 60.0 // (c) Default bed temperature for the G26 Mesh Validation Tool.
    #define MESH_MIN_X (X_MIN_POS + (MESH_INSET))
    #define MESH_MAX_X (X_MAX_POS - (MESH_INSET))
    #define MESH_MIN_Y (Y_MIN_POS + (MESH_INSET))
    #define MESH_MAX_Y (Y_MAX_POS - (MESH_INSET))
    //#define MESH_G28_REST_ORIGIN
    #define UBL_MESH_EDIT_MOVES_Z
    //#define UBL_Z_RAISE_WHEN_OFF_MESH 2.5
    #define GRID_MAX_POINTS_X 3
    #define GRID_MAX_POINTS_Y 3
    #define LEFT_PROBE_BED_POSITION 20
    #define RIGHT_PROBE_BED_POSITION 180
    #define FRONT_PROBE_BED_POSITION 20
    #define BACK_PROBE_BED_POSITION 180
    #define MIN_PROBE_EDGE 10
    //#define PROBE_Y_FIRST
    //#define ABL_BILINEAR_SUBDIVISION
    #define BILINEAR_SUBDIVISIONS 3
    #define PROBE_PT_1_X 15
    #define PROBE_PT_1_Y 180
    #define PROBE_PT_2_X 15
    #define PROBE_PT_2_Y 15
    #define PROBE_PT_3_X 180
    #define PROBE_PT_3_Y 15
    //#define Z_PROBE_END_SCRIPT "G1 Z10 F8000\nG1 X10 Y10\nG1 Z0.5"
    //#define ENABLE_LEVELING_FADE_HEIGHT
    //#define BED_CENTER_AT_0_0
    //#define MANUAL_X_HOME_POS 0
    //#define MANUAL_Y_HOME_POS 0
    //#define MANUAL_Z_HOME_POS 0
    #define DEFAULT_AXIS_STEPS_PER_UNIT {640,640,400,150,625,625,625,625,625}
    #define DEFAULT_MAX_FEEDRATE {300,300,20,100,100,100,100,100,100}
    #define MANUAL_FEEDRATE {100
    60,100
    60,5
    60,10
    60}
    #define DEFAULT_MIN_FEEDRATE 0.0
    #define DEFAULT_MIN_TRAVEL_FEEDRATE 0.0
    #define MINIMUM_PLANNER_SPEED 0.05 // (mm/sec)
    #define DEFAULT_MAX_ACCELERATION {3000,3000,50,3000,3000,3000,3000,3000,3000}
    #define DEFAULT_RETRACT_ACCELERATION {10000,10000,10000,10000,10000,10000}
    #define DEFAULT_ACCELERATION 3000
    #define DEFAULT_TRAVEL_ACCELERATION 3000
    #define DEFAULT_XJERK 10
    #define DEFAULT_YJERK 10
    #define DEFAULT_ZJERK 0.4
    #define DEFAULT_EJERK {5,5,5,5,5,5}
    #define HOMING_FEEDRATE_X (100
    60)
    #define HOMING_FEEDRATE_Y (100
    60)
    #define HOMING_FEEDRATE_Z (5
    60)
    #define X_HOME_BUMP_MM 5
    #define Y_HOME_BUMP_MM 5
    #define Z_HOME_BUMP_MM 2
    #define HOMING_BUMP_DIVISOR {5,5,2}
    #define HOTEND_OFFSET_X {0,0,0,0}
    #define HOTEND_OFFSET_Y {0,0,0,0}
    #define HOTEND_OFFSET_Z {0,0,0,0}

/*************************

  • Configuration_Feature *
    *************************/
    #define X_DRIVER_TYPE LV8729
    #define Y_DRIVER_TYPE LV8729
    #define Z_DRIVER_TYPE DRV8825
    #define X2_DRIVER_TYPE A4988
    #define Y2_DRIVER_TYPE A4988
    #define Z2_DRIVER_TYPE A4988
    #define Z3_DRIVER_TYPE A4988
    #define E0_DRIVER_TYPE DRV8825
    #define E1_DRIVER_TYPE A4988
    #define E2_DRIVER_TYPE A4988
    #define E3_DRIVER_TYPE A4988
    #define E4_DRIVER_TYPE A4988
    #define E5_DRIVER_TYPE A4988
    #define FAN_PWM_SPEED 0
    #define FAN_PWM_FREQUENCY 250
    //#define FAN_KICKSTART_TIME 0
    #define FAN_MIN_PWM 0
    #define FAN_MAX_PWM 255
    //#define INVERTED_FAN_PINS
    #define AUTO_FAN {-1,0,-1,-1,-1,-1}
    #define HOTEND_AUTO_FAN_TEMPERATURE 50
    #define HOTEND_AUTO_FAN_SPEED 255
    #define HOTEND_AUTO_FAN_MIN_SPEED 0
    #define CONTROLLERFAN_SECS 60
    #define CONTROLLERFAN_SPEED 255
    #define CONTROLLERFAN_MIN_SPEED 0
    //#define TACHOMETRIC
    //#define VOLUMETRIC_EXTRUSION
    //#define VOLUMETRIC_DEFAULT_ON
    #define DEFAULT_NOMINAL_FILAMENT_DIA 1.75
    //#define SINGLENOZZLE
    //#define BARICUDA
    //#define EXT_SOLENOID
    //#define COLOR_MIXING_EXTRUDER
    #define MIXING_STEPPERS 2
    #define MIXING_VIRTUAL_TOOLS 16
    //#define MKR4
    //#define INVERTED_RELE_PINS
    //#define MKR6
    //#define INVERTED_RELE_PINS
    //#define MKR12
    //#define INVERTED_RELE_PINS
    //#define MKSE6
    #define MKSE6_SERVO_INDEX 0
    #define MKSE6_SERVOPOS_E0 -60
    #define MKSE6_SERVOPOS_E1 -30
    #define MKSE6_SERVOPOS_E2 0
    #define MKSE6_SERVOPOS_E3 30
    #define MKSE6_SERVOPOS_E4 60
    #define MKSE6_SERVOPOS_E5 90
    #define MKSE6_SERVO_DELAY 1000
    //#define DONDOLO_SINGLE_MOTOR
    //#define DONDOLO_DUAL_MOTOR
    #define DONDOLO_SERVO_INDEX 0
    #define DONDOLO_SERVOPOS_E0 120
    #define DONDOLO_SERVOPOS_E1 10
    #define DONDOLO_SERVO_DELAY 1000
    //#define IDLE_OOZING_PREVENT
    #define IDLE_OOZING_MINTEMP 190
    #define IDLE_OOZING_FEEDRATE 50 //default feedrate for retracting (mm/s)
    #define IDLE_OOZING_SECONDS 5
    #define IDLE_OOZING_LENGTH 15 //default retract length (positive mm)
    #define IDLE_OOZING_RECOVER_LENGTH 0 //default additional recover length (mm, added to retract length when recovering)
    #define IDLE_OOZING_RECOVER_FEEDRATE 50 //default feedrate for recovering from retraction (mm/s)
    //#define EXTRUDER_RUNOUT_PREVENT
    #define EXTRUDER_RUNOUT_MINTEMP 190
    #define EXTRUDER_RUNOUT_SECONDS 30
    #define EXTRUDER_RUNOUT_SPEED 1500 // mm/m
    #define EXTRUDER_RUNOUT_EXTRUDE 5 // mm
    //#define LIN_ADVANCE
    #define LIN_ADVANCE_K 0.22
    //#define LA_DEBUG
    //#define WORKSPACE_OFFSETS
    #define DEFAULT_STEPPER_DEACTIVE_TIME 120
    #undef DISABLE_INACTIVE_X
    #undef DISABLE_INACTIVE_Y
    #undef DISABLE_INACTIVE_Z
    #undef DISABLE_INACTIVE_E
    #define MIN_SOFTWARE_ENDSTOPS
    #define MAX_SOFTWARE_ENDSTOPS
    #define ENDSTOPS_ONLY_FOR_HOMING
    //#define ENABLED_ALL_SIX_ENDSTOP
    //#define ABORT_ON_ENDSTOP_HIT
    #define ABORT_ON_ENDSTOP_HIT_DEFAULT true
    //#define G38_PROBE_TARGET
    #define G38_MINIMUM_MOVE 0.0275
    //#define ENABLE_SERVOS
    #define NUM_SERVOS 0
    //#define DEACTIVATE_SERVOS_AFTER_MOVE
    #define SERVO_DEACTIVATION_DELAY 300
    //#define Z_LATE_ENABLE
    #define SLOWDOWN
    #define QUICK_HOME
    //#define HOME_Y_BEFORE_X
    //#define FORCE_HOME_XY_BEFORE_Z
    #define BABYSTEPPING
    //#define BABYSTEP_XY
    #define BABYSTEP_INVERT_Z false
    #define BABYSTEP_MULTIPLICATOR 1
    //#define BABYSTEP_ZPROBE_OFFSET
    #define DOUBLECLICK_FOR_Z_BABYSTEPPING
    #define DOUBLECLICK_MAX_INTERVAL 1250
    //#define BABYSTEP_ZPROBE_GFX_OVERLAY
    //#define BABYSTEP_ZPROBE_GFX_REVERSE
    //#define FWRETRACT
    #define MIN_AUTORETRACT 0.1 // When auto-retract is on, convert E moves of this length and over
    #define MAX_AUTORETRACT 10.0 // Upper limit for auto-retract conversion
    #define RETRACT_LENGTH 3 // Default retract length (positive mm)
    #define RETRACT_LENGTH_SWAP 13 // Default swap retract length (positive mm), for extruder change
    #define RETRACT_FEEDRATE 45 // Default feedrate for retracting (mm/s)
    #define RETRACT_ZLIFT 0 // Default retract Z-lift
    #define RETRACT_RECOVER_LENGTH 0 // Default additional recover length (mm, added to retract length when recovering)
    #define RETRACT_RECOVER_LENGTH_SWAP 0 // Default additional swap recover length (mm, added to retract length when recovering from extruder change)
    #define RETRACT_RECOVER_FEEDRATE 8 // Default feedrate for recovering from retraction (mm/s)
    #define RETRACT_RECOVER_FEEDRATE_SWAP 8 // Default feedrate for recovering from swap retraction (mm/s)
    //#define DUAL_X_CARRIAGE
    #define X1_MIN_POS X_MIN_POS // set minimum to ensure first x-carriage doesn't hit the parked second X-carriage
    #define X1_MAX_POS X_BED_SIZE // set maximum to ensure first x-carriage doesn't hit the parked second X-carriage
    #define X2_MIN_POS 80 // set minimum to ensure second x-carriage doesn't hit the parked first X-carriage
    #define X2_MAX_POS 353 // set maximum to the distance between toolheads when both heads are homed
    #define X2_HOME_DIR 1 // the second X-carriage always homes to the maximum endstop position
    #define X2_HOME_POS X2_MAX_POS // default home position is the maximum carriage position
    #define DEFAULT_DUAL_X_CARRIAGE_MODE DXC_FULL_CONTROL_MODE
    #define TOOLCHANGE_PARK_ZLIFT 0.2 // the distance to raise Z axis when parking an extruder
    #define TOOLCHANGE_UNPARK_ZLIFT 1 // the distance to raise Z axis when unparking an extruder
    #define DEFAULT_DUPLICATION_X_OFFSET 100
    //#define X_TWO_STEPPER_DRIVERS
    #define INVERT_X2_VS_X_DIR false
    //#define X_TWO_ENDSTOPS
    //#define Y_TWO_STEPPER_DRIVERS
    #define INVERT_Y2_VS_Y_DIR false
    //#define Y_TWO_ENDSTOPS
    //#define Z_TWO_STEPPER_DRIVERS
    #define INVERT_Z2_VS_Z_DIR false
    //#define Z_TWO_ENDSTOPS
    //#define Z_THREE_STEPPER_DRIVERS
    #define INVERT_Z2_VS_Z_DIR false
    #define INVERT_Z3_VS_Z_DIR false
    //#define Z_THREE_ENDSTOPS
    //#define XY_FREQUENCY_LIMIT 15
    //#define SF_ARC_FIX
    //#define EXTRUDER_ENCODER_CONTROL
    #define ENC_ERROR_STEPS 500
    #define ENC_MIN_STEPS 10
    //#define INVERTED_ENCODER_PINS
    //#define FILAMENT_SENSOR
    #define FILAMENT_SENSOR_EXTRUDER_NUM 0
    #define MEASUREMENT_DELAY_CM 14 // (cm) The distance from the filament sensor to the melting chamber
    #define FILWIDTH_ERROR_MARGIN 1.0 // (mm) If a measurement differs too much from nominal width ignore it
    #define MAX_MEASUREMENT_DELAY 20 // (bytes) Buffer size for stored measurements (1 byte per cm). Must be larger than MEASUREMENT_DELAY_CM.
    #define DEFAULT_MEASURED_FILAMENT_DIA DEFAULT_NOMINAL_FILAMENT_DIA //set measured to nominal initially
    //#define FILAMENT_LCD_DISPLAY
    //#define FILAMENT_RUNOUT_SENSOR
    //#define FILAMENT_RUNOUT_DAV_SYSTEM
    #define FIL_RUNOUT_0_LOGIC false
    #define FIL_RUNOUT_1_LOGIC false
    #define FIL_RUNOUT_2_LOGIC false
    #define FIL_RUNOUT_3_LOGIC false
    #define FIL_RUNOUT_4_LOGIC false
    #define FIL_RUNOUT_5_LOGIC false
    #define FIL_RUNOUT_0_PULLUP false
    #define FIL_RUNOUT_1_PULLUP false
    #define FIL_RUNOUT_2_PULLUP false
    #define FIL_RUNOUT_3_PULLUP false
    #define FIL_RUNOUT_4_PULLUP false
    #define FIL_RUNOUT_5_PULLUP false
    #define FILAMENT_RUNOUT_DOUBLE_CHECK 0
    #define FILAMENT_RUNOUT_SCRIPT "M600"
    //#define POWER_CONSUMPTION
    #define POWER_VOLTAGE 12.00 //(V) The power supply OUT voltage
    #define POWER_SENSITIVITY 0.066 //(V/A) How much increase V for 1A of increase
    #define POWER_OFFSET 0.005 //(A) Help to get 0A when no load is connected.
    #define POWER_ZERO 2.500 //(V) The /\V coming out from the sensor when no current flow.
    #define POWER_ERROR 0.0 //(%) Ammortize measure error.
    #define POWER_EFFICIENCY 100.0 //(%) The power efficency of the power supply
    //#define POWER_CONSUMPTION_LCD_DISPLAY
    //#define FLOWMETER_SENSOR
    #define FLOWMETER_MAXFLOW 6.0 // Liters per minute max
    #define FLOWMETER_MAXFREQ 55 // frequency of pulses at max flow
    //#define MINFLOW_PROTECTION 4
    //#define DOOR_OPEN
    #define DOOR_OPEN_LOGIC false
    #define PULLUP_DOOR_OPEN true
    //#define POWER_CHECK
    #define POWER_CHECK_LOGIC false
    #define PULLUP_POWER_CHECK true
    //#define PCF8574_EXPANSION_IO
    #define PCF8574_ADDRESS 0x39
    #define EEPROM_SETTINGS
    #define EEPROM_CHITCHAT
    //#define EEPROM_I2C
    //#define EEPROM_SPI
    //#define EEPROM_SD
    //#define EEPROM_FLASH
    //#define DISABLE_M503
    #define SDSUPPORT
    //#define USB_FLASH_DRIVE_SUPPORT
    #define SD_HALF_SPEED
    //#define SD_QUARTER_SPEED
    //#define SD_EIGHTH_SPEED
    //#define SD_SIXTEENTH_SPEED
    //#define SD_CHECK_AND_RETRY
    //#define SD_EXTENDED_DIR
    //#define SD_DISABLED_DETECT
    //#define SD_DETECT_INVERTED
    #define SD_FINISHED_STEPPERRELEASE true // if sd support and the file is finished: disable steppers?
    #define SD_FINISHED_RELEASECOMMAND "M84 X Y Z E" // You might want to keep the z enabled so your bed stays in place.
    //#define MENU_ADDAUTOSTART
    //#define SCROLL_LONG_FILENAMES
    //#define SDCARD_SORT_ALPHA
    #define SDSORT_LIMIT 40 // Maximum number of sorted items (10-256). Costs 27 bytes each.
    #define FOLDER_SORTING -1 // -1=above 0=none 1=below
    #define SDSORT_GCODE false // Allow turning sorting on/off with LCD and M36 g-code.
    #define SDSORT_USES_RAM false // Pre-allocate a static array for faster pre-sorting.
    #define SDSORT_USES_STACK false // Prefer the stack for pre-sorting to give back some SRAM. (Negated by next 2 options.)
    #define SDSORT_CACHE_NAMES false // Keep sorted items in RAM longer for speedy performance. Most expensive option.
    #define SDSORT_DYNAMIC_RAM false // Use dynamic allocation (within SD menus). Least expensive option. Set SDSORT_LIMIT before use!
    #define SDSORT_CACHE_VFATS 2 // Maximum number of 13-byte VFAT entries to use for sorting.
    //#define SD_RESTART_FILE // Uncomment to enable
    #define SD_RESTART_FILE_SAVE_TIME 1
    #define LCD_LANGUAGE ru
    #define DISPLAY_CHARSET_HD44780 JAPANESE
    #define LCD_INFO_SCREEN_STYLE 0
    //#define REPRAP_DISCOUNT_SMART_CONTROLLER
    //#define ULTIMAKERCONTROLLER
    //#define ULTIPANEL
    //#define PANEL_ONE
    //#define G3D_PANEL
    //#define RIGIDBOT_PANEL
    //#define MAKEBOARD_MINI_2_LINE_DISPLAY_1602
    //#define ZONESTAR_LCD // Requires ADC_KEYPAD_PIN to be assigned to an analog pin.
    //#define ULTRA_LCD
    //#define RA_CONTROL_PANEL
    //#define LCD_SAINSMART_I2C_1602
    //#define LCD_SAINSMART_I2C_2004
    //#define LCM1602
    //#define LCD_I2C_PANELOLU2
    //#define LCD_I2C_VIKI
    //#define RADDS_DISPLAY
    //#define SAV_3DLCD
    #define REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER
    //#define REPRAPWORLD_GRAPHICAL_LCD
    //#define VIKI2
    //#define miniVIKI
    //#define MINIPANEL
    //#define MAKRPANEL
    //#define ELB_FULL_GRAPHIC_CONTROLLER
    //#define BQ_LCD_SMART_CONTROLLER
    //#define WANHAO_D6_OLED
    //#define CARTESIO_UI
    //#define LCD_FOR_MELZI
    //#define U8GLIB_SSD1306
    //#define SAV_3DGLCD
    //#define U8GLIB_SSD1306
    //#define U8GLIB_SH1106
    //#define ULTI_CONTROLLER
    //#define OLED_PANEL_TINYBOY2
    //#define MKS_MINI_12864
    //#define CR10_STOCKDISPLAY
    //#define ANET_FULL_GRAPHICS_LCD // Anet 128x64 full graphics lcd with rotary encoder as used on Anet A6
    //#define MKS_12864OLED // Uses the SH1106 controller (default)
    //#define MKS_12864OLED_SSD1306 // Uses the SSD1306 controller
    //#define AZSMZ_12864
    //#define SILVER_GATE_GLCD_CONTROLLER
    //#define NEXTION
    #define NEXTION_SERIAL 1
    #define NEXTION_MAX_MESSAGE_LENGTH 30
    //#define NEXTION_GFX
    #define NEXTION_FIRMWARE_FILE "mk4duo.tft"
    #define SHOW_BOOTSCREEN
    #define STRING_SPLASH_LINE1 "v" SHORT_BUILD_VERSION // will be shown during bootup in line 1
    #define STRING_SPLASH_LINE2 STRING_DISTRIBUTION_DATE // will be shown during bootup in line 2
    #define BOOTSCREEN_TIMEOUT 2500
    //#define SHOW_CUSTOM_BOOTSCREEN
    //#define CUSTOM_STATUS_SCREEN_IMAGE
    #define XYZ_HOLLOW_FRAME
    #define MENU_HOLLOW_FRAME
    //#define USE_BIG_EDIT_FONT
    //#define USE_SMALL_INFOFONT
    //#define DOGM_SPI_DELAY_US 5
    //#define OVERLAY_GFX_REVERSE
    //#define STATUS_COMBINE_HEATERS // Use combined heater images instead of separate ones
    //#define STATUS_HOTEND_NUMBERLESS // Use plain hotend icons instead of numbered ones (with 2+ hotends)
    #define STATUS_HOTEND_INVERTED // Show solid nozzle bitmaps when heating (Requires STATUS_HOTEND_ANIM)
    #define STATUS_HOTEND_ANIM // Use a second bitmap to indicate hotend heating
    #define STATUS_BED_ANIM // Use a second bitmap to indicate bed heating
    //#define STATUS_ALT_BED_BITMAP // Use the alternative bed bitmap
    //#define STATUS_ALT_FAN_BITMAP // Use the alternative fan bitmap
    //#define STATUS_FAN_FRAMES 3 // :[0,1,2,3,4] Number of fan animation frames
    //#define STATUS_HEAT_PERCENT // Show heating in a progress bar
    //#define NO_LCD_MENUS
    //#define SLIM_LCD_MENUS
    #define ENCODER_PULSES_PER_STEP 5
    #define ENCODER_STEPS_PER_MENU_ITEM 1
    //#define LCD_SCREEN_ROT_90 // Rotate screen orientation for graphics display by 90 degree clockwise
    //#define LCD_SCREEN_ROT_180 // Rotate screen orientation for graphics display by 180 degree clockwise
    //#define LCD_SCREEN_ROT_270 // Rotate screen orientation for graphics display by 270 degree clockwise
    //#define INVERT_CLICK_BUTTON // Option for invert encoder button logic
    //#define INVERT_BACK_BUTTON // Option for invert back button logic if avaible
    //#define REVERSE_ENCODER_DIRECTION
    //#define REVERSE_MENU_DIRECTION
    #define ENCODER_RATE_MULTIPLIER // If defined, certain menu edit operations automatically multiply the steps when the encoder is moved quickly
    #define ENCODER_10X_STEPS_PER_SEC 75 // If the encoder steps per sec exceeds this value, multiply steps moved x10 to quickly advance the value
    #define ENCODER_100X_STEPS_PER_SEC 160 // If the encoder steps per sec exceeds this value, multiply steps moved x100 to really quickly advance the value
    #define ULTIPANEL_FEEDMULTIPLY
    //#define SPEAKER
    //#define LCD_FEEDBACK_FREQUENCY_DURATION_MS 2
    //#define LCD_FEEDBACK_FREQUENCY_HZ 5000
    //#define UI_VOLTAGE_LEVEL 0 // 3.3 V
    #define UI_VOLTAGE_LEVEL 1 // 5 V
    #define LCD_INFO_MENU
    //#define STATUS_MESSAGE_SCROLLING
    //#define LCD_DECIMAL_SMALL_XY
    //#define LCD_TIMEOUT_TO_STATUS 15000
    //#define LED_CONTROL_MENU
    //#define LED_COLOR_PRESETS // Enable the Preset Color menu option
    //#define LED_USER_PRESET_STARTUP // Have the printer display the user preset color on startup
    #define LED_USER_PRESET_RED 255 // User defined RED value
    #define LED_USER_PRESET_GREEN 255 // User defined GREEN value
    #define LED_USER_PRESET_BLUE 255 // User defined BLUE value
    #define LED_USER_PRESET_WHITE 255 // User defined WHITE value
    #define LED_USER_PRESET_BRIGHTNESS 255 // User defined intensity
    //#define LCD_PROGRESS_BAR
    #define PROGRESS_BAR_BAR_TIME 5000
    #define PROGRESS_BAR_MSG_TIME 1500
    #define PROGRESS_MSG_EXPIRE 0
    //#define PROGRESS_MSG_ONCE
    //#define LCD_PROGRESS_BAR_TEST
    //#define PHOTOGRAPH
    //#define CHDK
    #define CHDK_DELAY 50 //How long in ms the pin should stay HIGH before going LOW again
    //#define RFID_MODULE
    #define RFID_SERIAL 1
    //#define BLINKM
    //#define RGB_LED
    //#define RGBW_LED
    //#define PCA9632
    //#define NEOPIXEL_LED
    #define NEOPIXEL_TYPE NEO_GRB
    #define NEOPIXEL_PIXELS 16
    #define NEOPIXEL_IS_SEQUENTIAL
    #define NEOPIXEL_BRIGHTNESS 127
    //#define NEOPIXEL_STARTUP_TEST
    //#define PRINTER_EVENT_LEDS
    //#define LASER
    //#define CNCROUTER
    //#define CASE_LIGHT
    #define INVERT_CASE_LIGHT false
    #define CASE_LIGHT_DEFAULT_ON false
    #define CASE_LIGHT_DEFAULT_BRIGHTNESS 255
    //#define CASE_LIGHT_USE_NEOPIXEL
    #define CASE_LIGHT_NEOPIXEL_COLOR { 255, 255, 255, 255 }
    //#define DISABLE_DOUBLE_QUAD_STEPPING
    #define JUNCTION_DEVIATION
    #define JUNCTION_DEVIATION_MM 0.02
    #define BEZIER_JERK_CONTROL
    #define MINIMUM_STEPPER_PULSE 1
    #define MAXIMUM_STEPPER_RATE 130000
    #define DIRECTION_STEPPER_DELAY 500
    #define ADAPTIVE_STEP_SMOOTHING
    #define X_MICROSTEPS 128
    #define X2_MICROSTEPS 16
    #define Y_MICROSTEPS 128
    #define Y2_MICROSTEPS 16
    #define Z_MICROSTEPS 32
    #define Z2_MICROSTEPS 16
    #define Z3_MICROSTEPS 16
    #define E0_MICROSTEPS 16
    #define E1_MICROSTEPS 16
    #define E2_MICROSTEPS 16
    #define E3_MICROSTEPS 16
    #define E4_MICROSTEPS 16
    #define E5_MICROSTEPS 16
    #define X_CURRENT 800
    #define X2_CURRENT 800
    #define Y_CURRENT 800
    #define Y2_CURRENT 800
    #define Z_CURRENT 800
    #define Z2_CURRENT 800
    #define Z3_CURRENT 800
    #define E0_CURRENT 800
    #define E1_CURRENT 800
    #define E2_CURRENT 800
    #define E3_CURRENT 800
    #define E4_CURRENT 800
    #define E5_CURRENT 800
    #define DIGIPOT_MOTOR_CURRENT {135, 135, 135, 135, 135}
    #define PWM_MOTOR_CURRENT {1200, 1000, 1000}
    //#define DIGIPOT_I2C
    #define DIGIPOT_I2C_NUM_CHANNELS 8
    #define DIGIPOT_I2C_MOTOR_CURRENTS {1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0}
    #define BLOCK_BUFFER_SIZE 32
    #define MAX_CMD_SIZE 96
    #define BUFSIZE 8
    #define TX_BUFFER_SIZE 0
    #define RX_BUFFER_SIZE 128
    //#define SERIAL_XON_XOFF
    //#define SERIAL_STATS_MAX_RX_QUEUED
    //#define SERIAL_STATS_DROPPED_RX
    #define NUM_POSITON_SLOTS 2
    #define DEFAULT_MIN_SEGMENT_TIME 20000
    #define ARC_SUPPORT
    #define MM_PER_ARC_SEGMENT 1 // Length of each arc segment
    #define N_ARC_CORRECTION 25 // Number of intertpolated segments between corrections
    //#define ARC_P_CIRCLES // Enable the 'P' parameter to specify complete circles
    //#define CNC_WORKSPACE_PLANES // Allow G2/G3 to operate in XY, ZX, or YZ planes
    #define MIN_STEPS_PER_SEGMENT 6
    //#define M100_FREE_MEMORY_WATCHER
    #define M100_FREE_MEMORY_DUMPER
    #define M100_FREE_MEMORY_CORRUPTOR
    //#define NOZZLE_CLEAN_FEATURE
    #define NOZZLE_CLEAN_STROKES 12
    #define NOZZLE_CLEAN_TRIANGLES 3
    #define NOZZLE_CLEAN_START_POINT {30,30,1}
    #define NOZZLE_CLEAN_END_POINT {100,60,1}
    #define NOZZLE_CLEAN_CIRCLE_RADIUS 6.5
    #define NOZZLE_CLEAN_CIRCLE_FN 10
    #define NOZZLE_CLEAN_CIRCLE_MIDDLE NOZZLE_CLEAN_START_POINT
    #define NOZZLE_CLEAN_GOBACK
    //#define NOZZLE_PARK_FEATURE
    #define NOZZLE_PARK_POINT {10,10,20}
    #define NOZZLE_PARK_XY_FEEDRATE 100
    #define NOZZLE_PARK_Z_FEEDRATE 5
    //#define ADVANCED_PAUSE_FEATURE
    #define PAUSE_PARK_RETRACT_FEEDRATE 20
    #define PAUSE_PARK_RETRACT_LENGTH 5
    #define PAUSE_PARK_UNLOAD_FEEDRATE 50
    #define PAUSE_PARK_UNLOAD_LENGTH 100
    #define PAUSE_PARK_SLOW_LOAD_FEEDRATE 6
    #define PAUSE_PARK_SLOW_LOAD_LENGTH 5
    #define PAUSE_PARK_FAST_LOAD_FEEDRATE 50
    #define PAUSE_PARK_FAST_LOAD_LENGTH 100
    #define PAUSE_PARK_EXTRUDE_FEEDRATE 5
    #define PAUSE_PARK_EXTRUDE_LENGTH 50
    #define FILAMENT_UNLOAD_RETRACT_LENGTH 10
    #define FILAMENT_UNLOAD_DELAY 5000
    #define FILAMENT_UNLOAD_PURGE_LENGTH 8
    #define PAUSE_PARK_NOZZLE_TIMEOUT 45
    #define PAUSE_PARK_PRINTER_OFF 5
    #define PAUSE_PARK_NUMBER_OF_ALERT_BEEPS 5
    #define PAUSE_PARK_NO_STEPPER_TIMEOUT // Enable for XYZ steppers to stay powered on during filament change.
    //#define PARK_HEAD_ON_PAUSE // Park the nozzle during pause and filament change.
    //#define HOME_BEFORE_FILAMENT_CHANGE // Ensure homing has been completed prior to parking for filament change
    //#define FILAMENT_LOAD_UNLOAD_GCODES // Add M701/M702 Load/Unload G-codes, plus Load/Unload in the LCD Prepare menu.
    //#define FILAMENT_UNLOAD_ALL_EXTRUDERS // Allow M702 to unload all extruders above a minimum target temp (as set by M302)
    //#define INCH_MODE_SUPPORT
    //#define JSON_OUTPUT
    //#define SCAD_MESH_OUTPUT
    //#define PINS_DEBUGGING
    //#define DEBUG_FEATURE
    //#define EXTENDED_CAPABILITIES_REPORT
    //#define USE_WATCHDOG
    //#define WATCHDOG_RESET_MANUAL
    //#define START_GCODE
    #define START_PRINTING_SCRIPT "G28\nG1 Z10 F8000"
    //#define STOP_GCODE
    #define STOP_PRINTING_SCRIPT "G28\nM107\nM104 T0 S0\nM140 S0\nM84\nM81"
    #define PROPORTIONAL_FONT_RATIO 1
    //#define CUSTOM_USER_MENUS
    #define USER_SCRIPT_DONE "M117 User Script Done"
    #define USER_DESC_1 "Home & ABL"
    #define USER_GCODE_1 "G28\nG29"
    #define USER_DESC_2 "Preheat for " PREHEAT_1_LABEL
    #define USER_GCODE_2 "M140 S" STRINGIFY(PREHEAT_1_TEMP_BED) "\nM104 S" STRINGIFY(PREHEAT_1_TEMP_HOTEND)
    #define USER_DESC_3 "Preheat for " PREHEAT_2_LABEL
    #define USER_GCODE_3 "M140 S" STRINGIFY(PREHEAT_2_TEMP_BED) "\nM104 S" STRINGIFY(PREHEAT_2_TEMP_HOTEND)
    #define USER_DESC_4 "Heat Bed/Home/Level"
    #define USER_GCODE_4 "M140 S" STRINGIFY(PREHEAT_2_TEMP_BED) "\nG28\nG29"
    #define USER_DESC_5 "Home & Info"
    #define USER_GCODE_5 "G28\nM503"

/********************************

  • Configuration_Motor_Driver.h *
    ********************************/
    #define X_SENSE_RESISTOR 91
    #define X2_SENSE_RESISTOR 91
    #define Y_SENSE_RESISTOR 91
    #define Y2_SENSE_RESISTOR 91
    #define Z_SENSE_RESISTOR 91
    #define Z2_SENSE_RESISTOR 91
    #define Z3_SENSE_RESISTOR 91
    #define E0_SENSE_RESISTOR 91
    #define E1_SENSE_RESISTOR 91
    #define E2_SENSE_RESISTOR 91
    #define E3_SENSE_RESISTOR 91
    #define E4_SENSE_RESISTOR 91
    #define E5_SENSE_RESISTOR 91
    #define R_SENSE 0.11 // R_sense resistor
    #define INTERPOLATE true // Interpolate X/Y/Z_MICROSTEPS to 256
    //#define SOFT_SPI_TMC2130
    //#define SENSORLESS_HOMING
    #define X_STALL_SENSITIVITY 8
    #define Y_STALL_SENSITIVITY 8
    #define Z_STALL_SENSITIVITY 8
    //#define TMC_DEBUG
    //#define TMC_Z_CALIBRATION
    #define CALIBRATION_CURRENT 250
    #define CALIBRATION_EXTRA_HEIGHT 10
    #define X_STEALTHCHOP false
    #define X2_STEALTHCHOP false
    #define Y_STEALTHCHOP false
    #define Y2_STEALTHCHOP false
    #define Z_STEALTHCHOP false
    #define Z2_STEALTHCHOP false
    #define Z3_STEALTHCHOP false
    #define E0_STEALTHCHOP false
    #define E1_STEALTHCHOP false
    #define E2_STEALTHCHOP false
    #define E3_STEALTHCHOP false
    #define E4_STEALTHCHOP false
    #define E5_STEALTHCHOP false
    #define CHOPPER_DEFAULT_12V { 3, -1, 1 }
    #define CHOPPER_DEFAULT_19V { 4, 1, 1 }
    #define CHOPPER_DEFAULT_24V { 4, 2, 1 }
    #define CHOPPER_DEFAULT_36V { 5, 2, 4 }
    #define CHOPPER_PRUSAMK3_24V { 4, 1, 4 } // Imported parameters from the official Prusa firmware for MK3 (24V)
    #define CHOPPER_MK4DUO_436 { 5, 2, 3 } // Old defaults from MK4duo v4.3.6
    #define CHOPPER_TIMING CHOPPER_DEFAULT_12V
    //#define MONITOR_DRIVER_STATUS
    //#define CURRENT_STEP_DOWN 50 // [mA]
    //#define REPORT_CURRENT_CHANGE
    //#define STOP_ON_ERROR
    //#define HYBRID_THRESHOLD
    #define X_HYBRID_THRESHOLD 100
    #define X2_HYBRID_THRESHOLD 100
    #define Y_HYBRID_THRESHOLD 100
    #define Y2_HYBRID_THRESHOLD 100
    #define Z_HYBRID_THRESHOLD 2
    #define Z2_HYBRID_THRESHOLD 2
    #define Z3_HYBRID_THRESHOLD 2
    #define E0_HYBRID_THRESHOLD 30
    #define E1_HYBRID_THRESHOLD 30
    #define E2_HYBRID_THRESHOLD 30
    #define E3_HYBRID_THRESHOLD 30
    #define E4_HYBRID_THRESHOLD 30
    #define E5_HYBRID_THRESHOLD 30
    #define TMC_ADV() { }
    //#define X_HARDWARE_SERIAL Serial1
    //#define X2_HARDWARE_SERIAL Serial1
    //#define Y_HARDWARE_SERIAL Serial1
    //#define Y2_HARDWARE_SERIAL Serial1
    //#define Z_HARDWARE_SERIAL Serial1
    //#define Z2_HARDWARE_SERIAL Serial1
    //#define Z3_HARDWARE_SERIAL Serial1
    //#define E0_HARDWARE_SERIAL Serial1
    //#define E1_HARDWARE_SERIAL Serial1
    //#define E2_HARDWARE_SERIAL Serial1
    //#define E3_HARDWARE_SERIAL Serial1
    //#define E4_HARDWARE_SERIAL Serial1
    //#define E5_HARDWARE_SERIAL Serial1
    #define X_SERIAL_TX_PIN NoPin
    #define X_SERIAL_RX_PIN NoPin
    #define X2_SERIAL_TX_PIN NoPin
    #define X2_SERIAL_RX_PIN NoPin
    #define Y_SERIAL_TX_PIN NoPin
    #define Y_SERIAL_RX_PIN NoPin
    #define Y2_SERIAL_TX_PIN NoPin
    #define Y2_SERIAL_RX_PIN NoPin
    #define Z_SERIAL_TX_PIN NoPin
    #define Z_SERIAL_RX_PIN NoPin
    #define Z2_SERIAL_TX_PIN NoPin
    #define Z2_SERIAL_RX_PIN NoPin
    #define Z3_SERIAL_TX_PIN NoPin
    #define Z3_SERIAL_RX_PIN NoPin
    #define E0_SERIAL_TX_PIN NoPin
    #define E0_SERIAL_RX_PIN NoPin
    #define E1_SERIAL_TX_PIN NoPin
    #define E1_SERIAL_RX_PIN NoPin
    #define E2_SERIAL_TX_PIN NoPin
    #define E2_SERIAL_RX_PIN NoPin
    #define E3_SERIAL_TX_PIN NoPin
    #define E3_SERIAL_RX_PIN NoPin
    #define E4_SERIAL_TX_PIN NoPin
    #define E4_SERIAL_RX_PIN NoPin
    #define E5_SERIAL_TX_PIN NoPin
    #define E5_SERIAL_RX_PIN NoPin
    #define X_K_VAL 50 // 0 - 255, Higher values, are higher power. Be careful not to go too high
    #define X_OVERCURRENT 2000 // maxc current in mA. If the current goes over this value, the driver will switch off
    #define X_STALLCURRENT 1500 // current in mA where the driver will detect a stall
    #define X2_K_VAL 50
    #define X2_OVERCURRENT 2000
    #define X2_STALLCURRENT 1500
    #define Y_K_VAL 50
    #define Y_OVERCURRENT 2000
    #define Y_STALLCURRENT 1500
    #define Y2_K_VAL 50
    #define Y2_OVERCURRENT 2000
    #define Y2_STALLCURRENT 1500
    #define Z_K_VAL 50
    #define Z_OVERCURRENT 2000
    #define Z_STALLCURRENT 1500
    #define Z2_K_VAL 50
    #define Z2_OVERCURRENT 2000
    #define Z2_STALLCURRENT 1500
    #define Z3_K_VAL 50
    #define Z3_OVERCURRENT 2000
    #define Z3_STALLCURRENT 1500
    #define E0_K_VAL 50
    #define E0_OVERCURRENT 2000
    #define E0_STALLCURRENT 1500
    #define E1_K_VAL 50
    #define E1_OVERCURRENT 2000
    #define E1_STALLCURRENT 1500
    #define E2_K_VAL 50
    #define E2_OVERCURRENT 2000
    #define E2_STALLCURRENT 1500
    #define E3_K_VAL 50
    #define E3_OVERCURRENT 2000
    #define E3_STALLCURRENT 1500
    #define E4_K_VAL 50
    #define E4_OVERCURRENT 2000
    #define E4_STALLCURRENT 1500
    #define E5_K_VAL 50
    #define E5_OVERCURRENT 2000
    #define E5_STALLCURRENT 1500

/* Below you will find the configuration string, that created with Configurator tool online marlinkimbra.it
========== Start configuration string ==========
{
"printer": "custom",
"processor": 1,
"serial": 0,
"baudrates": 250000,
"serial2": -1,
"baudrates2": 250000,
"customname": "none",
"customconfig": "default config",
"machineuuid": "00000000-0000-0000-0000-000000000000",
"killMethod": 0,
"notimeouts": 1000,
"advancedok": "0",
"emergencyparser": "0",
"fastergcodeparser": "1",
"fastergcodeexecute": "1",
"motherboards": "BOARD_RAMPS_FD_V1",
"mechanism": 1,
"power": "0",
"defaultpower": "0",
"delayafterpower": 5,
"powertimeout": 30,
"extruders": 1,
"driverextruders": 1,
"tempunitsupport": "0",
"bed": "1",
"chamber": "0",
"cooler": "0",
"dhtsupport": "0",
"tempsensor0": "2",
"tempsensor1": "0",
"tempsensor2": "0",
"tempsensor3": "0",
"tempsensorbed": "2",
"tempsensorchamber": "0",
"tempsensorcooler": "0",
"seriesrs": 4700,
"t9name": "User sensor",
"t9r25": 100000,
"t9betak": 4036,
"ad595offset": 0,
"ad595gain": 1,
"dummy998": 25,
"dummy999": 25,
"maxtemp0": 275,
"maxtemp1": 275,
"maxtemp2": 275,
"maxtemp3": 275,
"maxtempbed": 150,
"maxtempchamber": 150,
"maxtempcooler": 150,
"mintemp0": 5,
"mintemp1": 5,
"mintemp2": 5,
"mintemp3": 5,
"mintempbed": 5,
"mintempchamber": 5,
"mintempcooler": 5,
"preheat1label": "PLA",
"preheat1hotendtemp": 190,
"preheat1bedtemp": 60,
"preheat1fanspeed": 255,
"preheat2label": "ABS",
"preheat2hotendtemp": 240,
"preheat2bedtemp": 100,
"preheat2fanspeed": 255,
"preheat3label": "GUM",
"preheat3hotendtemp": 230,
"preheat3bedtemp": 60,
"preheat3fanspeed": 255,
"autotemp": "1",
"autotempoldweight": 0.98,
"heaterpwmspeed": 0,
"pidtemp": "1",
"pidmax": 255,
"piddrivemin": 40,
"piddrivemax": 255,
"pidfunctionalrange": 20,
"pidautotunemenu": "1",
"pidextrusionrate": "0",
"lpqmaxlen": 50,
"pidkp0": 41.51,
"pidki0": 7.28,
"pidkd0": 59.17,
"pidkc0": 100,
"pidkp1": 41.51,
"pidki1": 7.28,
"pidkd1": 59.17,
"pidkc1": 100,
"pidkp2": 41.51,
"pidki2": 7.28,
"pidkd2": 59.17,
"pidkc2": 100,
"pidkp3": 41.51,
"pidki3": 7.28,
"pidkd3": 59.17,
"pidkc3": 100,
"pidbedtemp": "1",
"maxbedpower": 255,
"pidbedkp": 10,
"pidbedki": 1,
"pidbedkd": 305,
"pidchambertemp": "0",
"maxchamberpower": 255,
"pidchamberkp": 10,
"pidchamberki": 1,
"pidchamberkd": 305,
"pidcoolertemp": "0",
"fastpwmcooler": "0",
"maxcoolerpower": 255,
"pidcoolerkp": 10,
"pidcoolerki": 1,
"pidcoolerkd": 305,
"invertedheaterpins": "1",
"invertedbedpin": "1",
"invertedchamberpin": "0",
"invertedcoolerpin": "0",
"thermalprotectionhotend": "0",
"thermalprotectionbed": "0",
"thermalprotectionchamber": "0",
"thermalprotectioncooler": "0",
"thermalprotectionperiod": 40,
"thermalprotectionhysteresis": 4,
"watchtempperiod": 20,
"watchtempincrease": 2,
"watchbedtempperiod": 60,
"watchbedtempincrease": 2,
"watchchambertempperiod": 60,
"watchchambertempincrease": 2,
"watchcoolertempperiod": 60,
"watchcoolertempincrease": 2,
"uiprintername": "MaKe3D",
"endstopinterrupt": "0",
"Xminendstop": "0",
"Xmaxendstop": "0",
"Yminendstop": "0",
"Ymaxendstop": "0",
"Zminendstop": "0",
"Zmaxendstop": "0",
"X2minendstop": "0",
"X2maxendstop": "0",
"Y2minendstop": "0",
"Y2maxendstop": "0",
"Z2minendstop": "0",
"Z2maxendstop": "0",
"Z3minendstop": "0",
"Z3maxendstop": "0",
"Zprobeendstop": "0",
"Xhoming": 0,
"Yhoming": 0,
"Zhoming": 0,
"Ehoming": 0,
"Xinvertenable": 0,
"Yinvertenable": 0,
"Zinvertenable": 0,
"Einvertenable": 0,
"Xinvertstep": "0",
"Yinvertstep": "0",
"Zinvertstep": "0",
"Einvertstep": "0",
"Xinvertdir": "0",
"Yinvertdir": "0",
"Zinvertdir": "0",
"E0invertdir": "0",
"E1invertdir": "0",
"E2invertdir": "0",
"E3invertdir": "0",
"E4invertdir": "0",
"E5invertdir": "0",
"disableX": 0,
"disableY": 0,
"disableZ": 0,
"disableE": 0,
"Xmaxpos": 200,
"Xminpos": 0,
"Ymaxpos": 200,
"Yminpos": 0,
"Zmaxpos": 200,
"Zminpos": 0,
"Zsafehoming": "1",
"ZsafehomingX": 10,
"ZsafehomingY": 10,
"Zminheightbeforehoming": 0,
"Zprobetype": 0,
"Zprobesledoffset": 5,
"Xprobeoffset": 0,
"Yprobeoffset": 0,
"Zprobeoffset": -1,
"xyprobespeed": 8000,
"zprobespeedfast": 1000,
"zprobespeedslow": 500,
"zprobingrepeat": "0",
"Zproberepetitions": 1,
"Zraiseprobedeploystow": 15,
"Zraisebetweenprobe": 10,
"Zraiseafterprobe": 0,
"Zprobelowpoint": -2,
"lcdbedlevel": "0",
"lcdzstep": 0.025,
"lcdprobezrange": 4,
"levelingfadeheight": "0",
"bedlevel": 0,
"meshinset": 10,
"meshg28rest": "0",
"maxgridpointX": 3,
"maxgridpointY": 3,
"leftprobe": 20,
"rightprobe": 180,
"backprobe": 180,
"frontprobe": 20,
"Xprobe1": 15,
"Yprobe1": 180,
"Xprobe2": 15,
"Yprobe2": 15,
"Xprobe3": 180,
"Yprobe3": 15,
"manualhomepos": "0",
"bedcenter00": "0",
"Xhomepos": 0,
"Yhomepos": 0,
"Zhomepos": 0,
"Xstepspermm": 640,
"Ystepspermm": 640,
"Zstepspermm": 400,
"E0stepspermm": 150,
"E1stepspermm": 625,
"E2stepspermm": 625,
"E3stepspermm": 625,
"E4stepspermm": 625,
"E5stepspermm": 625,
"Xmaxspeed": 300,
"Ymaxspeed": 300,
"Zmaxspeed": 5,
"E0maxspeed": 100,
"E1maxspeed": 100,
"E2maxspeed": 100,
"E3maxspeed": 100,
"E4maxspeed": 100,
"E5maxspeed": 100,
"Xmanualspeed": 100,
"Ymanualspeed": 100,
"Zmanualspeed": 5,
"Emanualspeed": 10,
"minimumspeed": 0,
"minimumtravelspeed": 0,
"minimumplannerspeed": 0.05,
"Xmaxacceleration": 3000,
"Ymaxacceleration": 3000,
"Zmaxacceleration": 50,
"E0maxacceleration": 3000,
"E1maxacceleration": 3000,
"E2maxacceleration": 3000,
"E3maxacceleration": 3000,
"E4maxacceleration": 3000,
"E5maxacceleration": 3000,
"E0retractacceleration": 10000,
"E1retractacceleration": 10000,
"E2retractacceleration": 10000,
"E3retractacceleration": 10000,
"E4retractacceleration": 10000,
"E5retractacceleration": 10000,
"defaultacceleration": 3000,
"defaulttravelacceleration": 3000,
"maxXjerk": 10,
"maxYjerk": 10,
"maxZjerk": 0.4,
"maxE0jerk": 5,
"maxE1jerk": 5,
"maxE2jerk": 5,
"maxE3jerk": 5,
"maxE4jerk": 5,
"maxE5jerk": 5,
"Xhomingspeed": 100,
"Yhomingspeed": 100,
"Zhomingspeed": 5,
"XbumpMM": 5,
"YbumpMM": 5,
"ZbumpMM": 2,
"Xbumpdivisor": 5,
"Ybumpdivisor": 5,
"Zbumpdivisor": 2,
"hotendoffsetXE1": 0,
"hotendoffsetXE2": 0,
"hotendoffsetXE3": 0,
"hotendoffsetYE1": 0,
"hotendoffsetYE2": 0,
"hotendoffsetYE3": 0,
"hotendoffsetZE1": 0,
"hotendoffsetZE2": 0,
"hotendoffsetZE3": 0,
"hysteresis": "0",
"hysteresisXmm": 0,
"hysteresisYmm": 0,
"hysteresisZmm": 0,
"hysteresiscorrection": 1,
"deltasegmentpersecond": 200,
"deltasegmentperline": 20,
"deltadiagonalrod": 220,
"deltasmoothrodoffset": 145,
"deltaeffectoroffset": 20,
"deltacarriageoffset": 20,
"deltaprinterradius": 70,
"deltaheight": 210,
"towerAendstop": 0,
"towerBendstop": 0,
"towerCendstop": 0,
"towerAangle": 0,
"towerBangle": 0,
"towerCangle": 0,
"towerAradius": 0,
"towerBradius": 0,
"towerCradius": 0,
"towerAdiagonalrod": 0,
"towerBdiagonalrod": 0,
"towerCdiagonalrod": 0,
"deltaautoprecision": 0.1,
"deltaautogrid": 20,
"deltaXdeploystart": 0,
"deltaYdeploystart": 0,
"deltaZdeploystart": 30,
"deltaXdeployend": 0,
"deltaYdeployend": 0,
"deltaZdeployend": 0,
"deltaXretractstart": 0,
"deltaYretractstart": 0,
"deltaZretractstart": 30,
"deltaXretractend": 0,
"deltaYretractend": 0,
"deltaZretractend": 0,
"deltaautocalibration": 0,
"deltahomesafezone": "1",
"deltahomeonpower": "0",
"disableddoublequadstepping": "0",
"junctiondeviation": "1",
"junctiondeviationfactor": 0.02,
"bezierjerk": "1",
"stepperpulse": 1,
"stepperrate": 130000,
"directiondelay": 500,
"stepsmoothing": "1",
"Xtwostepper": "0",
"X2vsXdir": "0",
"Xtwoendstop": "0",
"Ytwostepper": "0",
"Y2vsYdir": "0",
"Ytwoendstop": "0",
"Ztwostepper": "0",
"Z2vsZdir": "0",
"Ztwoendstop": "0",
"Zthreestepper": "0",
"Z3vsZdir": "0",
"Zthreeendstop": "0",
"extencoder": "0",
"extencodererrorstep": 500,
"extencoderminstep": 10,
"Xmicrostep": 128,
"Ymicrostep": 128,
"Zmicrostep": 32,
"X2microstep": 16,
"Y2microstep": 16,
"Z2microstep": 16,
"Z3microstep": 16,
"E0microstep": 16,
"E1microstep": 16,
"E2microstep": 16,
"E3microstep": 16,
"E4microstep": 16,
"E5microstep": 16,
"Xcurrent": 800,
"Ycurrent": 800,
"Zcurrent": 800,
"X2current": 800,
"Y2current": 800,
"Z2current": 800,
"Z3current": 800,
"E0current": 800,
"E1current": 800,
"E2current": 800,
"E3current": 800,
"E4current": 800,
"E5current": 800,
"Xdrivertype": "LV8729",
"Ydrivertype": "LV8729",
"Zdrivertype": "DRV8825",
"X2drivertype": "A4988",
"Y2drivertype": "A4988",
"Z2drivertype": "A4988",
"Z3drivertype": "A4988",
"E0drivertype": "DRV8825",
"E1drivertype": "A4988",
"E2drivertype": "A4988",
"E3drivertype": "A4988",
"E4drivertype": "A4988",
"E5drivertype": "A4988",
"fanpwmspeed": 0,
"fanpwmfreq": 250,
"fankickstarttime": 0,
"fanminpwm": 0,
"fanmaxpwm": 255,
"autofan0": -1,
"autofan1": 0,
"autofan2": -1,
"autofan3": -1,
"autofan4": -1,
"autofan5": -1,
"Ecoolertemp": 50,
"Ecoolerspeed": 255,
"Ecoolerminspeed": 0,
"controllerfansec": 60,
"controllerfanspeed": 255,
"controllerfanminspeed": 0,
"defaultfilamentdia": 1.75,
"dangerousextrude": "1",
"extrudemintemp": 170,
"lengthextrude": "1",
"extrudemaxlenght": 400,
"singlenozzle": "0",
"baricuda": "0",
"colormixingextruder": "0",
"mixingsteppers": "2",
"virtualtools": 16,
"mkr4": "0",
"invertrelepin": "0",
"E0E1pin": 5,
"E0E2pin": 5,
"E1E3pin": 6,
"mkr6": "0",
"mkr12": "0",
"EX1pin": -1,
"EX2pin": -1,
"dondolo": "0",
"dondolodualmotor": "0",
"dondoloservo": 0,
"dondoloservoe0": 120,
"dondoloservoe1": 10,
"dondolodelay": 1000,
"workspace": "0",
"softwareminendstop": "1",
"softwaremaxendstop": "1",
"endstoponlyforhome": "1",
"abortendstophit": "0",
"abortendstophitinit": "1",
"servos": "0",
"numservos": 0,
"Zservo": "0",
"angleextendservosZ": 90,
"angleretractservosZ": 0,
"servodeactivate": "0",
"servodeactivatedelay": 300,
"quickhome": "1",
"homeYbeforeX": "0",
"homeXYbeforeZ": "0",
"babystepping": "1",
"babysteppingXY": "0",
"babysteppingZprobe": "0",
"babysteppingdoubleclick": "1",
"filamentsensor": "0",
"filamentsensorextruder": 0,
"filamentsensormaxdia": 2,
"filamentsensormindia": 1.35,
"filamentsensordia": 1.75,
"filamentsensorlcd": "0",
"filamentrunout": "0",
"filamentrunoutdav": "0",
"filamentrunoutpininverting": "0",
"filamentrunoutpullup": "1",
"filamentrunoutscript": "M600",
"powerconsumption": "0",
"dooropen": "0",
"doorendstop": "0",
"powercheck": "0",
"powercheckendstop": "0",
"caselight": "0",
"caselightinvert": "0",
"caselightdefault": "0",
"caselightbrightness": 255,
"eeprom": "1",
"eepromsd": "0",
"eepromchitchat": "1",
"sdsupport": "1",
"sdspeed": 1,
"sddisableddetect": "0",
"sddetectinverted": "0",
"sdrestart": "0",
"sdrestarttime": 1,
"lcdlanguages": "ru",
"encoderpulsesstep": 5,
"encoderstepmenu": 1,
"invertclickbutton": "0",
"invertbackbutton": "0",
"invertrotaryswitch": 0,
"invertmenudirection": "0",
"displays": 5,
"nextion_model": 8,
"nextion_port": 1,
"nextionGFX": "0",
"lcdprogressbar": 0,
"lcdprogressbarbartime": 3,
"lcdprogressbarmsgtime": 1,
"lcdprogressbarmsgexpire": 0,
"laserbeam": "0",
"lasercontrol": 1,
"laserfocus": "0",
"laserraster": "0",
"rfidmodule": "0",
"rfidserial": 1,
"rgbled": "0",
"rgbwled": "0",
"pca9632": "0",
"neopixelled": "0",
"neopixeltype": "NEO_GRB",
"neopixelpixels": 16,
"eventled": "0",
"jsonoutput": "0",
"testmode": "0",
"inchmodesupport": "0",
"blockbuffersize": 32,
"bufsize": 8,
"nozzlecleanfeature": "0",
"nozzlecleanstrokes": 12,
"nozzlecleantriangle": 3,
"nozzlecleanstart_x": 30,
"nozzlecleanstart_y": 30,
"nozzlecleanstart_z": 1,
"nozzlecleanend_x": 100,
"nozzlecleanend_y": 60,
"nozzlecleanend_z": 1,
"nozzlecleangoback": "1",
"nozzleparkfeature": "0",
"nozzleparkXpos": 10,
"nozzleparkYpos": 10,
"nozzleparkZpos": 20,
"nozzleparkXYfr": 100,
"nozzleparkZfr": 5,
"filamentchangeenable": "0",
"filamentchangeretract": 5,
"filamentchangeretractfr": 20,
"filamentchangeunload": 100,
"filamentchangeunloadfr": 50,
"filamentchangeslowload": 5,
"filamentchangeslowloadfr": 6,
"filamentchangefastload": 100,
"filamentchangefastloadfr": 50,
"filamentchangeextrude": 50,
"filamentchangeextrudefr": 5,
"filamentchangeunloadretract": 10,
"filamentchangeunloadretractdelay": 5000,
"filamentchangeunloadretractpurge": 8,
"filamentchangenozzletimeout": 45,
"filamentchangeprinteroff": 5,
"filamentchangenumberbeep": 5,
"filamentchangenosteppertimeout": "1",
"filamentchangeparkheadonpause": "0",
"filamentchangehomebefore": "0",
"filamentchangegcodes": "0",
"filamentchangeallextruder": "0",
"Xmotor": {
"name": "X motor",
"step": "ORIG_X_STEP_PIN",
"dir": "ORIG_X_DIR_PIN",
"enable": "ORIG_X_ENABLE_PIN"
},
"Ymotor": {
"name": "Y motor",
"step": "ORIG_Y_STEP_PIN",
"dir": "ORIG_Y_DIR_PIN",
"enable": "ORIG_Y_ENABLE_PIN"
},
"Zmotor": {
"name": "Z motor",
"step": "ORIG_Z_STEP_PIN",
"dir": "ORIG_Z_DIR_PIN",
"enable": "ORIG_Z_ENABLE_PIN"
},
"X2motor": {
"name": "Extruder 1",
"step": "ORIG_E1_STEP_PIN",
"dir": "ORIG_E1_DIR_PIN",
"enable": "ORIG_E1_ENABLE_PIN"
},
"Y2motor": {
"name": "Extruder 1",
"step": "ORIG_E1_STEP_PIN",
"dir": "ORIG_E1_DIR_PIN",
"enable": "ORIG_E1_ENABLE_PIN"
},
"Z2motor": {
"name": "Extruder 1",
"step": "ORIG_E1_STEP_PIN",
"dir": "ORIG_E1_DIR_PIN",
"enable": "ORIG_E1_ENABLE_PIN"
},
"Z3motor": {
"name": "Extruder 2",
"step": "ORIG_E2_STEP_PIN",
"dir": "ORIG_E2_DIR_PIN",
"enable": "ORIG_E2_ENABLE_PIN"
},
"E0motor": {
"name": "Extruder 0",
"step": "ORIG_E0_STEP_PIN",
"dir": "ORIG_E0_DIR_PIN",
"enable": "ORIG_E0_ENABLE_PIN"
},
"E1motor": {
"name": "Extruder 1",
"step": "ORIG_E1_STEP_PIN",
"dir": "ORIG_E1_DIR_PIN",
"enable": "ORIG_E1_ENABLE_PIN"
},
"E2motor": {
"name": "Extruder 2",
"step": "ORIG_E2_STEP_PIN",
"dir": "ORIG_E2_DIR_PIN",
"enable": "ORIG_E2_ENABLE_PIN"
},
"E3motor": {
"name": "Extruder 3",
"step": "ORIG_E3_STEP_PIN",
"dir": "ORIG_E3_DIR_PIN",
"enable": "ORIG_E3_ENABLE_PIN"
},
"E4motor": {
"name": "Extruder 4",
"step": "ORIG_E4_STEP_PIN",
"dir": "ORIG_E4_DIR_PIN",
"enable": "ORIG_E4_ENABLE_PIN"
},
"E5motor": {
"name": "Extruder 5",
"step": "ORIG_E5_STEP_PIN",
"dir": "ORIG_E5_DIR_PIN",
"enable": "ORIG_E5_ENABLE_PIN"
},
"heater0pin": "ORIG_HEATER_0_PIN",
"heater1pin": "ORIG_HEATER_1_PIN",
"heater2pin": "ORIG_HEATER_2_PIN",
"heater3pin": "ORIG_HEATER_3_PIN",
"heaterbedpin": "ORIG_HEATER_BED_PIN",
"heaterchamberpin": "NoPin",
"heatercoolerpin": "NoPin",
"temp0pin": "ORIG_TEMP_0_PIN",
"temp1pin": "ORIG_TEMP_1_PIN",
"temp2pin": "ORIG_TEMP_2_PIN",
"temp3pin": "ORIG_TEMP_3_PIN",
"tempbedpin": "ORIG_TEMP_BED_PIN",
"tempchamberpin": "NoPin",
"tempcoolerpin": "NoPin",
"Xminpin": "ORIG_X_MIN_PIN",
"Xmaxpin": "ORIG_X_MAX_PIN",
"Yminpin": "ORIG_Y_MIN_PIN",
"Ymaxpin": "ORIG_Y_MAX_PIN",
"Zminpin": "ORIG_Z_MIN_PIN",
"Zmaxpin": "ORIG_Z_MAX_PIN",
"X2minpin": "NoPin",
"X2maxpin": "NoPin",
"Y2minpin": "NoPin",
"Y2maxpin": "NoPin",
"Z2minpin": "NoPin",
"Z3minpin": "NoPin",
"Z2maxpin": "NoPin",
"Z3maxpin": "NoPin",
"Zprobepin": "NoPin",
"Xcspin": "ORIG_X_CS_PIN",
"Ycspin": "ORIG_Y_CS_PIN",
"Zcspin": "ORIG_Z_CS_PIN",
"X2cspin": "ORIG_E1_CS_PIN",
"Y2cspin": "ORIG_E1_CS_PIN",
"Z2cspin": "ORIG_E1_CS_PIN",
"Z3cspin": "ORIG_E2_CS_PIN",
"E0cspin": "ORIG_E0_CS_PIN",
"E1cspin": "ORIG_E1_CS_PIN",
"E2cspin": "ORIG_E2_CS_PIN",
"E3cspin": "ORIG_E3_CS_PIN",
"E4cspin": "ORIG_E4_CS_PIN",
"E5cspin": "ORIG_E5_CS_PIN",
"fanpin": "ORIG_FAN0_PIN",
"fan1pin": "ORIG_FAN1_PIN",
"fan2pin": "ORIG_FAN2_PIN",
"fan3pin": "ORIG_FAN3_PIN",
"fan4pin": "ORIG_FAN4_PIN",
"fan5pin": "ORIG_FAN5_PIN",
"PSONpin": "ORIG_PS_ON_PIN",
"beeperpin": "ORIG_BEEPER_PIN",
"E0encoderpin": "NoPin",
"E1encoderpin": "NoPin",
"E2encoderpin": "NoPin",
"E3encoderpin": "NoPin",
"E4encoderpin": "NoPin",
"E5encoderpin": "NoPin",
"filamentsensorpin": "NoPin",
"flowmeterpin": "NoPin",
"filrunoutdavpin": "NoPin",
"filrunoutpin": "NoPin",
"filrunoutpin1": "NoPin",
"filrunoutpin2": "NoPin",
"filrunoutpin3": "NoPin",
"filrunoutpin4": "NoPin",
"filrunoutpin5": "NoPin",
"laserpwrpin": 42,
"laserpwmpin": "ORIG_LASER_PWM_PIN",
"laserperipheralspin": "NoPin",
"laserperipheralsstatuspin": "NoPin",
"cncrouterpin": "NoPin",
"powerconsumptionpin": "NoPin",
"doorpin": "NoPin",
"powercheckpin": "NoPin",
"caselightpin": "NoPin",
"rgbledRpin": "NoPin",
"rgbledGpin": "NoPin",
"rgbledBpin": "NoPin",
"rgbledWpin": "NoPin",
"neopixelpin": "NoPin",
"dhtdatapin": "NoPin",
"tacho0pin": "NoPin",
"tacho1pin": "NoPin",
"tacho2pin": "NoPin",
"tacho3pin": "NoPin",
"tacho4pin": "NoPin",
"tacho5pin": "NoPin",
"END_DATA": 0,
"drivesystems": 0,
"npr2": "0",
"lengthyextrude": "1",
"autobed": "0",
"gridmode": "1",
"gridpoint": 2,
"Zraisebeforehoming": 10,
"Zraisebeforeprobe": 10,
"maxXYjerk": 10,
"maxEjerk": 5,
"defaultaccelleration": 2500,
"defaultretractionaccelleration": 3000,
"deltaXprobeoffset": 0,
"deltaYprobeoffset": 0,
"deltaZprobeoffset": -10,
"E0retractionspeed": 150,
"E1retractionspeed": 150,
"E2retractionspeed": 150,
"E3retractionspeed": 150,
"Xinvert": 0,
"Yinvert": 0,
"Zinvert": 0,
"E0invert": 0,
"E1invert": 0,
"E2invert": 0,
"E3invert": 0,
"E0coolerpin": -1,
"E1coolerpin": -1,
"E2coolerpin": -1,
"E3coolerpin": -1,
"laserttlpin": 44,
"filamentswitch": "0",
"pausepin": 19,
"Xservo": "-1",
"Yservo": "-1",
"angleextendservosX": 0,
"angleretractservosX": 0,
"angleextendservosY": 0,
"angleretractservosY": 0,
"uilanguages": 7,
"easyload": 0,
"bowdenlenght": 250,
"lcdpurgelenght": 10,
"lcdretractlenght": 5,
"lcdpurgefeedrate": 3,
"lcdretractfeedrate": 5,
"lcdloadfeedrate": 20,
"lcdunloadfeedrate": 20,
"plahotendtemp": 190,
"plabedtemp": 60,
"plafanspeed": 255,
"abshotendtemp": 240,
"absbedtemp": 100,
"absfanspeed": 255,
"gumhotendtemp": 230,
"gumbedtemp": 60,
"gumfanspeed": 255
}
========== End configuration string ==========
*/
`

@ZhenyaKa
Copy link
Author

ZhenyaKa commented Jan 8, 2019

Forgot to say:
Print via Octoprint:

"Error reported by printer
Your printer's firmware reported an error. Due to that OctoPrint will disconnect. Reported error: cold extrusion prevented"

@MagoKimbra
Copy link
Member

You must do the auto tune pid and save the new valor in eeprom..
Look the log when you turn on the heaters...

@ZhenyaKa
Copy link
Author

ZhenyaKa commented Jan 8, 2019

PID is ok. It turn off when printing.

I got checksum errors in LOG:

| Send: N11633 G1 X92.034 Y140.036 E2.311996
| Recv: ok
| Send: N11634 G1 X91.753 Y140.321 E2.3253
106
| Recv: ok
| Send: N11635 G1 X91.788 Y140.355 E2.3269103
| Recv: Error:checksum mismatch, Last Line: 11633
| Recv: Resend:11634
2019-01-08 15:48:11,694 - octoprint.util.comm - INFO - Got a resend request from the printer: requested line = 14437, current line = 14442
| Last lines in terminal:
| Recv: ok
| Send: N14433 G92 E0
70
| Send: N14434 G1 X135.649 Y98.781 E0.0211 F39009
| Recv: ok
| Send: N14435 G1 X135.092 Y99.225 E0.0448
100
| Recv: ok
| Send: N14436 G1 X134.503 Y99.631 E0.0685105
| Recv: ok
| Recv: ok
| Send: N14437 G1 X133.811 Y100.038 E0.0952
90
| Recv: ok
| Send: N14438 G1 X133.180 Y100.351 E0.118789
| Recv: X:136.12 Y:98.35 Z:4.440 E:0.0000
| Recv: ok
| Send: N14439 G1 X132.553 Y100.604 E0.1412
95
| Send: N14440 G1 X132.051 Y100.767 E0.158795
| Recv: ok
| Send: N14441 G1 X131.704 Y100.938 E0.1716
84
| Recv: Error:checksum mismatch, Last Line: 14436
| Recv: Resend:14437

@MagoKimbra
Copy link
Member

When printing??
Explain turn off at start or more 30 minutes?

@ZhenyaKa
Copy link
Author

ZhenyaKa commented Jan 8, 2019

About 30 mins with errors

2019-01-08 15:32:51,943 - octoprint.util.comm - INFO - Firmware didn't send an 'ok' with their resend request. That's a known bug with some firmware variants out there. Simulating an ok to continue...
2019-01-08 15:32:53,583 - octoprint.plugins.preheat - INFO - Preheating bed to 110.0
2019-01-08 15:32:53,587 - octoprint.plugins.preheat - INFO - Preheating tool0 to 250.0
2019-01-08 15:34:07,085 - octoprint.util.comm - INFO - Printer seems to support the busy protocol, will adjust timeouts and set busy interval accordingly
2019-01-08 15:34:10,861 - octoprint.util.comm - INFO - Telling the printer to set the busy interval to our "communicationBusy" timeout - 1s = 2s
2019-01-08 15:34:12,089 - octoprint.util.comm - INFO - Got a resend request from the printer: requested line = 51, current line = 53
| Last lines in terminal:
| Recv: ok
| Send: N48 M8435
| Recv: X:0.00 Y:0.00 Z:0.000 E:0.0000
| Recv: ok
| Send: N49 M105
26
| Recv: busy:processing
| Printer seems to support the busy protocol, will adjust timeouts and set busy interval accordingly
| Recv: busy:processing
| Recv: ok
| Send: N50 M113 S284
| Recv: ok T:213.23 /250 B:89.79 /110 B@:255 @:255
| Recv: wait
| Send: N51 M105
19
| Recv: ok
| Recv: echo:Unknown command: ""
| Recv: ok
| Recv: wait
| Send: N52 M10516
| Recv: Error:Line Number is not Last Line Number+1, Last Line: 50
| Recv: Resend:51
2019-01-08 15:35:35,377 - octoprint.util.comm - INFO - Changing monitoring state from "Operational" to "Printing"
2019-01-08 15:35:35,460 - octoprint.util.comm - INFO - M110 detected, setting current line number to 0
2019-01-08 15:36:07,410 - octoprint.util.comm - INFO - Communication timeout while printing, trying to trigger response from printer.
2019-01-08 15:36:19,848 - octoprint.util.comm - INFO - Communication timeout while printing, trying to trigger response from printer.
2019-01-08 15:36:32,190 - octoprint.util.comm - INFO - Communication timeout while printing, trying to trigger response from printer.
2019-01-08 15:36:44,457 - octoprint.util.comm - INFO - Communication timeout while printing, trying to trigger response from printer.
2019-01-08 15:36:56,701 - octoprint.util.comm - INFO - Communication timeout while printing, trying to trigger response from printer.
2019-01-08 15:37:08,940 - octoprint.util.comm - INFO - Communication timeout while printing, trying to trigger response from printer.
2019-01-08 15:37:21,889 - octoprint.util.comm - INFO - Communication timeout while printing, trying to trigger response from printer.
2019-01-08 15:37:27,294 - octoprint.util.comm - INFO - Communication timeout while printing, trying to trigger response from printer.
2019-01-08 15:37:34,300 - octoprint.util.comm - INFO - Communication timeout while printing, trying to trigger response from printer.
2019-01-08 15:37:37,341 - octoprint.util.comm - INFO - Got a resend request from the printer: requested line = 446, current line = 451
| Last lines in terminal:
| Recv: ok
| Send: N443 M105
36
| Recv: ok
| Send: N444 G1 X76.556 Y161.072 E0.2508109
| Recv: ok
| Send: N445 G1 X76.570 Y161.058 E0.2520
106
| Recv: X:87.89 Y:147.34 Z:0.240 E:0.0000
| Recv: ok
| Send: N446 G1 X73.396 Y157.884 E0.5207107
| Recv: ok
| Send: N447 G1 X73.712 Y157.568 E0.5475
110
| Recv: ok
| Send: N448 G1 X72.552 Y156.407 E0.645899
| Recv: ok
| Send: N449 G1 X72.659 Y156.299 E0.6549
106
| Recv: X:73.59 Y:158.93 Z:0.240 E:0.0000
| Recv: ok
| Send: N450 G1 X76.994 Y160.634 E1.0219107
| Recv: Error:checksum mismatch, Last Line: 445
| Recv: Resend:446
2019-01-08 15:37:37,348 - octoprint.util.comm - INFO - Ignoring resend request for line 446, that still originates from lines we sent before we got the first resend request
2019-01-08 15:37:37,355 - octoprint.util.comm - INFO - Ignoring resend request for line 446, that still originates from lines we sent before we got the first resend request
2019-01-08 15:39:18,532 - octoprint.util.comm - INFO - Got a resend request from the printer: requested line = 1588, current line = 1591
| Last lines in terminal:
| Send: N1582 G1 Z0.640 F300
21
| Recv: ok
| Send: N1583 G1 E0.0000 F240012
| Recv: X:127.00 Y:101.77 Z:0.440 E:0.0000
| Recv: ok
| Send: N1584 G92 E0
127
| Recv: ok
| Recv: ok
| Send: N1585 G1 X96.513 Y138.338 E1.5936 F390053
| Recv: ok
| Send: N1586 G1 X80.691 Y154.339 E2.3421
81
| Recv: ok
| Send: N1587 G1 X80.536 Y154.200 E2.349095
| Send: N1588 G1 X80.507 Y154.171 E2.3504
91
| Recv: ok
| Send: N1589 G1 X80.502 Y154.110 E2.352490
| Recv: ok
| Send: N1590 G1 X80.511 Y153.942 E2.3580
86
| Recv: Error:checksum mismatch, Last Line: 1587
| Recv: Resend:1588
2019-01-08 15:39:18,554 - octoprint.util.comm - INFO - Got a resend request from the printer: requested line = 1588, current line = 1592
| Last lines in terminal:
| Send: N1588 G1 X80.507 Y154.171 E2.350491
| Recv: ok
| Send: N1589 G1 X80.502 Y154.110 E2.3524
90
| Recv: ok
| Send: N1590 G1 X80.511 Y153.942 E2.358086
| Recv: Error:checksum mismatch, Last Line: 1587
| Recv: Resend:1588
| Recv: ok
| Recv: ok
| Send: N1588 G1 X80.507 Y154.171 E2.3504
91
| Recv: ok
| Send: N1589 G1 X80.502 Y154.110 E2.352490
| Recv: ok
| Send: N1590 G1 X80.511 Y153.942 E2.3580
86
| Recv: X:130.17 Y:104.24 Z:0.640 E:0.0000
| Recv: ok
| Recv: ok
| Recv: Error:Line Number is not Last Line Number+1, Last Line: 1587
| Send: N1591 G1 X80.545 Y153.788 E2.363385
| Recv: Resend:1588
2019-01-08 15:39:18,573 - octoprint.util.comm - INFO - Got a resend request from the printer: requested line = 1593, current line = 1593
| Last lines in terminal:
| Recv: ok
| Recv: ok
| Send: N1588 G1 X80.507 Y154.171 E2.3504
91
| Recv: ok
| Send: N1589 G1 X80.502 Y154.110 E2.352490
| Recv: ok
| Send: N1590 G1 X80.511 Y153.942 E2.3580
86
| Recv: X:130.17 Y:104.24 Z:0.640 E:0.0000
| Recv: ok
| Recv: ok
| Recv: Error:Line Number is not Last Line Number+1, Last Line: 1587
| Send: N1591 G1 X80.545 Y153.788 E2.363385
| Recv: Resend:1588
| Send: N1592 G1 X80.593 Y153.643 E2.3683
80
| Recv: ok
| Recv: ok
| Send: N1589 G1 X80.502 Y154.110 E2.352490
| Send: N1590 G1 X80.511 Y153.942 E2.3580
86
| Recv: Error:Line Number is not Last Line Number+1, Last Line: 1592
| Recv: Resend:1593
2019-01-08 15:39:18,589 - octoprint.util.comm - INFO - Ignoring resend request for line 1594 == current line, we haven't sent that yet so the printer got N-1 twice from us, probably due to a timeout
2019-01-08 15:46:05,993 - octoprint.server.heartbeat - INFO - Server heartbeat <3
2019-01-08 15:46:20,723 - octoprint.util.comm - INFO - Got a resend request from the printer: requested line = 11634, current line = 11636
| Last lines in terminal:
| Recv: ok
| Send: N11627 G1 X92.911 Y139.215 E2.2672109
| Recv: ok
| Send: N11628 G1 X92.630 Y139.500 E2.2805
99
| Recv: ok
| Send: N11629 G1 X92.595 Y139.465 E2.2821106
| Recv: ok
| Recv: ok
| Send: N11630 G1 X92.315 Y139.751 E2.2954
107
| Recv: ok
| Send: N11631 G1 X92.349 Y139.785 E2.2970108
| Recv: ok
| Send: N11632 G1 X92.068 Y140.070 E2.3103
97
| Send: N11633 G1 X92.034 Y140.036 E2.311996
| Recv: ok
| Send: N11634 G1 X91.753 Y140.321 E2.3253
106
| Recv: ok
| Send: N11635 G1 X91.788 Y140.355 E2.3269103
| Recv: Error:checksum mismatch, Last Line: 11633
| Recv: Resend:11634
2019-01-08 15:48:11,694 - octoprint.util.comm - INFO - Got a resend request from the printer: requested line = 14437, current line = 14442
| Last lines in terminal:
| Recv: ok
| Send: N14433 G92 E0
70
| Send: N14434 G1 X135.649 Y98.781 E0.0211 F39009
| Recv: ok
| Send: N14435 G1 X135.092 Y99.225 E0.0448
100
| Recv: ok
| Send: N14436 G1 X134.503 Y99.631 E0.0685105
| Recv: ok
| Recv: ok
| Send: N14437 G1 X133.811 Y100.038 E0.0952
90
| Recv: ok
| Send: N14438 G1 X133.180 Y100.351 E0.118789
| Recv: X:136.12 Y:98.35 Z:4.440 E:0.0000
| Recv: ok
| Send: N14439 G1 X132.553 Y100.604 E0.1412
95
| Send: N14440 G1 X132.051 Y100.767 E0.158795
| Recv: ok
| Send: N14441 G1 X131.704 Y100.938 E0.1716
84
| Recv: Error:checksum mismatch, Last Line: 14436
| Recv: Resend:14437
2019-01-08 15:53:02,113 - octoprint.util.comm - INFO - Got a resend request from the printer: requested line = 20635, current line = 20637
| Last lines in terminal:
| Recv: ok
| Send: N20628 G1 X76.683 Y158.189 E4.3728102
| Recv: ok
| Send: N20629 G1 X76.588 Y158.470 E4.3826
109
| Recv: ok
| Send: N20630 G1 X76.454 Y158.740 E4.3926100
| Recv: ok
| Send: N20631 G1 X76.382 Y158.849 E4.3970
108
| Recv: ok
//////////////////////

2019-01-08 16:01:05,995 - octoprint.server.heartbeat - INFO - Server heartbeat <3
2019-01-08 16:05:35,932 - octoprint.util.comm - WARNING - Received an error from the printer's firmware: cold extrusion prevented
| Last lines in terminal:
| Send: N34974 G1 X139.096 Y108.211 E0.420680
| Recv: X:144.70 Y:113.77 Z:13.440 E:0.0000
| Recv: ok
| Send: N34975 G1 X143.987 Y113.067 E0.6498
95
| Recv: ok
| Send: N34976 G1 X144.697 Y113.771 F390065
| Recv: ok
| Send: N34977 G1 X145.268 Y113.775 F9000
66
| Recv: ok
| Send: N34978 G92 E070
| Recv: ok
| Send: N34979 G1 X142.897 Y116.073 E0.1098 F3900
61
| Recv: ok
| Send: N34980 G1 X136.940 Y110.158 E0.389083
| Recv: ok
| Send: N34981 G1 X139.069 Y107.621 E0.4992
84
| Recv: X:145.27 Y:113.78 Z:13.440 E:0.0000
| Recv: ok
| Send: N34982 G1 X144.558 Y113.070 E0.7565*90
| Recv: Error:cold extrusion prevented
2019-01-08 16:05:35,937 - octoprint.util.comm - INFO - Changing monitoring state from "Printing" to "Error: cold extrusion prevented"
2019-01-08 16:05:36,089 - octoprint.util.comm - INFO - Changing monitoring state from "Error: cold extrusion prevented" to "Offline (Error: cold extrusion prevented)"
2019-01-08 16:05:37,814 - octoprint.plugin - ERROR - Error while calling plugin printhistory

@MagoKimbra
Copy link
Member

Ok the printer is not printing ...
When printing from USB, then HOST, you have to tell the printer that it is starting to print, command M530 S1.
Repetier Host or Repetier Server already do this octoprint no, so you have to put it in the start gcode.
At the end of the press there must be M530 S0 to say that you have finished printing.
If you do not, a security system turns off the heaters after 30 minutes.

@ZhenyaKa
Copy link
Author

ZhenyaKa commented Jan 8, 2019

You must include this in FAQ. It is very very hidden protection!

@MagoKimbra
Copy link
Member

Why? The normal host already gives that command is a standard, octoprint is not yet adequate, the problem is octoprint ...
However you find it written in readme.md
https://github.com/MKFirmware/MK4duo
Added protection of the heaters if you do not print after 30 minutes on. It is important that the host gives the command M530 S1 for the start and M530 for the stop.

@ZhenyaKa
Copy link
Author

ZhenyaKa commented Jan 8, 2019

Yes but usally no many people reads release notes. And this "bug" very hidden.

@MagoKimbra
Copy link
Member

Tell me where should I write it?

@ZhenyaKa
Copy link
Author

ZhenyaKa commented Jan 8, 2019

I don't know, but I think you will get a lot of "issues" from octoprint users if they want to use Kimbra and dig deeper :)

Or just switch to another FW

@ZhenyaKa
Copy link
Author

ZhenyaKa commented Jan 8, 2019

Maybe good place will be in configiration_overall.h or in web-configurator :)
ATTENTION!!!
ATTENTION!!!
ATTENTION!!!

add S530 S1 in start gcode :)

@MagoKimbra
Copy link
Member

Only if you have the normal host.. Octoprint isn't normal host...
If octoprint do not put M104 S200, for example, i must write put in start gcode M104 for setting temperature??? No i think no!!!
The command M530 for start printing is a standard in new protocol, if octoprint do not put this comand the problem is octoprint non my...

@ZhenyaKa
Copy link
Author

ZhenyaKa commented Jan 8, 2019

Okay I will add issue them

@foosel
Copy link

foosel commented Jan 10, 2019

The command M530 for start printing is a standard in new protocol, if octoprint do not put this comand the problem is octoprint non my...

The only thing that we have with regards to a spec states this:

This enables the firmware to switch into a special print display mode to show print progress.

It does say nothing of "firmware is also free to disable heaters without warning if this command is not sent". You can't just attach functionality as disruptive as that to new capabilities that are targeting a completely different use case and then claim host software that doesn't yet support new capabilities that are defined for purely asthetic reasons is buggy because your firmware does more than it should be doing.

You decided to add functionality that relies on M530 being sent even though it is merely defined for "special printing displays". Don't put the blame for issues resulting from that decision on OctoPrint.

@MagoKimbra
Copy link
Member

I did not give it fault to Octoprint, I just said that the M530 command does: This command tells the firmware that a print has started (S1) or ended (S0). Enables a range of features within firmware, counters and more including temperature protection control if you are not printing.
It is a command that hosts give. I said if octoprint does not give that command to indicate the print start, it should be put in the start gcode.
The MK4duo documentation states that if there is no M530 S1 command, the printer does not know it is printing from the host, it is only executing a series of commands and then activating the 30-minute timer for the temperature.
The user told me that I have to write it in large letters and I told him that if octoprint does not give that command I can not do anything about it and it is he who has to put it in the start gcode.

@foosel
Copy link

foosel commented Jan 10, 2019

I did not give it fault to Octoprint

I'm sorry, but you very clearly did. You basically blamed OctoPrint for not sending this new command as default already (which, considering that it's defined for display purposes I don't see a pressing need considering a never ending TODO list with way more important things on it) for OP's problems and called it a "not normal host" due to that. My problem is with that. I don't like my software being blamed for problems caused by firmware (like this one) adding additional critical functionality to unrelated optional commands.

The problem is that you overloaded the function of M530 and that users aren't finding that in the documentation. That's ok. But don't go declaring host software that isn't aware of some firmware derivative overloading that command with additional thermal monitoring "unnormal" because due to that decision you made.

@MagoKimbra
Copy link
Member

MagoKimbra commented Jan 10, 2019

I apologize, but unfortunately speaking bad English I used inappropriate terms.
It is not a critical function, it is a function to save the printer.
The firmware knows when printing from SD because the M24 command starts printing the file, from host no. So I used the M530 S1 command to indicate the print start to stop the 30 minute timer for the heaters.
Since the hosts or servers were sending the command, I used it for this.

@ZhenyaKa
Copy link
Author

write this "protection" in any FAQ please both developers!

@MagoKimbra
Copy link
Member

It's is write:
Added protection of the heaters if you do not print after 30 minutes on. It is important that the host gives the command M530 S1 for the start and M530 for the stop.
https://github.com/MKFirmware/MK4duo

Where i can write this??

@foosel
Copy link

foosel commented Jan 10, 2019

Since the hosts or servers were sending the command, I used it for this.

"Since some of the hosts or servers were sending the command" you mean ;)

write this "protection" in any FAQ please both developers!

Sure. From my experience it won't be read though, I sadly have the same experiences as @MagoKimbra to that regard. edit there you go

@MagoKimbra If I might suggest, maybe make that bit fat in the README. Or better yet, add a new section "Caution" or something to the README, the information is very much buried as it is right now.

@EvilGremlin
Copy link

Kimbra clearly in the wrong here. When saying "The command M530 for start printing is a standard in new protocol", you should point us to ISO 6983-1:2009. But guess what, there is no M530 in ISO standard. And any commands not mentioned in ISO works purely on a whims of independent developers. Clearly, the word "standard" isn't applicable here in any imaginable way.
And when introducing new command or rewriting old widespread ones so that by default now it will screw jobs - you should write about it explicitly in big red font everywhere, so nobody will ever miss it.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

4 participants