@ -91,15 +91,14 @@
// example configuration folder.
//
//#define SHOW_CUSTOM_BOOTSCREEN
// @section machine
/**
* Select which serial port on the board will be used for communication with the host .
* Select the serial port on the board to use for communication with the host .
* This allows the connection of wireless adapters ( for instance ) to non - default port pins .
* Serial port 0 is always used by the Arduino bootloader regardless of this setting .
* Note : The first serial port ( - 1 or 0 ) will always be used by the Arduino bootloader .
*
* : [ 0 , 1 , 2 , 3 , 4 , 5 , 6 , 7 ]
* : [ - 1 , 0 , 1 , 2 , 3 , 4 , 5 , 6 , 7 ]
*/
# define SERIAL_PORT 0
@ -137,6 +136,9 @@
// :[1, 2, 3, 4, 5]
# define EXTRUDERS 1
// Generally expected filament diameter (1.75, 2.85, 3.0, ...). Used for Volumetric, Filament Width Sensor, etc.
# define DEFAULT_NOMINAL_FILAMENT_DIA 3.0
// For Cyclops or any "multi-extruder" that shares a single nozzle.
//#define SINGLENOZZLE
@ -337,8 +339,9 @@
// Comment the following line to disable PID and enable bang-bang.
# define PIDTEMP
# define BANG_MAX 255 // limits current to nozzle while in bang-bang mode; 255=full current
# define PID_MAX BANG_MAX // limits current to nozzle while PID is active (see PID_FUNCTIONAL_RANGE below); 255=full current
# define BANG_MAX 255 // Limits current to nozzle while in bang-bang mode; 255=full current
# define PID_MAX BANG_MAX // Limits current to nozzle while PID is active (see PID_FUNCTIONAL_RANGE below); 255=full current
# define PID_K1 0.95 // Smoothing factor within any PID loop
# if ENABLED(PIDTEMP)
//#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.
@ -348,7 +351,6 @@
// Set/get with gcode: M301 E[extruder number, 0-2]
# define PID_FUNCTIONAL_RANGE 10 // If the temperature difference between the target temperature and the actual temperature
// is more than PID_FUNCTIONAL_RANGE then the PID will be shut off and the heater will be set to min/max.
# define K1 0.95 //smoothing factor within the PID
// If you are using a pre-configured hotend then you can use one of the value sets by uncommenting it
@ -428,12 +430,13 @@
//===========================================================================
/**
* Thermal Protection protects your printer from damage and fire if a
* thermistor falls out or temperature sensors fail in any way .
* Thermal Protection provides additional protection to your printer from damage
* and fire . Marlin always includes safe min and max temperature ranges which
* protect against a broken or disconnected thermistor wire .
*
* The issue : If a thermistor falls out or a temperature sensor fails ,
* Marlin can no longer sense the actual temperature . Since a disconnected
* thermistor reads as a low temperature , the firmware will keep the heater on .
* The issue : If a thermistor falls out , it will report the much lower
* temperature of the air in the room , and the the firmware will keep
* the heater on .
*
* If you get " Thermal Runaway " or " Heating failed " errors the
* details can be tuned in Configuration_adv . h
@ -573,7 +576,7 @@
// @section probes
//
// See http://marlinfw.org/configuration/probes.html
// See http://marlinfw.org/docs/ configuration/probes.html
//
/**
@ -686,14 +689,16 @@
// X and Y axis travel speed (mm/m) between probes
# define XY_PROBE_SPEED 8000
// Speed for the first approach when double-probing (with PROBE_DOUBLE_TOUCH )
// Speed for the first approach when double-probing (MULTIPLE_PROBING == 2 )
# define Z_PROBE_SPEED_FAST HOMING_FEEDRATE_Z
// Speed for the "accurate" probe of each point
# define Z_PROBE_SPEED_SLOW (Z_PROBE_SPEED_FAST / 2)
// Use double touch for probing
//#define PROBE_DOUBLE_TOUCH
// The number of probes to perform at each point.
// Set to 2 for a fast/slow probe, using the second probe result.
// Set to 3 or more for slow probes, averaging the results.
//#define MULTIPLE_PROBING 2
/**
* Z probes require clearance when deploying , stowing , and moving between
@ -785,10 +790,30 @@
# define Y_MAX_POS Y_BED_SIZE
# define Z_MAX_POS 200
// If enabled, axes won't move below MIN_POS in response to movement commands.
/**
* Software Endstops
*
* - Prevent moves outside the set machine bounds .
* - Individual axes can be disabled , if desired .
* - X and Y only apply to Cartesian robots .
* - Use ' M211 ' to set software endstops on / off or report current state
*/
// Min software endstops constrain movement within minimum coordinate bounds
# define MIN_SOFTWARE_ENDSTOPS
// If enabled, axes won't move above MAX_POS in response to movement commands.
# if ENABLED(MIN_SOFTWARE_ENDSTOPS)
# define MIN_SOFTWARE_ENDSTOP_X
# define MIN_SOFTWARE_ENDSTOP_Y
# define MIN_SOFTWARE_ENDSTOP_Z
# endif
// Max software endstops constrain movement within maximum coordinate bounds
# define MAX_SOFTWARE_ENDSTOPS
# if ENABLED(MAX_SOFTWARE_ENDSTOPS)
# define MAX_SOFTWARE_ENDSTOP_X
# define MAX_SOFTWARE_ENDSTOP_Y
# define MAX_SOFTWARE_ENDSTOP_Z
# endif
/**
* Filament Runout Sensor
@ -808,7 +833,7 @@
//===========================================================================
//=============================== Bed Leveling ==============================
//===========================================================================
// @section bedlevel
// @section cali brat e
/**
* Choose one of the options below to enable G29 Bed Leveling . The parameters
@ -834,12 +859,7 @@
* - AUTO_BED_LEVELING_UBL ( Unified Bed Leveling )
* A comprehensive bed leveling system combining the features and benefits
* of other systems . UBL also includes integrated Mesh Generation , Mesh
* Validation and Mesh Editing systems . Currently , UBL is only checked out
* for Cartesian Printers . That said , it was primarily designed to correct
* poor quality Delta Printers . If you feel adventurous and have a Delta ,
* please post an issue if something doesn ' t work correctly . Initially ,
* you will need to set a reduced bed size so you have a rectangular area
* to test on .
* Validation and Mesh Editing systems .
*
* - MESH_BED_LEVELING
* Probe a grid manually
@ -859,13 +879,31 @@
* Turn on with the command ' M111 S32 ' .
* NOTE : Requires a lot of PROGMEM !
*/
# define DEBUG_LEVELING_FEATURE
//#define DEBUG_LEVELING_FEATURE
# if ENABLED(MESH_BED_LEVELING) || ENABLED(AUTO_BED_LEVELING_BILINEAR) || ENABLED(AUTO_BED_LEVELING_UBL)
// Gradually reduce leveling correction until a set height is reached,
// at which point movement will be level to the machine's XY plane.
// The height can be set with M420 Z<height>
# define ENABLE_LEVELING_FADE_HEIGHT
// For Cartesian machines, instead of dividing moves on mesh boundaries,
// split up moves into short segments like a Delta. This follows the
// contours of the bed more closely than edge-to-edge straight moves.
# define SEGMENT_LEVELED_MOVES
# define LEVELED_SEGMENT_LENGTH 5.0 // (mm) Length of all segments (except the last one)
/**
* Enable the G26 Mesh Validation Pattern tool .
*/
//#define G26_MESH_VALIDATION
# if ENABLED(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 205.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.
# endif
# endif
# if ENABLED(AUTO_BED_LEVELING_LINEAR) || ENABLED(AUTO_BED_LEVELING_BILINEAR)
@ -921,7 +959,9 @@
//========================= Unified Bed Leveling ============================
//===========================================================================
# define UBL_MESH_INSET 1 // Mesh inset margin on print area
//#define MESH_EDIT_GFX_OVERLAY // Display a graphics overlay while editing the mesh
# define MESH_INSET 1 // Mesh inset margin on print area
# define GRID_MAX_POINTS_X 10 // Don't use more than 15 points per axis, implementation limited.
# define GRID_MAX_POINTS_Y GRID_MAX_POINTS_X
@ -932,8 +972,8 @@
# define UBL_PROBE_PT_3_X 180
# define UBL_PROBE_PT_3_Y 20
//#define UBL_G26_MESH_VALIDATION // Enable G26 mesh validation
# define UBL_MESH_EDIT_MOVES_Z // Sophisticated users prefer no movement of nozzle
# define UBL_SAVE_ACTIVE_ON_M500 // Save the currently active mesh in the current slot on M500
# elif ENABLED(MESH_BED_LEVELING)
@ -993,14 +1033,71 @@
//#define Z_SAFE_HOMING
# if ENABLED(Z_SAFE_HOMING)
# define Z_SAFE_HOMING_X_POINT ((X_BED_SIZE) / 2) // X point for Z homing when homing all axi s (G28).
# define Z_SAFE_HOMING_Y_POINT ((Y_BED_SIZE) / 2) // Y point for Z homing when homing all axi s (G28).
# define Z_SAFE_HOMING_X_POINT ((X_BED_SIZE) / 2) // X point for Z homing when homing all axe s (G28).
# define Z_SAFE_HOMING_Y_POINT ((Y_BED_SIZE) / 2) // Y point for Z homing when homing all axe s (G28).
# endif
// Homing speeds (mm/m)
# define HOMING_FEEDRATE_XY (50*60)
# define HOMING_FEEDRATE_Z (4*60)
// @section calibrate
/**
* Bed Skew Compensation
*
* This feature corrects for misalignment in the XYZ axes .
*
* Take the following steps to get the bed skew in the XY plane :
* 1. Print a test square ( e . g . , https : //www.thingiverse.com/thing:2563185)
* 2. For XY_DIAG_AC measure the diagonal A to C
* 3. For XY_DIAG_BD measure the diagonal B to D
* 4. For XY_SIDE_AD measure the edge A to D
*
* Marlin automatically computes skew factors from these measurements .
* Skew factors may also be computed and set manually :
*
* - Compute AB : SQRT ( 2 * AC * AC + 2 * BD * BD - 4 * AD * AD ) / 2
* - XY_SKEW_FACTOR : TAN ( PI / 2 - ACOS ( ( AC * AC - AB * AB - AD * AD ) / ( 2 * AB * AD ) ) )
*
* If desired , follow the same procedure for XZ and YZ .
* Use these diagrams for reference :
*
* Y Z Z
* ^ B - - - - - - - C ^ B - - - - - - - C ^ B - - - - - - - C
* | / / | / / | / /
* | / / | / / | / /
* | A - - - - - - - D | A - - - - - - - D | A - - - - - - - D
* + - - - - - - - - - - - - - - > X + - - - - - - - - - - - - - - > X + - - - - - - - - - - - - - - > Y
* XY_SKEW_FACTOR XZ_SKEW_FACTOR YZ_SKEW_FACTOR
*/
//#define SKEW_CORRECTION
# if ENABLED(SKEW_CORRECTION)
// Input all length measurements here:
# define XY_DIAG_AC 282.8427124746
# define XY_DIAG_BD 282.8427124746
# define XY_SIDE_AD 200
// Or, set the default skew factors directly here
// to override the above measurements:
# define XY_SKEW_FACTOR 0.0
//#define SKEW_CORRECTION_FOR_Z
# if ENABLED(SKEW_CORRECTION_FOR_Z)
# define XZ_DIAG_AC 282.8427124746
# define XZ_DIAG_BD 282.8427124746
# define YZ_DIAG_AC 282.8427124746
# define YZ_DIAG_BD 282.8427124746
# define YZ_SIDE_AD 200
# define XZ_SKEW_FACTOR 0.0
# define YZ_SKEW_FACTOR 0.0
# endif
// Enable this option for M852 to set skew at runtime
//#define SKEW_CORRECTION_GCODE
# endif
//=============================================================================
//============================= Additional Features ===========================
//=============================================================================
@ -1032,7 +1129,7 @@
//
// M100 Free Memory Watcher
//
//#define M100_FREE_MEMORY_WATCHER // uncomment to add the M100 Free Memory Watcher for debug purpos e
//#define M100_FREE_MEMORY_WATCHER // Add M100 (Free Memory Watcher) to debug memory usag e
//
// G20/G21 Inch mode support
@ -1177,11 +1274,11 @@
*
* Select the language to display on the LCD . These languages are available :
*
* en , an , bg , ca , cn , cz , cz_utf8 , de , el , el - gr , es , eu , fi , fr , gl , hr ,
* it , kana , kana_utf8 , nl , pl , pt , pt_utf8 , pt - br , pt - br_utf8 , ru , sk_utf8 ,
* en , an , bg , ca , cn , cz , cz_utf8 , de , el , el - gr , es , eu , fi , fr , fr_utf8 , gl ,
* hr , it , kana , kana_utf8 , nl , pl , pt , pt_utf8 , pt - br , pt - br_utf8 , ru , sk_utf8 ,
* tr , uk , zh_CN , zh_TW , test
*
* : { ' en ' : ' English ' , ' an ' : ' Aragonese ' , ' bg ' : ' Bulgarian ' , ' ca ' : ' Catalan ' , ' cn ' : ' Chinese ' , ' cz ' : ' Czech ' , ' cz_utf8 ' : ' Czech ( UTF8 ) ' , ' de ' : ' German ' , ' el ' : ' Greek ' , ' el - gr ' : ' Greek ( Greece ) ' , ' es ' : ' Spanish ' , ' eu ' : ' Basque - Euskera ' , ' fi ' : ' Finnish ' , ' fr ' : ' French ' , ' gl ' : ' Galician ' , ' hr ' : ' Croatian ' , ' it ' : ' Italian ' , ' kana ' : ' Japanese ' , ' kana_utf8 ' : ' Japanese ( UTF8 ) ' , ' nl ' : ' Dutch ' , ' pl ' : ' Polish ' , ' pt ' : ' Portuguese ' , ' pt - br ' : ' Portuguese ( Brazilian ) ' , ' pt - br_utf8 ' : ' Portuguese ( Brazilian UTF8 ) ' , ' pt_utf8 ' : ' Portuguese ( UTF8 ) ' , ' ru ' : ' Russian ' , ' sk_utf8 ' : ' Slovak ( UTF8 ) ' , ' tr ' : ' Turkish ' , ' uk ' : ' Ukrainian ' , ' zh_CN ' : ' Chinese ( Simplified ) ' , ' zh_TW ' : ' Chinese ( Taiwan ) ' , test ' : ' TEST ' }
* : { ' en ' : ' English ' , ' an ' : ' Aragonese ' , ' bg ' : ' Bulgarian ' , ' ca ' : ' Catalan ' , ' cn ' : ' Chinese ' , ' cz ' : ' Czech ' , ' cz_utf8 ' : ' Czech ( UTF8 ) ' , ' de ' : ' German ' , ' el ' : ' Greek ' , ' el - gr ' : ' Greek ( Greece ) ' , ' es ' : ' Spanish ' , ' eu ' : ' Basque - Euskera ' , ' fi ' : ' Finnish ' , ' fr ' : ' French ' , ' fr_utf8 ' : ' French ( UTF8 ) ' , ' gl ' : ' Galician ' , ' hr ' : ' Croatian ' , ' it ' : ' Italian ' , ' kana ' : ' Japanese ' , ' kana_utf8 ' : ' Japanese ( UTF8 ) ' , ' nl ' : ' Dutch ' , ' pl ' : ' Polish ' , ' pt ' : ' Portuguese ' , ' pt - br ' : ' Portuguese ( Brazilian ) ' , ' pt - br_utf8 ' : ' Portuguese ( Brazilian UTF8 ) ' , ' pt_utf8 ' : ' Portuguese ( UTF8 ) ' , ' ru ' : ' Russian ' , ' sk_utf8 ' : ' Slovak ( UTF8 ) ' , ' tr ' : ' Turkish ' , ' uk ' : ' Ukrainian ' , ' zh_CN ' : ' Chinese ( Simplified ) ' , ' zh_TW ' : ' Chinese ( Taiwan ) ' , test ' : ' TEST ' }
*/
# define LCD_LANGUAGE en
@ -1235,9 +1332,8 @@
* SD CARD : SPI SPEED
*
* Enable one of the following items for a slower SPI transfer speed .
* This may be required to resolve " volume init " errors or LCD issues .
* This may be required to resolve " volume init " errors .
*/
//#define SPI_SPEED SPI_HALF_SPEED
//#define SPI_SPEED SPI_QUARTER_SPEED
# define SPI_SPEED SPI_EIGHTH_SPEED
@ -1310,8 +1406,8 @@
// Note: Test audio output with the G-Code:
// M300 S<frequency Hz> P<duration ms>
//
//#define LCD_FEEDBACK_FREQUENCY_DURATION_MS 100
//#define LCD_FEEDBACK_FREQUENCY_HZ 1 000
//#define LCD_FEEDBACK_FREQUENCY_DURATION_MS 2
//#define LCD_FEEDBACK_FREQUENCY_HZ 5 000
//
// CONTROLLER TYPE: Standard
@ -1504,6 +1600,46 @@
//
//#define OLED_PANEL_TINYBOY2
//
// Makeboard 3D Printer Parts 3D Printer Mini Display 1602 Mini Controller
// https://www.aliexpress.com/item/Micromake-Makeboard-3D-Printer-Parts-3D-Printer-Mini-Display-1602-Mini-Controller-Compatible-with-Ramps-1/32765887917.html
//
//#define MAKEBOARD_MINI_2_LINE_DISPLAY_1602
//
// MKS MINI12864 with graphic controller and SD support
// http://reprap.org/wiki/MKS_MINI_12864
//
//#define MKS_MINI_12864
//
// Factory display for Creality CR-10
// https://www.aliexpress.com/item/Universal-LCD-12864-3D-Printer-Display-Screen-With-Encoder-For-CR-10-CR-7-Model/32833148327.html
//
// This is RAMPS-compatible using a single 10-pin connector.
// (For CR-10 owners who want to replace the Melzi Creality board but retain the display)
//
//#define CR10_STOCKDISPLAY
//
// MKS OLED 1.3" 128 × 64 FULL GRAPHICS CONTROLLER
// http://reprap.org/wiki/MKS_12864OLED
//
// Tiny, but very sharp OLED display
//
//#define MKS_12864OLED
//
// AZSMZ 12864 LCD with SD
// https://www.aliexpress.com/store/product/3D-printer-smart-controller-SMART-RAMPS-OR-RAMPS-1-4-LCD-12864-LCD-control-panel-green/2179173_32213636460.html
//
//#define AZSMZ_12864
// Silvergate GLCD controller
// http://github.com/android444/Silvergate
//
//#define SILVER_GATE_GLCD_CONTROLLER
//=============================================================================
//=============================== Extra Features ==============================
//=============================================================================
@ -1560,14 +1696,20 @@
* Adds the M150 command to set the LED ( or LED strip ) color .
* If pins are PWM capable ( e . g . , 4 , 5 , 6 , 11 ) then a range of
* luminance values can be set from 0 to 255.
* For Neopixel LED an overall brightness parameter is also available .
*
* * * * CAUTION * * *
* LED Strips require a MOFSET Chip between PWM lines and LEDs ,
* as the Arduino cannot handle the current the LEDs will require .
* Failure to follow this precaution can destroy your Arduino !
* NOTE : A separate 5 V power supply is required ! The Neopixel LED needs
* more current than the Arduino 5 V linear regulator can produce .
* * * * CAUTION * * *
*
* LED Type . Enable only one of the following two options .
*
*/
//#define RGB_LED
//#define RGBW_LED
# if ENABLED(RGB_LED) || ENABLED(RGBW_LED)
@ -1578,10 +1720,13 @@
# endif
// Support for Adafruit Neopixel LED driver
//#define NEOPIXEL_RGBW_LED
# if ENABLED(NEOPIXEL_RGBW_LED)
# define NEOPIXEL_PIN 4 // D4 (EXP2-5 on Printrboard)
# define NEOPIXEL_PIXELS 3
//#define NEOPIXEL_LED
# if ENABLED(NEOPIXEL_LED)
# define NEOPIXEL_TYPE NEO_GRB // NEO_GRBW / NEO_GRB - four/three channel driver type (defined in Adafruit_NeoPixel.h)
# define NEOPIXEL_PIN 4 // LED driving pin on motherboard 4 => D4 (EXP2-5 on Printrboard) / 30 => PC7 (EXP3-13 on Rumba)
# define NEOPIXEL_PIXELS 30 // Number of LEDs in the strip
# define NEOPIXEL_IS_SEQUENTIAL // Sequential display for temperature change - LED by LED. Disable to change all LEDs at once.
# define NEOPIXEL_BRIGHTNESS 255 // Initial brightness 0-255
//#define NEOPIXEL_STARTUP_TEST // Cycle through colors at startup
# endif
@ -1596,22 +1741,22 @@
* - Change to green once print has finished
* - Turn off after the print has finished and the user has pushed a button
*/
# if ENABLED(BLINKM) || ENABLED(RGB_LED) || ENABLED(RGBW_LED) || ENABLED(PCA9632) || ENABLED(NEOPIXEL_RGBW_ LED)
# if ENABLED(BLINKM) || ENABLED(RGB_LED) || ENABLED(RGBW_LED) || ENABLED(PCA9632) || ENABLED(NEOPIXEL_LED)
# define PRINTER_EVENT_LEDS
# endif
/*********************************************************************\
/**
* R / C SERVO support
* Sponsored by TrinityLabs , Reworked by codexmas
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
*/
// Number of servos
//
// If you select a configuration below, this will receive a default value and does not need to be set manually
// set it manually if you have more servos than extruders and wish to manually control some
// leaving it undefined or defining as 0 will disable the servo subsystem
// If unsure, leave commented / disabled
//
/**
* Number of servos
*
* For some servo - related options NUM_SERVOS will be set automatically .
* Set this manually if there are extra servos needing manual control .
* Leave undefined or set to 0 to entirely disable the servo subsystem .
*/
//#define NUM_SERVOS 3 // Servo index starts with 0 for M280 command
// Delay (in milliseconds) before the next move will start, to give the servo time to reach its target angle.
@ -1624,40 +1769,4 @@
// With this option servos are powered only during movement, then turned off to prevent jitter.
//#define DEACTIVATE_SERVOS_AFTER_MOVE
/**
* Filament Width Sensor
*
* Measures the filament width in real - time and adjusts
* flow rate to compensate for any irregularities .
*
* Also allows the measured filament diameter to set the
* extrusion rate , so the slicer only has to specify the
* volume .
*
* Only a single extruder is supported at this time .
*
* 34 RAMPS_14 : Analog input 5 on the AUX2 connector
* 81 PRINTRBOARD : Analog input 2 on the Exp1 connector ( version B , C , D , E )
* 301 RAMBO : Analog input 3
*
* Note : May require analog pins to be defined for other boards .
*/
//#define FILAMENT_WIDTH_SENSOR
# define DEFAULT_NOMINAL_FILAMENT_DIA 3.00 // (mm) Diameter of the filament generally used (3.0 or 1.75mm), also used in the slicer. Used to validate sensor reading.
# if ENABLED(FILAMENT_WIDTH_SENSOR)
# define FILAMENT_SENSOR_EXTRUDER_NUM 0 // Index of the extruder that has the filament sensor (0,1,2,3)
# define MEASUREMENT_DELAY_CM 14 // (cm) The distance from the filament sensor to the melting chamber
# define MEASURED_UPPER_LIMIT 3.30 // (mm) Upper limit used to validate sensor reading
# define MEASURED_LOWER_LIMIT 1.90 // (mm) Lower limit used to validate sensor reading
# 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
// Display filament width on the LCD status line. Status messages will expire after 5 seconds.
//#define FILAMENT_LCD_DISPLAY
# endif
# endif // CONFIGURATION_H