Merge https://github.com/MarlinFirmware/Marlin into tm3-utf-minus-kanji
Conflicts: Marlin/example_configurations/delta/generic/Configuration.h Marlin/example_configurations/delta/kossel_mini/Configuration.h Marlin/language.h Conflicts solved
This commit is contained in:
commit
9d589cbb2a
BIN
Documentation/Logo/marlinwiki.png
Executable file
BIN
Documentation/Logo/marlinwiki.png
Executable file
Binary file not shown.
After Width: | Height: | Size: 6.7 KiB |
|
@ -1 +1,30 @@
|
||||||
|
### Version 1.0.3
|
||||||
|
* Reduced code size, maybe a lot depending on your configuration.
|
||||||
|
* Improved support for Delta, SCARA, and COREXY kinematics.
|
||||||
|
* Move parts of Configuration files to `Conditionals.h` and `SanityCheck.h`.
|
||||||
|
* Clean up of temperature code.
|
||||||
|
* Enhanced `G29` with improved grid bed leveling based on Roxy code. See documentation.
|
||||||
|
* Various bugs fixed from 1.0.2.
|
||||||
|
* EEPROM layout updated to `V17`.
|
||||||
|
* Added `M204` travel acceleration options.
|
||||||
|
* `M204` "`P`" parameter replaces "`S`." "`S`" retained for backward compatibility.
|
||||||
|
* Support for more RAMPS-based boards.
|
||||||
|
* Configurator utility under development.
|
||||||
|
* `M404` "`N`" parameter replaced with "`W`." ("`N`" is for line numbers only).
|
||||||
|
* Much cleanup of the code.
|
||||||
|
* Improved support for Cyrillic and accented languages.
|
||||||
|
* LCD controller knob acceleration.
|
||||||
|
* Improved compatibility with various sensors, MAX6675 thermocouple.
|
||||||
|
* Filament runout sensor support.
|
||||||
|
* Filament width measurement support.
|
||||||
|
* Support for TMC and L6470 stepper drivers.
|
||||||
|
* Better support of G-Code `;` comments, `\`, `N` line numbers, and `*` checksums.
|
||||||
|
* Moved GCode handling code into individual functions per-code.
|
||||||
|
|
||||||
|
### Version 1.0.2
|
||||||
|
* Progress bar for character-based LCD displays.
|
||||||
|
|
||||||
|
### Version 1.0.1
|
||||||
|
|
||||||
|
### Version 1.0.0
|
||||||
|
* Initial release
|
||||||
|
|
405
Marlin/Conditionals.h
Normal file
405
Marlin/Conditionals.h
Normal file
|
@ -0,0 +1,405 @@
|
||||||
|
/**
|
||||||
|
* Conditionals.h
|
||||||
|
* Defines that depend on configuration but are not editable.
|
||||||
|
*/
|
||||||
|
#ifndef CONDITIONALS_H
|
||||||
|
|
||||||
|
#ifndef CONFIGURATION_LCD // Get the LCD defines which are needed first
|
||||||
|
|
||||||
|
#define CONFIGURATION_LCD
|
||||||
|
|
||||||
|
#if defined(MAKRPANEL)
|
||||||
|
#define DOGLCD
|
||||||
|
#define SDSUPPORT
|
||||||
|
#define DEFAULT_LCD_CONTRAST 17
|
||||||
|
#define ULTIPANEL
|
||||||
|
#define NEWPANEL
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(miniVIKI) || defined(VIKI2)
|
||||||
|
#define ULTRA_LCD //general LCD support, also 16x2
|
||||||
|
#define DOGLCD // Support for SPI LCD 128x64 (Controller ST7565R graphic Display Family)
|
||||||
|
#define ULTIMAKERCONTROLLER //as available from the Ultimaker online store.
|
||||||
|
|
||||||
|
#ifdef miniVIKI
|
||||||
|
#define DEFAULT_LCD_CONTRAST 95
|
||||||
|
#else
|
||||||
|
#define DEFAULT_LCD_CONTRAST 40
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#define ENCODER_PULSES_PER_STEP 4
|
||||||
|
#define ENCODER_STEPS_PER_MENU_ITEM 1
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef PANEL_ONE
|
||||||
|
#define SDSUPPORT
|
||||||
|
#define ULTIMAKERCONTROLLER
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER
|
||||||
|
#define DOGLCD
|
||||||
|
#define U8GLIB_ST7920
|
||||||
|
#define REPRAP_DISCOUNT_SMART_CONTROLLER
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(ULTIMAKERCONTROLLER) || defined(REPRAP_DISCOUNT_SMART_CONTROLLER) || defined(G3D_PANEL)
|
||||||
|
#define ULTIPANEL
|
||||||
|
#define NEWPANEL
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef REPRAPWORLD_KEYPAD
|
||||||
|
#define ULTIPANEL
|
||||||
|
#define NEWPANEL
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef RA_CONTROL_PANEL
|
||||||
|
#define LCD_I2C_TYPE_PCA8574
|
||||||
|
#define LCD_I2C_ADDRESS 0x27 // I2C Address of the port expander
|
||||||
|
#define ULTIPANEL
|
||||||
|
#define NEWPANEL
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/**
|
||||||
|
* I2C PANELS
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifdef LCD_I2C_SAINSMART_YWROBOT
|
||||||
|
// This uses the LiquidCrystal_I2C library ( https://bitbucket.org/fmalpartida/new-liquidcrystal/wiki/Home )
|
||||||
|
// Make sure it is placed in the Arduino libraries directory.
|
||||||
|
#define LCD_I2C_TYPE_PCF8575
|
||||||
|
#define LCD_I2C_ADDRESS 0x27 // I2C Address of the port expander
|
||||||
|
#define ULTIPANEL
|
||||||
|
#define NEWPANEL
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// PANELOLU2 LCD with status LEDs, separate encoder and click inputs
|
||||||
|
#ifdef LCD_I2C_PANELOLU2
|
||||||
|
// This uses the LiquidTWI2 library v1.2.3 or later ( https://github.com/lincomatic/LiquidTWI2 )
|
||||||
|
// Make sure the LiquidTWI2 directory is placed in the Arduino or Sketchbook libraries subdirectory.
|
||||||
|
// (v1.2.3 no longer requires you to define PANELOLU in the LiquidTWI2.h library header file)
|
||||||
|
// Note: The PANELOLU2 encoder click input can either be directly connected to a pin
|
||||||
|
// (if BTN_ENC defined to != -1) or read through I2C (when BTN_ENC == -1).
|
||||||
|
#define LCD_I2C_TYPE_MCP23017
|
||||||
|
#define LCD_I2C_ADDRESS 0x20 // I2C Address of the port expander
|
||||||
|
#define LCD_USE_I2C_BUZZER //comment out to disable buzzer on LCD
|
||||||
|
|
||||||
|
#ifndef ENCODER_PULSES_PER_STEP
|
||||||
|
#define ENCODER_PULSES_PER_STEP 4
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef ENCODER_STEPS_PER_MENU_ITEM
|
||||||
|
#define ENCODER_STEPS_PER_MENU_ITEM 1
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef LCD_USE_I2C_BUZZER
|
||||||
|
#define LCD_FEEDBACK_FREQUENCY_HZ 1000
|
||||||
|
#define LCD_FEEDBACK_FREQUENCY_DURATION_MS 100
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#define ULTIPANEL
|
||||||
|
#define NEWPANEL
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// Panucatt VIKI LCD with status LEDs, integrated click & L/R/U/P buttons, separate encoder inputs
|
||||||
|
#ifdef LCD_I2C_VIKI
|
||||||
|
// This uses the LiquidTWI2 library v1.2.3 or later ( https://github.com/lincomatic/LiquidTWI2 )
|
||||||
|
// Make sure the LiquidTWI2 directory is placed in the Arduino or Sketchbook libraries subdirectory.
|
||||||
|
// Note: The pause/stop/resume LCD button pin should be connected to the Arduino
|
||||||
|
// BTN_ENC pin (or set BTN_ENC to -1 if not used)
|
||||||
|
#define LCD_I2C_TYPE_MCP23017
|
||||||
|
#define LCD_I2C_ADDRESS 0x20 // I2C Address of the port expander
|
||||||
|
#define LCD_USE_I2C_BUZZER //comment out to disable buzzer on LCD (requires LiquidTWI2 v1.2.3 or later)
|
||||||
|
#define ULTIPANEL
|
||||||
|
#define NEWPANEL
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// Shift register panels
|
||||||
|
// ---------------------
|
||||||
|
// 2 wire Non-latching LCD SR from:
|
||||||
|
// https://bitbucket.org/fmalpartida/new-liquidcrystal/wiki/schematics#!shiftregister-connection
|
||||||
|
|
||||||
|
#ifdef SAV_3DLCD
|
||||||
|
#define SR_LCD_2W_NL // Non latching 2 wire shiftregister
|
||||||
|
#define ULTIPANEL
|
||||||
|
#define NEWPANEL
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
#ifdef ULTIPANEL
|
||||||
|
#define NEWPANEL //enable this if you have a click-encoder panel
|
||||||
|
#define SDSUPPORT
|
||||||
|
#define ULTRA_LCD
|
||||||
|
#ifdef DOGLCD // Change number of lines to match the DOG graphic display
|
||||||
|
#define LCD_WIDTH 22
|
||||||
|
#define LCD_HEIGHT 5
|
||||||
|
#else
|
||||||
|
#define LCD_WIDTH 20
|
||||||
|
#define LCD_HEIGHT 4
|
||||||
|
#endif
|
||||||
|
#else //no panel but just LCD
|
||||||
|
#ifdef ULTRA_LCD
|
||||||
|
#ifdef DOGLCD // Change number of lines to match the 128x64 graphics display
|
||||||
|
#define LCD_WIDTH 22
|
||||||
|
#define LCD_HEIGHT 5
|
||||||
|
#else
|
||||||
|
#define LCD_WIDTH 16
|
||||||
|
#define LCD_HEIGHT 2
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Default LCD contrast for dogm-like LCD displays
|
||||||
|
*/
|
||||||
|
#if defined(DOGLCD) && !defined(DEFAULT_LCD_CONTRAST)
|
||||||
|
#define DEFAULT_LCD_CONTRAST 32
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#else // CONFIGURATION_LCD
|
||||||
|
|
||||||
|
#define CONDITIONALS_H
|
||||||
|
|
||||||
|
#ifndef AT90USB
|
||||||
|
#define HardwareSerial_h // trick to disable the standard HWserial
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if (ARDUINO >= 100)
|
||||||
|
#include "Arduino.h"
|
||||||
|
#else
|
||||||
|
#include "WProgram.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#include "pins.h"
|
||||||
|
|
||||||
|
/**
|
||||||
|
* ENDSTOPPULLUPS
|
||||||
|
*/
|
||||||
|
#ifdef ENDSTOPPULLUPS
|
||||||
|
#ifndef DISABLE_MAX_ENDSTOPS
|
||||||
|
#define ENDSTOPPULLUP_XMAX
|
||||||
|
#define ENDSTOPPULLUP_YMAX
|
||||||
|
#define ENDSTOPPULLUP_ZMAX
|
||||||
|
#endif
|
||||||
|
#ifndef DISABLE_MIN_ENDSTOPS
|
||||||
|
#define ENDSTOPPULLUP_XMIN
|
||||||
|
#define ENDSTOPPULLUP_YMIN
|
||||||
|
#define ENDSTOPPULLUP_ZMIN
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Axis lengths
|
||||||
|
*/
|
||||||
|
#define X_MAX_LENGTH (X_MAX_POS - X_MIN_POS)
|
||||||
|
#define Y_MAX_LENGTH (Y_MAX_POS - Y_MIN_POS)
|
||||||
|
#define Z_MAX_LENGTH (Z_MAX_POS - Z_MIN_POS)
|
||||||
|
|
||||||
|
/**
|
||||||
|
* SCARA
|
||||||
|
*/
|
||||||
|
#ifdef SCARA
|
||||||
|
#undef SLOWDOWN
|
||||||
|
#define QUICK_HOME //SCARA needs Quickhome
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/**
|
||||||
|
* AUTOSET LOCATIONS OF LIMIT SWITCHES
|
||||||
|
* Added by ZetaPhoenix 09-15-2012
|
||||||
|
*/
|
||||||
|
#ifdef MANUAL_HOME_POSITIONS // Use manual limit switch locations
|
||||||
|
#define X_HOME_POS MANUAL_X_HOME_POS
|
||||||
|
#define Y_HOME_POS MANUAL_Y_HOME_POS
|
||||||
|
#define Z_HOME_POS MANUAL_Z_HOME_POS
|
||||||
|
#else //!MANUAL_HOME_POSITIONS – Use home switch positions based on homing direction and travel limits
|
||||||
|
#ifdef BED_CENTER_AT_0_0
|
||||||
|
#define X_HOME_POS X_MAX_LENGTH * X_HOME_DIR * 0.5
|
||||||
|
#define Y_HOME_POS Y_MAX_LENGTH * Y_HOME_DIR * 0.5
|
||||||
|
#else
|
||||||
|
#define X_HOME_POS (X_HOME_DIR < 0 ? X_MIN_POS : X_MAX_POS)
|
||||||
|
#define Y_HOME_POS (Y_HOME_DIR < 0 ? Y_MIN_POS : Y_MAX_POS)
|
||||||
|
#endif
|
||||||
|
#define Z_HOME_POS (Z_HOME_DIR < 0 ? Z_MIN_POS : Z_MAX_POS)
|
||||||
|
#endif //!MANUAL_HOME_POSITIONS
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Auto Bed Leveling
|
||||||
|
*/
|
||||||
|
#ifdef ENABLE_AUTO_BED_LEVELING
|
||||||
|
// Boundaries for probing based on set limits
|
||||||
|
#define MIN_PROBE_X (max(X_MIN_POS, X_MIN_POS + X_PROBE_OFFSET_FROM_EXTRUDER))
|
||||||
|
#define MAX_PROBE_X (min(X_MAX_POS, X_MAX_POS + X_PROBE_OFFSET_FROM_EXTRUDER))
|
||||||
|
#define MIN_PROBE_Y (max(Y_MIN_POS, Y_MIN_POS + Y_PROBE_OFFSET_FROM_EXTRUDER))
|
||||||
|
#define MAX_PROBE_Y (min(Y_MAX_POS, Y_MAX_POS + Y_PROBE_OFFSET_FROM_EXTRUDER))
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/**
|
||||||
|
* MAX_STEP_FREQUENCY differs for TOSHIBA
|
||||||
|
*/
|
||||||
|
#ifdef CONFIG_STEPPERS_TOSHIBA
|
||||||
|
#define MAX_STEP_FREQUENCY 10000 // Max step frequency for Toshiba Stepper Controllers
|
||||||
|
#else
|
||||||
|
#define MAX_STEP_FREQUENCY 40000 // Max step frequency for Ultimaker (5000 pps / half step)
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// MS1 MS2 Stepper Driver Microstepping mode table
|
||||||
|
#define MICROSTEP1 LOW,LOW
|
||||||
|
#define MICROSTEP2 HIGH,LOW
|
||||||
|
#define MICROSTEP4 LOW,HIGH
|
||||||
|
#define MICROSTEP8 HIGH,HIGH
|
||||||
|
#define MICROSTEP16 HIGH,HIGH
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Advance calculated values
|
||||||
|
*/
|
||||||
|
#ifdef ADVANCE
|
||||||
|
#define EXTRUSION_AREA (0.25 * D_FILAMENT * D_FILAMENT * 3.14159)
|
||||||
|
#define STEPS_PER_CUBIC_MM_E (axis_steps_per_unit[E_AXIS] / EXTRUSION_AREA)
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef ULTIPANEL
|
||||||
|
#undef SDCARDDETECTINVERTED
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// Power Signal Control Definitions
|
||||||
|
// By default use ATX definition
|
||||||
|
#ifndef POWER_SUPPLY
|
||||||
|
#define POWER_SUPPLY 1
|
||||||
|
#endif
|
||||||
|
// 1 = ATX
|
||||||
|
#if (POWER_SUPPLY == 1)
|
||||||
|
#define PS_ON_AWAKE LOW
|
||||||
|
#define PS_ON_ASLEEP HIGH
|
||||||
|
#endif
|
||||||
|
// 2 = X-Box 360 203W
|
||||||
|
#if (POWER_SUPPLY == 2)
|
||||||
|
#define PS_ON_AWAKE HIGH
|
||||||
|
#define PS_ON_ASLEEP LOW
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Temp Sensor defines
|
||||||
|
*/
|
||||||
|
#if TEMP_SENSOR_0 == -2
|
||||||
|
#define HEATER_0_USES_MAX6675
|
||||||
|
#elif TEMP_SENSOR_0 == -1
|
||||||
|
#define HEATER_0_USES_AD595
|
||||||
|
#elif TEMP_SENSOR_0 == 0
|
||||||
|
#undef HEATER_0_MINTEMP
|
||||||
|
#undef HEATER_0_MAXTEMP
|
||||||
|
#elif TEMP_SENSOR_0 > 0
|
||||||
|
#define THERMISTORHEATER_0 TEMP_SENSOR_0
|
||||||
|
#define HEATER_0_USES_THERMISTOR
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if TEMP_SENSOR_1 == -1
|
||||||
|
#define HEATER_1_USES_AD595
|
||||||
|
#elif TEMP_SENSOR_1 == 0
|
||||||
|
#undef HEATER_1_MINTEMP
|
||||||
|
#undef HEATER_1_MAXTEMP
|
||||||
|
#elif TEMP_SENSOR_1 > 0
|
||||||
|
#define THERMISTORHEATER_1 TEMP_SENSOR_1
|
||||||
|
#define HEATER_1_USES_THERMISTOR
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if TEMP_SENSOR_2 == -1
|
||||||
|
#define HEATER_2_USES_AD595
|
||||||
|
#elif TEMP_SENSOR_2 == 0
|
||||||
|
#undef HEATER_2_MINTEMP
|
||||||
|
#undef HEATER_2_MAXTEMP
|
||||||
|
#elif TEMP_SENSOR_2 > 0
|
||||||
|
#define THERMISTORHEATER_2 TEMP_SENSOR_2
|
||||||
|
#define HEATER_2_USES_THERMISTOR
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if TEMP_SENSOR_3 == -1
|
||||||
|
#define HEATER_3_USES_AD595
|
||||||
|
#elif TEMP_SENSOR_3 == 0
|
||||||
|
#undef HEATER_3_MINTEMP
|
||||||
|
#undef HEATER_3_MAXTEMP
|
||||||
|
#elif TEMP_SENSOR_3 > 0
|
||||||
|
#define THERMISTORHEATER_3 TEMP_SENSOR_3
|
||||||
|
#define HEATER_3_USES_THERMISTOR
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if TEMP_SENSOR_BED == -1
|
||||||
|
#define BED_USES_AD595
|
||||||
|
#elif TEMP_SENSOR_BED == 0
|
||||||
|
#undef BED_MINTEMP
|
||||||
|
#undef BED_MAXTEMP
|
||||||
|
#elif TEMP_SENSOR_BED > 0
|
||||||
|
#define THERMISTORBED TEMP_SENSOR_BED
|
||||||
|
#define BED_USES_THERMISTOR
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/**
|
||||||
|
* ARRAY_BY_EXTRUDERS based on EXTRUDERS
|
||||||
|
*/
|
||||||
|
#if EXTRUDERS > 3
|
||||||
|
#define ARRAY_BY_EXTRUDERS(v1, v2, v3, v4) { v1, v2, v3, v4 }
|
||||||
|
#elif EXTRUDERS > 2
|
||||||
|
#define ARRAY_BY_EXTRUDERS(v1, v2, v3, v4) { v1, v2, v3 }
|
||||||
|
#elif EXTRUDERS > 1
|
||||||
|
#define ARRAY_BY_EXTRUDERS(v1, v2, v3, v4) { v1, v2 }
|
||||||
|
#else
|
||||||
|
#define ARRAY_BY_EXTRUDERS(v1, v2, v3, v4) { v1 }
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Shorthand for pin tests, for temperature.cpp
|
||||||
|
*/
|
||||||
|
#define HAS_TEMP_0 (defined(TEMP_0_PIN) && TEMP_0_PIN >= 0)
|
||||||
|
#define HAS_TEMP_1 (defined(TEMP_1_PIN) && TEMP_1_PIN >= 0)
|
||||||
|
#define HAS_TEMP_2 (defined(TEMP_2_PIN) && TEMP_2_PIN >= 0)
|
||||||
|
#define HAS_TEMP_3 (defined(TEMP_3_PIN) && TEMP_3_PIN >= 0)
|
||||||
|
#define HAS_TEMP_BED (defined(TEMP_BED_PIN) && TEMP_BED_PIN >= 0)
|
||||||
|
#define HAS_FILAMENT_SENSOR (defined(FILAMENT_SENSOR) && defined(FILWIDTH_PIN) && FILWIDTH_PIN >= 0)
|
||||||
|
#define HAS_HEATER_0 (defined(HEATER_0_PIN) && HEATER_0_PIN >= 0)
|
||||||
|
#define HAS_HEATER_1 (defined(HEATER_1_PIN) && HEATER_1_PIN >= 0)
|
||||||
|
#define HAS_HEATER_2 (defined(HEATER_2_PIN) && HEATER_2_PIN >= 0)
|
||||||
|
#define HAS_HEATER_3 (defined(HEATER_3_PIN) && HEATER_3_PIN >= 0)
|
||||||
|
#define HAS_HEATER_BED (defined(HEATER_BED_PIN) && HEATER_BED_PIN >= 0)
|
||||||
|
#define HAS_AUTO_FAN_0 (defined(EXTRUDER_0_AUTO_FAN_PIN) && EXTRUDER_0_AUTO_FAN_PIN >= 0)
|
||||||
|
#define HAS_AUTO_FAN_1 (defined(EXTRUDER_1_AUTO_FAN_PIN) && EXTRUDER_1_AUTO_FAN_PIN >= 0)
|
||||||
|
#define HAS_AUTO_FAN_2 (defined(EXTRUDER_2_AUTO_FAN_PIN) && EXTRUDER_2_AUTO_FAN_PIN >= 0)
|
||||||
|
#define HAS_AUTO_FAN_3 (defined(EXTRUDER_3_AUTO_FAN_PIN) && EXTRUDER_3_AUTO_FAN_PIN >= 0)
|
||||||
|
#define HAS_AUTO_FAN HAS_AUTO_FAN_0 || HAS_AUTO_FAN_1 || HAS_AUTO_FAN_2 || HAS_AUTO_FAN_3
|
||||||
|
#define HAS_FAN (defined(FAN_PIN) && FAN_PIN >= 0)
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Helper Macros for heaters and extruder fan
|
||||||
|
*/
|
||||||
|
#define WRITE_HEATER_0P(v) WRITE(HEATER_0_PIN, v)
|
||||||
|
#if EXTRUDERS > 1 || defined(HEATERS_PARALLEL)
|
||||||
|
#define WRITE_HEATER_1(v) WRITE(HEATER_1_PIN, v)
|
||||||
|
#if EXTRUDERS > 2
|
||||||
|
#define WRITE_HEATER_2(v) WRITE(HEATER_2_PIN, v)
|
||||||
|
#if EXTRUDERS > 3
|
||||||
|
#define WRITE_HEATER_3(v) WRITE(HEATER_3_PIN, v)
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
|
#ifdef HEATERS_PARALLEL
|
||||||
|
#define WRITE_HEATER_0(v) { WRITE_HEATER_0P(v); WRITE_HEATER_1(v); }
|
||||||
|
#else
|
||||||
|
#define WRITE_HEATER_0(v) WRITE_HEATER_0P(v)
|
||||||
|
#endif
|
||||||
|
#if HAS_HEATER_BED
|
||||||
|
#define WRITE_HEATER_BED(v) WRITE(HEATER_BED_PIN, v)
|
||||||
|
#endif
|
||||||
|
#if HAS_FAN
|
||||||
|
#define WRITE_FAN(v) WRITE(FAN_PIN, v)
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Sampling period of the temperature routine
|
||||||
|
* This override comes originally from temperature.cpp
|
||||||
|
* The Configuration.h option is basically ignored.
|
||||||
|
*/
|
||||||
|
#ifdef PID_dT
|
||||||
|
#undef PID_dT
|
||||||
|
#endif
|
||||||
|
#define PID_dT ((OVERSAMPLENR * 12.0)/(F_CPU / 64.0 / 256.0))
|
||||||
|
|
||||||
|
|
||||||
|
#endif //CONFIGURATION_LCD
|
||||||
|
#endif //CONDITIONALS_H
|
|
@ -360,10 +360,6 @@ const bool Z_MAX_ENDSTOP_INVERTING = false; // set to true to invert the logic o
|
||||||
#define Y_MAX_POS 200
|
#define Y_MAX_POS 200
|
||||||
#define Z_MAX_POS 200
|
#define Z_MAX_POS 200
|
||||||
|
|
||||||
#define X_MAX_LENGTH (X_MAX_POS - X_MIN_POS)
|
|
||||||
#define Y_MAX_LENGTH (Y_MAX_POS - Y_MIN_POS)
|
|
||||||
#define Z_MAX_LENGTH (Z_MAX_POS - Z_MIN_POS)
|
|
||||||
|
|
||||||
//===========================================================================
|
//===========================================================================
|
||||||
//============================= Filament Runout Sensor ======================
|
//============================= Filament Runout Sensor ======================
|
||||||
//===========================================================================
|
//===========================================================================
|
||||||
|
@ -374,6 +370,23 @@ const bool Z_MAX_ENDSTOP_INVERTING = false; // set to true to invert the logic o
|
||||||
//const bool FIL_RUNOUT_INVERTING = true; // Should be uncommented and true or false should assigned
|
//const bool FIL_RUNOUT_INVERTING = true; // Should be uncommented and true or false should assigned
|
||||||
//#define ENDSTOPPULLUP_FIL_RUNOUT // Uncomment to use internal pullup for filament runout pins if the sensor is defined.
|
//#define ENDSTOPPULLUP_FIL_RUNOUT // Uncomment to use internal pullup for filament runout pins if the sensor is defined.
|
||||||
|
|
||||||
|
//===========================================================================
|
||||||
|
//============================ Manual Bed Leveling ==========================
|
||||||
|
//===========================================================================
|
||||||
|
|
||||||
|
// #define MANUAL_BED_LEVELING // Add display menu option for bed leveling
|
||||||
|
// #define MESH_BED_LEVELING // Enable mesh bed leveling
|
||||||
|
|
||||||
|
#if defined(MESH_BED_LEVELING)
|
||||||
|
#define MESH_MIN_X 10
|
||||||
|
#define MESH_MAX_X (X_MAX_POS - MESH_MIN_X)
|
||||||
|
#define MESH_MIN_Y 10
|
||||||
|
#define MESH_MAX_Y (Y_MAX_POS - MESH_MIN_Y)
|
||||||
|
#define MESH_NUM_X_POINTS 3 // Don't use more than 7 points per axis, implementation limited
|
||||||
|
#define MESH_NUM_Y_POINTS 3
|
||||||
|
#define MESH_HOME_SEARCH_Z 4 // Z after Home, bed somewhere below but above 0.0
|
||||||
|
#endif // MESH_BED_LEVELING
|
||||||
|
|
||||||
//===========================================================================
|
//===========================================================================
|
||||||
//============================= Bed Auto Leveling ===========================
|
//============================= Bed Auto Leveling ===========================
|
||||||
//===========================================================================
|
//===========================================================================
|
||||||
|
@ -400,12 +413,6 @@ const bool Z_MAX_ENDSTOP_INVERTING = false; // set to true to invert the logic o
|
||||||
|
|
||||||
#ifdef AUTO_BED_LEVELING_GRID
|
#ifdef AUTO_BED_LEVELING_GRID
|
||||||
|
|
||||||
// Use one of these defines to specify the origin
|
|
||||||
// for a topographical map to be printed for your bed.
|
|
||||||
enum { OriginBackLeft, OriginFrontLeft, OriginBackRight, OriginFrontRight };
|
|
||||||
#define TOPO_ORIGIN OriginFrontLeft
|
|
||||||
|
|
||||||
// The edges of the rectangle in which to probe
|
|
||||||
#define LEFT_PROBE_BED_POSITION 15
|
#define LEFT_PROBE_BED_POSITION 15
|
||||||
#define RIGHT_PROBE_BED_POSITION 170
|
#define RIGHT_PROBE_BED_POSITION 170
|
||||||
#define FRONT_PROBE_BED_POSITION 20
|
#define FRONT_PROBE_BED_POSITION 20
|
||||||
|
@ -616,112 +623,17 @@ const bool Z_MAX_ENDSTOP_INVERTING = false; // set to true to invert the logic o
|
||||||
// REMEMBER TO INSTALL LiquidCrystal_I2C.h in your ARDUINO library folder: https://github.com/kiyoshigawa/LiquidCrystal_I2C
|
// REMEMBER TO INSTALL LiquidCrystal_I2C.h in your ARDUINO library folder: https://github.com/kiyoshigawa/LiquidCrystal_I2C
|
||||||
//#define RA_CONTROL_PANEL
|
//#define RA_CONTROL_PANEL
|
||||||
|
|
||||||
//automatic expansion
|
/**
|
||||||
#if defined (MAKRPANEL)
|
* I2C Panels
|
||||||
#define DOGLCD
|
*/
|
||||||
#define SDSUPPORT
|
|
||||||
#define ULTIPANEL
|
|
||||||
#define NEWPANEL
|
|
||||||
#define DEFAULT_LCD_CONTRAST 17
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if defined(miniVIKI) || defined(VIKI2)
|
|
||||||
#define ULTRA_LCD //general LCD support, also 16x2
|
|
||||||
#define DOGLCD // Support for SPI LCD 128x64 (Controller ST7565R graphic Display Family)
|
|
||||||
#define ULTIMAKERCONTROLLER //as available from the Ultimaker online store.
|
|
||||||
|
|
||||||
#ifdef miniVIKI
|
|
||||||
#define DEFAULT_LCD_CONTRAST 95
|
|
||||||
#else
|
|
||||||
#define DEFAULT_LCD_CONTRAST 40
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#define ENCODER_PULSES_PER_STEP 4
|
|
||||||
#define ENCODER_STEPS_PER_MENU_ITEM 1
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if defined (PANEL_ONE)
|
|
||||||
#define SDSUPPORT
|
|
||||||
#define ULTIMAKERCONTROLLER
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if defined (REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER)
|
|
||||||
#define DOGLCD
|
|
||||||
#define U8GLIB_ST7920
|
|
||||||
#define REPRAP_DISCOUNT_SMART_CONTROLLER
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if defined(ULTIMAKERCONTROLLER) || defined(REPRAP_DISCOUNT_SMART_CONTROLLER) || defined(G3D_PANEL)
|
|
||||||
#define ULTIPANEL
|
|
||||||
#define NEWPANEL
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if defined(REPRAPWORLD_KEYPAD)
|
|
||||||
#define NEWPANEL
|
|
||||||
#define ULTIPANEL
|
|
||||||
#endif
|
|
||||||
#if defined(RA_CONTROL_PANEL)
|
|
||||||
#define ULTIPANEL
|
|
||||||
#define NEWPANEL
|
|
||||||
#define LCD_I2C_TYPE_PCA8574
|
|
||||||
#define LCD_I2C_ADDRESS 0x27 // I2C Address of the port expander
|
|
||||||
#endif
|
|
||||||
|
|
||||||
//I2C PANELS
|
|
||||||
|
|
||||||
//#define LCD_I2C_SAINSMART_YWROBOT
|
//#define LCD_I2C_SAINSMART_YWROBOT
|
||||||
#ifdef LCD_I2C_SAINSMART_YWROBOT
|
|
||||||
// This uses the LiquidCrystal_I2C library ( https://bitbucket.org/fmalpartida/new-liquidcrystal/wiki/Home )
|
|
||||||
// Make sure it is placed in the Arduino libraries directory.
|
|
||||||
#define LCD_I2C_TYPE_PCF8575
|
|
||||||
#define LCD_I2C_ADDRESS 0x27 // I2C Address of the port expander
|
|
||||||
#define NEWPANEL
|
|
||||||
#define ULTIPANEL
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// PANELOLU2 LCD with status LEDs, separate encoder and click inputs
|
// PANELOLU2 LCD with status LEDs, separate encoder and click inputs
|
||||||
//#define LCD_I2C_PANELOLU2
|
//#define LCD_I2C_PANELOLU2
|
||||||
#ifdef LCD_I2C_PANELOLU2
|
|
||||||
// This uses the LiquidTWI2 library v1.2.3 or later ( https://github.com/lincomatic/LiquidTWI2 )
|
|
||||||
// Make sure the LiquidTWI2 directory is placed in the Arduino or Sketchbook libraries subdirectory.
|
|
||||||
// (v1.2.3 no longer requires you to define PANELOLU in the LiquidTWI2.h library header file)
|
|
||||||
// Note: The PANELOLU2 encoder click input can either be directly connected to a pin
|
|
||||||
// (if BTN_ENC defined to != -1) or read through I2C (when BTN_ENC == -1).
|
|
||||||
#define LCD_I2C_TYPE_MCP23017
|
|
||||||
#define LCD_I2C_ADDRESS 0x20 // I2C Address of the port expander
|
|
||||||
#define LCD_USE_I2C_BUZZER //comment out to disable buzzer on LCD
|
|
||||||
#define NEWPANEL
|
|
||||||
#define ULTIPANEL
|
|
||||||
|
|
||||||
#ifndef ENCODER_PULSES_PER_STEP
|
|
||||||
#define ENCODER_PULSES_PER_STEP 4
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifndef ENCODER_STEPS_PER_MENU_ITEM
|
|
||||||
#define ENCODER_STEPS_PER_MENU_ITEM 1
|
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
||||||
#ifdef LCD_USE_I2C_BUZZER
|
|
||||||
#define LCD_FEEDBACK_FREQUENCY_HZ 1000
|
|
||||||
#define LCD_FEEDBACK_FREQUENCY_DURATION_MS 100
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// Panucatt VIKI LCD with status LEDs, integrated click & L/R/U/P buttons, separate encoder inputs
|
// Panucatt VIKI LCD with status LEDs, integrated click & L/R/U/P buttons, separate encoder inputs
|
||||||
//#define LCD_I2C_VIKI
|
//#define LCD_I2C_VIKI
|
||||||
#ifdef LCD_I2C_VIKI
|
|
||||||
// This uses the LiquidTWI2 library v1.2.3 or later ( https://github.com/lincomatic/LiquidTWI2 )
|
|
||||||
// Make sure the LiquidTWI2 directory is placed in the Arduino or Sketchbook libraries subdirectory.
|
|
||||||
// Note: The pause/stop/resume LCD button pin should be connected to the Arduino
|
|
||||||
// BTN_ENC pin (or set BTN_ENC to -1 if not used)
|
|
||||||
#define LCD_I2C_TYPE_MCP23017
|
|
||||||
#define LCD_I2C_ADDRESS 0x20 // I2C Address of the port expander
|
|
||||||
#define LCD_USE_I2C_BUZZER //comment out to disable buzzer on LCD (requires LiquidTWI2 v1.2.3 or later)
|
|
||||||
#define NEWPANEL
|
|
||||||
#define ULTIPANEL
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// Shift register panels
|
// Shift register panels
|
||||||
// ---------------------
|
// ---------------------
|
||||||
|
@ -729,51 +641,10 @@ const bool Z_MAX_ENDSTOP_INVERTING = false; // set to true to invert the logic o
|
||||||
// https://bitbucket.org/fmalpartida/new-liquidcrystal/wiki/schematics#!shiftregister-connection
|
// https://bitbucket.org/fmalpartida/new-liquidcrystal/wiki/schematics#!shiftregister-connection
|
||||||
|
|
||||||
//#define SAV_3DLCD
|
//#define SAV_3DLCD
|
||||||
#ifdef SAV_3DLCD
|
|
||||||
#define SR_LCD_2W_NL // Non latching 2 wire shiftregister
|
|
||||||
#define NEWPANEL
|
|
||||||
#define ULTIPANEL
|
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
||||||
#ifdef ULTIPANEL
|
|
||||||
// #define NEWPANEL //enable this if you have a click-encoder panel
|
|
||||||
#define SDSUPPORT
|
|
||||||
#define ULTRA_LCD
|
|
||||||
#ifdef DOGLCD // Change number of lines to match the DOG graphic display
|
|
||||||
#define LCD_WIDTH 22
|
|
||||||
#define LCD_HEIGHT 5
|
|
||||||
#else
|
|
||||||
#define LCD_WIDTH 20
|
|
||||||
#define LCD_HEIGHT 4
|
|
||||||
#endif
|
|
||||||
#else //no panel but just LCD
|
|
||||||
#ifdef ULTRA_LCD
|
|
||||||
#ifdef DOGLCD // Change number of lines to match the 128x64 graphics display
|
|
||||||
#define LCD_WIDTH 22
|
|
||||||
#define LCD_HEIGHT 5
|
|
||||||
#else
|
|
||||||
#define LCD_WIDTH 16
|
|
||||||
#define LCD_HEIGHT 2
|
|
||||||
#endif
|
|
||||||
#endif
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// default LCD contrast for dogm-like LCD displays
|
|
||||||
#ifdef DOGLCD
|
|
||||||
# ifndef DEFAULT_LCD_CONTRAST
|
|
||||||
# define DEFAULT_LCD_CONTRAST 32
|
|
||||||
# endif
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// Increase the FAN pwm frequency. Removes the PWM noise but increases heating in the FET/Arduino
|
// Increase the FAN pwm frequency. Removes the PWM noise but increases heating in the FET/Arduino
|
||||||
//#define FAST_PWM_FAN
|
//#define FAST_PWM_FAN
|
||||||
|
|
||||||
// Temperature status LEDs that display the hotend and bet temperature.
|
|
||||||
// If all hotends and bed temperature and temperature setpoint are < 54C then the BLUE led is on.
|
|
||||||
// Otherwise the RED led is on. There is 1C hysteresis.
|
|
||||||
//#define TEMP_STAT_LEDS
|
|
||||||
|
|
||||||
// Use software PWM to drive the fan, as for the heaters. This uses a very low frequency
|
// Use software PWM to drive the fan, as for the heaters. This uses a very low frequency
|
||||||
// which is not ass annoying as with the hardware PWM. On the other hand, if this frequency
|
// which is not ass annoying as with the hardware PWM. On the other hand, if this frequency
|
||||||
// is too low, you should also increment SOFT_PWM_SCALE.
|
// is too low, you should also increment SOFT_PWM_SCALE.
|
||||||
|
@ -785,6 +656,11 @@ const bool Z_MAX_ENDSTOP_INVERTING = false; // set to true to invert the logic o
|
||||||
// at zero value, there are 128 effective control positions.
|
// at zero value, there are 128 effective control positions.
|
||||||
#define SOFT_PWM_SCALE 0
|
#define SOFT_PWM_SCALE 0
|
||||||
|
|
||||||
|
// Temperature status LEDs that display the hotend and bet temperature.
|
||||||
|
// If all hotends and bed temperature and temperature setpoint are < 54C then the BLUE led is on.
|
||||||
|
// Otherwise the RED led is on. There is 1C hysteresis.
|
||||||
|
//#define TEMP_STAT_LEDS
|
||||||
|
|
||||||
// M240 Triggers a camera by emulating a Canon RC-1 Remote
|
// M240 Triggers a camera by emulating a Canon RC-1 Remote
|
||||||
// Data from: http://www.doc-diy.net/photo/rc-1_hacked/
|
// Data from: http://www.doc-diy.net/photo/rc-1_hacked/
|
||||||
// #define PHOTOGRAPH_PIN 23
|
// #define PHOTOGRAPH_PIN 23
|
||||||
|
@ -856,4 +732,4 @@ const bool Z_MAX_ENDSTOP_INVERTING = false; // set to true to invert the logic o
|
||||||
#include "Configuration_adv.h"
|
#include "Configuration_adv.h"
|
||||||
#include "thermistortables.h"
|
#include "thermistortables.h"
|
||||||
|
|
||||||
#endif //__CONFIGURATION_H
|
#endif //CONFIGURATION_H
|
||||||
|
|
|
@ -18,7 +18,13 @@
|
||||||
* max_xy_jerk
|
* max_xy_jerk
|
||||||
* max_z_jerk
|
* max_z_jerk
|
||||||
* max_e_jerk
|
* max_e_jerk
|
||||||
* add_homing (x3)
|
* home_offset (x3)
|
||||||
|
*
|
||||||
|
* Mesh bed leveling:
|
||||||
|
* active
|
||||||
|
* mesh_num_x
|
||||||
|
* mesh_num_y
|
||||||
|
* z_values[][]
|
||||||
*
|
*
|
||||||
* DELTA:
|
* DELTA:
|
||||||
* endstop_adj (x3)
|
* endstop_adj (x3)
|
||||||
|
@ -69,6 +75,10 @@
|
||||||
#include "ultralcd.h"
|
#include "ultralcd.h"
|
||||||
#include "ConfigurationStore.h"
|
#include "ConfigurationStore.h"
|
||||||
|
|
||||||
|
#if defined(MESH_BED_LEVELING)
|
||||||
|
#include "mesh_bed_leveling.h"
|
||||||
|
#endif // MESH_BED_LEVELING
|
||||||
|
|
||||||
void _EEPROM_writeData(int &pos, uint8_t* value, uint8_t size) {
|
void _EEPROM_writeData(int &pos, uint8_t* value, uint8_t size) {
|
||||||
uint8_t c;
|
uint8_t c;
|
||||||
while(size--) {
|
while(size--) {
|
||||||
|
@ -105,7 +115,7 @@ void _EEPROM_readData(int &pos, uint8_t* value, uint8_t size) {
|
||||||
// wrong data being written to the variables.
|
// wrong data being written to the variables.
|
||||||
// ALSO: always make sure the variables in the Store and retrieve sections are in the same order.
|
// ALSO: always make sure the variables in the Store and retrieve sections are in the same order.
|
||||||
|
|
||||||
#define EEPROM_VERSION "V16"
|
#define EEPROM_VERSION "V17"
|
||||||
|
|
||||||
#ifdef EEPROM_SETTINGS
|
#ifdef EEPROM_SETTINGS
|
||||||
|
|
||||||
|
@ -126,7 +136,29 @@ void Config_StoreSettings() {
|
||||||
EEPROM_WRITE_VAR(i, max_xy_jerk);
|
EEPROM_WRITE_VAR(i, max_xy_jerk);
|
||||||
EEPROM_WRITE_VAR(i, max_z_jerk);
|
EEPROM_WRITE_VAR(i, max_z_jerk);
|
||||||
EEPROM_WRITE_VAR(i, max_e_jerk);
|
EEPROM_WRITE_VAR(i, max_e_jerk);
|
||||||
EEPROM_WRITE_VAR(i, add_homing);
|
EEPROM_WRITE_VAR(i, home_offset);
|
||||||
|
|
||||||
|
uint8_t mesh_num_x = 3;
|
||||||
|
uint8_t mesh_num_y = 3;
|
||||||
|
#if defined(MESH_BED_LEVELING)
|
||||||
|
// Compile time test that sizeof(mbl.z_values) is as expected
|
||||||
|
typedef char c_assert[(sizeof(mbl.z_values) == MESH_NUM_X_POINTS*MESH_NUM_Y_POINTS*sizeof(dummy)) ? 1 : -1];
|
||||||
|
mesh_num_x = MESH_NUM_X_POINTS;
|
||||||
|
mesh_num_y = MESH_NUM_Y_POINTS;
|
||||||
|
EEPROM_WRITE_VAR(i, mbl.active);
|
||||||
|
EEPROM_WRITE_VAR(i, mesh_num_x);
|
||||||
|
EEPROM_WRITE_VAR(i, mesh_num_y);
|
||||||
|
EEPROM_WRITE_VAR(i, mbl.z_values);
|
||||||
|
#else
|
||||||
|
uint8_t dummy_uint8 = 0;
|
||||||
|
EEPROM_WRITE_VAR(i, dummy_uint8);
|
||||||
|
EEPROM_WRITE_VAR(i, mesh_num_x);
|
||||||
|
EEPROM_WRITE_VAR(i, mesh_num_y);
|
||||||
|
dummy = 0.0f;
|
||||||
|
for (int q=0; q<mesh_num_x*mesh_num_y; q++) {
|
||||||
|
EEPROM_WRITE_VAR(i, dummy);
|
||||||
|
}
|
||||||
|
#endif // MESH_BED_LEVELING
|
||||||
|
|
||||||
#ifdef DELTA
|
#ifdef DELTA
|
||||||
EEPROM_WRITE_VAR(i, endstop_adj); // 3 floats
|
EEPROM_WRITE_VAR(i, endstop_adj); // 3 floats
|
||||||
|
@ -250,7 +282,7 @@ void Config_RetrieveSettings() {
|
||||||
EEPROM_READ_VAR(i, max_feedrate);
|
EEPROM_READ_VAR(i, max_feedrate);
|
||||||
EEPROM_READ_VAR(i, max_acceleration_units_per_sq_second);
|
EEPROM_READ_VAR(i, max_acceleration_units_per_sq_second);
|
||||||
|
|
||||||
// steps per sq second need to be updated to agree with the units per sq second (as they are what is used in the planner)
|
// steps per sq second need to be updated to agree with the units per sq second (as they are what is used in the planner)
|
||||||
reset_acceleration_rates();
|
reset_acceleration_rates();
|
||||||
|
|
||||||
EEPROM_READ_VAR(i, acceleration);
|
EEPROM_READ_VAR(i, acceleration);
|
||||||
|
@ -262,7 +294,32 @@ void Config_RetrieveSettings() {
|
||||||
EEPROM_READ_VAR(i, max_xy_jerk);
|
EEPROM_READ_VAR(i, max_xy_jerk);
|
||||||
EEPROM_READ_VAR(i, max_z_jerk);
|
EEPROM_READ_VAR(i, max_z_jerk);
|
||||||
EEPROM_READ_VAR(i, max_e_jerk);
|
EEPROM_READ_VAR(i, max_e_jerk);
|
||||||
EEPROM_READ_VAR(i, add_homing);
|
EEPROM_READ_VAR(i, home_offset);
|
||||||
|
|
||||||
|
uint8_t mesh_num_x = 0;
|
||||||
|
uint8_t mesh_num_y = 0;
|
||||||
|
#if defined(MESH_BED_LEVELING)
|
||||||
|
EEPROM_READ_VAR(i, mbl.active);
|
||||||
|
EEPROM_READ_VAR(i, mesh_num_x);
|
||||||
|
EEPROM_READ_VAR(i, mesh_num_y);
|
||||||
|
if (mesh_num_x != MESH_NUM_X_POINTS ||
|
||||||
|
mesh_num_y != MESH_NUM_Y_POINTS) {
|
||||||
|
mbl.reset();
|
||||||
|
for (int q=0; q<mesh_num_x*mesh_num_y; q++) {
|
||||||
|
EEPROM_READ_VAR(i, dummy);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
EEPROM_READ_VAR(i, mbl.z_values);
|
||||||
|
}
|
||||||
|
#else
|
||||||
|
uint8_t dummy_uint8 = 0;
|
||||||
|
EEPROM_READ_VAR(i, dummy_uint8);
|
||||||
|
EEPROM_READ_VAR(i, mesh_num_x);
|
||||||
|
EEPROM_READ_VAR(i, mesh_num_y);
|
||||||
|
for (int q=0; q<mesh_num_x*mesh_num_y; q++) {
|
||||||
|
EEPROM_READ_VAR(i, dummy);
|
||||||
|
}
|
||||||
|
#endif // MESH_BED_LEVELING
|
||||||
|
|
||||||
#ifdef DELTA
|
#ifdef DELTA
|
||||||
EEPROM_READ_VAR(i, endstop_adj); // 3 floats
|
EEPROM_READ_VAR(i, endstop_adj); // 3 floats
|
||||||
|
@ -390,7 +447,11 @@ void Config_ResetDefault() {
|
||||||
max_xy_jerk = DEFAULT_XYJERK;
|
max_xy_jerk = DEFAULT_XYJERK;
|
||||||
max_z_jerk = DEFAULT_ZJERK;
|
max_z_jerk = DEFAULT_ZJERK;
|
||||||
max_e_jerk = DEFAULT_EJERK;
|
max_e_jerk = DEFAULT_EJERK;
|
||||||
add_homing[X_AXIS] = add_homing[Y_AXIS] = add_homing[Z_AXIS] = 0;
|
home_offset[X_AXIS] = home_offset[Y_AXIS] = home_offset[Z_AXIS] = 0;
|
||||||
|
|
||||||
|
#if defined(MESH_BED_LEVELING)
|
||||||
|
mbl.active = 0;
|
||||||
|
#endif // MESH_BED_LEVELING
|
||||||
|
|
||||||
#ifdef DELTA
|
#ifdef DELTA
|
||||||
endstop_adj[X_AXIS] = endstop_adj[Y_AXIS] = endstop_adj[Z_AXIS] = 0;
|
endstop_adj[X_AXIS] = endstop_adj[Y_AXIS] = endstop_adj[Z_AXIS] = 0;
|
||||||
|
@ -546,9 +607,9 @@ void Config_PrintSettings(bool forReplay) {
|
||||||
SERIAL_ECHOLNPGM("Home offset (mm):");
|
SERIAL_ECHOLNPGM("Home offset (mm):");
|
||||||
SERIAL_ECHO_START;
|
SERIAL_ECHO_START;
|
||||||
}
|
}
|
||||||
SERIAL_ECHOPAIR(" M206 X", add_homing[X_AXIS] );
|
SERIAL_ECHOPAIR(" M206 X", home_offset[X_AXIS] );
|
||||||
SERIAL_ECHOPAIR(" Y", add_homing[Y_AXIS] );
|
SERIAL_ECHOPAIR(" Y", home_offset[Y_AXIS] );
|
||||||
SERIAL_ECHOPAIR(" Z", add_homing[Z_AXIS] );
|
SERIAL_ECHOPAIR(" Z", home_offset[Z_AXIS] );
|
||||||
SERIAL_EOL;
|
SERIAL_EOL;
|
||||||
|
|
||||||
#ifdef DELTA
|
#ifdef DELTA
|
||||||
|
|
|
@ -1,6 +1,8 @@
|
||||||
#ifndef CONFIGURATION_ADV_H
|
#ifndef CONFIGURATION_ADV_H
|
||||||
#define CONFIGURATION_ADV_H
|
#define CONFIGURATION_ADV_H
|
||||||
|
|
||||||
|
#include "Conditionals.h"
|
||||||
|
|
||||||
//===========================================================================
|
//===========================================================================
|
||||||
//=============================Thermal Settings ============================
|
//=============================Thermal Settings ============================
|
||||||
//===========================================================================
|
//===========================================================================
|
||||||
|
@ -89,54 +91,6 @@
|
||||||
|
|
||||||
#define ENDSTOPS_ONLY_FOR_HOMING // If defined the endstops will only be used for homing
|
#define ENDSTOPS_ONLY_FOR_HOMING // If defined the endstops will only be used for homing
|
||||||
|
|
||||||
|
|
||||||
//// AUTOSET LOCATIONS OF LIMIT SWITCHES
|
|
||||||
//// Added by ZetaPhoenix 09-15-2012
|
|
||||||
#ifdef MANUAL_HOME_POSITIONS // Use manual limit switch locations
|
|
||||||
#define X_HOME_POS MANUAL_X_HOME_POS
|
|
||||||
#define Y_HOME_POS MANUAL_Y_HOME_POS
|
|
||||||
#define Z_HOME_POS MANUAL_Z_HOME_POS
|
|
||||||
#else //Set min/max homing switch positions based upon homing direction and min/max travel limits
|
|
||||||
//X axis
|
|
||||||
#if X_HOME_DIR == -1
|
|
||||||
#ifdef BED_CENTER_AT_0_0
|
|
||||||
#define X_HOME_POS X_MAX_LENGTH * -0.5
|
|
||||||
#else
|
|
||||||
#define X_HOME_POS X_MIN_POS
|
|
||||||
#endif //BED_CENTER_AT_0_0
|
|
||||||
#else
|
|
||||||
#ifdef BED_CENTER_AT_0_0
|
|
||||||
#define X_HOME_POS X_MAX_LENGTH * 0.5
|
|
||||||
#else
|
|
||||||
#define X_HOME_POS X_MAX_POS
|
|
||||||
#endif //BED_CENTER_AT_0_0
|
|
||||||
#endif //X_HOME_DIR == -1
|
|
||||||
|
|
||||||
//Y axis
|
|
||||||
#if Y_HOME_DIR == -1
|
|
||||||
#ifdef BED_CENTER_AT_0_0
|
|
||||||
#define Y_HOME_POS Y_MAX_LENGTH * -0.5
|
|
||||||
#else
|
|
||||||
#define Y_HOME_POS Y_MIN_POS
|
|
||||||
#endif //BED_CENTER_AT_0_0
|
|
||||||
#else
|
|
||||||
#ifdef BED_CENTER_AT_0_0
|
|
||||||
#define Y_HOME_POS Y_MAX_LENGTH * 0.5
|
|
||||||
#else
|
|
||||||
#define Y_HOME_POS Y_MAX_POS
|
|
||||||
#endif //BED_CENTER_AT_0_0
|
|
||||||
#endif //Y_HOME_DIR == -1
|
|
||||||
|
|
||||||
// Z axis
|
|
||||||
#if Z_HOME_DIR == -1 //BED_CENTER_AT_0_0 not used
|
|
||||||
#define Z_HOME_POS Z_MIN_POS
|
|
||||||
#else
|
|
||||||
#define Z_HOME_POS Z_MAX_POS
|
|
||||||
#endif //Z_HOME_DIR == -1
|
|
||||||
#endif //End auto min/max positions
|
|
||||||
//END AUTOSET LOCATIONS OF LIMIT SWITCHES -ZP
|
|
||||||
|
|
||||||
|
|
||||||
//#define Z_LATE_ENABLE // Enable Z the last moment. Needed if your Z driver overheats.
|
//#define Z_LATE_ENABLE // Enable Z the last moment. Needed if your Z driver overheats.
|
||||||
|
|
||||||
// A single Z stepper driver is usually used to drive 2 stepper motors.
|
// A single Z stepper driver is usually used to drive 2 stepper motors.
|
||||||
|
@ -146,67 +100,53 @@
|
||||||
// On a RAMPS (or other 5 driver) motherboard, using this feature will limit you to using 1 extruder.
|
// On a RAMPS (or other 5 driver) motherboard, using this feature will limit you to using 1 extruder.
|
||||||
//#define Z_DUAL_STEPPER_DRIVERS
|
//#define Z_DUAL_STEPPER_DRIVERS
|
||||||
|
|
||||||
#ifdef Z_DUAL_STEPPER_DRIVERS
|
|
||||||
#undef EXTRUDERS
|
|
||||||
#define EXTRUDERS 1
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// Same again but for Y Axis.
|
// Same again but for Y Axis.
|
||||||
//#define Y_DUAL_STEPPER_DRIVERS
|
//#define Y_DUAL_STEPPER_DRIVERS
|
||||||
|
|
||||||
// Define if the two Y drives need to rotate in opposite directions
|
// Define if the two Y drives need to rotate in opposite directions
|
||||||
#define INVERT_Y2_VS_Y_DIR true
|
#define INVERT_Y2_VS_Y_DIR true
|
||||||
|
|
||||||
#ifdef Y_DUAL_STEPPER_DRIVERS
|
|
||||||
#undef EXTRUDERS
|
|
||||||
#define EXTRUDERS 1
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if defined (Z_DUAL_STEPPER_DRIVERS) && defined (Y_DUAL_STEPPER_DRIVERS)
|
|
||||||
#error "You cannot have dual drivers for both Y and Z"
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// Enable this for dual x-carriage printers.
|
// Enable this for dual x-carriage printers.
|
||||||
// A dual x-carriage design has the advantage that the inactive extruder can be parked which
|
// A dual x-carriage design has the advantage that the inactive extruder can be parked which
|
||||||
// prevents hot-end ooze contaminating the print. It also reduces the weight of each x-carriage
|
// prevents hot-end ooze contaminating the print. It also reduces the weight of each x-carriage
|
||||||
// allowing faster printing speeds.
|
// allowing faster printing speeds.
|
||||||
//#define DUAL_X_CARRIAGE
|
//#define DUAL_X_CARRIAGE
|
||||||
#ifdef DUAL_X_CARRIAGE
|
#ifdef DUAL_X_CARRIAGE
|
||||||
// Configuration for second X-carriage
|
// Configuration for second X-carriage
|
||||||
// Note: the first x-carriage is defined as the x-carriage which homes to the minimum endstop;
|
// Note: the first x-carriage is defined as the x-carriage which homes to the minimum endstop;
|
||||||
// the second x-carriage always homes to the maximum endstop.
|
// the second x-carriage always homes to the maximum endstop.
|
||||||
#define X2_MIN_POS 80 // set minimum to ensure second x-carriage doesn't hit the parked first 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_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_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 X2_HOME_POS X2_MAX_POS // default home position is the maximum carriage position
|
||||||
// However: In this mode the EXTRUDER_OFFSET_X value for the second extruder provides a software
|
// However: In this mode the EXTRUDER_OFFSET_X value for the second extruder provides a software
|
||||||
// override for X2_HOME_POS. This also allow recalibration of the distance between the two endstops
|
// override for X2_HOME_POS. This also allow recalibration of the distance between the two endstops
|
||||||
// without modifying the firmware (through the "M218 T1 X???" command).
|
// without modifying the firmware (through the "M218 T1 X???" command).
|
||||||
// Remember: you should set the second extruder x-offset to 0 in your slicer.
|
// Remember: you should set the second extruder x-offset to 0 in your slicer.
|
||||||
|
|
||||||
// Pins for second x-carriage stepper driver (defined here to avoid further complicating pins.h)
|
// Pins for second x-carriage stepper driver (defined here to avoid further complicating pins.h)
|
||||||
#define X2_ENABLE_PIN 29
|
#define X2_ENABLE_PIN 29
|
||||||
#define X2_STEP_PIN 25
|
#define X2_STEP_PIN 25
|
||||||
#define X2_DIR_PIN 23
|
#define X2_DIR_PIN 23
|
||||||
|
|
||||||
// There are a few selectable movement modes for dual x-carriages using M605 S<mode>
|
// There are a few selectable movement modes for dual x-carriages using M605 S<mode>
|
||||||
// Mode 0: Full control. The slicer has full control over both x-carriages and can achieve optimal travel results
|
// Mode 0: Full control. The slicer has full control over both x-carriages and can achieve optimal travel results
|
||||||
// as long as it supports dual x-carriages. (M605 S0)
|
// as long as it supports dual x-carriages. (M605 S0)
|
||||||
// Mode 1: Auto-park mode. The firmware will automatically park and unpark the x-carriages on tool changes so
|
// Mode 1: Auto-park mode. The firmware will automatically park and unpark the x-carriages on tool changes so
|
||||||
// that additional slicer support is not required. (M605 S1)
|
// that additional slicer support is not required. (M605 S1)
|
||||||
// Mode 2: Duplication mode. The firmware will transparently make the second x-carriage and extruder copy all
|
// Mode 2: Duplication mode. The firmware will transparently make the second x-carriage and extruder copy all
|
||||||
// actions of the first x-carriage. This allows the printer to print 2 arbitrary items at
|
// actions of the first x-carriage. This allows the printer to print 2 arbitrary items at
|
||||||
// once. (2nd extruder x offset and temp offset are set using: M605 S2 [Xnnn] [Rmmm])
|
// once. (2nd extruder x offset and temp offset are set using: M605 S2 [Xnnn] [Rmmm])
|
||||||
|
|
||||||
// This is the default power-up mode which can be later using M605.
|
// This is the default power-up mode which can be later using M605.
|
||||||
#define DEFAULT_DUAL_X_CARRIAGE_MODE 0
|
#define DEFAULT_DUAL_X_CARRIAGE_MODE 0
|
||||||
|
|
||||||
// Default settings in "Auto-park Mode"
|
// Default settings in "Auto-park Mode"
|
||||||
#define TOOLCHANGE_PARK_ZLIFT 0.2 // the distance to raise Z axis when parking an extruder
|
#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 TOOLCHANGE_UNPARK_ZLIFT 1 // the distance to raise Z axis when unparking an extruder
|
||||||
|
|
||||||
// Default x offset in duplication mode (typically set to half print bed width)
|
// Default x offset in duplication mode (typically set to half print bed width)
|
||||||
#define DEFAULT_DUPLICATION_X_OFFSET 100
|
#define DEFAULT_DUPLICATION_X_OFFSET 100
|
||||||
|
|
||||||
#endif //DUAL_X_CARRIAGE
|
#endif //DUAL_X_CARRIAGE
|
||||||
|
|
||||||
|
@ -218,31 +158,22 @@
|
||||||
//#define QUICK_HOME //if this is defined, if both x and y are to be homed, a diagonal move will be performed initially.
|
//#define QUICK_HOME //if this is defined, if both x and y are to be homed, a diagonal move will be performed initially.
|
||||||
|
|
||||||
#define AXIS_RELATIVE_MODES {false, false, false, false}
|
#define AXIS_RELATIVE_MODES {false, false, false, false}
|
||||||
#ifdef CONFIG_STEPPERS_TOSHIBA
|
|
||||||
#define MAX_STEP_FREQUENCY 10000 // Max step frequency for Toshiba Stepper Controllers
|
|
||||||
#else
|
|
||||||
#define MAX_STEP_FREQUENCY 40000 // Max step frequency for Ultimaker (5000 pps / half step)
|
|
||||||
#endif
|
|
||||||
//By default pololu step drivers require an active high signal. However, some high power drivers require an active low signal as step.
|
//By default pololu step drivers require an active high signal. However, some high power drivers require an active low signal as step.
|
||||||
#define INVERT_X_STEP_PIN false
|
#define INVERT_X_STEP_PIN false
|
||||||
#define INVERT_Y_STEP_PIN false
|
#define INVERT_Y_STEP_PIN false
|
||||||
#define INVERT_Z_STEP_PIN false
|
#define INVERT_Z_STEP_PIN false
|
||||||
#define INVERT_E_STEP_PIN false
|
#define INVERT_E_STEP_PIN false
|
||||||
|
|
||||||
//default stepper release if idle. Set to 0 to deactivate.
|
// Default stepper release if idle. Set to 0 to deactivate.
|
||||||
#define DEFAULT_STEPPER_DEACTIVE_TIME 60
|
#define DEFAULT_STEPPER_DEACTIVE_TIME 60
|
||||||
|
|
||||||
#define DEFAULT_MINIMUMFEEDRATE 0.0 // minimum feedrate
|
#define DEFAULT_MINIMUMFEEDRATE 0.0 // minimum feedrate
|
||||||
#define DEFAULT_MINTRAVELFEEDRATE 0.0
|
#define DEFAULT_MINTRAVELFEEDRATE 0.0
|
||||||
|
|
||||||
// Feedrates for manual moves along X, Y, Z, E from panel
|
|
||||||
#ifdef ULTIPANEL
|
#ifdef ULTIPANEL
|
||||||
#define MANUAL_FEEDRATE {50*60, 50*60, 4*60, 60} // set the speeds for manual moves (mm/min)
|
#define MANUAL_FEEDRATE {50*60, 50*60, 4*60, 60} // Feedrates for manual moves along X, Y, Z, E from panel
|
||||||
#endif
|
#define ULTIPANEL_FEEDMULTIPLY // Comment to disable setting feedrate multiplier via encoder
|
||||||
|
|
||||||
//Comment to disable setting feedrate multiplier via encoder
|
|
||||||
#ifdef ULTIPANEL
|
|
||||||
#define ULTIPANEL_FEEDMULTIPLY
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// minimum time in microseconds that a movement needs to take if the buffer is emptied.
|
// minimum time in microseconds that a movement needs to take if the buffer is emptied.
|
||||||
|
@ -261,13 +192,6 @@
|
||||||
// if unwanted behavior is observed on a user's machine when running at very slow speeds.
|
// if unwanted behavior is observed on a user's machine when running at very slow speeds.
|
||||||
#define MINIMUM_PLANNER_SPEED 0.05// (mm/sec)
|
#define MINIMUM_PLANNER_SPEED 0.05// (mm/sec)
|
||||||
|
|
||||||
// MS1 MS2 Stepper Driver Microstepping mode table
|
|
||||||
#define MICROSTEP1 LOW,LOW
|
|
||||||
#define MICROSTEP2 HIGH,LOW
|
|
||||||
#define MICROSTEP4 LOW,HIGH
|
|
||||||
#define MICROSTEP8 HIGH,HIGH
|
|
||||||
#define MICROSTEP16 HIGH,HIGH
|
|
||||||
|
|
||||||
// Microstep setting (Only functional when stepper driver microstep pins are connected to MCU.
|
// Microstep setting (Only functional when stepper driver microstep pins are connected to MCU.
|
||||||
#define MICROSTEP_MODES {16,16,16,16,16} // [1,2,4,8,16]
|
#define MICROSTEP_MODES {16,16,16,16,16} // [1,2,4,8,16]
|
||||||
|
|
||||||
|
@ -313,12 +237,6 @@
|
||||||
#define PROGRESS_MSG_EXPIRE 0
|
#define PROGRESS_MSG_EXPIRE 0
|
||||||
// Enable this to show messages for MSG_TIME then hide them
|
// Enable this to show messages for MSG_TIME then hide them
|
||||||
//#define PROGRESS_MSG_ONCE
|
//#define PROGRESS_MSG_ONCE
|
||||||
#ifdef DOGLCD
|
|
||||||
#warning LCD_PROGRESS_BAR does not apply to graphical displays at this time.
|
|
||||||
#endif
|
|
||||||
#ifdef FILAMENT_LCD_DISPLAY
|
|
||||||
#error LCD_PROGRESS_BAR and FILAMENT_LCD_DISPLAY are not fully compatible. Comment out this line to use both.
|
|
||||||
#endif
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// The hardware watchdog should reset the microcontroller disabling all outputs, in case the firmware gets stuck and doesn't do temperature regulation.
|
// The hardware watchdog should reset the microcontroller disabling all outputs, in case the firmware gets stuck and doesn't do temperature regulation.
|
||||||
|
@ -342,16 +260,6 @@
|
||||||
#define BABYSTEP_XY //not only z, but also XY in the menu. more clutter, more functions
|
#define BABYSTEP_XY //not only z, but also XY in the menu. more clutter, more functions
|
||||||
#define BABYSTEP_INVERT_Z false //true for inverse movements in Z
|
#define BABYSTEP_INVERT_Z false //true for inverse movements in Z
|
||||||
#define BABYSTEP_Z_MULTIPLICATOR 2 //faster z movements
|
#define BABYSTEP_Z_MULTIPLICATOR 2 //faster z movements
|
||||||
|
|
||||||
#ifdef COREXY
|
|
||||||
#error BABYSTEPPING not implemented for COREXY yet.
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef DELTA
|
|
||||||
#ifdef BABYSTEP_XY
|
|
||||||
#error BABYSTEPPING only implemented for Z axis on deltabots.
|
|
||||||
#endif
|
|
||||||
#endif
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// extruder advance constant (s2/mm3)
|
// extruder advance constant (s2/mm3)
|
||||||
|
@ -365,12 +273,8 @@
|
||||||
|
|
||||||
#ifdef ADVANCE
|
#ifdef ADVANCE
|
||||||
#define EXTRUDER_ADVANCE_K .0
|
#define EXTRUDER_ADVANCE_K .0
|
||||||
|
|
||||||
#define D_FILAMENT 2.85
|
#define D_FILAMENT 2.85
|
||||||
#define STEPS_MM_E 836
|
#define STEPS_MM_E 836
|
||||||
#define EXTRUSION_AREA (0.25 * D_FILAMENT * D_FILAMENT * 3.14159)
|
|
||||||
#define STEPS_PER_CUBIC_MM_E (axis_steps_per_unit[E_AXIS]/ EXTRUSION_AREA)
|
|
||||||
|
|
||||||
#endif // ADVANCE
|
#endif // ADVANCE
|
||||||
|
|
||||||
// Arc interpretation settings:
|
// Arc interpretation settings:
|
||||||
|
@ -385,26 +289,6 @@ const unsigned int dropsegments=5; //everything with less than this number of st
|
||||||
// be commented out otherwise
|
// be commented out otherwise
|
||||||
#define SDCARDDETECTINVERTED
|
#define SDCARDDETECTINVERTED
|
||||||
|
|
||||||
#ifdef ULTIPANEL
|
|
||||||
#undef SDCARDDETECTINVERTED
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// Power Signal Control Definitions
|
|
||||||
// By default use ATX definition
|
|
||||||
#ifndef POWER_SUPPLY
|
|
||||||
#define POWER_SUPPLY 1
|
|
||||||
#endif
|
|
||||||
// 1 = ATX
|
|
||||||
#if (POWER_SUPPLY == 1)
|
|
||||||
#define PS_ON_AWAKE LOW
|
|
||||||
#define PS_ON_ASLEEP HIGH
|
|
||||||
#endif
|
|
||||||
// 2 = X-Box 360 203W
|
|
||||||
#if (POWER_SUPPLY == 2)
|
|
||||||
#define PS_ON_AWAKE HIGH
|
|
||||||
#define PS_ON_ASLEEP LOW
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// Control heater 0 and heater 1 in parallel.
|
// Control heater 0 and heater 1 in parallel.
|
||||||
//#define HEATERS_PARALLEL
|
//#define HEATERS_PARALLEL
|
||||||
|
|
||||||
|
@ -414,7 +298,7 @@ const unsigned int dropsegments=5; //everything with less than this number of st
|
||||||
|
|
||||||
// The number of linear motions that can be in the plan at any give time.
|
// The number of linear motions that can be in the plan at any give time.
|
||||||
// THE BLOCK_BUFFER_SIZE NEEDS TO BE A POWER OF 2, i.g. 8,16,32 because shifts and ors are used to do the ring-buffering.
|
// THE BLOCK_BUFFER_SIZE NEEDS TO BE A POWER OF 2, i.g. 8,16,32 because shifts and ors are used to do the ring-buffering.
|
||||||
#if defined SDSUPPORT
|
#ifdef SDSUPPORT
|
||||||
#define BLOCK_BUFFER_SIZE 16 // SD,LCD,Buttons take more memory, block buffer needs to be smaller
|
#define BLOCK_BUFFER_SIZE 16 // SD,LCD,Buttons take more memory, block buffer needs to be smaller
|
||||||
#else
|
#else
|
||||||
#define BLOCK_BUFFER_SIZE 16 // maximize block buffer
|
#define BLOCK_BUFFER_SIZE 16 // maximize block buffer
|
||||||
|
@ -444,9 +328,9 @@ const unsigned int dropsegments=5; //everything with less than this number of st
|
||||||
#define RETRACT_RECOVER_FEEDRATE 8 //default feedrate for recovering from retraction (mm/s)
|
#define RETRACT_RECOVER_FEEDRATE 8 //default feedrate for recovering from retraction (mm/s)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
//adds support for experimental filament exchange support M600; requires display
|
// Add support for experimental filament exchange support M600; requires display
|
||||||
#ifdef ULTIPANEL
|
#ifdef ULTIPANEL
|
||||||
#define FILAMENTCHANGEENABLE
|
//#define FILAMENTCHANGEENABLE
|
||||||
#ifdef FILAMENTCHANGEENABLE
|
#ifdef FILAMENTCHANGEENABLE
|
||||||
#define FILAMENTCHANGE_XPOS 3
|
#define FILAMENTCHANGE_XPOS 3
|
||||||
#define FILAMENTCHANGE_YPOS 3
|
#define FILAMENTCHANGE_YPOS 3
|
||||||
|
@ -456,13 +340,6 @@ const unsigned int dropsegments=5; //everything with less than this number of st
|
||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef FILAMENTCHANGEENABLE
|
|
||||||
#ifdef EXTRUDER_RUNOUT_PREVENT
|
|
||||||
#error EXTRUDER_RUNOUT_PREVENT currently incompatible with FILAMENTCHANGE
|
|
||||||
#endif
|
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
||||||
/******************************************************************************\
|
/******************************************************************************\
|
||||||
* enable this section if you have TMC26X motor drivers.
|
* enable this section if you have TMC26X motor drivers.
|
||||||
* you need to import the TMC26XStepper library into the arduino IDE for this
|
* you need to import the TMC26XStepper library into the arduino IDE for this
|
||||||
|
@ -596,81 +473,7 @@ const unsigned int dropsegments=5; //everything with less than this number of st
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#include "Conditionals.h"
|
||||||
|
#include "SanityCheck.h"
|
||||||
|
|
||||||
//===========================================================================
|
#endif //CONFIGURATION_ADV_H
|
||||||
//============================= Define Defines ============================
|
|
||||||
//===========================================================================
|
|
||||||
|
|
||||||
#if defined (ENABLE_AUTO_BED_LEVELING) && defined (DELTA)
|
|
||||||
#error "Bed Auto Leveling is still not compatible with Delta Kinematics."
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if EXTRUDERS > 1 && defined TEMP_SENSOR_1_AS_REDUNDANT
|
|
||||||
#error "You cannot use TEMP_SENSOR_1_AS_REDUNDANT if EXTRUDERS > 1"
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if EXTRUDERS > 1 && defined HEATERS_PARALLEL
|
|
||||||
#error "You cannot use HEATERS_PARALLEL if EXTRUDERS > 1"
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if TEMP_SENSOR_0 > 0
|
|
||||||
#define THERMISTORHEATER_0 TEMP_SENSOR_0
|
|
||||||
#define HEATER_0_USES_THERMISTOR
|
|
||||||
#endif
|
|
||||||
#if TEMP_SENSOR_1 > 0
|
|
||||||
#define THERMISTORHEATER_1 TEMP_SENSOR_1
|
|
||||||
#define HEATER_1_USES_THERMISTOR
|
|
||||||
#endif
|
|
||||||
#if TEMP_SENSOR_2 > 0
|
|
||||||
#define THERMISTORHEATER_2 TEMP_SENSOR_2
|
|
||||||
#define HEATER_2_USES_THERMISTOR
|
|
||||||
#endif
|
|
||||||
#if TEMP_SENSOR_3 > 0
|
|
||||||
#define THERMISTORHEATER_3 TEMP_SENSOR_3
|
|
||||||
#define HEATER_3_USES_THERMISTOR
|
|
||||||
#endif
|
|
||||||
#if TEMP_SENSOR_BED > 0
|
|
||||||
#define THERMISTORBED TEMP_SENSOR_BED
|
|
||||||
#define BED_USES_THERMISTOR
|
|
||||||
#endif
|
|
||||||
#if TEMP_SENSOR_0 == -1
|
|
||||||
#define HEATER_0_USES_AD595
|
|
||||||
#endif
|
|
||||||
#if TEMP_SENSOR_1 == -1
|
|
||||||
#define HEATER_1_USES_AD595
|
|
||||||
#endif
|
|
||||||
#if TEMP_SENSOR_2 == -1
|
|
||||||
#define HEATER_2_USES_AD595
|
|
||||||
#endif
|
|
||||||
#if TEMP_SENSOR_3 == -1
|
|
||||||
#define HEATER_3_USES_AD595
|
|
||||||
#endif
|
|
||||||
#if TEMP_SENSOR_BED == -1
|
|
||||||
#define BED_USES_AD595
|
|
||||||
#endif
|
|
||||||
#if TEMP_SENSOR_0 == -2
|
|
||||||
#define HEATER_0_USES_MAX6675
|
|
||||||
#endif
|
|
||||||
#if TEMP_SENSOR_0 == 0
|
|
||||||
#undef HEATER_0_MINTEMP
|
|
||||||
#undef HEATER_0_MAXTEMP
|
|
||||||
#endif
|
|
||||||
#if TEMP_SENSOR_1 == 0
|
|
||||||
#undef HEATER_1_MINTEMP
|
|
||||||
#undef HEATER_1_MAXTEMP
|
|
||||||
#endif
|
|
||||||
#if TEMP_SENSOR_2 == 0
|
|
||||||
#undef HEATER_2_MINTEMP
|
|
||||||
#undef HEATER_2_MAXTEMP
|
|
||||||
#endif
|
|
||||||
#if TEMP_SENSOR_3 == 0
|
|
||||||
#undef HEATER_3_MINTEMP
|
|
||||||
#undef HEATER_3_MAXTEMP
|
|
||||||
#endif
|
|
||||||
#if TEMP_SENSOR_BED == 0
|
|
||||||
#undef BED_MINTEMP
|
|
||||||
#undef BED_MAXTEMP
|
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
||||||
#endif //__CONFIGURATION_ADV_H
|
|
||||||
|
|
|
@ -20,11 +20,6 @@
|
||||||
|
|
||||||
#include "fastio.h"
|
#include "fastio.h"
|
||||||
#include "Configuration.h"
|
#include "Configuration.h"
|
||||||
#include "pins.h"
|
|
||||||
|
|
||||||
#ifndef AT90USB
|
|
||||||
#define HardwareSerial_h // trick to disable the standard HWserial
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if (ARDUINO >= 100)
|
#if (ARDUINO >= 100)
|
||||||
#include "Arduino.h"
|
#include "Arduino.h"
|
||||||
|
@ -183,7 +178,7 @@ void manage_inactivity(bool ignore_stepper_queue=false);
|
||||||
#define disable_e3() /* nothing */
|
#define disable_e3() /* nothing */
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
enum AxisEnum {X_AXIS=0, Y_AXIS=1, Z_AXIS=2, E_AXIS=3, X_HEAD=4, Y_HEAD=5};
|
enum AxisEnum {X_AXIS=0, Y_AXIS=1, A_AXIS=0, B_AXIS=1, Z_AXIS=2, E_AXIS=3, X_HEAD=4, Y_HEAD=5};
|
||||||
//X_HEAD and Y_HEAD is used for systems that don't have a 1:1 relationship between X_AXIS and X Head movement, like CoreXY bots.
|
//X_HEAD and Y_HEAD is used for systems that don't have a 1:1 relationship between X_AXIS and X Head movement, like CoreXY bots.
|
||||||
|
|
||||||
void FlushSerialRequestResend();
|
void FlushSerialRequestResend();
|
||||||
|
@ -191,17 +186,17 @@ void ClearToSend();
|
||||||
|
|
||||||
void get_coordinates();
|
void get_coordinates();
|
||||||
#ifdef DELTA
|
#ifdef DELTA
|
||||||
void calculate_delta(float cartesian[3]);
|
void calculate_delta(float cartesian[3]);
|
||||||
#ifdef ENABLE_AUTO_BED_LEVELING
|
#ifdef ENABLE_AUTO_BED_LEVELING
|
||||||
extern int delta_grid_spacing[2];
|
extern int delta_grid_spacing[2];
|
||||||
void adjust_delta(float cartesian[3]);
|
void adjust_delta(float cartesian[3]);
|
||||||
#endif
|
#endif
|
||||||
extern float delta[3];
|
extern float delta[3];
|
||||||
void prepare_move_raw();
|
void prepare_move_raw();
|
||||||
#endif
|
#endif
|
||||||
#ifdef SCARA
|
#ifdef SCARA
|
||||||
void calculate_delta(float cartesian[3]);
|
void calculate_delta(float cartesian[3]);
|
||||||
void calculate_SCARA_forward_Transform(float f_scara[3]);
|
void calculate_SCARA_forward_Transform(float f_scara[3]);
|
||||||
#endif
|
#endif
|
||||||
void reset_bed_level();
|
void reset_bed_level();
|
||||||
void prepare_move();
|
void prepare_move();
|
||||||
|
@ -209,7 +204,7 @@ void kill();
|
||||||
void Stop();
|
void Stop();
|
||||||
|
|
||||||
#ifdef FILAMENT_RUNOUT_SENSOR
|
#ifdef FILAMENT_RUNOUT_SENSOR
|
||||||
void filrunout();
|
void filrunout();
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
bool IsStopped();
|
bool IsStopped();
|
||||||
|
@ -223,7 +218,7 @@ void clamp_to_software_endstops(float target[3]);
|
||||||
void refresh_cmd_timeout(void);
|
void refresh_cmd_timeout(void);
|
||||||
|
|
||||||
#ifdef FAST_PWM_FAN
|
#ifdef FAST_PWM_FAN
|
||||||
void setPwmFrequency(uint8_t pin, int val);
|
void setPwmFrequency(uint8_t pin, int val);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifndef CRITICAL_SECTION_START
|
#ifndef CRITICAL_SECTION_START
|
||||||
|
@ -240,16 +235,16 @@ extern int extruder_multiply[EXTRUDERS]; // sets extrude multiply factor (in per
|
||||||
extern float filament_size[EXTRUDERS]; // cross-sectional area of filament (in millimeters), typically around 1.75 or 2.85, 0 disables the volumetric calculations for the extruder.
|
extern float filament_size[EXTRUDERS]; // cross-sectional area of filament (in millimeters), typically around 1.75 or 2.85, 0 disables the volumetric calculations for the extruder.
|
||||||
extern float volumetric_multiplier[EXTRUDERS]; // reciprocal of cross-sectional area of filament (in square millimeters), stored this way to reduce computational burden in planner
|
extern float volumetric_multiplier[EXTRUDERS]; // reciprocal of cross-sectional area of filament (in square millimeters), stored this way to reduce computational burden in planner
|
||||||
extern float current_position[NUM_AXIS] ;
|
extern float current_position[NUM_AXIS] ;
|
||||||
extern float add_homing[3];
|
extern float home_offset[3];
|
||||||
#ifdef DELTA
|
#ifdef DELTA
|
||||||
extern float endstop_adj[3];
|
extern float endstop_adj[3];
|
||||||
extern float delta_radius;
|
extern float delta_radius;
|
||||||
extern float delta_diagonal_rod;
|
extern float delta_diagonal_rod;
|
||||||
extern float delta_segments_per_second;
|
extern float delta_segments_per_second;
|
||||||
void recalc_delta_settings(float radius, float diagonal_rod);
|
void recalc_delta_settings(float radius, float diagonal_rod);
|
||||||
#endif
|
#endif
|
||||||
#ifdef SCARA
|
#ifdef SCARA
|
||||||
extern float axis_scaling[3]; // Build size scaling
|
extern float axis_scaling[3]; // Build size scaling
|
||||||
#endif
|
#endif
|
||||||
extern float min_pos[3];
|
extern float min_pos[3];
|
||||||
extern float max_pos[3];
|
extern float max_pos[3];
|
||||||
|
@ -257,12 +252,12 @@ extern bool axis_known_position[3];
|
||||||
extern float zprobe_zoffset;
|
extern float zprobe_zoffset;
|
||||||
extern int fanSpeed;
|
extern int fanSpeed;
|
||||||
#ifdef BARICUDA
|
#ifdef BARICUDA
|
||||||
extern int ValvePressure;
|
extern int ValvePressure;
|
||||||
extern int EtoPPressure;
|
extern int EtoPPressure;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef FAN_SOFT_PWM
|
#ifdef FAN_SOFT_PWM
|
||||||
extern unsigned char fanSpeedSoftPwm;
|
extern unsigned char fanSpeedSoftPwm;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef FILAMENT_SENSOR
|
#ifdef FILAMENT_SENSOR
|
||||||
|
@ -270,16 +265,16 @@ extern unsigned char fanSpeedSoftPwm;
|
||||||
extern bool filament_sensor; //indicates that filament sensor readings should control extrusion
|
extern bool filament_sensor; //indicates that filament sensor readings should control extrusion
|
||||||
extern float filament_width_meas; //holds the filament diameter as accurately measured
|
extern float filament_width_meas; //holds the filament diameter as accurately measured
|
||||||
extern signed char measurement_delay[]; //ring buffer to delay measurement
|
extern signed char measurement_delay[]; //ring buffer to delay measurement
|
||||||
extern int delay_index1, delay_index2; //index into ring buffer
|
extern int delay_index1, delay_index2; //ring buffer index. used by planner, temperature, and main code
|
||||||
extern float delay_dist; //delay distance counter
|
extern float delay_dist; //delay distance counter
|
||||||
extern int meas_delay_cm; //delay distance
|
extern int meas_delay_cm; //delay distance
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef FWRETRACT
|
#ifdef FWRETRACT
|
||||||
extern bool autoretract_enabled;
|
extern bool autoretract_enabled;
|
||||||
extern bool retracted[EXTRUDERS];
|
extern bool retracted[EXTRUDERS];
|
||||||
extern float retract_length, retract_length_swap, retract_feedrate, retract_zlift;
|
extern float retract_length, retract_length_swap, retract_feedrate, retract_zlift;
|
||||||
extern float retract_recover_length, retract_recover_length_swap, retract_recover_feedrate;
|
extern float retract_recover_length, retract_recover_length_swap, retract_recover_feedrate;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
extern unsigned long starttime;
|
extern unsigned long starttime;
|
||||||
|
@ -289,11 +284,10 @@ extern unsigned long stoptime;
|
||||||
extern uint8_t active_extruder;
|
extern uint8_t active_extruder;
|
||||||
|
|
||||||
#ifdef DIGIPOT_I2C
|
#ifdef DIGIPOT_I2C
|
||||||
extern void digipot_i2c_set_current( int channel, float current );
|
extern void digipot_i2c_set_current( int channel, float current );
|
||||||
extern void digipot_i2c_init();
|
extern void digipot_i2c_init();
|
||||||
#endif
|
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
extern void calculate_volumetric_multipliers();
|
extern void calculate_volumetric_multipliers();
|
||||||
|
|
||||||
|
#endif //MARLIN_H
|
||||||
|
|
|
@ -30,9 +30,6 @@
|
||||||
#include "Marlin.h"
|
#include "Marlin.h"
|
||||||
|
|
||||||
#ifdef ENABLE_AUTO_BED_LEVELING
|
#ifdef ENABLE_AUTO_BED_LEVELING
|
||||||
#if Z_MIN_PIN == -1
|
|
||||||
#error "You must have a Z_MIN endstop to enable Auto Bed Leveling feature. Z_MIN_PIN must point to a valid hardware pin."
|
|
||||||
#endif
|
|
||||||
#include "vector_3.h"
|
#include "vector_3.h"
|
||||||
#ifdef AUTO_BED_LEVELING_GRID
|
#ifdef AUTO_BED_LEVELING_GRID
|
||||||
#include "qr_solve.h"
|
#include "qr_solve.h"
|
||||||
|
@ -41,6 +38,10 @@
|
||||||
|
|
||||||
#define SERVO_LEVELING defined(ENABLE_AUTO_BED_LEVELING) && PROBE_SERVO_DEACTIVATION_DELAY > 0
|
#define SERVO_LEVELING defined(ENABLE_AUTO_BED_LEVELING) && PROBE_SERVO_DEACTIVATION_DELAY > 0
|
||||||
|
|
||||||
|
#if defined(MESH_BED_LEVELING)
|
||||||
|
#include "mesh_bed_leveling.h"
|
||||||
|
#endif // MESH_BED_LEVELING
|
||||||
|
|
||||||
#include "ultralcd.h"
|
#include "ultralcd.h"
|
||||||
#include "planner.h"
|
#include "planner.h"
|
||||||
#include "stepper.h"
|
#include "stepper.h"
|
||||||
|
@ -244,7 +245,7 @@ float volumetric_multiplier[EXTRUDERS] = {1.0
|
||||||
#endif
|
#endif
|
||||||
};
|
};
|
||||||
float current_position[NUM_AXIS] = { 0.0, 0.0, 0.0, 0.0 };
|
float current_position[NUM_AXIS] = { 0.0, 0.0, 0.0, 0.0 };
|
||||||
float add_homing[3] = { 0, 0, 0 };
|
float home_offset[3] = { 0, 0, 0 };
|
||||||
#ifdef DELTA
|
#ifdef DELTA
|
||||||
float endstop_adj[3] = { 0, 0, 0 };
|
float endstop_adj[3] = { 0, 0, 0 };
|
||||||
#endif
|
#endif
|
||||||
|
@ -963,43 +964,36 @@ XYZ_CONSTS_FROM_CONFIG(float, home_retract_mm, HOME_RETRACT_MM);
|
||||||
XYZ_CONSTS_FROM_CONFIG(signed char, home_dir, HOME_DIR);
|
XYZ_CONSTS_FROM_CONFIG(signed char, home_dir, HOME_DIR);
|
||||||
|
|
||||||
#ifdef DUAL_X_CARRIAGE
|
#ifdef DUAL_X_CARRIAGE
|
||||||
#if EXTRUDERS == 1 || defined(COREXY) \
|
|
||||||
|| !defined(X2_ENABLE_PIN) || !defined(X2_STEP_PIN) || !defined(X2_DIR_PIN) \
|
|
||||||
|| !defined(X2_HOME_POS) || !defined(X2_MIN_POS) || !defined(X2_MAX_POS) \
|
|
||||||
|| !defined(X_MAX_PIN) || X_MAX_PIN < 0
|
|
||||||
#error "Missing or invalid definitions for DUAL_X_CARRIAGE mode."
|
|
||||||
#endif
|
|
||||||
#if X_HOME_DIR != -1 || X2_HOME_DIR != 1
|
|
||||||
#error "Please use canonical x-carriage assignment" // the x-carriages are defined by their homing directions
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#define DXC_FULL_CONTROL_MODE 0
|
#define DXC_FULL_CONTROL_MODE 0
|
||||||
#define DXC_AUTO_PARK_MODE 1
|
#define DXC_AUTO_PARK_MODE 1
|
||||||
#define DXC_DUPLICATION_MODE 2
|
#define DXC_DUPLICATION_MODE 2
|
||||||
static int dual_x_carriage_mode = DEFAULT_DUAL_X_CARRIAGE_MODE;
|
|
||||||
|
|
||||||
static float x_home_pos(int extruder) {
|
static int dual_x_carriage_mode = DEFAULT_DUAL_X_CARRIAGE_MODE;
|
||||||
if (extruder == 0)
|
|
||||||
return base_home_pos(X_AXIS) + add_homing[X_AXIS];
|
|
||||||
else
|
|
||||||
// In dual carriage mode the extruder offset provides an override of the
|
|
||||||
// second X-carriage offset when homed - otherwise X2_HOME_POS is used.
|
|
||||||
// This allow soft recalibration of the second extruder offset position without firmware reflash
|
|
||||||
// (through the M218 command).
|
|
||||||
return (extruder_offset[X_AXIS][1] > 0) ? extruder_offset[X_AXIS][1] : X2_HOME_POS;
|
|
||||||
}
|
|
||||||
|
|
||||||
static int x_home_dir(int extruder) {
|
static float x_home_pos(int extruder) {
|
||||||
return (extruder == 0) ? X_HOME_DIR : X2_HOME_DIR;
|
if (extruder == 0)
|
||||||
}
|
return base_home_pos(X_AXIS) + add_homing[X_AXIS];
|
||||||
|
else
|
||||||
|
// In dual carriage mode the extruder offset provides an override of the
|
||||||
|
// second X-carriage offset when homed - otherwise X2_HOME_POS is used.
|
||||||
|
// This allow soft recalibration of the second extruder offset position without firmware reflash
|
||||||
|
// (through the M218 command).
|
||||||
|
return (extruder_offset[X_AXIS][1] > 0) ? extruder_offset[X_AXIS][1] : X2_HOME_POS;
|
||||||
|
}
|
||||||
|
|
||||||
|
static int x_home_dir(int extruder) {
|
||||||
|
return (extruder == 0) ? X_HOME_DIR : X2_HOME_DIR;
|
||||||
|
}
|
||||||
|
|
||||||
|
static float inactive_extruder_x_pos = X2_MAX_POS; // used in mode 0 & 1
|
||||||
|
static bool active_extruder_parked = false; // used in mode 1 & 2
|
||||||
|
static float raised_parked_position[NUM_AXIS]; // used in mode 1
|
||||||
|
static unsigned long delayed_move_time = 0; // used in mode 1
|
||||||
|
static float duplicate_extruder_x_offset = DEFAULT_DUPLICATION_X_OFFSET; // used in mode 2
|
||||||
|
static float duplicate_extruder_temp_offset = 0; // used in mode 2
|
||||||
|
bool extruder_duplication_enabled = false; // used in mode 2
|
||||||
|
|
||||||
static float inactive_extruder_x_pos = X2_MAX_POS; // used in mode 0 & 1
|
|
||||||
static bool active_extruder_parked = false; // used in mode 1 & 2
|
|
||||||
static float raised_parked_position[NUM_AXIS]; // used in mode 1
|
|
||||||
static unsigned long delayed_move_time = 0; // used in mode 1
|
|
||||||
static float duplicate_extruder_x_offset = DEFAULT_DUPLICATION_X_OFFSET; // used in mode 2
|
|
||||||
static float duplicate_extruder_temp_offset = 0; // used in mode 2
|
|
||||||
bool extruder_duplication_enabled = false; // used in mode 2
|
|
||||||
#endif //DUAL_X_CARRIAGE
|
#endif //DUAL_X_CARRIAGE
|
||||||
|
|
||||||
static void axis_is_at_home(int axis) {
|
static void axis_is_at_home(int axis) {
|
||||||
|
@ -1012,9 +1006,9 @@ static void axis_is_at_home(int axis) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
else if (dual_x_carriage_mode == DXC_DUPLICATION_MODE && active_extruder == 0) {
|
else if (dual_x_carriage_mode == DXC_DUPLICATION_MODE && active_extruder == 0) {
|
||||||
current_position[X_AXIS] = base_home_pos(X_AXIS) + add_homing[X_AXIS];
|
current_position[X_AXIS] = base_home_pos(X_AXIS) + home_offset[X_AXIS];
|
||||||
min_pos[X_AXIS] = base_min_pos(X_AXIS) + add_homing[X_AXIS];
|
min_pos[X_AXIS] = base_min_pos(X_AXIS) + home_offset[X_AXIS];
|
||||||
max_pos[X_AXIS] = min(base_max_pos(X_AXIS) + add_homing[X_AXIS],
|
max_pos[X_AXIS] = min(base_max_pos(X_AXIS) + home_offset[X_AXIS],
|
||||||
max(extruder_offset[X_AXIS][1], X2_MAX_POS) - duplicate_extruder_x_offset);
|
max(extruder_offset[X_AXIS][1], X2_MAX_POS) - duplicate_extruder_x_offset);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -1042,11 +1036,11 @@ static void axis_is_at_home(int axis) {
|
||||||
|
|
||||||
for (i=0; i<2; i++)
|
for (i=0; i<2; i++)
|
||||||
{
|
{
|
||||||
delta[i] -= add_homing[i];
|
delta[i] -= home_offset[i];
|
||||||
}
|
}
|
||||||
|
|
||||||
// SERIAL_ECHOPGM("addhome X="); SERIAL_ECHO(add_homing[X_AXIS]);
|
// SERIAL_ECHOPGM("addhome X="); SERIAL_ECHO(home_offset[X_AXIS]);
|
||||||
// SERIAL_ECHOPGM(" addhome Y="); SERIAL_ECHO(add_homing[Y_AXIS]);
|
// SERIAL_ECHOPGM(" addhome Y="); SERIAL_ECHO(home_offset[Y_AXIS]);
|
||||||
// SERIAL_ECHOPGM(" addhome Theta="); SERIAL_ECHO(delta[X_AXIS]);
|
// SERIAL_ECHOPGM(" addhome Theta="); SERIAL_ECHO(delta[X_AXIS]);
|
||||||
// SERIAL_ECHOPGM(" addhome Psi+Theta="); SERIAL_ECHOLN(delta[Y_AXIS]);
|
// SERIAL_ECHOPGM(" addhome Psi+Theta="); SERIAL_ECHOLN(delta[Y_AXIS]);
|
||||||
|
|
||||||
|
@ -1064,14 +1058,14 @@ static void axis_is_at_home(int axis) {
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
current_position[axis] = base_home_pos(axis) + add_homing[axis];
|
current_position[axis] = base_home_pos(axis) + home_offset[axis];
|
||||||
min_pos[axis] = base_min_pos(axis) + add_homing[axis];
|
min_pos[axis] = base_min_pos(axis) + home_offset[axis];
|
||||||
max_pos[axis] = base_max_pos(axis) + add_homing[axis];
|
max_pos[axis] = base_max_pos(axis) + home_offset[axis];
|
||||||
}
|
}
|
||||||
#else
|
#else
|
||||||
current_position[axis] = base_home_pos(axis) + add_homing[axis];
|
current_position[axis] = base_home_pos(axis) + home_offset[axis];
|
||||||
min_pos[axis] = base_min_pos(axis) + add_homing[axis];
|
min_pos[axis] = base_min_pos(axis) + home_offset[axis];
|
||||||
max_pos[axis] = base_max_pos(axis) + add_homing[axis];
|
max_pos[axis] = base_max_pos(axis) + home_offset[axis];
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1305,7 +1299,13 @@ static void engage_z_probe() {
|
||||||
static void retract_z_probe() {
|
static void retract_z_probe() {
|
||||||
// Retract Z Servo endstop if enabled
|
// Retract Z Servo endstop if enabled
|
||||||
#ifdef SERVO_ENDSTOPS
|
#ifdef SERVO_ENDSTOPS
|
||||||
if (servo_endstops[Z_AXIS] > -1) {
|
if (servo_endstops[Z_AXIS] > -1)
|
||||||
|
{
|
||||||
|
#if Z_RAISE_AFTER_PROBING > 0
|
||||||
|
do_blocking_move_to(current_position[X_AXIS], current_position[Y_AXIS], Z_RAISE_AFTER_PROBING);
|
||||||
|
st_synchronize();
|
||||||
|
#endif
|
||||||
|
|
||||||
#if SERVO_LEVELING
|
#if SERVO_LEVELING
|
||||||
servos[servo_endstops[Z_AXIS]].attach(0);
|
servos[servo_endstops[Z_AXIS]].attach(0);
|
||||||
#endif
|
#endif
|
||||||
|
@ -1318,7 +1318,7 @@ static void retract_z_probe() {
|
||||||
#elif defined(Z_PROBE_ALLEN_KEY)
|
#elif defined(Z_PROBE_ALLEN_KEY)
|
||||||
// Move up for safety
|
// Move up for safety
|
||||||
feedrate = homing_feedrate[X_AXIS];
|
feedrate = homing_feedrate[X_AXIS];
|
||||||
destination[Z_AXIS] = current_position[Z_AXIS] + 20;
|
destination[Z_AXIS] = current_position[Z_AXIS] + Z_RAISE_AFTER_PROBING;
|
||||||
prepare_move_raw();
|
prepare_move_raw();
|
||||||
|
|
||||||
// Move to the start position to initiate retraction
|
// Move to the start position to initiate retraction
|
||||||
|
@ -1360,10 +1360,15 @@ static void retract_z_probe() {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
enum ProbeAction { ProbeStay, ProbeEngage, ProbeRetract, ProbeEngageRetract };
|
enum ProbeAction {
|
||||||
|
ProbeStay = 0,
|
||||||
|
ProbeEngage = BIT(0),
|
||||||
|
ProbeRetract = BIT(1),
|
||||||
|
ProbeEngageAndRetract = (ProbeEngage | ProbeRetract)
|
||||||
|
};
|
||||||
|
|
||||||
/// Probe bed height at position (x,y), returns the measured z value
|
/// Probe bed height at position (x,y), returns the measured z value
|
||||||
static float probe_pt(float x, float y, float z_before, ProbeAction retract_action=ProbeEngageRetract, int verbose_level=1) {
|
static float probe_pt(float x, float y, float z_before, ProbeAction retract_action=ProbeEngageAndRetract, int verbose_level=1) {
|
||||||
// move to right place
|
// move to right place
|
||||||
do_blocking_move_to(current_position[X_AXIS], current_position[Y_AXIS], z_before);
|
do_blocking_move_to(current_position[X_AXIS], current_position[Y_AXIS], z_before);
|
||||||
do_blocking_move_to(x - X_PROBE_OFFSET_FROM_EXTRUDER, y - Y_PROBE_OFFSET_FROM_EXTRUDER, current_position[Z_AXIS]);
|
do_blocking_move_to(x - X_PROBE_OFFSET_FROM_EXTRUDER, y - Y_PROBE_OFFSET_FROM_EXTRUDER, current_position[Z_AXIS]);
|
||||||
|
@ -1737,6 +1742,11 @@ inline void gcode_G28() {
|
||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#if defined(MESH_BED_LEVELING)
|
||||||
|
uint8_t mbl_was_active = mbl.active;
|
||||||
|
mbl.active = 0;
|
||||||
|
#endif // MESH_BED_LEVELING
|
||||||
|
|
||||||
saved_feedrate = feedrate;
|
saved_feedrate = feedrate;
|
||||||
saved_feedmultiply = feedmultiply;
|
saved_feedmultiply = feedmultiply;
|
||||||
feedmultiply = 100;
|
feedmultiply = 100;
|
||||||
|
@ -1849,7 +1859,7 @@ inline void gcode_G28() {
|
||||||
if (code_value_long() != 0) {
|
if (code_value_long() != 0) {
|
||||||
current_position[X_AXIS] = code_value()
|
current_position[X_AXIS] = code_value()
|
||||||
#ifndef SCARA
|
#ifndef SCARA
|
||||||
+ add_homing[X_AXIS]
|
+ home_offset[X_AXIS]
|
||||||
#endif
|
#endif
|
||||||
;
|
;
|
||||||
}
|
}
|
||||||
|
@ -1858,7 +1868,7 @@ inline void gcode_G28() {
|
||||||
if (code_seen(axis_codes[Y_AXIS]) && code_value_long() != 0) {
|
if (code_seen(axis_codes[Y_AXIS]) && code_value_long() != 0) {
|
||||||
current_position[Y_AXIS] = code_value()
|
current_position[Y_AXIS] = code_value()
|
||||||
#ifndef SCARA
|
#ifndef SCARA
|
||||||
+ add_homing[Y_AXIS]
|
+ home_offset[Y_AXIS]
|
||||||
#endif
|
#endif
|
||||||
;
|
;
|
||||||
}
|
}
|
||||||
|
@ -1932,7 +1942,7 @@ inline void gcode_G28() {
|
||||||
|
|
||||||
|
|
||||||
if (code_seen(axis_codes[Z_AXIS]) && code_value_long() != 0)
|
if (code_seen(axis_codes[Z_AXIS]) && code_value_long() != 0)
|
||||||
current_position[Z_AXIS] = code_value() + add_homing[Z_AXIS];
|
current_position[Z_AXIS] = code_value() + home_offset[Z_AXIS];
|
||||||
|
|
||||||
#ifdef ENABLE_AUTO_BED_LEVELING
|
#ifdef ENABLE_AUTO_BED_LEVELING
|
||||||
if (home_all_axis || code_seen(axis_codes[Z_AXIS]))
|
if (home_all_axis || code_seen(axis_codes[Z_AXIS]))
|
||||||
|
@ -1951,52 +1961,114 @@ inline void gcode_G28() {
|
||||||
enable_endstops(false);
|
enable_endstops(false);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#if defined(MESH_BED_LEVELING)
|
||||||
|
if (mbl_was_active) {
|
||||||
|
current_position[X_AXIS] = mbl.get_x(0);
|
||||||
|
current_position[Y_AXIS] = mbl.get_y(0);
|
||||||
|
destination[X_AXIS] = current_position[X_AXIS];
|
||||||
|
destination[Y_AXIS] = current_position[Y_AXIS];
|
||||||
|
destination[Z_AXIS] = current_position[Z_AXIS];
|
||||||
|
destination[E_AXIS] = current_position[E_AXIS];
|
||||||
|
feedrate = homing_feedrate[X_AXIS];
|
||||||
|
plan_buffer_line(destination[X_AXIS], destination[Y_AXIS], destination[Z_AXIS], destination[E_AXIS], feedrate, active_extruder);
|
||||||
|
st_synchronize();
|
||||||
|
current_position[Z_AXIS] = MESH_HOME_SEARCH_Z;
|
||||||
|
plan_set_position(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS]);
|
||||||
|
mbl.active = 1;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
feedrate = saved_feedrate;
|
feedrate = saved_feedrate;
|
||||||
feedmultiply = saved_feedmultiply;
|
feedmultiply = saved_feedmultiply;
|
||||||
previous_millis_cmd = millis();
|
previous_millis_cmd = millis();
|
||||||
endstops_hit_on_purpose();
|
endstops_hit_on_purpose();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if defined(MESH_BED_LEVELING)
|
||||||
|
|
||||||
|
inline void gcode_G29() {
|
||||||
|
static int probe_point = -1;
|
||||||
|
int state = 0;
|
||||||
|
if (code_seen('S') || code_seen('s')) {
|
||||||
|
state = code_value_long();
|
||||||
|
if (state < 0 || state > 2) {
|
||||||
|
SERIAL_PROTOCOLPGM("S out of range (0-2).\n");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (state == 0) { // Dump mesh_bed_leveling
|
||||||
|
if (mbl.active) {
|
||||||
|
SERIAL_PROTOCOLPGM("Num X,Y: ");
|
||||||
|
SERIAL_PROTOCOL(MESH_NUM_X_POINTS);
|
||||||
|
SERIAL_PROTOCOLPGM(",");
|
||||||
|
SERIAL_PROTOCOL(MESH_NUM_Y_POINTS);
|
||||||
|
SERIAL_PROTOCOLPGM("\nZ search height: ");
|
||||||
|
SERIAL_PROTOCOL(MESH_HOME_SEARCH_Z);
|
||||||
|
SERIAL_PROTOCOLPGM("\nMeasured points:\n");
|
||||||
|
for (int y=0; y<MESH_NUM_Y_POINTS; y++) {
|
||||||
|
for (int x=0; x<MESH_NUM_X_POINTS; x++) {
|
||||||
|
SERIAL_PROTOCOLPGM(" ");
|
||||||
|
SERIAL_PROTOCOL_F(mbl.z_values[y][x], 5);
|
||||||
|
}
|
||||||
|
SERIAL_EOL;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
SERIAL_PROTOCOLPGM("Mesh bed leveling not active.\n");
|
||||||
|
}
|
||||||
|
|
||||||
|
} else if (state == 1) { // Begin probing mesh points
|
||||||
|
|
||||||
|
mbl.reset();
|
||||||
|
probe_point = 0;
|
||||||
|
enquecommands_P(PSTR("G28"));
|
||||||
|
enquecommands_P(PSTR("G29 S2"));
|
||||||
|
|
||||||
|
} else if (state == 2) { // Goto next point
|
||||||
|
|
||||||
|
if (probe_point < 0) {
|
||||||
|
SERIAL_PROTOCOLPGM("Mesh probing not started.\n");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
int ix, iy;
|
||||||
|
if (probe_point == 0) {
|
||||||
|
current_position[Z_AXIS] = MESH_HOME_SEARCH_Z;
|
||||||
|
plan_set_position(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS]);
|
||||||
|
} else {
|
||||||
|
ix = (probe_point-1) % MESH_NUM_X_POINTS;
|
||||||
|
iy = (probe_point-1) / MESH_NUM_X_POINTS;
|
||||||
|
if (iy&1) { // Zig zag
|
||||||
|
ix = (MESH_NUM_X_POINTS - 1) - ix;
|
||||||
|
}
|
||||||
|
mbl.set_z(ix, iy, current_position[Z_AXIS]);
|
||||||
|
current_position[Z_AXIS] = MESH_HOME_SEARCH_Z;
|
||||||
|
plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], homing_feedrate[X_AXIS]/60, active_extruder);
|
||||||
|
st_synchronize();
|
||||||
|
}
|
||||||
|
if (probe_point == MESH_NUM_X_POINTS*MESH_NUM_Y_POINTS) {
|
||||||
|
SERIAL_PROTOCOLPGM("Mesh done.\n");
|
||||||
|
probe_point = -1;
|
||||||
|
mbl.active = 1;
|
||||||
|
enquecommands_P(PSTR("G28"));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
ix = probe_point % MESH_NUM_X_POINTS;
|
||||||
|
iy = probe_point / MESH_NUM_X_POINTS;
|
||||||
|
if (iy&1) { // Zig zag
|
||||||
|
ix = (MESH_NUM_X_POINTS - 1) - ix;
|
||||||
|
}
|
||||||
|
current_position[X_AXIS] = mbl.get_x(ix);
|
||||||
|
current_position[Y_AXIS] = mbl.get_y(iy);
|
||||||
|
plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], homing_feedrate[X_AXIS]/60, active_extruder);
|
||||||
|
st_synchronize();
|
||||||
|
probe_point++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
#ifdef ENABLE_AUTO_BED_LEVELING
|
#ifdef ENABLE_AUTO_BED_LEVELING
|
||||||
|
|
||||||
// Define the possible boundaries for probing based on set limits
|
|
||||||
#define MIN_PROBE_X (max(X_MIN_POS, X_MIN_POS + X_PROBE_OFFSET_FROM_EXTRUDER))
|
|
||||||
#define MAX_PROBE_X (min(X_MAX_POS, X_MAX_POS + X_PROBE_OFFSET_FROM_EXTRUDER))
|
|
||||||
#define MIN_PROBE_Y (max(Y_MIN_POS, Y_MIN_POS + Y_PROBE_OFFSET_FROM_EXTRUDER))
|
|
||||||
#define MAX_PROBE_Y (min(Y_MAX_POS, Y_MAX_POS + Y_PROBE_OFFSET_FROM_EXTRUDER))
|
|
||||||
|
|
||||||
#ifdef AUTO_BED_LEVELING_GRID
|
|
||||||
|
|
||||||
// Make sure probing points are reachable
|
|
||||||
|
|
||||||
#if LEFT_PROBE_BED_POSITION < MIN_PROBE_X
|
|
||||||
#error "The given LEFT_PROBE_BED_POSITION can't be reached by the probe."
|
|
||||||
#elif RIGHT_PROBE_BED_POSITION > MAX_PROBE_X
|
|
||||||
#error "The given RIGHT_PROBE_BED_POSITION can't be reached by the probe."
|
|
||||||
#elif FRONT_PROBE_BED_POSITION < MIN_PROBE_Y
|
|
||||||
#error "The given FRONT_PROBE_BED_POSITION can't be reached by the probe."
|
|
||||||
#elif BACK_PROBE_BED_POSITION > MAX_PROBE_Y
|
|
||||||
#error "The given BACK_PROBE_BED_POSITION can't be reached by the probe."
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#else // !AUTO_BED_LEVELING_GRID
|
|
||||||
|
|
||||||
#if ABL_PROBE_PT_1_X < MIN_PROBE_X || ABL_PROBE_PT_1_X > MAX_PROBE_X
|
|
||||||
#error "The given ABL_PROBE_PT_1_X can't be reached by the probe."
|
|
||||||
#elif ABL_PROBE_PT_2_X < MIN_PROBE_X || ABL_PROBE_PT_2_X > MAX_PROBE_X
|
|
||||||
#error "The given ABL_PROBE_PT_2_X can't be reached by the probe."
|
|
||||||
#elif ABL_PROBE_PT_3_X < MIN_PROBE_X || ABL_PROBE_PT_3_X > MAX_PROBE_X
|
|
||||||
#error "The given ABL_PROBE_PT_3_X can't be reached by the probe."
|
|
||||||
#elif ABL_PROBE_PT_1_Y < MIN_PROBE_Y || ABL_PROBE_PT_1_Y > MAX_PROBE_Y
|
|
||||||
#error "The given ABL_PROBE_PT_1_Y can't be reached by the probe."
|
|
||||||
#elif ABL_PROBE_PT_2_Y < MIN_PROBE_Y || ABL_PROBE_PT_2_Y > MAX_PROBE_Y
|
|
||||||
#error "The given ABL_PROBE_PT_2_Y can't be reached by the probe."
|
|
||||||
#elif ABL_PROBE_PT_3_Y < MIN_PROBE_Y || ABL_PROBE_PT_3_Y > MAX_PROBE_Y
|
|
||||||
#error "The given ABL_PROBE_PT_3_Y can't be reached by the probe."
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#endif // !AUTO_BED_LEVELING_GRID
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* G29: Detailed Z-Probe, probes the bed at 3 or more points.
|
* G29: Detailed Z-Probe, probes the bed at 3 or more points.
|
||||||
* Will fail if the printer has not been homed with G28.
|
* Will fail if the printer has not been homed with G28.
|
||||||
|
@ -2057,7 +2129,7 @@ inline void gcode_G28() {
|
||||||
#ifdef AUTO_BED_LEVELING_GRID
|
#ifdef AUTO_BED_LEVELING_GRID
|
||||||
|
|
||||||
#ifndef DELTA
|
#ifndef DELTA
|
||||||
bool topo_flag = verbose_level > 2 || code_seen('T') || code_seen('t');
|
bool do_topography_map = verbose_level > 2 || code_seen('T') || code_seen('t');
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
if (verbose_level > 0)
|
if (verbose_level > 0)
|
||||||
|
@ -2112,15 +2184,16 @@ inline void gcode_G28() {
|
||||||
|
|
||||||
#ifdef Z_PROBE_SLED
|
#ifdef Z_PROBE_SLED
|
||||||
dock_sled(false); // engage (un-dock) the probe
|
dock_sled(false); // engage (un-dock) the probe
|
||||||
#elif not defined(SERVO_ENDSTOPS)
|
#elif defined(Z_PROBE_ALLEN_KEY)
|
||||||
engage_z_probe();
|
engage_z_probe();
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
st_synchronize();
|
st_synchronize();
|
||||||
|
|
||||||
#ifdef DELTA
|
#ifdef DELTA
|
||||||
reset_bed_level();
|
reset_bed_level();
|
||||||
#else
|
#else
|
||||||
|
|
||||||
// make sure the bed_level_rotation_matrix is identity or the planner will get it incorectly
|
// make sure the bed_level_rotation_matrix is identity or the planner will get it incorectly
|
||||||
//vector_3 corrected_position = plan_get_position_mm();
|
//vector_3 corrected_position = plan_get_position_mm();
|
||||||
//corrected_position.debug("position before G29");
|
//corrected_position.debug("position before G29");
|
||||||
|
@ -2161,42 +2234,36 @@ inline void gcode_G28() {
|
||||||
delta_grid_spacing[1] = yGridSpacing;
|
delta_grid_spacing[1] = yGridSpacing;
|
||||||
|
|
||||||
float z_offset = Z_PROBE_OFFSET_FROM_EXTRUDER;
|
float z_offset = Z_PROBE_OFFSET_FROM_EXTRUDER;
|
||||||
if (code_seen(axis_codes[Z_AXIS])) {
|
if (code_seen(axis_codes[Z_AXIS])) z_offset += code_value();
|
||||||
z_offset += code_value();
|
|
||||||
}
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
int probePointCounter = 0;
|
int probePointCounter = 0;
|
||||||
bool zig = true;
|
bool zig = true;
|
||||||
|
|
||||||
for (int yCount=0; yCount < auto_bed_leveling_grid_points; yCount++)
|
for (int yCount = 0; yCount < auto_bed_leveling_grid_points; yCount++) {
|
||||||
{
|
|
||||||
double yProbe = front_probe_bed_position + yGridSpacing * yCount;
|
double yProbe = front_probe_bed_position + yGridSpacing * yCount;
|
||||||
int xStart, xStop, xInc;
|
int xStart, xStop, xInc;
|
||||||
|
|
||||||
if (zig)
|
if (zig) {
|
||||||
{
|
|
||||||
xStart = 0;
|
xStart = 0;
|
||||||
xStop = auto_bed_leveling_grid_points;
|
xStop = auto_bed_leveling_grid_points;
|
||||||
xInc = 1;
|
xInc = 1;
|
||||||
zig = false;
|
zig = false;
|
||||||
}
|
}
|
||||||
else
|
else {
|
||||||
{
|
|
||||||
xStart = auto_bed_leveling_grid_points - 1;
|
xStart = auto_bed_leveling_grid_points - 1;
|
||||||
xStop = -1;
|
xStop = -1;
|
||||||
xInc = -1;
|
xInc = -1;
|
||||||
zig = true;
|
zig = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifndef DELTA
|
#ifndef DELTA
|
||||||
// If topo_flag is set then don't zig-zag. Just scan in one direction.
|
// If do_topography_map is set then don't zig-zag. Just scan in one direction.
|
||||||
// This gets the probe points in more readable order.
|
// This gets the probe points in more readable order.
|
||||||
if (!topo_flag) zig = !zig;
|
if (!do_topography_map) zig = !zig;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
for (int xCount=xStart; xCount != xStop; xCount += xInc)
|
for (int xCount = xStart; xCount != xStop; xCount += xInc) {
|
||||||
{
|
|
||||||
double xProbe = left_probe_bed_position + xGridSpacing * xCount;
|
double xProbe = left_probe_bed_position + xGridSpacing * xCount;
|
||||||
|
|
||||||
// raise extruder
|
// raise extruder
|
||||||
|
@ -2221,7 +2288,7 @@ inline void gcode_G28() {
|
||||||
act = ProbeStay;
|
act = ProbeStay;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
act = ProbeEngageRetract;
|
act = ProbeEngageAndRetract;
|
||||||
|
|
||||||
measured_z = probe_pt(xProbe, yProbe, z_before, act, verbose_level);
|
measured_z = probe_pt(xProbe, yProbe, z_before, act, verbose_level);
|
||||||
|
|
||||||
|
@ -2263,49 +2330,31 @@ inline void gcode_G28() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (topo_flag) {
|
// Show the Topography map if enabled
|
||||||
|
if (do_topography_map) {
|
||||||
int xx, yy;
|
|
||||||
|
|
||||||
SERIAL_PROTOCOLPGM(" \nBed Height Topography: \n");
|
SERIAL_PROTOCOLPGM(" \nBed Height Topography: \n");
|
||||||
#if TOPO_ORIGIN == OriginFrontLeft
|
SERIAL_PROTOCOLPGM("+-----------+\n");
|
||||||
SERIAL_PROTOCOLPGM("+-----------+\n");
|
SERIAL_PROTOCOLPGM("|...Back....|\n");
|
||||||
SERIAL_PROTOCOLPGM("|...Back....|\n");
|
SERIAL_PROTOCOLPGM("|Left..Right|\n");
|
||||||
SERIAL_PROTOCOLPGM("|Left..Right|\n");
|
SERIAL_PROTOCOLPGM("|...Front...|\n");
|
||||||
SERIAL_PROTOCOLPGM("|...Front...|\n");
|
SERIAL_PROTOCOLPGM("+-----------+\n");
|
||||||
SERIAL_PROTOCOLPGM("+-----------+\n");
|
|
||||||
for (yy = auto_bed_leveling_grid_points - 1; yy >= 0; yy--)
|
|
||||||
#else
|
|
||||||
for (yy = 0; yy < auto_bed_leveling_grid_points; yy++)
|
|
||||||
#endif
|
|
||||||
{
|
|
||||||
#if TOPO_ORIGIN == OriginBackRight
|
|
||||||
for (xx = 0; xx < auto_bed_leveling_grid_points; xx++)
|
|
||||||
#else
|
|
||||||
for (xx = auto_bed_leveling_grid_points - 1; xx >= 0; xx--)
|
|
||||||
#endif
|
|
||||||
{
|
|
||||||
int ind =
|
|
||||||
#if TOPO_ORIGIN == OriginBackRight || TOPO_ORIGIN == OriginFrontLeft
|
|
||||||
yy * auto_bed_leveling_grid_points + xx
|
|
||||||
#elif TOPO_ORIGIN == OriginBackLeft
|
|
||||||
xx * auto_bed_leveling_grid_points + yy
|
|
||||||
#elif TOPO_ORIGIN == OriginFrontRight
|
|
||||||
abl2 - xx * auto_bed_leveling_grid_points - yy - 1
|
|
||||||
#endif
|
|
||||||
;
|
|
||||||
float diff = eqnBVector[ind] - mean;
|
|
||||||
if (diff >= 0.0)
|
|
||||||
SERIAL_PROTOCOLPGM(" +"); // Include + for column alignment
|
|
||||||
else
|
|
||||||
SERIAL_PROTOCOLPGM(" ");
|
|
||||||
SERIAL_PROTOCOL_F(diff, 5);
|
|
||||||
} // xx
|
|
||||||
SERIAL_EOL;
|
|
||||||
} // yy
|
|
||||||
SERIAL_EOL;
|
|
||||||
|
|
||||||
} //topo_flag
|
for (int yy = auto_bed_leveling_grid_points - 1; yy >= 0; yy--) {
|
||||||
|
for (int xx = auto_bed_leveling_grid_points - 1; xx >= 0; xx--) {
|
||||||
|
int ind = yy * auto_bed_leveling_grid_points + xx;
|
||||||
|
float diff = eqnBVector[ind] - mean;
|
||||||
|
if (diff >= 0.0)
|
||||||
|
SERIAL_PROTOCOLPGM(" +"); // Include + for column alignment
|
||||||
|
else
|
||||||
|
SERIAL_PROTOCOLPGM(" ");
|
||||||
|
SERIAL_PROTOCOL_F(diff, 5);
|
||||||
|
} // xx
|
||||||
|
SERIAL_EOL;
|
||||||
|
} // yy
|
||||||
|
SERIAL_EOL;
|
||||||
|
|
||||||
|
} //do_topography_map
|
||||||
|
|
||||||
|
|
||||||
set_bed_level_equation_lsq(plane_equation_coefficients);
|
set_bed_level_equation_lsq(plane_equation_coefficients);
|
||||||
|
@ -2327,18 +2376,15 @@ inline void gcode_G28() {
|
||||||
z_at_pt_3 = probe_pt(ABL_PROBE_PT_3_X, ABL_PROBE_PT_3_Y, current_position[Z_AXIS] + Z_RAISE_BETWEEN_PROBINGS, ProbeRetract, verbose_level);
|
z_at_pt_3 = probe_pt(ABL_PROBE_PT_3_X, ABL_PROBE_PT_3_Y, current_position[Z_AXIS] + Z_RAISE_BETWEEN_PROBINGS, ProbeRetract, verbose_level);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
z_at_pt_1 = probe_pt(ABL_PROBE_PT_1_X, ABL_PROBE_PT_1_Y, Z_RAISE_BEFORE_PROBING, verbose_level=verbose_level);
|
z_at_pt_1 = probe_pt(ABL_PROBE_PT_1_X, ABL_PROBE_PT_1_Y, Z_RAISE_BEFORE_PROBING, ProbeEngageAndRetract, verbose_level);
|
||||||
z_at_pt_2 = probe_pt(ABL_PROBE_PT_2_X, ABL_PROBE_PT_2_Y, current_position[Z_AXIS] + Z_RAISE_BETWEEN_PROBINGS, verbose_level=verbose_level);
|
z_at_pt_2 = probe_pt(ABL_PROBE_PT_2_X, ABL_PROBE_PT_2_Y, current_position[Z_AXIS] + Z_RAISE_BETWEEN_PROBINGS, ProbeEngageAndRetract, verbose_level);
|
||||||
z_at_pt_3 = probe_pt(ABL_PROBE_PT_3_X, ABL_PROBE_PT_3_Y, current_position[Z_AXIS] + Z_RAISE_BETWEEN_PROBINGS, verbose_level=verbose_level);
|
z_at_pt_3 = probe_pt(ABL_PROBE_PT_3_X, ABL_PROBE_PT_3_Y, current_position[Z_AXIS] + Z_RAISE_BETWEEN_PROBINGS, ProbeEngageAndRetract, verbose_level);
|
||||||
}
|
}
|
||||||
clean_up_after_endstop_move();
|
clean_up_after_endstop_move();
|
||||||
set_bed_level_equation_3pts(z_at_pt_1, z_at_pt_2, z_at_pt_3);
|
set_bed_level_equation_3pts(z_at_pt_1, z_at_pt_2, z_at_pt_3);
|
||||||
|
|
||||||
#endif // !AUTO_BED_LEVELING_GRID
|
#endif // !AUTO_BED_LEVELING_GRID
|
||||||
|
|
||||||
do_blocking_move_to(current_position[X_AXIS], current_position[Y_AXIS], Z_RAISE_AFTER_PROBING);
|
|
||||||
st_synchronize();
|
|
||||||
|
|
||||||
#ifndef DELTA
|
#ifndef DELTA
|
||||||
if (verbose_level > 0)
|
if (verbose_level > 0)
|
||||||
plan_bed_level_matrix.debug(" \n\nBed Level Correction Matrix:");
|
plan_bed_level_matrix.debug(" \n\nBed Level Correction Matrix:");
|
||||||
|
@ -2358,7 +2404,7 @@ inline void gcode_G28() {
|
||||||
|
|
||||||
#ifdef Z_PROBE_SLED
|
#ifdef Z_PROBE_SLED
|
||||||
dock_sled(true, -SLED_DOCKING_OFFSET); // dock the probe, correcting for over-travel
|
dock_sled(true, -SLED_DOCKING_OFFSET); // dock the probe, correcting for over-travel
|
||||||
#elif not defined(SERVO_ENDSTOPS)
|
#elif defined(Z_PROBE_ALLEN_KEY)
|
||||||
retract_z_probe();
|
retract_z_probe();
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
@ -2403,22 +2449,13 @@ inline void gcode_G92() {
|
||||||
if (!code_seen(axis_codes[E_AXIS]))
|
if (!code_seen(axis_codes[E_AXIS]))
|
||||||
st_synchronize();
|
st_synchronize();
|
||||||
|
|
||||||
for (int i=0;i<NUM_AXIS;i++) {
|
for (int i = 0; i < NUM_AXIS; i++) {
|
||||||
if (code_seen(axis_codes[i])) {
|
if (code_seen(axis_codes[i])) {
|
||||||
if (i == E_AXIS) {
|
current_position[i] = code_value();
|
||||||
current_position[i] = code_value();
|
if (i == E_AXIS)
|
||||||
plan_set_e_position(current_position[E_AXIS]);
|
plan_set_e_position(current_position[E_AXIS]);
|
||||||
}
|
else
|
||||||
else {
|
|
||||||
current_position[i] = code_value() +
|
|
||||||
#ifdef SCARA
|
|
||||||
((i != X_AXIS && i != Y_AXIS) ? add_homing[i] : 0)
|
|
||||||
#else
|
|
||||||
add_homing[i]
|
|
||||||
#endif
|
|
||||||
;
|
|
||||||
plan_set_position(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS]);
|
plan_set_position(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS]);
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -3355,9 +3392,9 @@ inline void gcode_M114() {
|
||||||
SERIAL_PROTOCOLLN("");
|
SERIAL_PROTOCOLLN("");
|
||||||
|
|
||||||
SERIAL_PROTOCOLPGM("SCARA Cal - Theta:");
|
SERIAL_PROTOCOLPGM("SCARA Cal - Theta:");
|
||||||
SERIAL_PROTOCOL(delta[X_AXIS]+add_homing[X_AXIS]);
|
SERIAL_PROTOCOL(delta[X_AXIS]+home_offset[X_AXIS]);
|
||||||
SERIAL_PROTOCOLPGM(" Psi+Theta (90):");
|
SERIAL_PROTOCOLPGM(" Psi+Theta (90):");
|
||||||
SERIAL_PROTOCOL(delta[Y_AXIS]-delta[X_AXIS]-90+add_homing[Y_AXIS]);
|
SERIAL_PROTOCOL(delta[Y_AXIS]-delta[X_AXIS]-90+home_offset[Y_AXIS]);
|
||||||
SERIAL_PROTOCOLLN("");
|
SERIAL_PROTOCOLLN("");
|
||||||
|
|
||||||
SERIAL_PROTOCOLPGM("SCARA step Cal - Theta:");
|
SERIAL_PROTOCOLPGM("SCARA step Cal - Theta:");
|
||||||
|
@ -3575,12 +3612,12 @@ inline void gcode_M205() {
|
||||||
inline void gcode_M206() {
|
inline void gcode_M206() {
|
||||||
for (int8_t i=X_AXIS; i <= Z_AXIS; i++) {
|
for (int8_t i=X_AXIS; i <= Z_AXIS; i++) {
|
||||||
if (code_seen(axis_codes[i])) {
|
if (code_seen(axis_codes[i])) {
|
||||||
add_homing[i] = code_value();
|
home_offset[i] = code_value();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#ifdef SCARA
|
#ifdef SCARA
|
||||||
if (code_seen('T')) add_homing[X_AXIS] = code_value(); // Theta
|
if (code_seen('T')) home_offset[X_AXIS] = code_value(); // Theta
|
||||||
if (code_seen('P')) add_homing[Y_AXIS] = code_value(); // Psi
|
if (code_seen('P')) home_offset[Y_AXIS] = code_value(); // Psi
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -3967,18 +4004,13 @@ inline void gcode_M303() {
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef SCARA
|
#ifdef SCARA
|
||||||
|
bool SCARA_move_to_cal(uint8_t delta_x, uint8_t delta_y) {
|
||||||
/**
|
|
||||||
* M360: SCARA calibration: Move to cal-position ThetaA (0 deg calibration)
|
|
||||||
*/
|
|
||||||
inline bool gcode_M360() {
|
|
||||||
SERIAL_ECHOLN(" Cal: Theta 0 ");
|
|
||||||
//SoftEndsEnabled = false; // Ignore soft endstops during calibration
|
//SoftEndsEnabled = false; // Ignore soft endstops during calibration
|
||||||
//SERIAL_ECHOLN(" Soft endstops disabled ");
|
//SERIAL_ECHOLN(" Soft endstops disabled ");
|
||||||
if (! Stopped) {
|
if (! Stopped) {
|
||||||
//get_coordinates(); // For X Y Z E F
|
//get_coordinates(); // For X Y Z E F
|
||||||
delta[X_AXIS] = 0;
|
delta[X_AXIS] = delta_x;
|
||||||
delta[Y_AXIS] = 120;
|
delta[Y_AXIS] = delta_y;
|
||||||
calculate_SCARA_forward_Transform(delta);
|
calculate_SCARA_forward_Transform(delta);
|
||||||
destination[X_AXIS] = delta[X_AXIS]/axis_scaling[X_AXIS];
|
destination[X_AXIS] = delta[X_AXIS]/axis_scaling[X_AXIS];
|
||||||
destination[Y_AXIS] = delta[Y_AXIS]/axis_scaling[Y_AXIS];
|
destination[Y_AXIS] = delta[Y_AXIS]/axis_scaling[Y_AXIS];
|
||||||
|
@ -3989,25 +4021,20 @@ inline void gcode_M303() {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* M360: SCARA calibration: Move to cal-position ThetaA (0 deg calibration)
|
||||||
|
*/
|
||||||
|
inline bool gcode_M360() {
|
||||||
|
SERIAL_ECHOLN(" Cal: Theta 0 ");
|
||||||
|
return SCARA_move_to_cal(0, 120);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* M361: SCARA calibration: Move to cal-position ThetaB (90 deg calibration - steps per degree)
|
* M361: SCARA calibration: Move to cal-position ThetaB (90 deg calibration - steps per degree)
|
||||||
*/
|
*/
|
||||||
inline bool gcode_M361() {
|
inline bool gcode_M361() {
|
||||||
SERIAL_ECHOLN(" Cal: Theta 90 ");
|
SERIAL_ECHOLN(" Cal: Theta 90 ");
|
||||||
//SoftEndsEnabled = false; // Ignore soft endstops during calibration
|
return SCARA_move_to_cal(90, 130);
|
||||||
//SERIAL_ECHOLN(" Soft endstops disabled ");
|
|
||||||
if (! Stopped) {
|
|
||||||
//get_coordinates(); // For X Y Z E F
|
|
||||||
delta[X_AXIS] = 90;
|
|
||||||
delta[Y_AXIS] = 130;
|
|
||||||
calculate_SCARA_forward_Transform(delta);
|
|
||||||
destination[X_AXIS] = delta[X_AXIS]/axis_scaling[X_AXIS];
|
|
||||||
destination[Y_AXIS] = delta[Y_AXIS]/axis_scaling[Y_AXIS];
|
|
||||||
prepare_move();
|
|
||||||
//ClearToSend();
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -4015,20 +4042,7 @@ inline void gcode_M303() {
|
||||||
*/
|
*/
|
||||||
inline bool gcode_M362() {
|
inline bool gcode_M362() {
|
||||||
SERIAL_ECHOLN(" Cal: Psi 0 ");
|
SERIAL_ECHOLN(" Cal: Psi 0 ");
|
||||||
//SoftEndsEnabled = false; // Ignore soft endstops during calibration
|
return SCARA_move_to_cal(60, 180);
|
||||||
//SERIAL_ECHOLN(" Soft endstops disabled ");
|
|
||||||
if (! Stopped) {
|
|
||||||
//get_coordinates(); // For X Y Z E F
|
|
||||||
delta[X_AXIS] = 60;
|
|
||||||
delta[Y_AXIS] = 180;
|
|
||||||
calculate_SCARA_forward_Transform(delta);
|
|
||||||
destination[X_AXIS] = delta[X_AXIS]/axis_scaling[X_AXIS];
|
|
||||||
destination[Y_AXIS] = delta[Y_AXIS]/axis_scaling[Y_AXIS];
|
|
||||||
prepare_move();
|
|
||||||
//ClearToSend();
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -4036,20 +4050,7 @@ inline void gcode_M303() {
|
||||||
*/
|
*/
|
||||||
inline bool gcode_M363() {
|
inline bool gcode_M363() {
|
||||||
SERIAL_ECHOLN(" Cal: Psi 90 ");
|
SERIAL_ECHOLN(" Cal: Psi 90 ");
|
||||||
//SoftEndsEnabled = false; // Ignore soft endstops during calibration
|
return SCARA_move_to_cal(50, 90);
|
||||||
//SERIAL_ECHOLN(" Soft endstops disabled ");
|
|
||||||
if (! Stopped) {
|
|
||||||
//get_coordinates(); // For X Y Z E F
|
|
||||||
delta[X_AXIS] = 50;
|
|
||||||
delta[Y_AXIS] = 90;
|
|
||||||
calculate_SCARA_forward_Transform(delta);
|
|
||||||
destination[X_AXIS] = delta[X_AXIS]/axis_scaling[X_AXIS];
|
|
||||||
destination[Y_AXIS] = delta[Y_AXIS]/axis_scaling[Y_AXIS];
|
|
||||||
prepare_move();
|
|
||||||
//ClearToSend();
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -4057,20 +4058,7 @@ inline void gcode_M303() {
|
||||||
*/
|
*/
|
||||||
inline bool gcode_M364() {
|
inline bool gcode_M364() {
|
||||||
SERIAL_ECHOLN(" Cal: Theta-Psi 90 ");
|
SERIAL_ECHOLN(" Cal: Theta-Psi 90 ");
|
||||||
// SoftEndsEnabled = false; // Ignore soft endstops during calibration
|
return SCARA_move_to_cal(45, 135);
|
||||||
//SERIAL_ECHOLN(" Soft endstops disabled ");
|
|
||||||
if (! Stopped) {
|
|
||||||
//get_coordinates(); // For X Y Z E F
|
|
||||||
delta[X_AXIS] = 45;
|
|
||||||
delta[Y_AXIS] = 135;
|
|
||||||
calculate_SCARA_forward_Transform(delta);
|
|
||||||
destination[X_AXIS] = delta[X_AXIS] / axis_scaling[X_AXIS];
|
|
||||||
destination[Y_AXIS] = delta[Y_AXIS] / axis_scaling[Y_AXIS];
|
|
||||||
prepare_move();
|
|
||||||
//ClearToSend();
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -4661,6 +4649,12 @@ void process_commands() {
|
||||||
gcode_G28();
|
gcode_G28();
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
#if defined(MESH_BED_LEVELING)
|
||||||
|
case 29: // G29 Handle mesh based leveling
|
||||||
|
gcode_G29();
|
||||||
|
break;
|
||||||
|
#endif
|
||||||
|
|
||||||
#ifdef ENABLE_AUTO_BED_LEVELING
|
#ifdef ENABLE_AUTO_BED_LEVELING
|
||||||
|
|
||||||
case 29: // G29 Detailed Z-Probe, probes the bed at 3 or more points.
|
case 29: // G29 Detailed Z-Probe, probes the bed at 3 or more points.
|
||||||
|
@ -5172,7 +5166,7 @@ void clamp_to_software_endstops(float target[3])
|
||||||
float negative_z_offset = 0;
|
float negative_z_offset = 0;
|
||||||
#ifdef ENABLE_AUTO_BED_LEVELING
|
#ifdef ENABLE_AUTO_BED_LEVELING
|
||||||
if (Z_PROBE_OFFSET_FROM_EXTRUDER < 0) negative_z_offset = negative_z_offset + Z_PROBE_OFFSET_FROM_EXTRUDER;
|
if (Z_PROBE_OFFSET_FROM_EXTRUDER < 0) negative_z_offset = negative_z_offset + Z_PROBE_OFFSET_FROM_EXTRUDER;
|
||||||
if (add_homing[Z_AXIS] < 0) negative_z_offset = negative_z_offset + add_homing[Z_AXIS];
|
if (home_offset[Z_AXIS] < 0) negative_z_offset = negative_z_offset + home_offset[Z_AXIS];
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
if (target[Z_AXIS] < min_pos[Z_AXIS]+negative_z_offset) target[Z_AXIS] = min_pos[Z_AXIS]+negative_z_offset;
|
if (target[Z_AXIS] < min_pos[Z_AXIS]+negative_z_offset) target[Z_AXIS] = min_pos[Z_AXIS]+negative_z_offset;
|
||||||
|
@ -5280,6 +5274,81 @@ void prepare_move_raw()
|
||||||
}
|
}
|
||||||
#endif //DELTA
|
#endif //DELTA
|
||||||
|
|
||||||
|
#if defined(MESH_BED_LEVELING)
|
||||||
|
#if !defined(MIN)
|
||||||
|
#define MIN(_v1, _v2) (((_v1) < (_v2)) ? (_v1) : (_v2))
|
||||||
|
#endif // ! MIN
|
||||||
|
// This function is used to split lines on mesh borders so each segment is only part of one mesh area
|
||||||
|
void mesh_plan_buffer_line(float x, float y, float z, const float e, float feed_rate, const uint8_t &extruder, uint8_t x_splits=0xff, uint8_t y_splits=0xff)
|
||||||
|
{
|
||||||
|
if (!mbl.active) {
|
||||||
|
plan_buffer_line(x, y, z, e, feed_rate, extruder);
|
||||||
|
for(int8_t i=0; i < NUM_AXIS; i++) {
|
||||||
|
current_position[i] = destination[i];
|
||||||
|
}
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
int pix = mbl.select_x_index(current_position[X_AXIS]);
|
||||||
|
int piy = mbl.select_y_index(current_position[Y_AXIS]);
|
||||||
|
int ix = mbl.select_x_index(x);
|
||||||
|
int iy = mbl.select_y_index(y);
|
||||||
|
pix = MIN(pix, MESH_NUM_X_POINTS-2);
|
||||||
|
piy = MIN(piy, MESH_NUM_Y_POINTS-2);
|
||||||
|
ix = MIN(ix, MESH_NUM_X_POINTS-2);
|
||||||
|
iy = MIN(iy, MESH_NUM_Y_POINTS-2);
|
||||||
|
if (pix == ix && piy == iy) {
|
||||||
|
// Start and end on same mesh square
|
||||||
|
plan_buffer_line(x, y, z, e, feed_rate, extruder);
|
||||||
|
for(int8_t i=0; i < NUM_AXIS; i++) {
|
||||||
|
current_position[i] = destination[i];
|
||||||
|
}
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
float nx, ny, ne, normalized_dist;
|
||||||
|
if (ix > pix && (x_splits) & BIT(ix)) {
|
||||||
|
nx = mbl.get_x(ix);
|
||||||
|
normalized_dist = (nx - current_position[X_AXIS])/(x - current_position[X_AXIS]);
|
||||||
|
ny = current_position[Y_AXIS] + (y - current_position[Y_AXIS]) * normalized_dist;
|
||||||
|
ne = current_position[E_AXIS] + (e - current_position[E_AXIS]) * normalized_dist;
|
||||||
|
x_splits ^= BIT(ix);
|
||||||
|
} else if (ix < pix && (x_splits) & BIT(pix)) {
|
||||||
|
nx = mbl.get_x(pix);
|
||||||
|
normalized_dist = (nx - current_position[X_AXIS])/(x - current_position[X_AXIS]);
|
||||||
|
ny = current_position[Y_AXIS] + (y - current_position[Y_AXIS]) * normalized_dist;
|
||||||
|
ne = current_position[E_AXIS] + (e - current_position[E_AXIS]) * normalized_dist;
|
||||||
|
x_splits ^= BIT(pix);
|
||||||
|
} else if (iy > piy && (y_splits) & BIT(iy)) {
|
||||||
|
ny = mbl.get_y(iy);
|
||||||
|
normalized_dist = (ny - current_position[Y_AXIS])/(y - current_position[Y_AXIS]);
|
||||||
|
nx = current_position[X_AXIS] + (x - current_position[X_AXIS]) * normalized_dist;
|
||||||
|
ne = current_position[E_AXIS] + (e - current_position[E_AXIS]) * normalized_dist;
|
||||||
|
y_splits ^= BIT(iy);
|
||||||
|
} else if (iy < piy && (y_splits) & BIT(piy)) {
|
||||||
|
ny = mbl.get_y(piy);
|
||||||
|
normalized_dist = (ny - current_position[Y_AXIS])/(y - current_position[Y_AXIS]);
|
||||||
|
nx = current_position[X_AXIS] + (x - current_position[X_AXIS]) * normalized_dist;
|
||||||
|
ne = current_position[E_AXIS] + (e - current_position[E_AXIS]) * normalized_dist;
|
||||||
|
y_splits ^= BIT(piy);
|
||||||
|
} else {
|
||||||
|
// Already split on a border
|
||||||
|
plan_buffer_line(x, y, z, e, feed_rate, extruder);
|
||||||
|
for(int8_t i=0; i < NUM_AXIS; i++) {
|
||||||
|
current_position[i] = destination[i];
|
||||||
|
}
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
// Do the split and look for more borders
|
||||||
|
destination[X_AXIS] = nx;
|
||||||
|
destination[Y_AXIS] = ny;
|
||||||
|
destination[E_AXIS] = ne;
|
||||||
|
mesh_plan_buffer_line(nx, ny, z, ne, feed_rate, extruder, x_splits, y_splits);
|
||||||
|
destination[X_AXIS] = x;
|
||||||
|
destination[Y_AXIS] = y;
|
||||||
|
destination[E_AXIS] = e;
|
||||||
|
mesh_plan_buffer_line(x, y, z, e, feed_rate, extruder, x_splits, y_splits);
|
||||||
|
}
|
||||||
|
#endif // MESH_BED_LEVELING
|
||||||
|
|
||||||
void prepare_move()
|
void prepare_move()
|
||||||
{
|
{
|
||||||
clamp_to_software_endstops(destination);
|
clamp_to_software_endstops(destination);
|
||||||
|
@ -5395,10 +5464,14 @@ for (int s = 1; s <= steps; s++) {
|
||||||
#if ! (defined DELTA || defined SCARA)
|
#if ! (defined DELTA || defined SCARA)
|
||||||
// Do not use feedmultiply for E or Z only moves
|
// Do not use feedmultiply for E or Z only moves
|
||||||
if( (current_position[X_AXIS] == destination [X_AXIS]) && (current_position[Y_AXIS] == destination [Y_AXIS])) {
|
if( (current_position[X_AXIS] == destination [X_AXIS]) && (current_position[Y_AXIS] == destination [Y_AXIS])) {
|
||||||
plan_buffer_line(destination[X_AXIS], destination[Y_AXIS], destination[Z_AXIS], destination[E_AXIS], feedrate/60, active_extruder);
|
plan_buffer_line(destination[X_AXIS], destination[Y_AXIS], destination[Z_AXIS], destination[E_AXIS], feedrate/60, active_extruder);
|
||||||
}
|
} else {
|
||||||
else {
|
#if defined(MESH_BED_LEVELING)
|
||||||
|
mesh_plan_buffer_line(destination[X_AXIS], destination[Y_AXIS], destination[Z_AXIS], destination[E_AXIS], feedrate*feedmultiply/60/100.0, active_extruder);
|
||||||
|
return;
|
||||||
|
#else
|
||||||
plan_buffer_line(destination[X_AXIS], destination[Y_AXIS], destination[Z_AXIS], destination[E_AXIS], feedrate*feedmultiply/60/100.0, active_extruder);
|
plan_buffer_line(destination[X_AXIS], destination[Y_AXIS], destination[Z_AXIS], destination[E_AXIS], feedrate*feedmultiply/60/100.0, active_extruder);
|
||||||
|
#endif // MESH_BED_LEVELING
|
||||||
}
|
}
|
||||||
#endif // !(DELTA || SCARA)
|
#endif // !(DELTA || SCARA)
|
||||||
|
|
||||||
|
|
254
Marlin/SanityCheck.h
Normal file
254
Marlin/SanityCheck.h
Normal file
|
@ -0,0 +1,254 @@
|
||||||
|
/**
|
||||||
|
* SanityCheck.h
|
||||||
|
*
|
||||||
|
* Test configuration values for errors at compile-time.
|
||||||
|
*/
|
||||||
|
#ifndef SANITYCHECK_H
|
||||||
|
#define SANITYCHECK_H
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Dual Stepper Drivers
|
||||||
|
*/
|
||||||
|
#if defined(Z_DUAL_STEPPER_DRIVERS) && defined(Y_DUAL_STEPPER_DRIVERS)
|
||||||
|
#error You cannot have dual stepper drivers for both Y and Z.
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Progress Bar
|
||||||
|
*/
|
||||||
|
#ifdef LCD_PROGRESS_BAR
|
||||||
|
#ifdef DOGLCD
|
||||||
|
#warning LCD_PROGRESS_BAR does not apply to graphical displays.
|
||||||
|
#endif
|
||||||
|
#ifdef FILAMENT_LCD_DISPLAY
|
||||||
|
#error LCD_PROGRESS_BAR and FILAMENT_LCD_DISPLAY are not fully compatible. Comment out this line to use both.
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Babystepping
|
||||||
|
*/
|
||||||
|
#ifdef BABYSTEPPING
|
||||||
|
#ifdef COREXY
|
||||||
|
#error BABYSTEPPING not implemented for COREXY yet.
|
||||||
|
#endif
|
||||||
|
#ifdef SCARA
|
||||||
|
#error BABYSTEPPING is not implemented for SCARA yet.
|
||||||
|
#endif
|
||||||
|
#if defined(DELTA) && defined(BABYSTEP_XY)
|
||||||
|
#error BABYSTEPPING only implemented for Z axis on deltabots.
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Filament Change with Extruder Runout Prevention
|
||||||
|
*/
|
||||||
|
#if defined(FILAMENTCHANGEENABLE) && defined(EXTRUDER_RUNOUT_PREVENT)
|
||||||
|
#error EXTRUDER_RUNOUT_PREVENT currently incompatible with FILAMENTCHANGE.
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Options only for EXTRUDERS == 1
|
||||||
|
*/
|
||||||
|
#if EXTRUDERS > 1
|
||||||
|
|
||||||
|
#if EXTRUDERS > 4
|
||||||
|
#error The maximum number of EXTRUDERS is 4.
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef TEMP_SENSOR_1_AS_REDUNDANT
|
||||||
|
#error EXTRUDERS must be 1 with TEMP_SENSOR_1_AS_REDUNDANT.
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef HEATERS_PARALLEL
|
||||||
|
#error EXTRUDERS must be 1 with HEATERS_PARALLEL.
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef Y_DUAL_STEPPER_DRIVERS
|
||||||
|
#error EXTRUDERS must be 1 with Y_DUAL_STEPPER_DRIVERS.
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef Z_DUAL_STEPPER_DRIVERS
|
||||||
|
#error EXTRUDERS must be 1 with Z_DUAL_STEPPER_DRIVERS.
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif // EXTRUDERS > 1
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Required LCD language
|
||||||
|
*/
|
||||||
|
#if !defined(DOGLCD) && defined(ULTRA_LCD) && !defined(DISPLAY_CHARSET_HD44780_JAPAN) && !defined(DISPLAY_CHARSET_HD44780_WESTERN)
|
||||||
|
#error You must enable either DISPLAY_CHARSET_HD44780_JAPAN or DISPLAY_CHARSET_HD44780_WESTERN for your LCD controller.
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Auto Bed Leveling
|
||||||
|
*/
|
||||||
|
#ifdef ENABLE_AUTO_BED_LEVELING
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Require a Z Min pin
|
||||||
|
*/
|
||||||
|
#if Z_MIN_PIN == -1
|
||||||
|
#ifdef Z_PROBE_REPEATABILITY_TEST
|
||||||
|
#error You must have a Z_MIN endstop to enable Z_PROBE_REPEATABILITY_TEST.
|
||||||
|
#else
|
||||||
|
#error ENABLE_AUTO_BED_LEVELING requires a Z_MIN endstop. Z_MIN_PIN must point to a valid hardware pin.
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Check if Probe_Offset * Grid Points is greater than Probing Range
|
||||||
|
*/
|
||||||
|
#ifdef AUTO_BED_LEVELING_GRID
|
||||||
|
|
||||||
|
// Make sure probing points are reachable
|
||||||
|
#if LEFT_PROBE_BED_POSITION < MIN_PROBE_X
|
||||||
|
#error The given LEFT_PROBE_BED_POSITION can't be reached by the probe.
|
||||||
|
#elif RIGHT_PROBE_BED_POSITION > MAX_PROBE_X
|
||||||
|
#error The given RIGHT_PROBE_BED_POSITION can't be reached by the probe.
|
||||||
|
#elif FRONT_PROBE_BED_POSITION < MIN_PROBE_Y
|
||||||
|
#error The given FRONT_PROBE_BED_POSITION can't be reached by the probe.
|
||||||
|
#elif BACK_PROBE_BED_POSITION > MAX_PROBE_Y
|
||||||
|
#error The given BACK_PROBE_BED_POSITION can't be reached by the probe.
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#define PROBE_SIZE_X (X_PROBE_OFFSET_FROM_EXTRUDER * (AUTO_BED_LEVELING_GRID_POINTS-1))
|
||||||
|
#define PROBE_SIZE_Y (Y_PROBE_OFFSET_FROM_EXTRUDER * (AUTO_BED_LEVELING_GRID_POINTS-1))
|
||||||
|
#define PROBE_AREA_WIDTH (RIGHT_PROBE_BED_POSITION - LEFT_PROBE_BED_POSITION)
|
||||||
|
#define PROBE_AREA_DEPTH (BACK_PROBE_BED_POSITION - FRONT_PROBE_BED_POSITION)
|
||||||
|
#if X_PROBE_OFFSET_FROM_EXTRUDER < 0
|
||||||
|
#if PROBE_SIZE_X <= -PROBE_AREA_WIDTH
|
||||||
|
#define X_PROBE_ERROR
|
||||||
|
#endif
|
||||||
|
#elif PROBE_SIZE_X >= PROBE_AREA_WIDTH
|
||||||
|
#define X_PROBE_ERROR
|
||||||
|
#endif
|
||||||
|
#ifdef X_PROBE_ERROR
|
||||||
|
#error The X axis probing range is too small to fit all the points defined in AUTO_BED_LEVELING_GRID_POINTS
|
||||||
|
#endif
|
||||||
|
#if Y_PROBE_OFFSET_FROM_EXTRUDER < 0
|
||||||
|
#if PROBE_SIZE_Y <= -PROBE_AREA_DEPTH
|
||||||
|
#define Y_PROBE_ERROR
|
||||||
|
#endif
|
||||||
|
#elif PROBE_SIZE_Y >= PROBE_AREA_DEPTH
|
||||||
|
#define Y_PROBE_ERROR
|
||||||
|
#endif
|
||||||
|
#ifdef Y_PROBE_ERROR
|
||||||
|
#error The Y axis probing range is to small to fit all the points defined in AUTO_BED_LEVELING_GRID_POINTS
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#undef PROBE_SIZE_X
|
||||||
|
#undef PROBE_SIZE_Y
|
||||||
|
#undef PROBE_AREA_WIDTH
|
||||||
|
#undef PROBE_AREA_DEPTH
|
||||||
|
|
||||||
|
#else // !AUTO_BED_LEVELING_GRID
|
||||||
|
|
||||||
|
// Check the triangulation points
|
||||||
|
#if ABL_PROBE_PT_1_X < MIN_PROBE_X || ABL_PROBE_PT_1_X > MAX_PROBE_X
|
||||||
|
#error "The given ABL_PROBE_PT_1_X can't be reached by the probe."
|
||||||
|
#elif ABL_PROBE_PT_2_X < MIN_PROBE_X || ABL_PROBE_PT_2_X > MAX_PROBE_X
|
||||||
|
#error "The given ABL_PROBE_PT_2_X can't be reached by the probe."
|
||||||
|
#elif ABL_PROBE_PT_3_X < MIN_PROBE_X || ABL_PROBE_PT_3_X > MAX_PROBE_X
|
||||||
|
#error "The given ABL_PROBE_PT_3_X can't be reached by the probe."
|
||||||
|
#elif ABL_PROBE_PT_1_Y < MIN_PROBE_Y || ABL_PROBE_PT_1_Y > MAX_PROBE_Y
|
||||||
|
#error "The given ABL_PROBE_PT_1_Y can't be reached by the probe."
|
||||||
|
#elif ABL_PROBE_PT_2_Y < MIN_PROBE_Y || ABL_PROBE_PT_2_Y > MAX_PROBE_Y
|
||||||
|
#error "The given ABL_PROBE_PT_2_Y can't be reached by the probe."
|
||||||
|
#elif ABL_PROBE_PT_3_Y < MIN_PROBE_Y || ABL_PROBE_PT_3_Y > MAX_PROBE_Y
|
||||||
|
#error "The given ABL_PROBE_PT_3_Y can't be reached by the probe."
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif // !AUTO_BED_LEVELING_GRID
|
||||||
|
|
||||||
|
#endif // ENABLE_AUTO_BED_LEVELING
|
||||||
|
|
||||||
|
/**
|
||||||
|
* ULTIPANEL encoder
|
||||||
|
*/
|
||||||
|
#if defined(ULTIPANEL) && !defined(NEWPANEL) && !defined(SR_LCD_2W_NL) && !defined(SHIFT_CLK)
|
||||||
|
#error ULTIPANEL requires some kind of encoder.
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Delta has limited bed leveling options
|
||||||
|
*/
|
||||||
|
#ifdef DELTA
|
||||||
|
|
||||||
|
#ifdef ENABLE_AUTO_BED_LEVELING
|
||||||
|
|
||||||
|
#ifndef AUTO_BED_LEVELING_GRID
|
||||||
|
#error Only AUTO_BED_LEVELING_GRID is supported with DELTA.
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef Z_PROBE_SLED
|
||||||
|
#error You cannot use Z_PROBE_SLED with DELTA.
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef Z_PROBE_REPEATABILITY_TEST
|
||||||
|
#error Z_PROBE_REPEATABILITY_TEST is not supported with DELTA yet.
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Allen Key Z Probe requires Auto Bed Leveling grid and Delta
|
||||||
|
*/
|
||||||
|
#if defined(Z_PROBE_ALLEN_KEY) && !(defined(AUTO_BED_LEVELING_GRID) && defined(DELTA))
|
||||||
|
#error Invalid use of Z_PROBE_ALLEN_KEY.
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Dual X Carriage requirements
|
||||||
|
*/
|
||||||
|
#ifdef DUAL_X_CARRIAGE
|
||||||
|
#if EXTRUDERS == 1 || defined(COREXY) \
|
||||||
|
|| !defined(X2_ENABLE_PIN) || !defined(X2_STEP_PIN) || !defined(X2_DIR_PIN) \
|
||||||
|
|| !defined(X2_HOME_POS) || !defined(X2_MIN_POS) || !defined(X2_MAX_POS) \
|
||||||
|
|| !defined(X_MAX_PIN) || X_MAX_PIN < 0
|
||||||
|
#error Missing or invalid definitions for DUAL_X_CARRIAGE mode.
|
||||||
|
#endif
|
||||||
|
#if X_HOME_DIR != -1 || X2_HOME_DIR != 1
|
||||||
|
#error Please use canonical x-carriage assignment.
|
||||||
|
#endif
|
||||||
|
#endif // DUAL_X_CARRIAGE
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Make sure auto fan pins don't conflict with the fan pin
|
||||||
|
*/
|
||||||
|
#if HAS_AUTO_FAN && HAS_FAN
|
||||||
|
#if EXTRUDER_0_AUTO_FAN_PIN == FAN_PIN
|
||||||
|
#error You cannot set EXTRUDER_0_AUTO_FAN_PIN equal to FAN_PIN
|
||||||
|
#elif EXTRUDER_1_AUTO_FAN_PIN == FAN_PIN
|
||||||
|
#error You cannot set EXTRUDER_1_AUTO_FAN_PIN equal to FAN_PIN
|
||||||
|
#elif EXTRUDER_2_AUTO_FAN_PIN == FAN_PIN
|
||||||
|
#error You cannot set EXTRUDER_2_AUTO_FAN_PIN equal to FAN_PIN
|
||||||
|
#elif EXTRUDER_3_AUTO_FAN_PIN == FAN_PIN
|
||||||
|
#error You cannot set EXTRUDER_3_AUTO_FAN_PIN equal to FAN_PIN
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Test required HEATER defines
|
||||||
|
*/
|
||||||
|
#if EXTRUDERS > 3
|
||||||
|
#if !HAS_HEATER_3
|
||||||
|
#error HEATER_3_PIN not defined for this board
|
||||||
|
#endif
|
||||||
|
#elif EXTRUDERS > 2
|
||||||
|
#if !HAS_HEATER_2
|
||||||
|
#error HEATER_2_PIN not defined for this board
|
||||||
|
#endif
|
||||||
|
#elif EXTRUDERS > 1 || defined(HEATERS_PARALLEL)
|
||||||
|
#if !HAS_HEATER_1
|
||||||
|
#error HEATER_1_PIN not defined for this board
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
|
#if !HAS_HEATER_0
|
||||||
|
#error HEATER_0_PIN not defined for this board
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif //SANITYCHECK_H
|
|
@ -33,9 +33,7 @@ struct pin_map_t {
|
||||||
uint8_t bit;
|
uint8_t bit;
|
||||||
};
|
};
|
||||||
//------------------------------------------------------------------------------
|
//------------------------------------------------------------------------------
|
||||||
#if defined(__AVR_ATmega1280__)\
|
#if defined(__AVR_ATmega1280__) || defined(__AVR_ATmega2560__) // Mega
|
||||||
|| defined(__AVR_ATmega2560__)
|
|
||||||
// Mega
|
|
||||||
|
|
||||||
// Two Wire (aka I2C) ports
|
// Two Wire (aka I2C) ports
|
||||||
uint8_t const SDA_PIN = 20; // D1
|
uint8_t const SDA_PIN = 20; // D1
|
||||||
|
@ -43,6 +41,7 @@ uint8_t const SCL_PIN = 21; // D0
|
||||||
|
|
||||||
#undef MOSI_PIN
|
#undef MOSI_PIN
|
||||||
#undef MISO_PIN
|
#undef MISO_PIN
|
||||||
|
#undef SCK_PIN
|
||||||
// SPI port
|
// SPI port
|
||||||
uint8_t const SS_PIN = 53; // B0
|
uint8_t const SS_PIN = 53; // B0
|
||||||
uint8_t const MOSI_PIN = 51; // B2
|
uint8_t const MOSI_PIN = 51; // B2
|
||||||
|
|
|
@ -330,15 +330,6 @@ your extruder heater takes 2 minutes to hit the target on heating.
|
||||||
// #define ENDSTOPPULLUP_ZMIN
|
// #define ENDSTOPPULLUP_ZMIN
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef ENDSTOPPULLUPS
|
|
||||||
#define ENDSTOPPULLUP_XMAX
|
|
||||||
#define ENDSTOPPULLUP_YMAX
|
|
||||||
#define ENDSTOPPULLUP_ZMAX
|
|
||||||
#define ENDSTOPPULLUP_XMIN
|
|
||||||
#define ENDSTOPPULLUP_YMIN
|
|
||||||
#define ENDSTOPPULLUP_ZMIN
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// The pullups are needed if you directly connect a mechanical endswitch between the signal and ground pins.
|
// The pullups are needed if you directly connect a mechanical endswitch between the signal and ground pins.
|
||||||
const bool X_MIN_ENDSTOP_INVERTING = true; // set to true to invert the logic of the endstop.
|
const bool X_MIN_ENDSTOP_INVERTING = true; // set to true to invert the logic of the endstop.
|
||||||
const bool Y_MIN_ENDSTOP_INVERTING = true; // set to true to invert the logic of the endstop.
|
const bool Y_MIN_ENDSTOP_INVERTING = true; // set to true to invert the logic of the endstop.
|
||||||
|
@ -405,12 +396,32 @@ const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of
|
||||||
#define Y_MAX_POS 205
|
#define Y_MAX_POS 205
|
||||||
#define Z_MAX_POS 200
|
#define Z_MAX_POS 200
|
||||||
|
|
||||||
// @section hidden
|
//===========================================================================
|
||||||
|
//============================= Filament Runout Sensor ======================
|
||||||
|
//===========================================================================
|
||||||
|
//#define FILAMENT_RUNOUT_SENSOR // Uncomment for defining a filament runout sensor such as a mechanical or opto endstop to check the existence of filament
|
||||||
|
// In RAMPS uses servo pin 2. Can be changed in pins file. For other boards pin definition should be made.
|
||||||
|
// It is assumed that when logic high = filament available
|
||||||
|
// when logic low = filament ran out
|
||||||
|
//const bool FIL_RUNOUT_INVERTING = true; // Should be uncommented and true or false should assigned
|
||||||
|
//#define ENDSTOPPULLUP_FIL_RUNOUT // Uncomment to use internal pullup for filament runout pins if the sensor is defined.
|
||||||
|
|
||||||
#define X_MAX_LENGTH (X_MAX_POS - X_MIN_POS)
|
//===========================================================================
|
||||||
#define Y_MAX_LENGTH (Y_MAX_POS - Y_MIN_POS)
|
//============================ Manual Bed Leveling ==========================
|
||||||
#define Z_MAX_LENGTH (Z_MAX_POS - Z_MIN_POS)
|
//===========================================================================
|
||||||
|
|
||||||
|
// #define MANUAL_BED_LEVELING // Add display menu option for bed leveling
|
||||||
|
// #define MESH_BED_LEVELING // Enable mesh bed leveling
|
||||||
|
|
||||||
|
#if defined(MESH_BED_LEVELING)
|
||||||
|
#define MESH_MIN_X 10
|
||||||
|
#define MESH_MAX_X (X_MAX_POS - MESH_MIN_X)
|
||||||
|
#define MESH_MIN_Y 10
|
||||||
|
#define MESH_MAX_Y (Y_MAX_POS - MESH_MIN_Y)
|
||||||
|
#define MESH_NUM_X_POINTS 3 // Don't use more than 7 points per axis, implementation limited
|
||||||
|
#define MESH_NUM_Y_POINTS 3
|
||||||
|
#define MESH_HOME_SEARCH_Z 4 // Z after Home, bed somewhere below but above 0.0
|
||||||
|
#endif // MESH_BED_LEVELING
|
||||||
|
|
||||||
//===========================================================================
|
//===========================================================================
|
||||||
//============================= Bed Auto Leveling ===========================
|
//============================= Bed Auto Leveling ===========================
|
||||||
|
@ -440,12 +451,6 @@ const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of
|
||||||
|
|
||||||
#ifdef AUTO_BED_LEVELING_GRID
|
#ifdef AUTO_BED_LEVELING_GRID
|
||||||
|
|
||||||
// Use one of these defines to specify the origin
|
|
||||||
// for a topographical map to be printed for your bed.
|
|
||||||
enum { OriginBackLeft, OriginFrontLeft, OriginBackRight, OriginFrontRight };
|
|
||||||
#define TOPO_ORIGIN OriginFrontLeft
|
|
||||||
|
|
||||||
// The edges of the rectangle in which to probe
|
|
||||||
#define LEFT_PROBE_BED_POSITION 15
|
#define LEFT_PROBE_BED_POSITION 15
|
||||||
#define RIGHT_PROBE_BED_POSITION 170
|
#define RIGHT_PROBE_BED_POSITION 170
|
||||||
#define FRONT_PROBE_BED_POSITION 20
|
#define FRONT_PROBE_BED_POSITION 20
|
||||||
|
@ -656,114 +661,17 @@ const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of
|
||||||
// REMEMBER TO INSTALL LiquidCrystal_I2C.h in your ARDUINO library folder: https://github.com/kiyoshigawa/LiquidCrystal_I2C
|
// REMEMBER TO INSTALL LiquidCrystal_I2C.h in your ARDUINO library folder: https://github.com/kiyoshigawa/LiquidCrystal_I2C
|
||||||
//#define RA_CONTROL_PANEL
|
//#define RA_CONTROL_PANEL
|
||||||
|
|
||||||
// @section hidden
|
/**
|
||||||
|
* I2C Panels
|
||||||
//automatic expansion
|
*/
|
||||||
#if defined (MAKRPANEL)
|
|
||||||
#define DOGLCD
|
|
||||||
#define SDSUPPORT
|
|
||||||
#define ULTIPANEL
|
|
||||||
#define NEWPANEL
|
|
||||||
#define DEFAULT_LCD_CONTRAST 17
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if defined(miniVIKI) || defined(VIKI2)
|
|
||||||
#define ULTRA_LCD //general LCD support, also 16x2
|
|
||||||
#define DOGLCD // Support for SPI LCD 128x64 (Controller ST7565R graphic Display Family)
|
|
||||||
#define ULTIMAKERCONTROLLER //as available from the Ultimaker online store.
|
|
||||||
|
|
||||||
#ifdef miniVIKI
|
|
||||||
#define DEFAULT_LCD_CONTRAST 95
|
|
||||||
#else
|
|
||||||
#define DEFAULT_LCD_CONTRAST 40
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#define ENCODER_PULSES_PER_STEP 4
|
|
||||||
#define ENCODER_STEPS_PER_MENU_ITEM 1
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if defined (PANEL_ONE)
|
|
||||||
#define SDSUPPORT
|
|
||||||
#define ULTIMAKERCONTROLLER
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if defined (REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER)
|
|
||||||
#define DOGLCD
|
|
||||||
#define U8GLIB_ST7920
|
|
||||||
#define REPRAP_DISCOUNT_SMART_CONTROLLER
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if defined(ULTIMAKERCONTROLLER) || defined(REPRAP_DISCOUNT_SMART_CONTROLLER) || defined(G3D_PANEL)
|
|
||||||
#define ULTIPANEL
|
|
||||||
#define NEWPANEL
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if defined(REPRAPWORLD_KEYPAD)
|
|
||||||
#define NEWPANEL
|
|
||||||
#define ULTIPANEL
|
|
||||||
#endif
|
|
||||||
#if defined(RA_CONTROL_PANEL)
|
|
||||||
#define ULTIPANEL
|
|
||||||
#define NEWPANEL
|
|
||||||
#define LCD_I2C_TYPE_PCA8574
|
|
||||||
#define LCD_I2C_ADDRESS 0x27 // I2C Address of the port expander
|
|
||||||
#endif
|
|
||||||
|
|
||||||
//I2C PANELS
|
|
||||||
|
|
||||||
//#define LCD_I2C_SAINSMART_YWROBOT
|
//#define LCD_I2C_SAINSMART_YWROBOT
|
||||||
#ifdef LCD_I2C_SAINSMART_YWROBOT
|
|
||||||
// This uses the LiquidCrystal_I2C library ( https://bitbucket.org/fmalpartida/new-liquidcrystal/wiki/Home )
|
|
||||||
// Make sure it is placed in the Arduino libraries directory.
|
|
||||||
#define LCD_I2C_TYPE_PCF8575
|
|
||||||
#define LCD_I2C_ADDRESS 0x27 // I2C Address of the port expander
|
|
||||||
#define NEWPANEL
|
|
||||||
#define ULTIPANEL
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// PANELOLU2 LCD with status LEDs, separate encoder and click inputs
|
// PANELOLU2 LCD with status LEDs, separate encoder and click inputs
|
||||||
//#define LCD_I2C_PANELOLU2
|
//#define LCD_I2C_PANELOLU2
|
||||||
#ifdef LCD_I2C_PANELOLU2
|
|
||||||
// This uses the LiquidTWI2 library v1.2.3 or later ( https://github.com/lincomatic/LiquidTWI2 )
|
|
||||||
// Make sure the LiquidTWI2 directory is placed in the Arduino or Sketchbook libraries subdirectory.
|
|
||||||
// (v1.2.3 no longer requires you to define PANELOLU in the LiquidTWI2.h library header file)
|
|
||||||
// Note: The PANELOLU2 encoder click input can either be directly connected to a pin
|
|
||||||
// (if BTN_ENC defined to != -1) or read through I2C (when BTN_ENC == -1).
|
|
||||||
#define LCD_I2C_TYPE_MCP23017
|
|
||||||
#define LCD_I2C_ADDRESS 0x20 // I2C Address of the port expander
|
|
||||||
#define LCD_USE_I2C_BUZZER //comment out to disable buzzer on LCD
|
|
||||||
#define NEWPANEL
|
|
||||||
#define ULTIPANEL
|
|
||||||
|
|
||||||
#ifndef ENCODER_PULSES_PER_STEP
|
|
||||||
#define ENCODER_PULSES_PER_STEP 4
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifndef ENCODER_STEPS_PER_MENU_ITEM
|
|
||||||
#define ENCODER_STEPS_PER_MENU_ITEM 1
|
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
||||||
#ifdef LCD_USE_I2C_BUZZER
|
|
||||||
#define LCD_FEEDBACK_FREQUENCY_HZ 1000
|
|
||||||
#define LCD_FEEDBACK_FREQUENCY_DURATION_MS 100
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// Panucatt VIKI LCD with status LEDs, integrated click & L/R/U/P buttons, separate encoder inputs
|
// Panucatt VIKI LCD with status LEDs, integrated click & L/R/U/P buttons, separate encoder inputs
|
||||||
//#define LCD_I2C_VIKI
|
//#define LCD_I2C_VIKI
|
||||||
#ifdef LCD_I2C_VIKI
|
|
||||||
// This uses the LiquidTWI2 library v1.2.3 or later ( https://github.com/lincomatic/LiquidTWI2 )
|
|
||||||
// Make sure the LiquidTWI2 directory is placed in the Arduino or Sketchbook libraries subdirectory.
|
|
||||||
// Note: The pause/stop/resume LCD button pin should be connected to the Arduino
|
|
||||||
// BTN_ENC pin (or set BTN_ENC to -1 if not used)
|
|
||||||
#define LCD_I2C_TYPE_MCP23017
|
|
||||||
#define LCD_I2C_ADDRESS 0x20 // I2C Address of the port expander
|
|
||||||
#define LCD_USE_I2C_BUZZER //comment out to disable buzzer on LCD (requires LiquidTWI2 v1.2.3 or later)
|
|
||||||
#define NEWPANEL
|
|
||||||
#define ULTIPANEL
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// Shift register panels
|
// Shift register panels
|
||||||
// ---------------------
|
// ---------------------
|
||||||
|
@ -771,55 +679,12 @@ const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of
|
||||||
// https://bitbucket.org/fmalpartida/new-liquidcrystal/wiki/schematics#!shiftregister-connection
|
// https://bitbucket.org/fmalpartida/new-liquidcrystal/wiki/schematics#!shiftregister-connection
|
||||||
|
|
||||||
//#define SAV_3DLCD
|
//#define SAV_3DLCD
|
||||||
#ifdef SAV_3DLCD
|
|
||||||
#define SR_LCD_2W_NL // Non latching 2 wire shiftregister
|
|
||||||
#define NEWPANEL
|
|
||||||
#define ULTIPANEL
|
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
||||||
#ifdef ULTIPANEL
|
|
||||||
// #define NEWPANEL //enable this if you have a click-encoder panel
|
|
||||||
#define SDSUPPORT
|
|
||||||
#define ULTRA_LCD
|
|
||||||
#ifdef DOGLCD // Change number of lines to match the DOG graphic display
|
|
||||||
#define LCD_WIDTH 22
|
|
||||||
#define LCD_HEIGHT 5
|
|
||||||
#else
|
|
||||||
#define LCD_WIDTH 20
|
|
||||||
#define LCD_HEIGHT 4
|
|
||||||
#endif
|
|
||||||
#else //no panel but just LCD
|
|
||||||
#ifdef ULTRA_LCD
|
|
||||||
#ifdef DOGLCD // Change number of lines to match the 128x64 graphics display
|
|
||||||
#define LCD_WIDTH 22
|
|
||||||
#define LCD_HEIGHT 5
|
|
||||||
#else
|
|
||||||
#define LCD_WIDTH 16
|
|
||||||
#define LCD_HEIGHT 2
|
|
||||||
#endif
|
|
||||||
#endif
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// @section lcd
|
|
||||||
|
|
||||||
// default LCD contrast for dogm-like LCD displays
|
|
||||||
#ifdef DOGLCD
|
|
||||||
# ifndef DEFAULT_LCD_CONTRAST
|
|
||||||
# define DEFAULT_LCD_CONTRAST 32
|
|
||||||
# endif
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// @section extras
|
// @section extras
|
||||||
|
|
||||||
// Increase the FAN pwm frequency. Removes the PWM noise but increases heating in the FET/Arduino
|
// Increase the FAN pwm frequency. Removes the PWM noise but increases heating in the FET/Arduino
|
||||||
//#define FAST_PWM_FAN
|
//#define FAST_PWM_FAN
|
||||||
|
|
||||||
// Temperature status LEDs that display the hotend and bet temperature.
|
|
||||||
// If all hotends and bed temperature and temperature setpoint are < 54C then the BLUE led is on.
|
|
||||||
// Otherwise the RED led is on. There is 1C hysteresis.
|
|
||||||
//#define TEMP_STAT_LEDS
|
|
||||||
|
|
||||||
// Use software PWM to drive the fan, as for the heaters. This uses a very low frequency
|
// Use software PWM to drive the fan, as for the heaters. This uses a very low frequency
|
||||||
// which is not ass annoying as with the hardware PWM. On the other hand, if this frequency
|
// which is not ass annoying as with the hardware PWM. On the other hand, if this frequency
|
||||||
// is too low, you should also increment SOFT_PWM_SCALE.
|
// is too low, you should also increment SOFT_PWM_SCALE.
|
||||||
|
@ -831,6 +696,11 @@ const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of
|
||||||
// at zero value, there are 128 effective control positions.
|
// at zero value, there are 128 effective control positions.
|
||||||
#define SOFT_PWM_SCALE 0
|
#define SOFT_PWM_SCALE 0
|
||||||
|
|
||||||
|
// Temperature status LEDs that display the hotend and bet temperature.
|
||||||
|
// If all hotends and bed temperature and temperature setpoint are < 54C then the BLUE led is on.
|
||||||
|
// Otherwise the RED led is on. There is 1C hysteresis.
|
||||||
|
//#define TEMP_STAT_LEDS
|
||||||
|
|
||||||
// M240 Triggers a camera by emulating a Canon RC-1 Remote
|
// M240 Triggers a camera by emulating a Canon RC-1 Remote
|
||||||
// Data from: http://www.doc-diy.net/photo/rc-1_hacked/
|
// Data from: http://www.doc-diy.net/photo/rc-1_hacked/
|
||||||
// #define PHOTOGRAPH_PIN 23
|
// #define PHOTOGRAPH_PIN 23
|
||||||
|
@ -902,4 +772,4 @@ const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of
|
||||||
#include "Configuration_adv.h"
|
#include "Configuration_adv.h"
|
||||||
#include "thermistortables.h"
|
#include "thermistortables.h"
|
||||||
|
|
||||||
#endif //__CONFIGURATION_H
|
#endif //CONFIGURATION_H
|
||||||
|
|
|
@ -1,6 +1,8 @@
|
||||||
#ifndef CONFIGURATION_ADV_H
|
#ifndef CONFIGURATION_ADV_H
|
||||||
#define CONFIGURATION_ADV_H
|
#define CONFIGURATION_ADV_H
|
||||||
|
|
||||||
|
#include "Conditionals.h"
|
||||||
|
|
||||||
// @section temperature
|
// @section temperature
|
||||||
|
|
||||||
//===========================================================================
|
//===========================================================================
|
||||||
|
@ -99,56 +101,6 @@
|
||||||
|
|
||||||
#define ENDSTOPS_ONLY_FOR_HOMING // If defined the endstops will only be used for homing
|
#define ENDSTOPS_ONLY_FOR_HOMING // If defined the endstops will only be used for homing
|
||||||
|
|
||||||
|
|
||||||
// @section hidden
|
|
||||||
|
|
||||||
|
|
||||||
//// AUTOSET LOCATIONS OF LIMIT SWITCHES
|
|
||||||
//// Added by ZetaPhoenix 09-15-2012
|
|
||||||
#ifdef MANUAL_HOME_POSITIONS // Use manual limit switch locations
|
|
||||||
#define X_HOME_POS MANUAL_X_HOME_POS
|
|
||||||
#define Y_HOME_POS MANUAL_Y_HOME_POS
|
|
||||||
#define Z_HOME_POS MANUAL_Z_HOME_POS
|
|
||||||
#else //Set min/max homing switch positions based upon homing direction and min/max travel limits
|
|
||||||
//X axis
|
|
||||||
#if X_HOME_DIR == -1
|
|
||||||
#ifdef BED_CENTER_AT_0_0
|
|
||||||
#define X_HOME_POS X_MAX_LENGTH * -0.5
|
|
||||||
#else
|
|
||||||
#define X_HOME_POS X_MIN_POS
|
|
||||||
#endif //BED_CENTER_AT_0_0
|
|
||||||
#else
|
|
||||||
#ifdef BED_CENTER_AT_0_0
|
|
||||||
#define X_HOME_POS X_MAX_LENGTH * 0.5
|
|
||||||
#else
|
|
||||||
#define X_HOME_POS X_MAX_POS
|
|
||||||
#endif //BED_CENTER_AT_0_0
|
|
||||||
#endif //X_HOME_DIR == -1
|
|
||||||
|
|
||||||
//Y axis
|
|
||||||
#if Y_HOME_DIR == -1
|
|
||||||
#ifdef BED_CENTER_AT_0_0
|
|
||||||
#define Y_HOME_POS Y_MAX_LENGTH * -0.5
|
|
||||||
#else
|
|
||||||
#define Y_HOME_POS Y_MIN_POS
|
|
||||||
#endif //BED_CENTER_AT_0_0
|
|
||||||
#else
|
|
||||||
#ifdef BED_CENTER_AT_0_0
|
|
||||||
#define Y_HOME_POS Y_MAX_LENGTH * 0.5
|
|
||||||
#else
|
|
||||||
#define Y_HOME_POS Y_MAX_POS
|
|
||||||
#endif //BED_CENTER_AT_0_0
|
|
||||||
#endif //Y_HOME_DIR == -1
|
|
||||||
|
|
||||||
// Z axis
|
|
||||||
#if Z_HOME_DIR == -1 //BED_CENTER_AT_0_0 not used
|
|
||||||
#define Z_HOME_POS Z_MIN_POS
|
|
||||||
#else
|
|
||||||
#define Z_HOME_POS Z_MAX_POS
|
|
||||||
#endif //Z_HOME_DIR == -1
|
|
||||||
#endif //End auto min/max positions
|
|
||||||
//END AUTOSET LOCATIONS OF LIMIT SWITCHES -ZP
|
|
||||||
|
|
||||||
// @section extras
|
// @section extras
|
||||||
|
|
||||||
//#define Z_LATE_ENABLE // Enable Z the last moment. Needed if your Z driver overheats.
|
//#define Z_LATE_ENABLE // Enable Z the last moment. Needed if your Z driver overheats.
|
||||||
|
@ -160,26 +112,12 @@
|
||||||
// On a RAMPS (or other 5 driver) motherboard, using this feature will limit you to using 1 extruder.
|
// On a RAMPS (or other 5 driver) motherboard, using this feature will limit you to using 1 extruder.
|
||||||
//#define Z_DUAL_STEPPER_DRIVERS
|
//#define Z_DUAL_STEPPER_DRIVERS
|
||||||
|
|
||||||
#ifdef Z_DUAL_STEPPER_DRIVERS
|
|
||||||
#undef EXTRUDERS
|
|
||||||
#define EXTRUDERS 1
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// Same again but for Y Axis.
|
// Same again but for Y Axis.
|
||||||
//#define Y_DUAL_STEPPER_DRIVERS
|
//#define Y_DUAL_STEPPER_DRIVERS
|
||||||
|
|
||||||
// Define if the two Y drives need to rotate in opposite directions
|
// Define if the two Y drives need to rotate in opposite directions
|
||||||
#define INVERT_Y2_VS_Y_DIR true
|
#define INVERT_Y2_VS_Y_DIR true
|
||||||
|
|
||||||
#ifdef Y_DUAL_STEPPER_DRIVERS
|
|
||||||
#undef EXTRUDERS
|
|
||||||
#define EXTRUDERS 1
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if defined (Z_DUAL_STEPPER_DRIVERS) && defined (Y_DUAL_STEPPER_DRIVERS)
|
|
||||||
#error "You cannot have dual drivers for both Y and Z"
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// Enable this for dual x-carriage printers.
|
// Enable this for dual x-carriage printers.
|
||||||
// A dual x-carriage design has the advantage that the inactive extruder can be parked which
|
// A dual x-carriage design has the advantage that the inactive extruder can be parked which
|
||||||
// prevents hot-end ooze contaminating the print. It also reduces the weight of each x-carriage
|
// prevents hot-end ooze contaminating the print. It also reduces the weight of each x-carriage
|
||||||
|
@ -236,14 +174,6 @@
|
||||||
|
|
||||||
#define AXIS_RELATIVE_MODES {false, false, false, false}
|
#define AXIS_RELATIVE_MODES {false, false, false, false}
|
||||||
|
|
||||||
// @section hidden
|
|
||||||
|
|
||||||
#ifdef CONFIG_STEPPERS_TOSHIBA
|
|
||||||
#define MAX_STEP_FREQUENCY 10000 // Max step frequency for Toshiba Stepper Controllers
|
|
||||||
#else
|
|
||||||
#define MAX_STEP_FREQUENCY 40000 // Max step frequency for Ultimaker (5000 pps / half step)
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// @section machine
|
// @section machine
|
||||||
|
|
||||||
//By default pololu step drivers require an active high signal. However, some high power drivers require an active low signal as step.
|
//By default pololu step drivers require an active high signal. However, some high power drivers require an active low signal as step.
|
||||||
|
@ -252,7 +182,7 @@
|
||||||
#define INVERT_Z_STEP_PIN false
|
#define INVERT_Z_STEP_PIN false
|
||||||
#define INVERT_E_STEP_PIN false
|
#define INVERT_E_STEP_PIN false
|
||||||
|
|
||||||
//default stepper release if idle. Set to 0 to deactivate.
|
// Default stepper release if idle. Set to 0 to deactivate.
|
||||||
#define DEFAULT_STEPPER_DEACTIVE_TIME 60
|
#define DEFAULT_STEPPER_DEACTIVE_TIME 60
|
||||||
|
|
||||||
#define DEFAULT_MINIMUMFEEDRATE 0.0 // minimum feedrate
|
#define DEFAULT_MINIMUMFEEDRATE 0.0 // minimum feedrate
|
||||||
|
@ -260,14 +190,9 @@
|
||||||
|
|
||||||
// @section lcd
|
// @section lcd
|
||||||
|
|
||||||
// Feedrates for manual moves along X, Y, Z, E from panel
|
|
||||||
#ifdef ULTIPANEL
|
#ifdef ULTIPANEL
|
||||||
#define MANUAL_FEEDRATE {50*60, 50*60, 4*60, 60} // set the speeds for manual moves (mm/min)
|
#define MANUAL_FEEDRATE {50*60, 50*60, 4*60, 60} // Feedrates for manual moves along X, Y, Z, E from panel
|
||||||
#endif
|
#define ULTIPANEL_FEEDMULTIPLY // Comment to disable setting feedrate multiplier via encoder
|
||||||
|
|
||||||
//Comment to disable setting feedrate multiplier via encoder
|
|
||||||
#ifdef ULTIPANEL
|
|
||||||
#define ULTIPANEL_FEEDMULTIPLY
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// @section extras
|
// @section extras
|
||||||
|
@ -288,13 +213,6 @@
|
||||||
// if unwanted behavior is observed on a user's machine when running at very slow speeds.
|
// if unwanted behavior is observed on a user's machine when running at very slow speeds.
|
||||||
#define MINIMUM_PLANNER_SPEED 0.05// (mm/sec)
|
#define MINIMUM_PLANNER_SPEED 0.05// (mm/sec)
|
||||||
|
|
||||||
// MS1 MS2 Stepper Driver Microstepping mode table
|
|
||||||
#define MICROSTEP1 LOW,LOW
|
|
||||||
#define MICROSTEP2 HIGH,LOW
|
|
||||||
#define MICROSTEP4 LOW,HIGH
|
|
||||||
#define MICROSTEP8 HIGH,HIGH
|
|
||||||
#define MICROSTEP16 HIGH,HIGH
|
|
||||||
|
|
||||||
// Microstep setting (Only functional when stepper driver microstep pins are connected to MCU.
|
// Microstep setting (Only functional when stepper driver microstep pins are connected to MCU.
|
||||||
#define MICROSTEP_MODES {16,16,16,16,16} // [1,2,4,8,16]
|
#define MICROSTEP_MODES {16,16,16,16,16} // [1,2,4,8,16]
|
||||||
|
|
||||||
|
@ -342,12 +260,6 @@
|
||||||
#define PROGRESS_MSG_EXPIRE 0
|
#define PROGRESS_MSG_EXPIRE 0
|
||||||
// Enable this to show messages for MSG_TIME then hide them
|
// Enable this to show messages for MSG_TIME then hide them
|
||||||
//#define PROGRESS_MSG_ONCE
|
//#define PROGRESS_MSG_ONCE
|
||||||
#ifdef DOGLCD
|
|
||||||
#warning LCD_PROGRESS_BAR does not apply to graphical displays at this time.
|
|
||||||
#endif
|
|
||||||
#ifdef FILAMENT_LCD_DISPLAY
|
|
||||||
#error LCD_PROGRESS_BAR and FILAMENT_LCD_DISPLAY are not fully compatible. Comment out this line to use both.
|
|
||||||
#endif
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// @section more
|
// @section more
|
||||||
|
@ -373,16 +285,6 @@
|
||||||
#define BABYSTEP_XY //not only z, but also XY in the menu. more clutter, more functions
|
#define BABYSTEP_XY //not only z, but also XY in the menu. more clutter, more functions
|
||||||
#define BABYSTEP_INVERT_Z false //true for inverse movements in Z
|
#define BABYSTEP_INVERT_Z false //true for inverse movements in Z
|
||||||
#define BABYSTEP_Z_MULTIPLICATOR 2 //faster z movements
|
#define BABYSTEP_Z_MULTIPLICATOR 2 //faster z movements
|
||||||
|
|
||||||
#ifdef COREXY
|
|
||||||
#error BABYSTEPPING not implemented for COREXY yet.
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef DELTA
|
|
||||||
#ifdef BABYSTEP_XY
|
|
||||||
#error BABYSTEPPING only implemented for Z axis on deltabots.
|
|
||||||
#endif
|
|
||||||
#endif
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// extruder advance constant (s2/mm3)
|
// extruder advance constant (s2/mm3)
|
||||||
|
@ -418,28 +320,6 @@ const unsigned int dropsegments=5; //everything with less than this number of st
|
||||||
// be commented out otherwise
|
// be commented out otherwise
|
||||||
#define SDCARDDETECTINVERTED
|
#define SDCARDDETECTINVERTED
|
||||||
|
|
||||||
// @section hidden
|
|
||||||
|
|
||||||
#ifdef ULTIPANEL
|
|
||||||
#undef SDCARDDETECTINVERTED
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// Power Signal Control Definitions
|
|
||||||
// By default use ATX definition
|
|
||||||
#ifndef POWER_SUPPLY
|
|
||||||
#define POWER_SUPPLY 1
|
|
||||||
#endif
|
|
||||||
// 1 = ATX
|
|
||||||
#if (POWER_SUPPLY == 1)
|
|
||||||
#define PS_ON_AWAKE LOW
|
|
||||||
#define PS_ON_ASLEEP HIGH
|
|
||||||
#endif
|
|
||||||
// 2 = X-Box 360 203W
|
|
||||||
#if (POWER_SUPPLY == 2)
|
|
||||||
#define PS_ON_AWAKE HIGH
|
|
||||||
#define PS_ON_ASLEEP LOW
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// @section temperature
|
// @section temperature
|
||||||
|
|
||||||
// Control heater 0 and heater 1 in parallel.
|
// Control heater 0 and heater 1 in parallel.
|
||||||
|
@ -485,9 +365,9 @@ const unsigned int dropsegments=5; //everything with less than this number of st
|
||||||
#define RETRACT_RECOVER_FEEDRATE 8 //default feedrate for recovering from retraction (mm/s)
|
#define RETRACT_RECOVER_FEEDRATE 8 //default feedrate for recovering from retraction (mm/s)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
//adds support for experimental filament exchange support M600; requires display
|
// Add support for experimental filament exchange support M600; requires display
|
||||||
#ifdef ULTIPANEL
|
#ifdef ULTIPANEL
|
||||||
#define FILAMENTCHANGEENABLE
|
//#define FILAMENTCHANGEENABLE
|
||||||
#ifdef FILAMENTCHANGEENABLE
|
#ifdef FILAMENTCHANGEENABLE
|
||||||
#define FILAMENTCHANGE_XPOS 3
|
#define FILAMENTCHANGE_XPOS 3
|
||||||
#define FILAMENTCHANGE_YPOS 3
|
#define FILAMENTCHANGE_YPOS 3
|
||||||
|
@ -497,88 +377,7 @@ const unsigned int dropsegments=5; //everything with less than this number of st
|
||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef FILAMENTCHANGEENABLE
|
#include "Conditionals.h"
|
||||||
#ifdef EXTRUDER_RUNOUT_PREVENT
|
#include "SanityCheck.h"
|
||||||
#error EXTRUDER_RUNOUT_PREVENT currently incompatible with FILAMENTCHANGE
|
|
||||||
#endif
|
|
||||||
#endif
|
|
||||||
|
|
||||||
//===========================================================================
|
#endif //CONFIGURATION_ADV_H
|
||||||
//============================= Define Defines ============================
|
|
||||||
//===========================================================================
|
|
||||||
|
|
||||||
// @section hidden
|
|
||||||
|
|
||||||
#if defined (ENABLE_AUTO_BED_LEVELING) && defined (DELTA)
|
|
||||||
#error "Bed Auto Leveling is still not compatible with Delta Kinematics."
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if EXTRUDERS > 1 && defined TEMP_SENSOR_1_AS_REDUNDANT
|
|
||||||
#error "You cannot use TEMP_SENSOR_1_AS_REDUNDANT if EXTRUDERS > 1"
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if EXTRUDERS > 1 && defined HEATERS_PARALLEL
|
|
||||||
#error "You cannot use HEATERS_PARALLEL if EXTRUDERS > 1"
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if TEMP_SENSOR_0 > 0
|
|
||||||
#define THERMISTORHEATER_0 TEMP_SENSOR_0
|
|
||||||
#define HEATER_0_USES_THERMISTOR
|
|
||||||
#endif
|
|
||||||
#if TEMP_SENSOR_1 > 0
|
|
||||||
#define THERMISTORHEATER_1 TEMP_SENSOR_1
|
|
||||||
#define HEATER_1_USES_THERMISTOR
|
|
||||||
#endif
|
|
||||||
#if TEMP_SENSOR_2 > 0
|
|
||||||
#define THERMISTORHEATER_2 TEMP_SENSOR_2
|
|
||||||
#define HEATER_2_USES_THERMISTOR
|
|
||||||
#endif
|
|
||||||
#if TEMP_SENSOR_3 > 0
|
|
||||||
#define THERMISTORHEATER_3 TEMP_SENSOR_3
|
|
||||||
#define HEATER_3_USES_THERMISTOR
|
|
||||||
#endif
|
|
||||||
#if TEMP_SENSOR_BED > 0
|
|
||||||
#define THERMISTORBED TEMP_SENSOR_BED
|
|
||||||
#define BED_USES_THERMISTOR
|
|
||||||
#endif
|
|
||||||
#if TEMP_SENSOR_0 == -1
|
|
||||||
#define HEATER_0_USES_AD595
|
|
||||||
#endif
|
|
||||||
#if TEMP_SENSOR_1 == -1
|
|
||||||
#define HEATER_1_USES_AD595
|
|
||||||
#endif
|
|
||||||
#if TEMP_SENSOR_2 == -1
|
|
||||||
#define HEATER_2_USES_AD595
|
|
||||||
#endif
|
|
||||||
#if TEMP_SENSOR_3 == -1
|
|
||||||
#define HEATER_3_USES_AD595
|
|
||||||
#endif
|
|
||||||
#if TEMP_SENSOR_BED == -1
|
|
||||||
#define BED_USES_AD595
|
|
||||||
#endif
|
|
||||||
#if TEMP_SENSOR_0 == -2
|
|
||||||
#define HEATER_0_USES_MAX6675
|
|
||||||
#endif
|
|
||||||
#if TEMP_SENSOR_0 == 0
|
|
||||||
#undef HEATER_0_MINTEMP
|
|
||||||
#undef HEATER_0_MAXTEMP
|
|
||||||
#endif
|
|
||||||
#if TEMP_SENSOR_1 == 0
|
|
||||||
#undef HEATER_1_MINTEMP
|
|
||||||
#undef HEATER_1_MAXTEMP
|
|
||||||
#endif
|
|
||||||
#if TEMP_SENSOR_2 == 0
|
|
||||||
#undef HEATER_2_MINTEMP
|
|
||||||
#undef HEATER_2_MAXTEMP
|
|
||||||
#endif
|
|
||||||
#if TEMP_SENSOR_3 == 0
|
|
||||||
#undef HEATER_3_MINTEMP
|
|
||||||
#undef HEATER_3_MAXTEMP
|
|
||||||
#endif
|
|
||||||
#if TEMP_SENSOR_BED == 0
|
|
||||||
#undef BED_MINTEMP
|
|
||||||
#undef BED_MAXTEMP
|
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
||||||
#endif //__CONFIGURATION_ADV_H
|
|
||||||
|
|
|
@ -296,15 +296,6 @@ your extruder heater takes 2 minutes to hit the target on heating.
|
||||||
// #define ENDSTOPPULLUP_ZMIN
|
// #define ENDSTOPPULLUP_ZMIN
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef ENDSTOPPULLUPS
|
|
||||||
#define ENDSTOPPULLUP_XMAX
|
|
||||||
#define ENDSTOPPULLUP_YMAX
|
|
||||||
#define ENDSTOPPULLUP_ZMAX
|
|
||||||
#define ENDSTOPPULLUP_XMIN
|
|
||||||
#define ENDSTOPPULLUP_YMIN
|
|
||||||
#define ENDSTOPPULLUP_ZMIN
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// The pullups are needed if you directly connect a mechanical endswitch between the signal and ground pins.
|
// The pullups are needed if you directly connect a mechanical endswitch between the signal and ground pins.
|
||||||
const bool X_MIN_ENDSTOP_INVERTING = false; // set to true to invert the logic of the endstop.
|
const bool X_MIN_ENDSTOP_INVERTING = false; // set to true to invert the logic of the endstop.
|
||||||
const bool Y_MIN_ENDSTOP_INVERTING = false; // set to true to invert the logic of the endstop.
|
const bool Y_MIN_ENDSTOP_INVERTING = false; // set to true to invert the logic of the endstop.
|
||||||
|
@ -353,10 +344,32 @@ const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of
|
||||||
#define Z_MAX_POS 235
|
#define Z_MAX_POS 235
|
||||||
#define Z_MIN_POS 0
|
#define Z_MIN_POS 0
|
||||||
|
|
||||||
#define X_MAX_LENGTH (X_MAX_POS - X_MIN_POS)
|
//===========================================================================
|
||||||
#define Y_MAX_LENGTH (Y_MAX_POS - Y_MIN_POS)
|
//============================= Filament Runout Sensor ======================
|
||||||
#define Z_MAX_LENGTH (Z_MAX_POS - Z_MIN_POS)
|
//===========================================================================
|
||||||
|
//#define FILAMENT_RUNOUT_SENSOR // Uncomment for defining a filament runout sensor such as a mechanical or opto endstop to check the existence of filament
|
||||||
|
// In RAMPS uses servo pin 2. Can be changed in pins file. For other boards pin definition should be made.
|
||||||
|
// It is assumed that when logic high = filament available
|
||||||
|
// when logic low = filament ran out
|
||||||
|
//const bool FIL_RUNOUT_INVERTING = true; // Should be uncommented and true or false should assigned
|
||||||
|
//#define ENDSTOPPULLUP_FIL_RUNOUT // Uncomment to use internal pullup for filament runout pins if the sensor is defined.
|
||||||
|
|
||||||
|
//===========================================================================
|
||||||
|
//============================ Manual Bed Leveling ==========================
|
||||||
|
//===========================================================================
|
||||||
|
|
||||||
|
// #define MANUAL_BED_LEVELING // Add display menu option for bed leveling
|
||||||
|
// #define MESH_BED_LEVELING // Enable mesh bed leveling
|
||||||
|
|
||||||
|
#if defined(MESH_BED_LEVELING)
|
||||||
|
#define MESH_MIN_X 10
|
||||||
|
#define MESH_MAX_X (X_MAX_POS - MESH_MIN_X)
|
||||||
|
#define MESH_MIN_Y 10
|
||||||
|
#define MESH_MAX_Y (Y_MAX_POS - MESH_MIN_Y)
|
||||||
|
#define MESH_NUM_X_POINTS 3 // Don't use more than 7 points per axis, implementation limited
|
||||||
|
#define MESH_NUM_Y_POINTS 3
|
||||||
|
#define MESH_HOME_SEARCH_Z 4 // Z after Home, bed somewhere below but above 0.0
|
||||||
|
#endif // MESH_BED_LEVELING
|
||||||
|
|
||||||
//===========================================================================
|
//===========================================================================
|
||||||
//============================= Bed Auto Leveling ===========================
|
//============================= Bed Auto Leveling ===========================
|
||||||
|
@ -386,12 +399,6 @@ const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of
|
||||||
// Note: this feature occupies 10'206 byte
|
// Note: this feature occupies 10'206 byte
|
||||||
#ifdef AUTO_BED_LEVELING_GRID
|
#ifdef AUTO_BED_LEVELING_GRID
|
||||||
|
|
||||||
// Use one of these defines to specify the origin
|
|
||||||
// for a topographical map to be printed for your bed.
|
|
||||||
enum { OriginBackLeft, OriginFrontLeft, OriginBackRight, OriginFrontRight };
|
|
||||||
#define TOPO_ORIGIN OriginFrontLeft
|
|
||||||
|
|
||||||
// set the rectangle in which to probe
|
|
||||||
#define LEFT_PROBE_BED_POSITION 15
|
#define LEFT_PROBE_BED_POSITION 15
|
||||||
#define RIGHT_PROBE_BED_POSITION 170
|
#define RIGHT_PROBE_BED_POSITION 170
|
||||||
#define BACK_PROBE_BED_POSITION 180
|
#define BACK_PROBE_BED_POSITION 180
|
||||||
|
@ -457,29 +464,6 @@ const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef AUTO_BED_LEVELING_GRID // Check if Probe_Offset * Grid Points is greater than Probing Range
|
|
||||||
#if X_PROBE_OFFSET_FROM_EXTRUDER < 0
|
|
||||||
#if (-(X_PROBE_OFFSET_FROM_EXTRUDER * (AUTO_BED_LEVELING_GRID_POINTS-1)) >= (RIGHT_PROBE_BED_POSITION - LEFT_PROBE_BED_POSITION))
|
|
||||||
#error "The X axis probing range is not enough to fit all the points defined in AUTO_BED_LEVELING_GRID_POINTS"
|
|
||||||
#endif
|
|
||||||
#else
|
|
||||||
#if ((X_PROBE_OFFSET_FROM_EXTRUDER * (AUTO_BED_LEVELING_GRID_POINTS-1)) >= (RIGHT_PROBE_BED_POSITION - LEFT_PROBE_BED_POSITION))
|
|
||||||
#error "The X axis probing range is not enough to fit all the points defined in AUTO_BED_LEVELING_GRID_POINTS"
|
|
||||||
#endif
|
|
||||||
#endif
|
|
||||||
#if Y_PROBE_OFFSET_FROM_EXTRUDER < 0
|
|
||||||
#if (-(Y_PROBE_OFFSET_FROM_EXTRUDER * (AUTO_BED_LEVELING_GRID_POINTS-1)) >= (BACK_PROBE_BED_POSITION - FRONT_PROBE_BED_POSITION))
|
|
||||||
#error "The Y axis probing range is not enough to fit all the points defined in AUTO_BED_LEVELING_GRID_POINTS"
|
|
||||||
#endif
|
|
||||||
#else
|
|
||||||
#if ((Y_PROBE_OFFSET_FROM_EXTRUDER * (AUTO_BED_LEVELING_GRID_POINTS-1)) >= (BACK_PROBE_BED_POSITION - FRONT_PROBE_BED_POSITION))
|
|
||||||
#error "The Y axis probing range is not enough to fit all the points defined in AUTO_BED_LEVELING_GRID_POINTS"
|
|
||||||
#endif
|
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#endif // ENABLE_AUTO_BED_LEVELING
|
#endif // ENABLE_AUTO_BED_LEVELING
|
||||||
|
|
||||||
|
|
||||||
|
@ -615,112 +599,17 @@ const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of
|
||||||
// REMEMBER TO INSTALL LiquidCrystal_I2C.h in your ARDUINO library folder: https://github.com/kiyoshigawa/LiquidCrystal_I2C
|
// REMEMBER TO INSTALL LiquidCrystal_I2C.h in your ARDUINO library folder: https://github.com/kiyoshigawa/LiquidCrystal_I2C
|
||||||
//#define RA_CONTROL_PANEL
|
//#define RA_CONTROL_PANEL
|
||||||
|
|
||||||
//automatic expansion
|
/**
|
||||||
#if defined (MAKRPANEL)
|
* I2C Panels
|
||||||
#define DOGLCD
|
*/
|
||||||
#define SDSUPPORT
|
|
||||||
#define ULTIPANEL
|
|
||||||
#define NEWPANEL
|
|
||||||
#define DEFAULT_LCD_CONTRAST 17
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if defined(miniVIKI) || defined(VIKI2)
|
|
||||||
#define ULTRA_LCD //general LCD support, also 16x2
|
|
||||||
#define DOGLCD // Support for SPI LCD 128x64 (Controller ST7565R graphic Display Family)
|
|
||||||
#define ULTIMAKERCONTROLLER //as available from the Ultimaker online store.
|
|
||||||
|
|
||||||
#ifdef miniVIKI
|
|
||||||
#define DEFAULT_LCD_CONTRAST 95
|
|
||||||
#else
|
|
||||||
#define DEFAULT_LCD_CONTRAST 40
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#define ENCODER_PULSES_PER_STEP 4
|
|
||||||
#define ENCODER_STEPS_PER_MENU_ITEM 1
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if defined (PANEL_ONE)
|
|
||||||
#define SDSUPPORT
|
|
||||||
#define ULTIMAKERCONTROLLER
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if defined (REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER)
|
|
||||||
#define DOGLCD
|
|
||||||
#define U8GLIB_ST7920
|
|
||||||
#define REPRAP_DISCOUNT_SMART_CONTROLLER
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if defined(ULTIMAKERCONTROLLER) || defined(REPRAP_DISCOUNT_SMART_CONTROLLER) || defined(G3D_PANEL)
|
|
||||||
#define ULTIPANEL
|
|
||||||
#define NEWPANEL
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if defined(REPRAPWORLD_KEYPAD)
|
|
||||||
#define NEWPANEL
|
|
||||||
#define ULTIPANEL
|
|
||||||
#endif
|
|
||||||
#if defined(RA_CONTROL_PANEL)
|
|
||||||
#define ULTIPANEL
|
|
||||||
#define NEWPANEL
|
|
||||||
#define LCD_I2C_TYPE_PCA8574
|
|
||||||
#define LCD_I2C_ADDRESS 0x27 // I2C Address of the port expander
|
|
||||||
#endif
|
|
||||||
|
|
||||||
//I2C PANELS
|
|
||||||
|
|
||||||
//#define LCD_I2C_SAINSMART_YWROBOT
|
//#define LCD_I2C_SAINSMART_YWROBOT
|
||||||
#ifdef LCD_I2C_SAINSMART_YWROBOT
|
|
||||||
// This uses the LiquidCrystal_I2C library ( https://bitbucket.org/fmalpartida/new-liquidcrystal/wiki/Home )
|
|
||||||
// Make sure it is placed in the Arduino libraries directory.
|
|
||||||
#define LCD_I2C_TYPE_PCF8575
|
|
||||||
#define LCD_I2C_ADDRESS 0x27 // I2C Address of the port expander
|
|
||||||
#define NEWPANEL
|
|
||||||
#define ULTIPANEL
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// PANELOLU2 LCD with status LEDs, separate encoder and click inputs
|
// PANELOLU2 LCD with status LEDs, separate encoder and click inputs
|
||||||
//#define LCD_I2C_PANELOLU2
|
//#define LCD_I2C_PANELOLU2
|
||||||
#ifdef LCD_I2C_PANELOLU2
|
|
||||||
// This uses the LiquidTWI2 library v1.2.3 or later ( https://github.com/lincomatic/LiquidTWI2 )
|
|
||||||
// Make sure the LiquidTWI2 directory is placed in the Arduino or Sketchbook libraries subdirectory.
|
|
||||||
// (v1.2.3 no longer requires you to define PANELOLU in the LiquidTWI2.h library header file)
|
|
||||||
// Note: The PANELOLU2 encoder click input can either be directly connected to a pin
|
|
||||||
// (if BTN_ENC defined to != -1) or read through I2C (when BTN_ENC == -1).
|
|
||||||
#define LCD_I2C_TYPE_MCP23017
|
|
||||||
#define LCD_I2C_ADDRESS 0x20 // I2C Address of the port expander
|
|
||||||
#define LCD_USE_I2C_BUZZER //comment out to disable buzzer on LCD
|
|
||||||
#define NEWPANEL
|
|
||||||
#define ULTIPANEL
|
|
||||||
|
|
||||||
#ifndef ENCODER_PULSES_PER_STEP
|
|
||||||
#define ENCODER_PULSES_PER_STEP 4
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifndef ENCODER_STEPS_PER_MENU_ITEM
|
|
||||||
#define ENCODER_STEPS_PER_MENU_ITEM 1
|
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
||||||
#ifdef LCD_USE_I2C_BUZZER
|
|
||||||
#define LCD_FEEDBACK_FREQUENCY_HZ 1000
|
|
||||||
#define LCD_FEEDBACK_FREQUENCY_DURATION_MS 100
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// Panucatt VIKI LCD with status LEDs, integrated click & L/R/U/P buttons, separate encoder inputs
|
// Panucatt VIKI LCD with status LEDs, integrated click & L/R/U/P buttons, separate encoder inputs
|
||||||
//#define LCD_I2C_VIKI
|
//#define LCD_I2C_VIKI
|
||||||
#ifdef LCD_I2C_VIKI
|
|
||||||
// This uses the LiquidTWI2 library v1.2.3 or later ( https://github.com/lincomatic/LiquidTWI2 )
|
|
||||||
// Make sure the LiquidTWI2 directory is placed in the Arduino or Sketchbook libraries subdirectory.
|
|
||||||
// Note: The pause/stop/resume LCD button pin should be connected to the Arduino
|
|
||||||
// BTN_ENC pin (or set BTN_ENC to -1 if not used)
|
|
||||||
#define LCD_I2C_TYPE_MCP23017
|
|
||||||
#define LCD_I2C_ADDRESS 0x20 // I2C Address of the port expander
|
|
||||||
#define LCD_USE_I2C_BUZZER //comment out to disable buzzer on LCD (requires LiquidTWI2 v1.2.3 or later)
|
|
||||||
#define NEWPANEL
|
|
||||||
#define ULTIPANEL
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// Shift register panels
|
// Shift register panels
|
||||||
// ---------------------
|
// ---------------------
|
||||||
|
@ -728,42 +617,6 @@ const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of
|
||||||
// https://bitbucket.org/fmalpartida/new-liquidcrystal/wiki/schematics#!shiftregister-connection
|
// https://bitbucket.org/fmalpartida/new-liquidcrystal/wiki/schematics#!shiftregister-connection
|
||||||
|
|
||||||
//#define SAV_3DLCD
|
//#define SAV_3DLCD
|
||||||
#ifdef SAV_3DLCD
|
|
||||||
#define SR_LCD_2W_NL // Non latching 2 wire shiftregister
|
|
||||||
#define NEWPANEL
|
|
||||||
#define ULTIPANEL
|
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
||||||
#ifdef ULTIPANEL
|
|
||||||
#define NEWPANEL //enable this if you have a click-encoder panel
|
|
||||||
#define SDSUPPORT
|
|
||||||
#define ULTRA_LCD
|
|
||||||
#ifdef DOGLCD // Change number of lines to match the DOG graphic display
|
|
||||||
#define LCD_WIDTH 22
|
|
||||||
#define LCD_HEIGHT 5
|
|
||||||
#else
|
|
||||||
#define LCD_WIDTH 20
|
|
||||||
#define LCD_HEIGHT 4
|
|
||||||
#endif
|
|
||||||
#else //no panel but just LCD
|
|
||||||
#ifdef ULTRA_LCD
|
|
||||||
#ifdef DOGLCD // Change number of lines to match the 128x64 graphics display
|
|
||||||
#define LCD_WIDTH 22
|
|
||||||
#define LCD_HEIGHT 5
|
|
||||||
#else
|
|
||||||
#define LCD_WIDTH 16
|
|
||||||
#define LCD_HEIGHT 2
|
|
||||||
#endif
|
|
||||||
#endif
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// default LCD contrast for dogm-like LCD displays
|
|
||||||
#ifdef DOGLCD
|
|
||||||
# ifndef DEFAULT_LCD_CONTRAST
|
|
||||||
# define DEFAULT_LCD_CONTRAST 32
|
|
||||||
# endif
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// Increase the FAN pwm frequency. Removes the PWM noise but increases heating in the FET/Arduino
|
// Increase the FAN pwm frequency. Removes the PWM noise but increases heating in the FET/Arduino
|
||||||
#define FAST_PWM_FAN
|
#define FAST_PWM_FAN
|
||||||
|
@ -848,7 +701,11 @@ const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of
|
||||||
//#define FILAMENT_LCD_DISPLAY
|
//#define FILAMENT_LCD_DISPLAY
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#include "Configuration_adv.h"
|
#include "Configuration_adv.h"
|
||||||
#include "thermistortables.h"
|
#include "thermistortables.h"
|
||||||
|
|
||||||
#endif //__CONFIGURATION_H
|
#endif //CONFIGURATION_H
|
||||||
|
|
|
@ -296,15 +296,6 @@ your extruder heater takes 2 minutes to hit the target on heating.
|
||||||
// #define ENDSTOPPULLUP_ZMIN
|
// #define ENDSTOPPULLUP_ZMIN
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef ENDSTOPPULLUPS
|
|
||||||
#define ENDSTOPPULLUP_XMAX
|
|
||||||
#define ENDSTOPPULLUP_YMAX
|
|
||||||
#define ENDSTOPPULLUP_ZMAX
|
|
||||||
#define ENDSTOPPULLUP_XMIN
|
|
||||||
#define ENDSTOPPULLUP_YMIN
|
|
||||||
#define ENDSTOPPULLUP_ZMIN
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// The pullups are needed if you directly connect a mechanical endswitch between the signal and ground pins.
|
// The pullups are needed if you directly connect a mechanical endswitch between the signal and ground pins.
|
||||||
const bool X_MIN_ENDSTOP_INVERTING = false; // set to true to invert the logic of the endstop.
|
const bool X_MIN_ENDSTOP_INVERTING = false; // set to true to invert the logic of the endstop.
|
||||||
const bool Y_MIN_ENDSTOP_INVERTING = false; // set to true to invert the logic of the endstop.
|
const bool Y_MIN_ENDSTOP_INVERTING = false; // set to true to invert the logic of the endstop.
|
||||||
|
@ -353,10 +344,32 @@ const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of
|
||||||
#define Z_MAX_POS 235
|
#define Z_MAX_POS 235
|
||||||
#define Z_MIN_POS 0
|
#define Z_MIN_POS 0
|
||||||
|
|
||||||
#define X_MAX_LENGTH (X_MAX_POS - X_MIN_POS)
|
//===========================================================================
|
||||||
#define Y_MAX_LENGTH (Y_MAX_POS - Y_MIN_POS)
|
//============================= Filament Runout Sensor ======================
|
||||||
#define Z_MAX_LENGTH (Z_MAX_POS - Z_MIN_POS)
|
//===========================================================================
|
||||||
|
//#define FILAMENT_RUNOUT_SENSOR // Uncomment for defining a filament runout sensor such as a mechanical or opto endstop to check the existence of filament
|
||||||
|
// In RAMPS uses servo pin 2. Can be changed in pins file. For other boards pin definition should be made.
|
||||||
|
// It is assumed that when logic high = filament available
|
||||||
|
// when logic low = filament ran out
|
||||||
|
//const bool FIL_RUNOUT_INVERTING = true; // Should be uncommented and true or false should assigned
|
||||||
|
//#define ENDSTOPPULLUP_FIL_RUNOUT // Uncomment to use internal pullup for filament runout pins if the sensor is defined.
|
||||||
|
|
||||||
|
//===========================================================================
|
||||||
|
//============================ Manual Bed Leveling ==========================
|
||||||
|
//===========================================================================
|
||||||
|
|
||||||
|
// #define MANUAL_BED_LEVELING // Add display menu option for bed leveling
|
||||||
|
// #define MESH_BED_LEVELING // Enable mesh bed leveling
|
||||||
|
|
||||||
|
#if defined(MESH_BED_LEVELING)
|
||||||
|
#define MESH_MIN_X 10
|
||||||
|
#define MESH_MAX_X (X_MAX_POS - MESH_MIN_X)
|
||||||
|
#define MESH_MIN_Y 10
|
||||||
|
#define MESH_MAX_Y (Y_MAX_POS - MESH_MIN_Y)
|
||||||
|
#define MESH_NUM_X_POINTS 3 // Don't use more than 7 points per axis, implementation limited
|
||||||
|
#define MESH_NUM_Y_POINTS 3
|
||||||
|
#define MESH_HOME_SEARCH_Z 4 // Z after Home, bed somewhere below but above 0.0
|
||||||
|
#endif // MESH_BED_LEVELING
|
||||||
|
|
||||||
//===========================================================================
|
//===========================================================================
|
||||||
//============================= Bed Auto Leveling ===========================
|
//============================= Bed Auto Leveling ===========================
|
||||||
|
@ -386,12 +399,6 @@ const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of
|
||||||
// Note: this feature occupies 10'206 byte
|
// Note: this feature occupies 10'206 byte
|
||||||
#ifdef AUTO_BED_LEVELING_GRID
|
#ifdef AUTO_BED_LEVELING_GRID
|
||||||
|
|
||||||
// Use one of these defines to specify the origin
|
|
||||||
// for a topographical map to be printed for your bed.
|
|
||||||
enum { OriginBackLeft, OriginFrontLeft, OriginBackRight, OriginFrontRight };
|
|
||||||
#define TOPO_ORIGIN OriginFrontLeft
|
|
||||||
|
|
||||||
// set the rectangle in which to probe
|
|
||||||
#define LEFT_PROBE_BED_POSITION 15
|
#define LEFT_PROBE_BED_POSITION 15
|
||||||
#define RIGHT_PROBE_BED_POSITION 170
|
#define RIGHT_PROBE_BED_POSITION 170
|
||||||
#define BACK_PROBE_BED_POSITION 180
|
#define BACK_PROBE_BED_POSITION 180
|
||||||
|
@ -457,29 +464,6 @@ const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef AUTO_BED_LEVELING_GRID // Check if Probe_Offset * Grid Points is greater than Probing Range
|
|
||||||
#if X_PROBE_OFFSET_FROM_EXTRUDER < 0
|
|
||||||
#if (-(X_PROBE_OFFSET_FROM_EXTRUDER * (AUTO_BED_LEVELING_GRID_POINTS-1)) >= (RIGHT_PROBE_BED_POSITION - LEFT_PROBE_BED_POSITION))
|
|
||||||
#error "The X axis probing range is not enough to fit all the points defined in AUTO_BED_LEVELING_GRID_POINTS"
|
|
||||||
#endif
|
|
||||||
#else
|
|
||||||
#if ((X_PROBE_OFFSET_FROM_EXTRUDER * (AUTO_BED_LEVELING_GRID_POINTS-1)) >= (RIGHT_PROBE_BED_POSITION - LEFT_PROBE_BED_POSITION))
|
|
||||||
#error "The X axis probing range is not enough to fit all the points defined in AUTO_BED_LEVELING_GRID_POINTS"
|
|
||||||
#endif
|
|
||||||
#endif
|
|
||||||
#if Y_PROBE_OFFSET_FROM_EXTRUDER < 0
|
|
||||||
#if (-(Y_PROBE_OFFSET_FROM_EXTRUDER * (AUTO_BED_LEVELING_GRID_POINTS-1)) >= (BACK_PROBE_BED_POSITION - FRONT_PROBE_BED_POSITION))
|
|
||||||
#error "The Y axis probing range is not enough to fit all the points defined in AUTO_BED_LEVELING_GRID_POINTS"
|
|
||||||
#endif
|
|
||||||
#else
|
|
||||||
#if ((Y_PROBE_OFFSET_FROM_EXTRUDER * (AUTO_BED_LEVELING_GRID_POINTS-1)) >= (BACK_PROBE_BED_POSITION - FRONT_PROBE_BED_POSITION))
|
|
||||||
#error "The Y axis probing range is not enough to fit all the points defined in AUTO_BED_LEVELING_GRID_POINTS"
|
|
||||||
#endif
|
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#endif // ENABLE_AUTO_BED_LEVELING
|
#endif // ENABLE_AUTO_BED_LEVELING
|
||||||
|
|
||||||
|
|
||||||
|
@ -615,112 +599,17 @@ const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of
|
||||||
// REMEMBER TO INSTALL LiquidCrystal_I2C.h in your ARDUINO library folder: https://github.com/kiyoshigawa/LiquidCrystal_I2C
|
// REMEMBER TO INSTALL LiquidCrystal_I2C.h in your ARDUINO library folder: https://github.com/kiyoshigawa/LiquidCrystal_I2C
|
||||||
//#define RA_CONTROL_PANEL
|
//#define RA_CONTROL_PANEL
|
||||||
|
|
||||||
//automatic expansion
|
/**
|
||||||
#if defined (MAKRPANEL)
|
* I2C Panels
|
||||||
#define DOGLCD
|
*/
|
||||||
#define SDSUPPORT
|
|
||||||
#define ULTIPANEL
|
|
||||||
#define NEWPANEL
|
|
||||||
#define DEFAULT_LCD_CONTRAST 17
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if defined(miniVIKI) || defined(VIKI2)
|
|
||||||
#define ULTRA_LCD //general LCD support, also 16x2
|
|
||||||
#define DOGLCD // Support for SPI LCD 128x64 (Controller ST7565R graphic Display Family)
|
|
||||||
#define ULTIMAKERCONTROLLER //as available from the Ultimaker online store.
|
|
||||||
|
|
||||||
#ifdef miniVIKI
|
|
||||||
#define DEFAULT_LCD_CONTRAST 95
|
|
||||||
#else
|
|
||||||
#define DEFAULT_LCD_CONTRAST 40
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#define ENCODER_PULSES_PER_STEP 4
|
|
||||||
#define ENCODER_STEPS_PER_MENU_ITEM 1
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if defined (PANEL_ONE)
|
|
||||||
#define SDSUPPORT
|
|
||||||
#define ULTIMAKERCONTROLLER
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if defined (REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER)
|
|
||||||
#define DOGLCD
|
|
||||||
#define U8GLIB_ST7920
|
|
||||||
#define REPRAP_DISCOUNT_SMART_CONTROLLER
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if defined(ULTIMAKERCONTROLLER) || defined(REPRAP_DISCOUNT_SMART_CONTROLLER) || defined(G3D_PANEL)
|
|
||||||
#define ULTIPANEL
|
|
||||||
#define NEWPANEL
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if defined(REPRAPWORLD_KEYPAD)
|
|
||||||
#define NEWPANEL
|
|
||||||
#define ULTIPANEL
|
|
||||||
#endif
|
|
||||||
#if defined(RA_CONTROL_PANEL)
|
|
||||||
#define ULTIPANEL
|
|
||||||
#define NEWPANEL
|
|
||||||
#define LCD_I2C_TYPE_PCA8574
|
|
||||||
#define LCD_I2C_ADDRESS 0x27 // I2C Address of the port expander
|
|
||||||
#endif
|
|
||||||
|
|
||||||
//I2C PANELS
|
|
||||||
|
|
||||||
//#define LCD_I2C_SAINSMART_YWROBOT
|
//#define LCD_I2C_SAINSMART_YWROBOT
|
||||||
#ifdef LCD_I2C_SAINSMART_YWROBOT
|
|
||||||
// This uses the LiquidCrystal_I2C library ( https://bitbucket.org/fmalpartida/new-liquidcrystal/wiki/Home )
|
|
||||||
// Make sure it is placed in the Arduino libraries directory.
|
|
||||||
#define LCD_I2C_TYPE_PCF8575
|
|
||||||
#define LCD_I2C_ADDRESS 0x27 // I2C Address of the port expander
|
|
||||||
#define NEWPANEL
|
|
||||||
#define ULTIPANEL
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// PANELOLU2 LCD with status LEDs, separate encoder and click inputs
|
// PANELOLU2 LCD with status LEDs, separate encoder and click inputs
|
||||||
//#define LCD_I2C_PANELOLU2
|
//#define LCD_I2C_PANELOLU2
|
||||||
#ifdef LCD_I2C_PANELOLU2
|
|
||||||
// This uses the LiquidTWI2 library v1.2.3 or later ( https://github.com/lincomatic/LiquidTWI2 )
|
|
||||||
// Make sure the LiquidTWI2 directory is placed in the Arduino or Sketchbook libraries subdirectory.
|
|
||||||
// (v1.2.3 no longer requires you to define PANELOLU in the LiquidTWI2.h library header file)
|
|
||||||
// Note: The PANELOLU2 encoder click input can either be directly connected to a pin
|
|
||||||
// (if BTN_ENC defined to != -1) or read through I2C (when BTN_ENC == -1).
|
|
||||||
#define LCD_I2C_TYPE_MCP23017
|
|
||||||
#define LCD_I2C_ADDRESS 0x20 // I2C Address of the port expander
|
|
||||||
#define LCD_USE_I2C_BUZZER //comment out to disable buzzer on LCD
|
|
||||||
#define NEWPANEL
|
|
||||||
#define ULTIPANEL
|
|
||||||
|
|
||||||
#ifndef ENCODER_PULSES_PER_STEP
|
|
||||||
#define ENCODER_PULSES_PER_STEP 4
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifndef ENCODER_STEPS_PER_MENU_ITEM
|
|
||||||
#define ENCODER_STEPS_PER_MENU_ITEM 1
|
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
||||||
#ifdef LCD_USE_I2C_BUZZER
|
|
||||||
#define LCD_FEEDBACK_FREQUENCY_HZ 1000
|
|
||||||
#define LCD_FEEDBACK_FREQUENCY_DURATION_MS 100
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// Panucatt VIKI LCD with status LEDs, integrated click & L/R/U/P buttons, separate encoder inputs
|
// Panucatt VIKI LCD with status LEDs, integrated click & L/R/U/P buttons, separate encoder inputs
|
||||||
//#define LCD_I2C_VIKI
|
//#define LCD_I2C_VIKI
|
||||||
#ifdef LCD_I2C_VIKI
|
|
||||||
// This uses the LiquidTWI2 library v1.2.3 or later ( https://github.com/lincomatic/LiquidTWI2 )
|
|
||||||
// Make sure the LiquidTWI2 directory is placed in the Arduino or Sketchbook libraries subdirectory.
|
|
||||||
// Note: The pause/stop/resume LCD button pin should be connected to the Arduino
|
|
||||||
// BTN_ENC pin (or set BTN_ENC to -1 if not used)
|
|
||||||
#define LCD_I2C_TYPE_MCP23017
|
|
||||||
#define LCD_I2C_ADDRESS 0x20 // I2C Address of the port expander
|
|
||||||
#define LCD_USE_I2C_BUZZER //comment out to disable buzzer on LCD (requires LiquidTWI2 v1.2.3 or later)
|
|
||||||
#define NEWPANEL
|
|
||||||
#define ULTIPANEL
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// Shift register panels
|
// Shift register panels
|
||||||
// ---------------------
|
// ---------------------
|
||||||
|
@ -728,43 +617,8 @@ const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of
|
||||||
// https://bitbucket.org/fmalpartida/new-liquidcrystal/wiki/schematics#!shiftregister-connection
|
// https://bitbucket.org/fmalpartida/new-liquidcrystal/wiki/schematics#!shiftregister-connection
|
||||||
|
|
||||||
//#define SAV_3DLCD
|
//#define SAV_3DLCD
|
||||||
#ifdef SAV_3DLCD
|
|
||||||
#define SR_LCD_2W_NL // Non latching 2 wire shiftregister
|
|
||||||
#define NEWPANEL
|
|
||||||
#define ULTIPANEL
|
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
||||||
#ifdef ULTIPANEL
|
|
||||||
#define NEWPANEL //enable this if you have a click-encoder panel
|
|
||||||
#define SDSUPPORT
|
|
||||||
#define ULTRA_LCD
|
|
||||||
#ifdef DOGLCD // Change number of lines to match the DOG graphic display
|
|
||||||
#define LCD_WIDTH 22
|
|
||||||
#define LCD_HEIGHT 5
|
|
||||||
#else
|
|
||||||
#define LCD_WIDTH 20
|
|
||||||
#define LCD_HEIGHT 4
|
|
||||||
#endif
|
|
||||||
#else //no panel but just LCD
|
|
||||||
#ifdef ULTRA_LCD
|
|
||||||
#ifdef DOGLCD // Change number of lines to match the 128x64 graphics display
|
|
||||||
#define LCD_WIDTH 22
|
|
||||||
#define LCD_HEIGHT 5
|
|
||||||
#else
|
|
||||||
#define LCD_WIDTH 16
|
|
||||||
#define LCD_HEIGHT 2
|
|
||||||
#endif
|
|
||||||
#endif
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// default LCD contrast for dogm-like LCD displays
|
|
||||||
#ifdef DOGLCD
|
|
||||||
# ifndef DEFAULT_LCD_CONTRAST
|
|
||||||
# define DEFAULT_LCD_CONTRAST 32
|
|
||||||
# endif
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// Increase the FAN pwm frequency. Removes the PWM noise but increases heating in the FET/Arduino
|
// Increase the FAN pwm frequency. Removes the PWM noise but increases heating in the FET/Arduino
|
||||||
#define FAST_PWM_FAN
|
#define FAST_PWM_FAN
|
||||||
|
|
||||||
|
@ -848,7 +702,11 @@ const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of
|
||||||
//#define FILAMENT_LCD_DISPLAY
|
//#define FILAMENT_LCD_DISPLAY
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#include "Configuration_adv.h"
|
#include "Configuration_adv.h"
|
||||||
#include "thermistortables.h"
|
#include "thermistortables.h"
|
||||||
|
|
||||||
#endif //__CONFIGURATION_H
|
#endif //CONFIGURATION_H
|
||||||
|
|
|
@ -1,6 +1,8 @@
|
||||||
#ifndef CONFIGURATION_ADV_H
|
#ifndef CONFIGURATION_ADV_H
|
||||||
#define CONFIGURATION_ADV_H
|
#define CONFIGURATION_ADV_H
|
||||||
|
|
||||||
|
#include "Conditionals.h"
|
||||||
|
|
||||||
//===========================================================================
|
//===========================================================================
|
||||||
//=============================Thermal Settings ============================
|
//=============================Thermal Settings ============================
|
||||||
//===========================================================================
|
//===========================================================================
|
||||||
|
@ -89,54 +91,6 @@
|
||||||
|
|
||||||
#define ENDSTOPS_ONLY_FOR_HOMING // If defined the endstops will only be used for homing
|
#define ENDSTOPS_ONLY_FOR_HOMING // If defined the endstops will only be used for homing
|
||||||
|
|
||||||
|
|
||||||
//// AUTOSET LOCATIONS OF LIMIT SWITCHES
|
|
||||||
//// Added by ZetaPhoenix 09-15-2012
|
|
||||||
#ifdef MANUAL_HOME_POSITIONS // Use manual limit switch locations
|
|
||||||
#define X_HOME_POS MANUAL_X_HOME_POS
|
|
||||||
#define Y_HOME_POS MANUAL_Y_HOME_POS
|
|
||||||
#define Z_HOME_POS MANUAL_Z_HOME_POS
|
|
||||||
#else //Set min/max homing switch positions based upon homing direction and min/max travel limits
|
|
||||||
//X axis
|
|
||||||
#if X_HOME_DIR == -1
|
|
||||||
#ifdef BED_CENTER_AT_0_0
|
|
||||||
#define X_HOME_POS X_MAX_LENGTH * -0.5
|
|
||||||
#else
|
|
||||||
#define X_HOME_POS X_MIN_POS
|
|
||||||
#endif //BED_CENTER_AT_0_0
|
|
||||||
#else
|
|
||||||
#ifdef BED_CENTER_AT_0_0
|
|
||||||
#define X_HOME_POS X_MAX_LENGTH * 0.5
|
|
||||||
#else
|
|
||||||
#define X_HOME_POS X_MAX_POS
|
|
||||||
#endif //BED_CENTER_AT_0_0
|
|
||||||
#endif //X_HOME_DIR == -1
|
|
||||||
|
|
||||||
//Y axis
|
|
||||||
#if Y_HOME_DIR == -1
|
|
||||||
#ifdef BED_CENTER_AT_0_0
|
|
||||||
#define Y_HOME_POS Y_MAX_LENGTH * -0.5
|
|
||||||
#else
|
|
||||||
#define Y_HOME_POS Y_MIN_POS
|
|
||||||
#endif //BED_CENTER_AT_0_0
|
|
||||||
#else
|
|
||||||
#ifdef BED_CENTER_AT_0_0
|
|
||||||
#define Y_HOME_POS Y_MAX_LENGTH * 0.5
|
|
||||||
#else
|
|
||||||
#define Y_HOME_POS Y_MAX_POS
|
|
||||||
#endif //BED_CENTER_AT_0_0
|
|
||||||
#endif //Y_HOME_DIR == -1
|
|
||||||
|
|
||||||
// Z axis
|
|
||||||
#if Z_HOME_DIR == -1 //BED_CENTER_AT_0_0 not used
|
|
||||||
#define Z_HOME_POS Z_MIN_POS
|
|
||||||
#else
|
|
||||||
#define Z_HOME_POS Z_MAX_POS
|
|
||||||
#endif //Z_HOME_DIR == -1
|
|
||||||
#endif //End auto min/max positions
|
|
||||||
//END AUTOSET LOCATIONS OF LIMIT SWITCHES -ZP
|
|
||||||
|
|
||||||
|
|
||||||
//#define Z_LATE_ENABLE // Enable Z the last moment. Needed if your Z driver overheats.
|
//#define Z_LATE_ENABLE // Enable Z the last moment. Needed if your Z driver overheats.
|
||||||
|
|
||||||
// A single Z stepper driver is usually used to drive 2 stepper motors.
|
// A single Z stepper driver is usually used to drive 2 stepper motors.
|
||||||
|
@ -146,26 +100,12 @@
|
||||||
// On a RAMPS (or other 5 driver) motherboard, using this feature will limit you to using 1 extruder.
|
// On a RAMPS (or other 5 driver) motherboard, using this feature will limit you to using 1 extruder.
|
||||||
//#define Z_DUAL_STEPPER_DRIVERS
|
//#define Z_DUAL_STEPPER_DRIVERS
|
||||||
|
|
||||||
#ifdef Z_DUAL_STEPPER_DRIVERS
|
|
||||||
#undef EXTRUDERS
|
|
||||||
#define EXTRUDERS 1
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// Same again but for Y Axis.
|
// Same again but for Y Axis.
|
||||||
//#define Y_DUAL_STEPPER_DRIVERS
|
//#define Y_DUAL_STEPPER_DRIVERS
|
||||||
|
|
||||||
// Define if the two Y drives need to rotate in opposite directions
|
// Define if the two Y drives need to rotate in opposite directions
|
||||||
#define INVERT_Y2_VS_Y_DIR true
|
#define INVERT_Y2_VS_Y_DIR true
|
||||||
|
|
||||||
#ifdef Y_DUAL_STEPPER_DRIVERS
|
|
||||||
#undef EXTRUDERS
|
|
||||||
#define EXTRUDERS 1
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if defined (Z_DUAL_STEPPER_DRIVERS) && defined (Y_DUAL_STEPPER_DRIVERS)
|
|
||||||
#error "You cannot have dual drivers for both Y and Z"
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// Enable this for dual x-carriage printers.
|
// Enable this for dual x-carriage printers.
|
||||||
// A dual x-carriage design has the advantage that the inactive extruder can be parked which
|
// A dual x-carriage design has the advantage that the inactive extruder can be parked which
|
||||||
// prevents hot-end ooze contaminating the print. It also reduces the weight of each x-carriage
|
// prevents hot-end ooze contaminating the print. It also reduces the weight of each x-carriage
|
||||||
|
@ -218,31 +158,22 @@
|
||||||
//#define QUICK_HOME //if this is defined, if both x and y are to be homed, a diagonal move will be performed initially.
|
//#define QUICK_HOME //if this is defined, if both x and y are to be homed, a diagonal move will be performed initially.
|
||||||
|
|
||||||
#define AXIS_RELATIVE_MODES {false, false, false, false}
|
#define AXIS_RELATIVE_MODES {false, false, false, false}
|
||||||
#ifdef CONFIG_STEPPERS_TOSHIBA
|
|
||||||
#define MAX_STEP_FREQUENCY 10000 // Max step frequency for Toshiba Stepper Controllers
|
|
||||||
#else
|
|
||||||
#define MAX_STEP_FREQUENCY 40000 // Max step frequency for Ultimaker (5000 pps / half step)
|
|
||||||
#endif
|
|
||||||
//By default pololu step drivers require an active high signal. However, some high power drivers require an active low signal as step.
|
//By default pololu step drivers require an active high signal. However, some high power drivers require an active low signal as step.
|
||||||
#define INVERT_X_STEP_PIN false
|
#define INVERT_X_STEP_PIN false
|
||||||
#define INVERT_Y_STEP_PIN false
|
#define INVERT_Y_STEP_PIN false
|
||||||
#define INVERT_Z_STEP_PIN false
|
#define INVERT_Z_STEP_PIN false
|
||||||
#define INVERT_E_STEP_PIN false
|
#define INVERT_E_STEP_PIN false
|
||||||
|
|
||||||
//default stepper release if idle. Set to 0 to deactivate.
|
// Default stepper release if idle. Set to 0 to deactivate.
|
||||||
#define DEFAULT_STEPPER_DEACTIVE_TIME 60
|
#define DEFAULT_STEPPER_DEACTIVE_TIME 60
|
||||||
|
|
||||||
#define DEFAULT_MINIMUMFEEDRATE 0.0 // minimum feedrate
|
#define DEFAULT_MINIMUMFEEDRATE 0.0 // minimum feedrate
|
||||||
#define DEFAULT_MINTRAVELFEEDRATE 0.0
|
#define DEFAULT_MINTRAVELFEEDRATE 0.0
|
||||||
|
|
||||||
// Feedrates for manual moves along X, Y, Z, E from panel
|
|
||||||
#ifdef ULTIPANEL
|
#ifdef ULTIPANEL
|
||||||
#define MANUAL_FEEDRATE {50*60, 50*60, 4*60, 60} // set the speeds for manual moves (mm/min)
|
#define MANUAL_FEEDRATE {50*60, 50*60, 4*60, 60} // Feedrates for manual moves along X, Y, Z, E from panel
|
||||||
#endif
|
#define ULTIPANEL_FEEDMULTIPLY // Comment to disable setting feedrate multiplier via encoder
|
||||||
|
|
||||||
//Comment to disable setting feedrate multiplier via encoder
|
|
||||||
#ifdef ULTIPANEL
|
|
||||||
#define ULTIPANEL_FEEDMULTIPLY
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// minimum time in microseconds that a movement needs to take if the buffer is emptied.
|
// minimum time in microseconds that a movement needs to take if the buffer is emptied.
|
||||||
|
@ -261,13 +192,6 @@
|
||||||
// if unwanted behavior is observed on a user's machine when running at very slow speeds.
|
// if unwanted behavior is observed on a user's machine when running at very slow speeds.
|
||||||
#define MINIMUM_PLANNER_SPEED 0.05// (mm/sec)
|
#define MINIMUM_PLANNER_SPEED 0.05// (mm/sec)
|
||||||
|
|
||||||
// MS1 MS2 Stepper Driver Microstepping mode table
|
|
||||||
#define MICROSTEP1 LOW,LOW
|
|
||||||
#define MICROSTEP2 HIGH,LOW
|
|
||||||
#define MICROSTEP4 LOW,HIGH
|
|
||||||
#define MICROSTEP8 HIGH,HIGH
|
|
||||||
#define MICROSTEP16 HIGH,HIGH
|
|
||||||
|
|
||||||
// Microstep setting (Only functional when stepper driver microstep pins are connected to MCU.
|
// Microstep setting (Only functional when stepper driver microstep pins are connected to MCU.
|
||||||
#define MICROSTEP_MODES {16,16,16,16,16} // [1,2,4,8,16]
|
#define MICROSTEP_MODES {16,16,16,16,16} // [1,2,4,8,16]
|
||||||
|
|
||||||
|
@ -313,12 +237,6 @@
|
||||||
#define PROGRESS_MSG_EXPIRE 0
|
#define PROGRESS_MSG_EXPIRE 0
|
||||||
// Enable this to show messages for MSG_TIME then hide them
|
// Enable this to show messages for MSG_TIME then hide them
|
||||||
//#define PROGRESS_MSG_ONCE
|
//#define PROGRESS_MSG_ONCE
|
||||||
#ifdef DOGLCD
|
|
||||||
#warning LCD_PROGRESS_BAR does not apply to graphical displays at this time.
|
|
||||||
#endif
|
|
||||||
#ifdef FILAMENT_LCD_DISPLAY
|
|
||||||
#error LCD_PROGRESS_BAR and FILAMENT_LCD_DISPLAY are not fully compatible. Comment out this line to use both.
|
|
||||||
#endif
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// The hardware watchdog should reset the microcontroller disabling all outputs, in case the firmware gets stuck and doesn't do temperature regulation.
|
// The hardware watchdog should reset the microcontroller disabling all outputs, in case the firmware gets stuck and doesn't do temperature regulation.
|
||||||
|
@ -342,16 +260,6 @@
|
||||||
#define BABYSTEP_XY //not only z, but also XY in the menu. more clutter, more functions
|
#define BABYSTEP_XY //not only z, but also XY in the menu. more clutter, more functions
|
||||||
#define BABYSTEP_INVERT_Z false //true for inverse movements in Z
|
#define BABYSTEP_INVERT_Z false //true for inverse movements in Z
|
||||||
#define BABYSTEP_Z_MULTIPLICATOR 2 //faster z movements
|
#define BABYSTEP_Z_MULTIPLICATOR 2 //faster z movements
|
||||||
|
|
||||||
#ifdef COREXY
|
|
||||||
#error BABYSTEPPING not implemented for COREXY yet.
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef DELTA
|
|
||||||
#ifdef BABYSTEP_XY
|
|
||||||
#error BABYSTEPPING only implemented for Z axis on deltabots.
|
|
||||||
#endif
|
|
||||||
#endif
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// extruder advance constant (s2/mm3)
|
// extruder advance constant (s2/mm3)
|
||||||
|
@ -365,12 +273,8 @@
|
||||||
|
|
||||||
#ifdef ADVANCE
|
#ifdef ADVANCE
|
||||||
#define EXTRUDER_ADVANCE_K .0
|
#define EXTRUDER_ADVANCE_K .0
|
||||||
|
|
||||||
#define D_FILAMENT 2.85
|
#define D_FILAMENT 2.85
|
||||||
#define STEPS_MM_E 836
|
#define STEPS_MM_E 836
|
||||||
#define EXTRUSION_AREA (0.25 * D_FILAMENT * D_FILAMENT * 3.14159)
|
|
||||||
#define STEPS_PER_CUBIC_MM_E (axis_steps_per_unit[E_AXIS]/ EXTRUSION_AREA)
|
|
||||||
|
|
||||||
#endif // ADVANCE
|
#endif // ADVANCE
|
||||||
|
|
||||||
// Arc interpretation settings:
|
// Arc interpretation settings:
|
||||||
|
@ -444,9 +348,9 @@ const unsigned int dropsegments=5; //everything with less than this number of st
|
||||||
#define RETRACT_RECOVER_FEEDRATE 8 //default feedrate for recovering from retraction (mm/s)
|
#define RETRACT_RECOVER_FEEDRATE 8 //default feedrate for recovering from retraction (mm/s)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
//adds support for experimental filament exchange support M600; requires display
|
// Add support for experimental filament exchange support M600; requires display
|
||||||
#ifdef ULTIPANEL
|
#ifdef ULTIPANEL
|
||||||
#define FILAMENTCHANGEENABLE
|
//#define FILAMENTCHANGEENABLE
|
||||||
#ifdef FILAMENTCHANGEENABLE
|
#ifdef FILAMENTCHANGEENABLE
|
||||||
#define FILAMENTCHANGE_XPOS 3
|
#define FILAMENTCHANGE_XPOS 3
|
||||||
#define FILAMENTCHANGE_YPOS 3
|
#define FILAMENTCHANGE_YPOS 3
|
||||||
|
@ -456,86 +360,7 @@ const unsigned int dropsegments=5; //everything with less than this number of st
|
||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef FILAMENTCHANGEENABLE
|
#include "Conditionals.h"
|
||||||
#ifdef EXTRUDER_RUNOUT_PREVENT
|
#include "SanityCheck.h"
|
||||||
#error EXTRUDER_RUNOUT_PREVENT currently incompatible with FILAMENTCHANGE
|
|
||||||
#endif
|
|
||||||
#endif
|
|
||||||
|
|
||||||
//===========================================================================
|
#endif //CONFIGURATION_ADV_H
|
||||||
//============================= Define Defines ============================
|
|
||||||
//===========================================================================
|
|
||||||
|
|
||||||
#if defined (ENABLE_AUTO_BED_LEVELING) && defined (DELTA)
|
|
||||||
#error "Bed Auto Leveling is still not compatible with Delta Kinematics."
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if EXTRUDERS > 1 && defined TEMP_SENSOR_1_AS_REDUNDANT
|
|
||||||
#error "You cannot use TEMP_SENSOR_1_AS_REDUNDANT if EXTRUDERS > 1"
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if EXTRUDERS > 1 && defined HEATERS_PARALLEL
|
|
||||||
#error "You cannot use HEATERS_PARALLEL if EXTRUDERS > 1"
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if TEMP_SENSOR_0 > 0
|
|
||||||
#define THERMISTORHEATER_0 TEMP_SENSOR_0
|
|
||||||
#define HEATER_0_USES_THERMISTOR
|
|
||||||
#endif
|
|
||||||
#if TEMP_SENSOR_1 > 0
|
|
||||||
#define THERMISTORHEATER_1 TEMP_SENSOR_1
|
|
||||||
#define HEATER_1_USES_THERMISTOR
|
|
||||||
#endif
|
|
||||||
#if TEMP_SENSOR_2 > 0
|
|
||||||
#define THERMISTORHEATER_2 TEMP_SENSOR_2
|
|
||||||
#define HEATER_2_USES_THERMISTOR
|
|
||||||
#endif
|
|
||||||
#if TEMP_SENSOR_3 > 0
|
|
||||||
#define THERMISTORHEATER_3 TEMP_SENSOR_3
|
|
||||||
#define HEATER_3_USES_THERMISTOR
|
|
||||||
#endif
|
|
||||||
#if TEMP_SENSOR_BED > 0
|
|
||||||
#define THERMISTORBED TEMP_SENSOR_BED
|
|
||||||
#define BED_USES_THERMISTOR
|
|
||||||
#endif
|
|
||||||
#if TEMP_SENSOR_0 == -1
|
|
||||||
#define HEATER_0_USES_AD595
|
|
||||||
#endif
|
|
||||||
#if TEMP_SENSOR_1 == -1
|
|
||||||
#define HEATER_1_USES_AD595
|
|
||||||
#endif
|
|
||||||
#if TEMP_SENSOR_2 == -1
|
|
||||||
#define HEATER_2_USES_AD595
|
|
||||||
#endif
|
|
||||||
#if TEMP_SENSOR_3 == -1
|
|
||||||
#define HEATER_3_USES_AD595
|
|
||||||
#endif
|
|
||||||
#if TEMP_SENSOR_BED == -1
|
|
||||||
#define BED_USES_AD595
|
|
||||||
#endif
|
|
||||||
#if TEMP_SENSOR_0 == -2
|
|
||||||
#define HEATER_0_USES_MAX6675
|
|
||||||
#endif
|
|
||||||
#if TEMP_SENSOR_0 == 0
|
|
||||||
#undef HEATER_0_MINTEMP
|
|
||||||
#undef HEATER_0_MAXTEMP
|
|
||||||
#endif
|
|
||||||
#if TEMP_SENSOR_1 == 0
|
|
||||||
#undef HEATER_1_MINTEMP
|
|
||||||
#undef HEATER_1_MAXTEMP
|
|
||||||
#endif
|
|
||||||
#if TEMP_SENSOR_2 == 0
|
|
||||||
#undef HEATER_2_MINTEMP
|
|
||||||
#undef HEATER_2_MAXTEMP
|
|
||||||
#endif
|
|
||||||
#if TEMP_SENSOR_3 == 0
|
|
||||||
#undef HEATER_3_MINTEMP
|
|
||||||
#undef HEATER_3_MAXTEMP
|
|
||||||
#endif
|
|
||||||
#if TEMP_SENSOR_BED == 0
|
|
||||||
#undef BED_MINTEMP
|
|
||||||
#undef BED_MAXTEMP
|
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
||||||
#endif //__CONFIGURATION_ADV_H
|
|
||||||
|
|
|
@ -322,15 +322,6 @@ your extruder heater takes 2 minutes to hit the target on heating.
|
||||||
// #define ENDSTOPPULLUP_ZMIN
|
// #define ENDSTOPPULLUP_ZMIN
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef ENDSTOPPULLUPS
|
|
||||||
#define ENDSTOPPULLUP_XMAX
|
|
||||||
#define ENDSTOPPULLUP_YMAX
|
|
||||||
#define ENDSTOPPULLUP_ZMAX
|
|
||||||
#define ENDSTOPPULLUP_XMIN
|
|
||||||
#define ENDSTOPPULLUP_YMIN
|
|
||||||
#define ENDSTOPPULLUP_ZMIN
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// The pullups are needed if you directly connect a mechanical endswitch between the signal and ground pins.
|
// The pullups are needed if you directly connect a mechanical endswitch between the signal and ground pins.
|
||||||
const bool X_MIN_ENDSTOP_INVERTING = true; // set to true to invert the logic of the endstop.
|
const bool X_MIN_ENDSTOP_INVERTING = true; // set to true to invert the logic of the endstop.
|
||||||
const bool Y_MIN_ENDSTOP_INVERTING = true; // set to true to invert the logic of the endstop.
|
const bool Y_MIN_ENDSTOP_INVERTING = true; // set to true to invert the logic of the endstop.
|
||||||
|
@ -379,10 +370,32 @@ const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of
|
||||||
#define Z_MAX_POS 180
|
#define Z_MAX_POS 180
|
||||||
#define Z_MIN_POS 0
|
#define Z_MIN_POS 0
|
||||||
|
|
||||||
#define X_MAX_LENGTH (X_MAX_POS - X_MIN_POS)
|
//===========================================================================
|
||||||
#define Y_MAX_LENGTH (Y_MAX_POS - Y_MIN_POS)
|
//============================= Filament Runout Sensor ======================
|
||||||
#define Z_MAX_LENGTH (Z_MAX_POS - Z_MIN_POS)
|
//===========================================================================
|
||||||
|
//#define FILAMENT_RUNOUT_SENSOR // Uncomment for defining a filament runout sensor such as a mechanical or opto endstop to check the existence of filament
|
||||||
|
// In RAMPS uses servo pin 2. Can be changed in pins file. For other boards pin definition should be made.
|
||||||
|
// It is assumed that when logic high = filament available
|
||||||
|
// when logic low = filament ran out
|
||||||
|
//const bool FIL_RUNOUT_INVERTING = true; // Should be uncommented and true or false should assigned
|
||||||
|
//#define ENDSTOPPULLUP_FIL_RUNOUT // Uncomment to use internal pullup for filament runout pins if the sensor is defined.
|
||||||
|
|
||||||
|
//===========================================================================
|
||||||
|
//============================ Manual Bed Leveling ==========================
|
||||||
|
//===========================================================================
|
||||||
|
|
||||||
|
// #define MANUAL_BED_LEVELING // Add display menu option for bed leveling
|
||||||
|
// #define MESH_BED_LEVELING // Enable mesh bed leveling
|
||||||
|
|
||||||
|
#if defined(MESH_BED_LEVELING)
|
||||||
|
#define MESH_MIN_X 10
|
||||||
|
#define MESH_MAX_X (X_MAX_POS - MESH_MIN_X)
|
||||||
|
#define MESH_MIN_Y 10
|
||||||
|
#define MESH_MAX_Y (Y_MAX_POS - MESH_MIN_Y)
|
||||||
|
#define MESH_NUM_X_POINTS 3 // Don't use more than 7 points per axis, implementation limited
|
||||||
|
#define MESH_NUM_Y_POINTS 3
|
||||||
|
#define MESH_HOME_SEARCH_Z 4 // Z after Home, bed somewhere below but above 0.0
|
||||||
|
#endif // MESH_BED_LEVELING
|
||||||
|
|
||||||
//===========================================================================
|
//===========================================================================
|
||||||
//============================= Bed Auto Leveling ===========================
|
//============================= Bed Auto Leveling ===========================
|
||||||
|
@ -410,12 +423,6 @@ const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of
|
||||||
|
|
||||||
#ifdef AUTO_BED_LEVELING_GRID
|
#ifdef AUTO_BED_LEVELING_GRID
|
||||||
|
|
||||||
// Use one of these defines to specify the origin
|
|
||||||
// for a topographical map to be printed for your bed.
|
|
||||||
enum { OriginBackLeft, OriginFrontLeft, OriginBackRight, OriginFrontRight };
|
|
||||||
#define TOPO_ORIGIN OriginFrontLeft
|
|
||||||
|
|
||||||
// The edges of the rectangle in which to probe
|
|
||||||
#define LEFT_PROBE_BED_POSITION 15
|
#define LEFT_PROBE_BED_POSITION 15
|
||||||
#define RIGHT_PROBE_BED_POSITION 170
|
#define RIGHT_PROBE_BED_POSITION 170
|
||||||
#define FRONT_PROBE_BED_POSITION 20
|
#define FRONT_PROBE_BED_POSITION 20
|
||||||
|
@ -620,112 +627,17 @@ const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of
|
||||||
// REMEMBER TO INSTALL LiquidCrystal_I2C.h in your ARDUINO library folder: https://github.com/kiyoshigawa/LiquidCrystal_I2C
|
// REMEMBER TO INSTALL LiquidCrystal_I2C.h in your ARDUINO library folder: https://github.com/kiyoshigawa/LiquidCrystal_I2C
|
||||||
//#define RA_CONTROL_PANEL
|
//#define RA_CONTROL_PANEL
|
||||||
|
|
||||||
//automatic expansion
|
/**
|
||||||
#if defined (MAKRPANEL)
|
* I2C Panels
|
||||||
#define DOGLCD
|
*/
|
||||||
#define SDSUPPORT
|
|
||||||
#define ULTIPANEL
|
|
||||||
#define NEWPANEL
|
|
||||||
#define DEFAULT_LCD_CONTRAST 17
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if defined(miniVIKI) || defined(VIKI2)
|
|
||||||
#define ULTRA_LCD //general LCD support, also 16x2
|
|
||||||
#define DOGLCD // Support for SPI LCD 128x64 (Controller ST7565R graphic Display Family)
|
|
||||||
#define ULTIMAKERCONTROLLER //as available from the Ultimaker online store.
|
|
||||||
|
|
||||||
#ifdef miniVIKI
|
|
||||||
#define DEFAULT_LCD_CONTRAST 95
|
|
||||||
#else
|
|
||||||
#define DEFAULT_LCD_CONTRAST 40
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#define ENCODER_PULSES_PER_STEP 4
|
|
||||||
#define ENCODER_STEPS_PER_MENU_ITEM 1
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if defined (PANEL_ONE)
|
|
||||||
#define SDSUPPORT
|
|
||||||
#define ULTIMAKERCONTROLLER
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if defined (REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER)
|
|
||||||
#define DOGLCD
|
|
||||||
#define U8GLIB_ST7920
|
|
||||||
#define REPRAP_DISCOUNT_SMART_CONTROLLER
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if defined(ULTIMAKERCONTROLLER) || defined(REPRAP_DISCOUNT_SMART_CONTROLLER) || defined(G3D_PANEL)
|
|
||||||
#define ULTIPANEL
|
|
||||||
#define NEWPANEL
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if defined(REPRAPWORLD_KEYPAD)
|
|
||||||
#define NEWPANEL
|
|
||||||
#define ULTIPANEL
|
|
||||||
#endif
|
|
||||||
#if defined(RA_CONTROL_PANEL)
|
|
||||||
#define ULTIPANEL
|
|
||||||
#define NEWPANEL
|
|
||||||
#define LCD_I2C_TYPE_PCA8574
|
|
||||||
#define LCD_I2C_ADDRESS 0x27 // I2C Address of the port expander
|
|
||||||
#endif
|
|
||||||
|
|
||||||
//I2C PANELS
|
|
||||||
|
|
||||||
//#define LCD_I2C_SAINSMART_YWROBOT
|
//#define LCD_I2C_SAINSMART_YWROBOT
|
||||||
#ifdef LCD_I2C_SAINSMART_YWROBOT
|
|
||||||
// This uses the LiquidCrystal_I2C library ( https://bitbucket.org/fmalpartida/new-liquidcrystal/wiki/Home )
|
|
||||||
// Make sure it is placed in the Arduino libraries directory.
|
|
||||||
#define LCD_I2C_TYPE_PCF8575
|
|
||||||
#define LCD_I2C_ADDRESS 0x27 // I2C Address of the port expander
|
|
||||||
#define NEWPANEL
|
|
||||||
#define ULTIPANEL
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// PANELOLU2 LCD with status LEDs, separate encoder and click inputs
|
// PANELOLU2 LCD with status LEDs, separate encoder and click inputs
|
||||||
//#define LCD_I2C_PANELOLU2
|
//#define LCD_I2C_PANELOLU2
|
||||||
#ifdef LCD_I2C_PANELOLU2
|
|
||||||
// This uses the LiquidTWI2 library v1.2.3 or later ( https://github.com/lincomatic/LiquidTWI2 )
|
|
||||||
// Make sure the LiquidTWI2 directory is placed in the Arduino or Sketchbook libraries subdirectory.
|
|
||||||
// (v1.2.3 no longer requires you to define PANELOLU in the LiquidTWI2.h library header file)
|
|
||||||
// Note: The PANELOLU2 encoder click input can either be directly connected to a pin
|
|
||||||
// (if BTN_ENC defined to != -1) or read through I2C (when BTN_ENC == -1).
|
|
||||||
#define LCD_I2C_TYPE_MCP23017
|
|
||||||
#define LCD_I2C_ADDRESS 0x20 // I2C Address of the port expander
|
|
||||||
#define LCD_USE_I2C_BUZZER //comment out to disable buzzer on LCD
|
|
||||||
#define NEWPANEL
|
|
||||||
#define ULTIPANEL
|
|
||||||
|
|
||||||
#ifndef ENCODER_PULSES_PER_STEP
|
|
||||||
#define ENCODER_PULSES_PER_STEP 4
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifndef ENCODER_STEPS_PER_MENU_ITEM
|
|
||||||
#define ENCODER_STEPS_PER_MENU_ITEM 1
|
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
||||||
#ifdef LCD_USE_I2C_BUZZER
|
|
||||||
#define LCD_FEEDBACK_FREQUENCY_HZ 1000
|
|
||||||
#define LCD_FEEDBACK_FREQUENCY_DURATION_MS 100
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// Panucatt VIKI LCD with status LEDs, integrated click & L/R/U/P buttons, separate encoder inputs
|
// Panucatt VIKI LCD with status LEDs, integrated click & L/R/U/P buttons, separate encoder inputs
|
||||||
//#define LCD_I2C_VIKI
|
//#define LCD_I2C_VIKI
|
||||||
#ifdef LCD_I2C_VIKI
|
|
||||||
// This uses the LiquidTWI2 library v1.2.3 or later ( https://github.com/lincomatic/LiquidTWI2 )
|
|
||||||
// Make sure the LiquidTWI2 directory is placed in the Arduino or Sketchbook libraries subdirectory.
|
|
||||||
// Note: The pause/stop/resume LCD button pin should be connected to the Arduino
|
|
||||||
// BTN_ENC pin (or set BTN_ENC to -1 if not used)
|
|
||||||
#define LCD_I2C_TYPE_MCP23017
|
|
||||||
#define LCD_I2C_ADDRESS 0x20 // I2C Address of the port expander
|
|
||||||
#define LCD_USE_I2C_BUZZER //comment out to disable buzzer on LCD (requires LiquidTWI2 v1.2.3 or later)
|
|
||||||
#define NEWPANEL
|
|
||||||
#define ULTIPANEL
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// Shift register panels
|
// Shift register panels
|
||||||
// ---------------------
|
// ---------------------
|
||||||
|
@ -733,51 +645,10 @@ const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of
|
||||||
// https://bitbucket.org/fmalpartida/new-liquidcrystal/wiki/schematics#!shiftregister-connection
|
// https://bitbucket.org/fmalpartida/new-liquidcrystal/wiki/schematics#!shiftregister-connection
|
||||||
|
|
||||||
//#define SAV_3DLCD
|
//#define SAV_3DLCD
|
||||||
#ifdef SAV_3DLCD
|
|
||||||
#define SR_LCD_2W_NL // Non latching 2 wire shiftregister
|
|
||||||
#define NEWPANEL
|
|
||||||
#define ULTIPANEL
|
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
||||||
#ifdef ULTIPANEL
|
|
||||||
// #define NEWPANEL //enable this if you have a click-encoder panel
|
|
||||||
#define SDSUPPORT
|
|
||||||
#define ULTRA_LCD
|
|
||||||
#ifdef DOGLCD // Change number of lines to match the DOG graphic display
|
|
||||||
#define LCD_WIDTH 22
|
|
||||||
#define LCD_HEIGHT 5
|
|
||||||
#else
|
|
||||||
#define LCD_WIDTH 20
|
|
||||||
#define LCD_HEIGHT 4
|
|
||||||
#endif
|
|
||||||
#else //no panel but just LCD
|
|
||||||
#ifdef ULTRA_LCD
|
|
||||||
#ifdef DOGLCD // Change number of lines to match the 128x64 graphics display
|
|
||||||
#define LCD_WIDTH 22
|
|
||||||
#define LCD_HEIGHT 5
|
|
||||||
#else
|
|
||||||
#define LCD_WIDTH 16
|
|
||||||
#define LCD_HEIGHT 2
|
|
||||||
#endif
|
|
||||||
#endif
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// default LCD contrast for dogm-like LCD displays
|
|
||||||
#ifdef DOGLCD
|
|
||||||
# ifndef DEFAULT_LCD_CONTRAST
|
|
||||||
# define DEFAULT_LCD_CONTRAST 32
|
|
||||||
# endif
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// Increase the FAN pwm frequency. Removes the PWM noise but increases heating in the FET/Arduino
|
// Increase the FAN pwm frequency. Removes the PWM noise but increases heating in the FET/Arduino
|
||||||
//#define FAST_PWM_FAN
|
//#define FAST_PWM_FAN
|
||||||
|
|
||||||
// Temperature status LEDs that display the hotend and bet temperature.
|
|
||||||
// If all hotends and bed temperature and temperature setpoint are < 54C then the BLUE led is on.
|
|
||||||
// Otherwise the RED led is on. There is 1C hysteresis.
|
|
||||||
//#define TEMP_STAT_LEDS
|
|
||||||
|
|
||||||
// Use software PWM to drive the fan, as for the heaters. This uses a very low frequency
|
// Use software PWM to drive the fan, as for the heaters. This uses a very low frequency
|
||||||
// which is not ass annoying as with the hardware PWM. On the other hand, if this frequency
|
// which is not ass annoying as with the hardware PWM. On the other hand, if this frequency
|
||||||
// is too low, you should also increment SOFT_PWM_SCALE.
|
// is too low, you should also increment SOFT_PWM_SCALE.
|
||||||
|
@ -789,6 +660,11 @@ const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of
|
||||||
// at zero value, there are 128 effective control positions.
|
// at zero value, there are 128 effective control positions.
|
||||||
#define SOFT_PWM_SCALE 0
|
#define SOFT_PWM_SCALE 0
|
||||||
|
|
||||||
|
// Temperature status LEDs that display the hotend and bet temperature.
|
||||||
|
// If all hotends and bed temperature and temperature setpoint are < 54C then the BLUE led is on.
|
||||||
|
// Otherwise the RED led is on. There is 1C hysteresis.
|
||||||
|
//#define TEMP_STAT_LEDS
|
||||||
|
|
||||||
// M240 Triggers a camera by emulating a Canon RC-1 Remote
|
// M240 Triggers a camera by emulating a Canon RC-1 Remote
|
||||||
// Data from: http://www.doc-diy.net/photo/rc-1_hacked/
|
// Data from: http://www.doc-diy.net/photo/rc-1_hacked/
|
||||||
// #define PHOTOGRAPH_PIN 23
|
// #define PHOTOGRAPH_PIN 23
|
||||||
|
@ -860,4 +736,4 @@ const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of
|
||||||
#include "Configuration_adv.h"
|
#include "Configuration_adv.h"
|
||||||
#include "thermistortables.h"
|
#include "thermistortables.h"
|
||||||
|
|
||||||
#endif //__CONFIGURATION_H
|
#endif //CONFIGURATION_H
|
||||||
|
|
|
@ -1,6 +1,8 @@
|
||||||
#ifndef CONFIGURATION_ADV_H
|
#ifndef CONFIGURATION_ADV_H
|
||||||
#define CONFIGURATION_ADV_H
|
#define CONFIGURATION_ADV_H
|
||||||
|
|
||||||
|
#include "Conditionals.h"
|
||||||
|
|
||||||
//===========================================================================
|
//===========================================================================
|
||||||
//=============================Thermal Settings ============================
|
//=============================Thermal Settings ============================
|
||||||
//===========================================================================
|
//===========================================================================
|
||||||
|
@ -89,54 +91,6 @@
|
||||||
|
|
||||||
//#define ENDSTOPS_ONLY_FOR_HOMING // If defined the endstops will only be used for homing
|
//#define ENDSTOPS_ONLY_FOR_HOMING // If defined the endstops will only be used for homing
|
||||||
|
|
||||||
|
|
||||||
//// AUTOSET LOCATIONS OF LIMIT SWITCHES
|
|
||||||
//// Added by ZetaPhoenix 09-15-2012
|
|
||||||
#ifdef MANUAL_HOME_POSITIONS // Use manual limit switch locations
|
|
||||||
#define X_HOME_POS MANUAL_X_HOME_POS
|
|
||||||
#define Y_HOME_POS MANUAL_Y_HOME_POS
|
|
||||||
#define Z_HOME_POS MANUAL_Z_HOME_POS
|
|
||||||
#else //Set min/max homing switch positions based upon homing direction and min/max travel limits
|
|
||||||
//X axis
|
|
||||||
#if X_HOME_DIR == -1
|
|
||||||
#ifdef BED_CENTER_AT_0_0
|
|
||||||
#define X_HOME_POS X_MAX_LENGTH * -0.5
|
|
||||||
#else
|
|
||||||
#define X_HOME_POS X_MIN_POS
|
|
||||||
#endif //BED_CENTER_AT_0_0
|
|
||||||
#else
|
|
||||||
#ifdef BED_CENTER_AT_0_0
|
|
||||||
#define X_HOME_POS X_MAX_LENGTH * 0.5
|
|
||||||
#else
|
|
||||||
#define X_HOME_POS X_MAX_POS
|
|
||||||
#endif //BED_CENTER_AT_0_0
|
|
||||||
#endif //X_HOME_DIR == -1
|
|
||||||
|
|
||||||
//Y axis
|
|
||||||
#if Y_HOME_DIR == -1
|
|
||||||
#ifdef BED_CENTER_AT_0_0
|
|
||||||
#define Y_HOME_POS Y_MAX_LENGTH * -0.5
|
|
||||||
#else
|
|
||||||
#define Y_HOME_POS Y_MIN_POS
|
|
||||||
#endif //BED_CENTER_AT_0_0
|
|
||||||
#else
|
|
||||||
#ifdef BED_CENTER_AT_0_0
|
|
||||||
#define Y_HOME_POS Y_MAX_LENGTH * 0.5
|
|
||||||
#else
|
|
||||||
#define Y_HOME_POS Y_MAX_POS
|
|
||||||
#endif //BED_CENTER_AT_0_0
|
|
||||||
#endif //Y_HOME_DIR == -1
|
|
||||||
|
|
||||||
// Z axis
|
|
||||||
#if Z_HOME_DIR == -1 //BED_CENTER_AT_0_0 not used
|
|
||||||
#define Z_HOME_POS Z_MIN_POS
|
|
||||||
#else
|
|
||||||
#define Z_HOME_POS Z_MAX_POS
|
|
||||||
#endif //Z_HOME_DIR == -1
|
|
||||||
#endif //End auto min/max positions
|
|
||||||
//END AUTOSET LOCATIONS OF LIMIT SWITCHES -ZP
|
|
||||||
|
|
||||||
|
|
||||||
//#define Z_LATE_ENABLE // Enable Z the last moment. Needed if your Z driver overheats.
|
//#define Z_LATE_ENABLE // Enable Z the last moment. Needed if your Z driver overheats.
|
||||||
|
|
||||||
// A single Z stepper driver is usually used to drive 2 stepper motors.
|
// A single Z stepper driver is usually used to drive 2 stepper motors.
|
||||||
|
@ -146,26 +100,12 @@
|
||||||
// On a RAMPS (or other 5 driver) motherboard, using this feature will limit you to using 1 extruder.
|
// On a RAMPS (or other 5 driver) motherboard, using this feature will limit you to using 1 extruder.
|
||||||
//#define Z_DUAL_STEPPER_DRIVERS
|
//#define Z_DUAL_STEPPER_DRIVERS
|
||||||
|
|
||||||
#ifdef Z_DUAL_STEPPER_DRIVERS
|
|
||||||
#undef EXTRUDERS
|
|
||||||
#define EXTRUDERS 1
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// Same again but for Y Axis.
|
// Same again but for Y Axis.
|
||||||
//#define Y_DUAL_STEPPER_DRIVERS
|
//#define Y_DUAL_STEPPER_DRIVERS
|
||||||
|
|
||||||
// Define if the two Y drives need to rotate in opposite directions
|
// Define if the two Y drives need to rotate in opposite directions
|
||||||
#define INVERT_Y2_VS_Y_DIR true
|
#define INVERT_Y2_VS_Y_DIR true
|
||||||
|
|
||||||
#ifdef Y_DUAL_STEPPER_DRIVERS
|
|
||||||
#undef EXTRUDERS
|
|
||||||
#define EXTRUDERS 1
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if defined (Z_DUAL_STEPPER_DRIVERS) && defined (Y_DUAL_STEPPER_DRIVERS)
|
|
||||||
#error "You cannot have dual drivers for both Y and Z"
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// Enable this for dual x-carriage printers.
|
// Enable this for dual x-carriage printers.
|
||||||
// A dual x-carriage design has the advantage that the inactive extruder can be parked which
|
// A dual x-carriage design has the advantage that the inactive extruder can be parked which
|
||||||
// prevents hot-end ooze contaminating the print. It also reduces the weight of each x-carriage
|
// prevents hot-end ooze contaminating the print. It also reduces the weight of each x-carriage
|
||||||
|
@ -229,20 +169,15 @@
|
||||||
#define INVERT_Z_STEP_PIN false
|
#define INVERT_Z_STEP_PIN false
|
||||||
#define INVERT_E_STEP_PIN false
|
#define INVERT_E_STEP_PIN false
|
||||||
|
|
||||||
//default stepper release if idle. Set to 0 to deactivate.
|
// Default stepper release if idle. Set to 0 to deactivate.
|
||||||
#define DEFAULT_STEPPER_DEACTIVE_TIME 60
|
#define DEFAULT_STEPPER_DEACTIVE_TIME 60
|
||||||
|
|
||||||
#define DEFAULT_MINIMUMFEEDRATE 0.0 // minimum feedrate
|
#define DEFAULT_MINIMUMFEEDRATE 0.0 // minimum feedrate
|
||||||
#define DEFAULT_MINTRAVELFEEDRATE 0.0
|
#define DEFAULT_MINTRAVELFEEDRATE 0.0
|
||||||
|
|
||||||
// Feedrates for manual moves along X, Y, Z, E from panel
|
|
||||||
#ifdef ULTIPANEL
|
#ifdef ULTIPANEL
|
||||||
#define MANUAL_FEEDRATE {120*60, 120*60, 18*60, 60} // set the speeds for manual moves (mm/min)
|
#define MANUAL_FEEDRATE {120*60, 120*60, 18*60, 60} // Feedrates for manual moves along X, Y, Z, E from panel
|
||||||
#endif
|
#define ULTIPANEL_FEEDMULTIPLY // Comment to disable setting feedrate multiplier via encoder
|
||||||
|
|
||||||
//Comment to disable setting feedrate multiplier via encoder
|
|
||||||
#ifdef ULTIPANEL
|
|
||||||
#define ULTIPANEL_FEEDMULTIPLY
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// minimum time in microseconds that a movement needs to take if the buffer is emptied.
|
// minimum time in microseconds that a movement needs to take if the buffer is emptied.
|
||||||
|
@ -261,13 +196,6 @@
|
||||||
// if unwanted behavior is observed on a user's machine when running at very slow speeds.
|
// if unwanted behavior is observed on a user's machine when running at very slow speeds.
|
||||||
#define MINIMUM_PLANNER_SPEED 0.05// (mm/sec)
|
#define MINIMUM_PLANNER_SPEED 0.05// (mm/sec)
|
||||||
|
|
||||||
// MS1 MS2 Stepper Driver Microstepping mode table
|
|
||||||
#define MICROSTEP1 LOW,LOW
|
|
||||||
#define MICROSTEP2 HIGH,LOW
|
|
||||||
#define MICROSTEP4 LOW,HIGH
|
|
||||||
#define MICROSTEP8 HIGH,HIGH
|
|
||||||
#define MICROSTEP16 HIGH,HIGH
|
|
||||||
|
|
||||||
// Microstep setting (Only functional when stepper driver microstep pins are connected to MCU.
|
// Microstep setting (Only functional when stepper driver microstep pins are connected to MCU.
|
||||||
#define MICROSTEP_MODES {16,16,16,16,16} // [1,2,4,8,16]
|
#define MICROSTEP_MODES {16,16,16,16,16} // [1,2,4,8,16]
|
||||||
|
|
||||||
|
@ -313,12 +241,6 @@
|
||||||
#define PROGRESS_MSG_EXPIRE 0
|
#define PROGRESS_MSG_EXPIRE 0
|
||||||
// Enable this to show messages for MSG_TIME then hide them
|
// Enable this to show messages for MSG_TIME then hide them
|
||||||
//#define PROGRESS_MSG_ONCE
|
//#define PROGRESS_MSG_ONCE
|
||||||
#ifdef DOGLCD
|
|
||||||
#warning LCD_PROGRESS_BAR does not apply to graphical displays at this time.
|
|
||||||
#endif
|
|
||||||
#ifdef FILAMENT_LCD_DISPLAY
|
|
||||||
#error LCD_PROGRESS_BAR and FILAMENT_LCD_DISPLAY are not fully compatible. Comment out this line to use both.
|
|
||||||
#endif
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// The hardware watchdog should reset the microcontroller disabling all outputs, in case the firmware gets stuck and doesn't do temperature regulation.
|
// The hardware watchdog should reset the microcontroller disabling all outputs, in case the firmware gets stuck and doesn't do temperature regulation.
|
||||||
|
@ -342,16 +264,6 @@
|
||||||
#define BABYSTEP_XY //not only z, but also XY in the menu. more clutter, more functions
|
#define BABYSTEP_XY //not only z, but also XY in the menu. more clutter, more functions
|
||||||
#define BABYSTEP_INVERT_Z false //true for inverse movements in Z
|
#define BABYSTEP_INVERT_Z false //true for inverse movements in Z
|
||||||
#define BABYSTEP_Z_MULTIPLICATOR 2 //faster z movements
|
#define BABYSTEP_Z_MULTIPLICATOR 2 //faster z movements
|
||||||
|
|
||||||
#ifdef COREXY
|
|
||||||
#error BABYSTEPPING not implemented for COREXY yet.
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef DELTA
|
|
||||||
#ifdef BABYSTEP_XY
|
|
||||||
#error BABYSTEPPING only implemented for Z axis on deltabots.
|
|
||||||
#endif
|
|
||||||
#endif
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// extruder advance constant (s2/mm3)
|
// extruder advance constant (s2/mm3)
|
||||||
|
@ -365,12 +277,8 @@
|
||||||
|
|
||||||
#ifdef ADVANCE
|
#ifdef ADVANCE
|
||||||
#define EXTRUDER_ADVANCE_K .0
|
#define EXTRUDER_ADVANCE_K .0
|
||||||
|
|
||||||
#define D_FILAMENT 1.75
|
#define D_FILAMENT 1.75
|
||||||
#define STEPS_MM_E 100.47095761381482
|
#define STEPS_MM_E 100.47095761381482
|
||||||
#define EXTRUSION_AREA (0.25 * D_FILAMENT * D_FILAMENT * 3.14159)
|
|
||||||
#define STEPS_PER_CUBIC_MM_E (axis_steps_per_unit[E_AXIS]/ EXTRUSION_AREA)
|
|
||||||
|
|
||||||
#endif // ADVANCE
|
#endif // ADVANCE
|
||||||
|
|
||||||
// Arc interpretation settings:
|
// Arc interpretation settings:
|
||||||
|
@ -385,26 +293,6 @@ const unsigned int dropsegments=5; //everything with less than this number of st
|
||||||
// be commented out otherwise
|
// be commented out otherwise
|
||||||
#define SDCARDDETECTINVERTED
|
#define SDCARDDETECTINVERTED
|
||||||
|
|
||||||
#ifdef ULTIPANEL
|
|
||||||
#undef SDCARDDETECTINVERTED
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// Power Signal Control Definitions
|
|
||||||
// By default use ATX definition
|
|
||||||
#ifndef POWER_SUPPLY
|
|
||||||
#define POWER_SUPPLY 1
|
|
||||||
#endif
|
|
||||||
// 1 = ATX
|
|
||||||
#if (POWER_SUPPLY == 1)
|
|
||||||
#define PS_ON_AWAKE LOW
|
|
||||||
#define PS_ON_ASLEEP HIGH
|
|
||||||
#endif
|
|
||||||
// 2 = X-Box 360 203W
|
|
||||||
#if (POWER_SUPPLY == 2)
|
|
||||||
#define PS_ON_AWAKE HIGH
|
|
||||||
#define PS_ON_ASLEEP LOW
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// Control heater 0 and heater 1 in parallel.
|
// Control heater 0 and heater 1 in parallel.
|
||||||
//#define HEATERS_PARALLEL
|
//#define HEATERS_PARALLEL
|
||||||
|
|
||||||
|
@ -444,9 +332,9 @@ const unsigned int dropsegments=5; //everything with less than this number of st
|
||||||
#define RETRACT_RECOVER_FEEDRATE 8*60 //default feedrate for recovering from retraction (mm/s)
|
#define RETRACT_RECOVER_FEEDRATE 8*60 //default feedrate for recovering from retraction (mm/s)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
//adds support for experimental filament exchange support M600; requires display
|
// Add support for experimental filament exchange support M600; requires display
|
||||||
#ifdef ULTIPANEL
|
#ifdef ULTIPANEL
|
||||||
#define FILAMENTCHANGEENABLE
|
//#define FILAMENTCHANGEENABLE
|
||||||
#ifdef FILAMENTCHANGEENABLE
|
#ifdef FILAMENTCHANGEENABLE
|
||||||
#define FILAMENTCHANGE_XPOS 3
|
#define FILAMENTCHANGE_XPOS 3
|
||||||
#define FILAMENTCHANGE_YPOS 3
|
#define FILAMENTCHANGE_YPOS 3
|
||||||
|
@ -456,86 +344,7 @@ const unsigned int dropsegments=5; //everything with less than this number of st
|
||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef FILAMENTCHANGEENABLE
|
#include "Conditionals.h"
|
||||||
#ifdef EXTRUDER_RUNOUT_PREVENT
|
#include "SanityCheck.h"
|
||||||
#error EXTRUDER_RUNOUT_PREVENT currently incompatible with FILAMENTCHANGE
|
|
||||||
#endif
|
|
||||||
#endif
|
|
||||||
|
|
||||||
//===========================================================================
|
#endif //CONFIGURATION_ADV_H
|
||||||
//============================= Define Defines ============================
|
|
||||||
//===========================================================================
|
|
||||||
|
|
||||||
#if defined (ENABLE_AUTO_BED_LEVELING) && defined (DELTA)
|
|
||||||
#error "Bed Auto Leveling is still not compatible with Delta Kinematics."
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if EXTRUDERS > 1 && defined TEMP_SENSOR_1_AS_REDUNDANT
|
|
||||||
#error "You cannot use TEMP_SENSOR_1_AS_REDUNDANT if EXTRUDERS > 1"
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if EXTRUDERS > 1 && defined HEATERS_PARALLEL
|
|
||||||
#error "You cannot use HEATERS_PARALLEL if EXTRUDERS > 1"
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if TEMP_SENSOR_0 > 0
|
|
||||||
#define THERMISTORHEATER_0 TEMP_SENSOR_0
|
|
||||||
#define HEATER_0_USES_THERMISTOR
|
|
||||||
#endif
|
|
||||||
#if TEMP_SENSOR_1 > 0
|
|
||||||
#define THERMISTORHEATER_1 TEMP_SENSOR_1
|
|
||||||
#define HEATER_1_USES_THERMISTOR
|
|
||||||
#endif
|
|
||||||
#if TEMP_SENSOR_2 > 0
|
|
||||||
#define THERMISTORHEATER_2 TEMP_SENSOR_2
|
|
||||||
#define HEATER_2_USES_THERMISTOR
|
|
||||||
#endif
|
|
||||||
#if TEMP_SENSOR_3 > 0
|
|
||||||
#define THERMISTORHEATER_3 TEMP_SENSOR_3
|
|
||||||
#define HEATER_3_USES_THERMISTOR
|
|
||||||
#endif
|
|
||||||
#if TEMP_SENSOR_BED > 0
|
|
||||||
#define THERMISTORBED TEMP_SENSOR_BED
|
|
||||||
#define BED_USES_THERMISTOR
|
|
||||||
#endif
|
|
||||||
#if TEMP_SENSOR_0 == -1
|
|
||||||
#define HEATER_0_USES_AD595
|
|
||||||
#endif
|
|
||||||
#if TEMP_SENSOR_1 == -1
|
|
||||||
#define HEATER_1_USES_AD595
|
|
||||||
#endif
|
|
||||||
#if TEMP_SENSOR_2 == -1
|
|
||||||
#define HEATER_2_USES_AD595
|
|
||||||
#endif
|
|
||||||
#if TEMP_SENSOR_3 == -1
|
|
||||||
#define HEATER_3_USES_AD595
|
|
||||||
#endif
|
|
||||||
#if TEMP_SENSOR_BED == -1
|
|
||||||
#define BED_USES_AD595
|
|
||||||
#endif
|
|
||||||
#if TEMP_SENSOR_0 == -2
|
|
||||||
#define HEATER_0_USES_MAX6675
|
|
||||||
#endif
|
|
||||||
#if TEMP_SENSOR_0 == 0
|
|
||||||
#undef HEATER_0_MINTEMP
|
|
||||||
#undef HEATER_0_MAXTEMP
|
|
||||||
#endif
|
|
||||||
#if TEMP_SENSOR_1 == 0
|
|
||||||
#undef HEATER_1_MINTEMP
|
|
||||||
#undef HEATER_1_MAXTEMP
|
|
||||||
#endif
|
|
||||||
#if TEMP_SENSOR_2 == 0
|
|
||||||
#undef HEATER_2_MINTEMP
|
|
||||||
#undef HEATER_2_MAXTEMP
|
|
||||||
#endif
|
|
||||||
#if TEMP_SENSOR_3 == 0
|
|
||||||
#undef HEATER_3_MINTEMP
|
|
||||||
#undef HEATER_3_MAXTEMP
|
|
||||||
#endif
|
|
||||||
#if TEMP_SENSOR_BED == 0
|
|
||||||
#undef BED_MINTEMP
|
|
||||||
#undef BED_MAXTEMP
|
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
||||||
#endif //__CONFIGURATION_ADV_H
|
|
||||||
|
|
|
@ -327,15 +327,6 @@ your extruder heater takes 2 minutes to hit the target on heating.
|
||||||
#define ENDSTOPPULLUP_ZMIN
|
#define ENDSTOPPULLUP_ZMIN
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef ENDSTOPPULLUPS
|
|
||||||
// #define ENDSTOPPULLUP_XMAX
|
|
||||||
// #define ENDSTOPPULLUP_YMAX
|
|
||||||
// #define ENDSTOPPULLUP_ZMAX
|
|
||||||
#define ENDSTOPPULLUP_XMIN
|
|
||||||
#define ENDSTOPPULLUP_YMIN
|
|
||||||
#define ENDSTOPPULLUP_ZMIN
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// The pullups are needed if you directly connect a mechanical endswitch between the signal and ground pins.
|
// The pullups are needed if you directly connect a mechanical endswitch between the signal and ground pins.
|
||||||
const bool X_MIN_ENDSTOP_INVERTING = false; // set to true to invert the logic of the endstop.
|
const bool X_MIN_ENDSTOP_INVERTING = false; // set to true to invert the logic of the endstop.
|
||||||
const bool Y_MIN_ENDSTOP_INVERTING = false; // set to true to invert the logic of the endstop.
|
const bool Y_MIN_ENDSTOP_INVERTING = false; // set to true to invert the logic of the endstop.
|
||||||
|
@ -384,10 +375,32 @@ const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of
|
||||||
#define Z_MAX_POS 200
|
#define Z_MAX_POS 200
|
||||||
#define Z_MIN_POS 0
|
#define Z_MIN_POS 0
|
||||||
|
|
||||||
#define X_MAX_LENGTH (X_MAX_POS - X_MIN_POS)
|
//===========================================================================
|
||||||
#define Y_MAX_LENGTH (Y_MAX_POS - Y_MIN_POS)
|
//============================= Filament Runout Sensor ======================
|
||||||
#define Z_MAX_LENGTH (Z_MAX_POS - Z_MIN_POS)
|
//===========================================================================
|
||||||
|
//#define FILAMENT_RUNOUT_SENSOR // Uncomment for defining a filament runout sensor such as a mechanical or opto endstop to check the existence of filament
|
||||||
|
// In RAMPS uses servo pin 2. Can be changed in pins file. For other boards pin definition should be made.
|
||||||
|
// It is assumed that when logic high = filament available
|
||||||
|
// when logic low = filament ran out
|
||||||
|
//const bool FIL_RUNOUT_INVERTING = true; // Should be uncommented and true or false should assigned
|
||||||
|
//#define ENDSTOPPULLUP_FIL_RUNOUT // Uncomment to use internal pullup for filament runout pins if the sensor is defined.
|
||||||
|
|
||||||
|
//===========================================================================
|
||||||
|
//============================ Manual Bed Leveling ==========================
|
||||||
|
//===========================================================================
|
||||||
|
|
||||||
|
// #define MANUAL_BED_LEVELING // Add display menu option for bed leveling
|
||||||
|
// #define MESH_BED_LEVELING // Enable mesh bed leveling
|
||||||
|
|
||||||
|
#if defined(MESH_BED_LEVELING)
|
||||||
|
#define MESH_MIN_X 10
|
||||||
|
#define MESH_MAX_X (X_MAX_POS - MESH_MIN_X)
|
||||||
|
#define MESH_MIN_Y 10
|
||||||
|
#define MESH_MAX_Y (Y_MAX_POS - MESH_MIN_Y)
|
||||||
|
#define MESH_NUM_X_POINTS 3 // Don't use more than 7 points per axis, implementation limited
|
||||||
|
#define MESH_NUM_Y_POINTS 3
|
||||||
|
#define MESH_HOME_SEARCH_Z 4 // Z after Home, bed somewhere below but above 0.0
|
||||||
|
#endif // MESH_BED_LEVELING
|
||||||
|
|
||||||
//===========================================================================
|
//===========================================================================
|
||||||
//============================= Bed Auto Leveling ===========================
|
//============================= Bed Auto Leveling ===========================
|
||||||
|
@ -415,12 +428,6 @@ const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of
|
||||||
|
|
||||||
#ifdef AUTO_BED_LEVELING_GRID
|
#ifdef AUTO_BED_LEVELING_GRID
|
||||||
|
|
||||||
// Use one of these defines to specify the origin
|
|
||||||
// for a topographical map to be printed for your bed.
|
|
||||||
enum { OriginBackLeft, OriginFrontLeft, OriginBackRight, OriginFrontRight };
|
|
||||||
#define TOPO_ORIGIN OriginFrontLeft
|
|
||||||
|
|
||||||
// The edges of the rectangle in which to probe
|
|
||||||
#define LEFT_PROBE_BED_POSITION 15
|
#define LEFT_PROBE_BED_POSITION 15
|
||||||
#define RIGHT_PROBE_BED_POSITION 170
|
#define RIGHT_PROBE_BED_POSITION 170
|
||||||
#define FRONT_PROBE_BED_POSITION 20
|
#define FRONT_PROBE_BED_POSITION 20
|
||||||
|
@ -624,112 +631,17 @@ const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of
|
||||||
// REMEMBER TO INSTALL LiquidCrystal_I2C.h in your ARDUINO library folder: https://github.com/kiyoshigawa/LiquidCrystal_I2C
|
// REMEMBER TO INSTALL LiquidCrystal_I2C.h in your ARDUINO library folder: https://github.com/kiyoshigawa/LiquidCrystal_I2C
|
||||||
//#define RA_CONTROL_PANEL
|
//#define RA_CONTROL_PANEL
|
||||||
|
|
||||||
//automatic expansion
|
/**
|
||||||
#if defined (MAKRPANEL)
|
* I2C Panels
|
||||||
#define DOGLCD
|
*/
|
||||||
#define SDSUPPORT
|
|
||||||
#define ULTIPANEL
|
|
||||||
#define NEWPANEL
|
|
||||||
#define DEFAULT_LCD_CONTRAST 17
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if defined(miniVIKI) || defined(VIKI2)
|
|
||||||
#define ULTRA_LCD //general LCD support, also 16x2
|
|
||||||
#define DOGLCD // Support for SPI LCD 128x64 (Controller ST7565R graphic Display Family)
|
|
||||||
#define ULTIMAKERCONTROLLER //as available from the Ultimaker online store.
|
|
||||||
|
|
||||||
#ifdef miniVIKI
|
|
||||||
#define DEFAULT_LCD_CONTRAST 95
|
|
||||||
#else
|
|
||||||
#define DEFAULT_LCD_CONTRAST 40
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#define ENCODER_PULSES_PER_STEP 4
|
|
||||||
#define ENCODER_STEPS_PER_MENU_ITEM 1
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if defined (PANEL_ONE)
|
|
||||||
#define SDSUPPORT
|
|
||||||
#define ULTIMAKERCONTROLLER
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if defined (REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER)
|
|
||||||
#define DOGLCD
|
|
||||||
#define U8GLIB_ST7920
|
|
||||||
#define REPRAP_DISCOUNT_SMART_CONTROLLER
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if defined(ULTIMAKERCONTROLLER) || defined(REPRAP_DISCOUNT_SMART_CONTROLLER) || defined(G3D_PANEL)
|
|
||||||
#define ULTIPANEL
|
|
||||||
#define NEWPANEL
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if defined(REPRAPWORLD_KEYPAD)
|
|
||||||
#define NEWPANEL
|
|
||||||
#define ULTIPANEL
|
|
||||||
#endif
|
|
||||||
#if defined(RA_CONTROL_PANEL)
|
|
||||||
#define ULTIPANEL
|
|
||||||
#define NEWPANEL
|
|
||||||
#define LCD_I2C_TYPE_PCA8574
|
|
||||||
#define LCD_I2C_ADDRESS 0x27 // I2C Address of the port expander
|
|
||||||
#endif
|
|
||||||
|
|
||||||
//I2C PANELS
|
|
||||||
|
|
||||||
//#define LCD_I2C_SAINSMART_YWROBOT
|
//#define LCD_I2C_SAINSMART_YWROBOT
|
||||||
#ifdef LCD_I2C_SAINSMART_YWROBOT
|
|
||||||
// This uses the LiquidCrystal_I2C library ( https://bitbucket.org/fmalpartida/new-liquidcrystal/wiki/Home )
|
|
||||||
// Make sure it is placed in the Arduino libraries directory.
|
|
||||||
#define LCD_I2C_TYPE_PCF8575
|
|
||||||
#define LCD_I2C_ADDRESS 0x27 // I2C Address of the port expander
|
|
||||||
#define NEWPANEL
|
|
||||||
#define ULTIPANEL
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// PANELOLU2 LCD with status LEDs, separate encoder and click inputs
|
// PANELOLU2 LCD with status LEDs, separate encoder and click inputs
|
||||||
//#define LCD_I2C_PANELOLU2
|
//#define LCD_I2C_PANELOLU2
|
||||||
#ifdef LCD_I2C_PANELOLU2
|
|
||||||
// This uses the LiquidTWI2 library v1.2.3 or later ( https://github.com/lincomatic/LiquidTWI2 )
|
|
||||||
// Make sure the LiquidTWI2 directory is placed in the Arduino or Sketchbook libraries subdirectory.
|
|
||||||
// (v1.2.3 no longer requires you to define PANELOLU in the LiquidTWI2.h library header file)
|
|
||||||
// Note: The PANELOLU2 encoder click input can either be directly connected to a pin
|
|
||||||
// (if BTN_ENC defined to != -1) or read through I2C (when BTN_ENC == -1).
|
|
||||||
#define LCD_I2C_TYPE_MCP23017
|
|
||||||
#define LCD_I2C_ADDRESS 0x20 // I2C Address of the port expander
|
|
||||||
#define LCD_USE_I2C_BUZZER //comment out to disable buzzer on LCD
|
|
||||||
#define NEWPANEL
|
|
||||||
#define ULTIPANEL
|
|
||||||
|
|
||||||
#ifndef ENCODER_PULSES_PER_STEP
|
|
||||||
#define ENCODER_PULSES_PER_STEP 4
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifndef ENCODER_STEPS_PER_MENU_ITEM
|
|
||||||
#define ENCODER_STEPS_PER_MENU_ITEM 1
|
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
||||||
#ifdef LCD_USE_I2C_BUZZER
|
|
||||||
#define LCD_FEEDBACK_FREQUENCY_HZ 1000
|
|
||||||
#define LCD_FEEDBACK_FREQUENCY_DURATION_MS 100
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// Panucatt VIKI LCD with status LEDs, integrated click & L/R/U/P buttons, separate encoder inputs
|
// Panucatt VIKI LCD with status LEDs, integrated click & L/R/U/P buttons, separate encoder inputs
|
||||||
//#define LCD_I2C_VIKI
|
//#define LCD_I2C_VIKI
|
||||||
#ifdef LCD_I2C_VIKI
|
|
||||||
// This uses the LiquidTWI2 library v1.2.3 or later ( https://github.com/lincomatic/LiquidTWI2 )
|
|
||||||
// Make sure the LiquidTWI2 directory is placed in the Arduino or Sketchbook libraries subdirectory.
|
|
||||||
// Note: The pause/stop/resume LCD button pin should be connected to the Arduino
|
|
||||||
// BTN_ENC pin (or set BTN_ENC to -1 if not used)
|
|
||||||
#define LCD_I2C_TYPE_MCP23017
|
|
||||||
#define LCD_I2C_ADDRESS 0x20 // I2C Address of the port expander
|
|
||||||
#define LCD_USE_I2C_BUZZER //comment out to disable buzzer on LCD (requires LiquidTWI2 v1.2.3 or later)
|
|
||||||
#define NEWPANEL
|
|
||||||
#define ULTIPANEL
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// Shift register panels
|
// Shift register panels
|
||||||
// ---------------------
|
// ---------------------
|
||||||
|
@ -737,51 +649,10 @@ const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of
|
||||||
// https://bitbucket.org/fmalpartida/new-liquidcrystal/wiki/schematics#!shiftregister-connection
|
// https://bitbucket.org/fmalpartida/new-liquidcrystal/wiki/schematics#!shiftregister-connection
|
||||||
|
|
||||||
//#define SAV_3DLCD
|
//#define SAV_3DLCD
|
||||||
#ifdef SAV_3DLCD
|
|
||||||
#define SR_LCD_2W_NL // Non latching 2 wire shiftregister
|
|
||||||
#define NEWPANEL
|
|
||||||
#define ULTIPANEL
|
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
||||||
#ifdef ULTIPANEL
|
|
||||||
// #define NEWPANEL //enable this if you have a click-encoder panel
|
|
||||||
#define SDSUPPORT
|
|
||||||
#define ULTRA_LCD
|
|
||||||
#ifdef DOGLCD // Change number of lines to match the DOG graphic display
|
|
||||||
#define LCD_WIDTH 22
|
|
||||||
#define LCD_HEIGHT 5
|
|
||||||
#else
|
|
||||||
#define LCD_WIDTH 20
|
|
||||||
#define LCD_HEIGHT 4
|
|
||||||
#endif
|
|
||||||
#else //no panel but just LCD
|
|
||||||
#ifdef ULTRA_LCD
|
|
||||||
#ifdef DOGLCD // Change number of lines to match the 128x64 graphics display
|
|
||||||
#define LCD_WIDTH 22
|
|
||||||
#define LCD_HEIGHT 5
|
|
||||||
#else
|
|
||||||
#define LCD_WIDTH 16
|
|
||||||
#define LCD_HEIGHT 2
|
|
||||||
#endif
|
|
||||||
#endif
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// default LCD contrast for dogm-like LCD displays
|
|
||||||
#ifdef DOGLCD
|
|
||||||
# ifndef DEFAULT_LCD_CONTRAST
|
|
||||||
# define DEFAULT_LCD_CONTRAST 32
|
|
||||||
# endif
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// Increase the FAN pwm frequency. Removes the PWM noise but increases heating in the FET/Arduino
|
// Increase the FAN pwm frequency. Removes the PWM noise but increases heating in the FET/Arduino
|
||||||
//#define FAST_PWM_FAN
|
//#define FAST_PWM_FAN
|
||||||
|
|
||||||
// Temperature status LEDs that display the hotend and bet temperature.
|
|
||||||
// If all hotends and bed temperature and temperature setpoint are < 54C then the BLUE led is on.
|
|
||||||
// Otherwise the RED led is on. There is 1C hysteresis.
|
|
||||||
//#define TEMP_STAT_LEDS
|
|
||||||
|
|
||||||
// Use software PWM to drive the fan, as for the heaters. This uses a very low frequency
|
// Use software PWM to drive the fan, as for the heaters. This uses a very low frequency
|
||||||
// which is not ass annoying as with the hardware PWM. On the other hand, if this frequency
|
// which is not ass annoying as with the hardware PWM. On the other hand, if this frequency
|
||||||
// is too low, you should also increment SOFT_PWM_SCALE.
|
// is too low, you should also increment SOFT_PWM_SCALE.
|
||||||
|
@ -793,6 +664,11 @@ const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of
|
||||||
// at zero value, there are 128 effective control positions.
|
// at zero value, there are 128 effective control positions.
|
||||||
#define SOFT_PWM_SCALE 0
|
#define SOFT_PWM_SCALE 0
|
||||||
|
|
||||||
|
// Temperature status LEDs that display the hotend and bet temperature.
|
||||||
|
// If all hotends and bed temperature and temperature setpoint are < 54C then the BLUE led is on.
|
||||||
|
// Otherwise the RED led is on. There is 1C hysteresis.
|
||||||
|
//#define TEMP_STAT_LEDS
|
||||||
|
|
||||||
// M240 Triggers a camera by emulating a Canon RC-1 Remote
|
// M240 Triggers a camera by emulating a Canon RC-1 Remote
|
||||||
// Data from: http://www.doc-diy.net/photo/rc-1_hacked/
|
// Data from: http://www.doc-diy.net/photo/rc-1_hacked/
|
||||||
// #define PHOTOGRAPH_PIN 23
|
// #define PHOTOGRAPH_PIN 23
|
||||||
|
@ -864,4 +740,4 @@ const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of
|
||||||
#include "Configuration_adv.h"
|
#include "Configuration_adv.h"
|
||||||
#include "thermistortables.h"
|
#include "thermistortables.h"
|
||||||
|
|
||||||
#endif //__CONFIGURATION_H
|
#endif //CONFIGURATION_H
|
||||||
|
|
|
@ -1,6 +1,8 @@
|
||||||
#ifndef CONFIGURATION_ADV_H
|
#ifndef CONFIGURATION_ADV_H
|
||||||
#define CONFIGURATION_ADV_H
|
#define CONFIGURATION_ADV_H
|
||||||
|
|
||||||
|
#include "Conditionals.h"
|
||||||
|
|
||||||
//===========================================================================
|
//===========================================================================
|
||||||
//=============================Thermal Settings ============================
|
//=============================Thermal Settings ============================
|
||||||
//===========================================================================
|
//===========================================================================
|
||||||
|
@ -89,54 +91,6 @@
|
||||||
|
|
||||||
#define ENDSTOPS_ONLY_FOR_HOMING // If defined the endstops will only be used for homing
|
#define ENDSTOPS_ONLY_FOR_HOMING // If defined the endstops will only be used for homing
|
||||||
|
|
||||||
|
|
||||||
//// AUTOSET LOCATIONS OF LIMIT SWITCHES
|
|
||||||
//// Added by ZetaPhoenix 09-15-2012
|
|
||||||
#ifdef MANUAL_HOME_POSITIONS // Use manual limit switch locations
|
|
||||||
#define X_HOME_POS MANUAL_X_HOME_POS
|
|
||||||
#define Y_HOME_POS MANUAL_Y_HOME_POS
|
|
||||||
#define Z_HOME_POS MANUAL_Z_HOME_POS
|
|
||||||
#else //Set min/max homing switch positions based upon homing direction and min/max travel limits
|
|
||||||
//X axis
|
|
||||||
#if X_HOME_DIR == -1
|
|
||||||
#ifdef BED_CENTER_AT_0_0
|
|
||||||
#define X_HOME_POS X_MAX_LENGTH * -0.5
|
|
||||||
#else
|
|
||||||
#define X_HOME_POS X_MIN_POS
|
|
||||||
#endif //BED_CENTER_AT_0_0
|
|
||||||
#else
|
|
||||||
#ifdef BED_CENTER_AT_0_0
|
|
||||||
#define X_HOME_POS X_MAX_LENGTH * 0.5
|
|
||||||
#else
|
|
||||||
#define X_HOME_POS X_MAX_POS
|
|
||||||
#endif //BED_CENTER_AT_0_0
|
|
||||||
#endif //X_HOME_DIR == -1
|
|
||||||
|
|
||||||
//Y axis
|
|
||||||
#if Y_HOME_DIR == -1
|
|
||||||
#ifdef BED_CENTER_AT_0_0
|
|
||||||
#define Y_HOME_POS Y_MAX_LENGTH * -0.5
|
|
||||||
#else
|
|
||||||
#define Y_HOME_POS Y_MIN_POS
|
|
||||||
#endif //BED_CENTER_AT_0_0
|
|
||||||
#else
|
|
||||||
#ifdef BED_CENTER_AT_0_0
|
|
||||||
#define Y_HOME_POS Y_MAX_LENGTH * 0.5
|
|
||||||
#else
|
|
||||||
#define Y_HOME_POS Y_MAX_POS
|
|
||||||
#endif //BED_CENTER_AT_0_0
|
|
||||||
#endif //Y_HOME_DIR == -1
|
|
||||||
|
|
||||||
// Z axis
|
|
||||||
#if Z_HOME_DIR == -1 //BED_CENTER_AT_0_0 not used
|
|
||||||
#define Z_HOME_POS Z_MIN_POS
|
|
||||||
#else
|
|
||||||
#define Z_HOME_POS Z_MAX_POS
|
|
||||||
#endif //Z_HOME_DIR == -1
|
|
||||||
#endif //End auto min/max positions
|
|
||||||
//END AUTOSET LOCATIONS OF LIMIT SWITCHES -ZP
|
|
||||||
|
|
||||||
|
|
||||||
//#define Z_LATE_ENABLE // Enable Z the last moment. Needed if your Z driver overheats.
|
//#define Z_LATE_ENABLE // Enable Z the last moment. Needed if your Z driver overheats.
|
||||||
|
|
||||||
// A single Z stepper driver is usually used to drive 2 stepper motors.
|
// A single Z stepper driver is usually used to drive 2 stepper motors.
|
||||||
|
@ -146,26 +100,12 @@
|
||||||
// On a RAMPS (or other 5 driver) motherboard, using this feature will limit you to using 1 extruder.
|
// On a RAMPS (or other 5 driver) motherboard, using this feature will limit you to using 1 extruder.
|
||||||
//#define Z_DUAL_STEPPER_DRIVERS
|
//#define Z_DUAL_STEPPER_DRIVERS
|
||||||
|
|
||||||
#ifdef Z_DUAL_STEPPER_DRIVERS
|
|
||||||
#undef EXTRUDERS
|
|
||||||
#define EXTRUDERS 1
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// Same again but for Y Axis.
|
// Same again but for Y Axis.
|
||||||
//#define Y_DUAL_STEPPER_DRIVERS
|
//#define Y_DUAL_STEPPER_DRIVERS
|
||||||
|
|
||||||
// Define if the two Y drives need to rotate in opposite directions
|
// Define if the two Y drives need to rotate in opposite directions
|
||||||
#define INVERT_Y2_VS_Y_DIR true
|
#define INVERT_Y2_VS_Y_DIR true
|
||||||
|
|
||||||
#ifdef Y_DUAL_STEPPER_DRIVERS
|
|
||||||
#undef EXTRUDERS
|
|
||||||
#define EXTRUDERS 1
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if defined (Z_DUAL_STEPPER_DRIVERS) && defined (Y_DUAL_STEPPER_DRIVERS)
|
|
||||||
#error "You cannot have dual drivers for both Y and Z"
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// Enable this for dual x-carriage printers.
|
// Enable this for dual x-carriage printers.
|
||||||
// A dual x-carriage design has the advantage that the inactive extruder can be parked which
|
// A dual x-carriage design has the advantage that the inactive extruder can be parked which
|
||||||
// prevents hot-end ooze contaminating the print. It also reduces the weight of each x-carriage
|
// prevents hot-end ooze contaminating the print. It also reduces the weight of each x-carriage
|
||||||
|
@ -218,31 +158,22 @@
|
||||||
//#define QUICK_HOME //if this is defined, if both x and y are to be homed, a diagonal move will be performed initially.
|
//#define QUICK_HOME //if this is defined, if both x and y are to be homed, a diagonal move will be performed initially.
|
||||||
|
|
||||||
#define AXIS_RELATIVE_MODES {false, false, false, false}
|
#define AXIS_RELATIVE_MODES {false, false, false, false}
|
||||||
#ifdef CONFIG_STEPPERS_TOSHIBA
|
|
||||||
#define MAX_STEP_FREQUENCY 10000 // Max step frequency for Toshiba Stepper Controllers
|
|
||||||
#else
|
|
||||||
#define MAX_STEP_FREQUENCY 40000 // Max step frequency for Ultimaker (5000 pps / half step)
|
|
||||||
#endif
|
|
||||||
//By default pololu step drivers require an active high signal. However, some high power drivers require an active low signal as step.
|
//By default pololu step drivers require an active high signal. However, some high power drivers require an active low signal as step.
|
||||||
#define INVERT_X_STEP_PIN false
|
#define INVERT_X_STEP_PIN false
|
||||||
#define INVERT_Y_STEP_PIN false
|
#define INVERT_Y_STEP_PIN false
|
||||||
#define INVERT_Z_STEP_PIN false
|
#define INVERT_Z_STEP_PIN false
|
||||||
#define INVERT_E_STEP_PIN false
|
#define INVERT_E_STEP_PIN false
|
||||||
|
|
||||||
//default stepper release if idle. Set to 0 to deactivate.
|
// Default stepper release if idle. Set to 0 to deactivate.
|
||||||
#define DEFAULT_STEPPER_DEACTIVE_TIME 60
|
#define DEFAULT_STEPPER_DEACTIVE_TIME 60
|
||||||
|
|
||||||
#define DEFAULT_MINIMUMFEEDRATE 0.0 // minimum feedrate
|
#define DEFAULT_MINIMUMFEEDRATE 0.0 // minimum feedrate
|
||||||
#define DEFAULT_MINTRAVELFEEDRATE 0.0
|
#define DEFAULT_MINTRAVELFEEDRATE 0.0
|
||||||
|
|
||||||
// Feedrates for manual moves along X, Y, Z, E from panel
|
|
||||||
#ifdef ULTIPANEL
|
#ifdef ULTIPANEL
|
||||||
#define MANUAL_FEEDRATE {50*60, 50*60, 4*60, 60} // set the speeds for manual moves (mm/min)
|
#define MANUAL_FEEDRATE {50*60, 50*60, 4*60, 60} // Feedrates for manual moves along X, Y, Z, E from panel
|
||||||
#endif
|
#define ULTIPANEL_FEEDMULTIPLY // Comment to disable setting feedrate multiplier via encoder
|
||||||
|
|
||||||
//Comment to disable setting feedrate multiplier via encoder
|
|
||||||
#ifdef ULTIPANEL
|
|
||||||
#define ULTIPANEL_FEEDMULTIPLY
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// minimum time in microseconds that a movement needs to take if the buffer is emptied.
|
// minimum time in microseconds that a movement needs to take if the buffer is emptied.
|
||||||
|
@ -261,13 +192,6 @@
|
||||||
// if unwanted behavior is observed on a user's machine when running at very slow speeds.
|
// if unwanted behavior is observed on a user's machine when running at very slow speeds.
|
||||||
#define MINIMUM_PLANNER_SPEED 0.05// (mm/sec)
|
#define MINIMUM_PLANNER_SPEED 0.05// (mm/sec)
|
||||||
|
|
||||||
// MS1 MS2 Stepper Driver Microstepping mode table
|
|
||||||
#define MICROSTEP1 LOW,LOW
|
|
||||||
#define MICROSTEP2 HIGH,LOW
|
|
||||||
#define MICROSTEP4 LOW,HIGH
|
|
||||||
#define MICROSTEP8 HIGH,HIGH
|
|
||||||
#define MICROSTEP16 HIGH,HIGH
|
|
||||||
|
|
||||||
// Microstep setting (Only functional when stepper driver microstep pins are connected to MCU.
|
// Microstep setting (Only functional when stepper driver microstep pins are connected to MCU.
|
||||||
#define MICROSTEP_MODES {16,16,16,16,16} // [1,2,4,8,16]
|
#define MICROSTEP_MODES {16,16,16,16,16} // [1,2,4,8,16]
|
||||||
|
|
||||||
|
@ -313,12 +237,6 @@
|
||||||
#define PROGRESS_MSG_EXPIRE 0
|
#define PROGRESS_MSG_EXPIRE 0
|
||||||
// Enable this to show messages for MSG_TIME then hide them
|
// Enable this to show messages for MSG_TIME then hide them
|
||||||
//#define PROGRESS_MSG_ONCE
|
//#define PROGRESS_MSG_ONCE
|
||||||
#ifdef DOGLCD
|
|
||||||
#warning LCD_PROGRESS_BAR does not apply to graphical displays at this time.
|
|
||||||
#endif
|
|
||||||
#ifdef FILAMENT_LCD_DISPLAY
|
|
||||||
#error LCD_PROGRESS_BAR and FILAMENT_LCD_DISPLAY are not fully compatible. Comment out this line to use both.
|
|
||||||
#endif
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// The hardware watchdog should reset the microcontroller disabling all outputs, in case the firmware gets stuck and doesn't do temperature regulation.
|
// The hardware watchdog should reset the microcontroller disabling all outputs, in case the firmware gets stuck and doesn't do temperature regulation.
|
||||||
|
@ -342,16 +260,6 @@
|
||||||
#define BABYSTEP_XY //not only z, but also XY in the menu. more clutter, more functions
|
#define BABYSTEP_XY //not only z, but also XY in the menu. more clutter, more functions
|
||||||
#define BABYSTEP_INVERT_Z false //true for inverse movements in Z
|
#define BABYSTEP_INVERT_Z false //true for inverse movements in Z
|
||||||
#define BABYSTEP_Z_MULTIPLICATOR 2 //faster z movements
|
#define BABYSTEP_Z_MULTIPLICATOR 2 //faster z movements
|
||||||
|
|
||||||
#ifdef COREXY
|
|
||||||
#error BABYSTEPPING not implemented for COREXY yet.
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef DELTA
|
|
||||||
#ifdef BABYSTEP_XY
|
|
||||||
#error BABYSTEPPING only implemented for Z axis on deltabots.
|
|
||||||
#endif
|
|
||||||
#endif
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// extruder advance constant (s2/mm3)
|
// extruder advance constant (s2/mm3)
|
||||||
|
@ -365,12 +273,8 @@
|
||||||
|
|
||||||
#ifdef ADVANCE
|
#ifdef ADVANCE
|
||||||
#define EXTRUDER_ADVANCE_K .0
|
#define EXTRUDER_ADVANCE_K .0
|
||||||
|
|
||||||
#define D_FILAMENT 2.85
|
#define D_FILAMENT 2.85
|
||||||
#define STEPS_MM_E 836
|
#define STEPS_MM_E 836
|
||||||
#define EXTRUSION_AREA (0.25 * D_FILAMENT * D_FILAMENT * 3.14159)
|
|
||||||
#define STEPS_PER_CUBIC_MM_E (axis_steps_per_unit[E_AXIS]/ EXTRUSION_AREA)
|
|
||||||
|
|
||||||
#endif // ADVANCE
|
#endif // ADVANCE
|
||||||
|
|
||||||
// Arc interpretation settings:
|
// Arc interpretation settings:
|
||||||
|
@ -385,26 +289,6 @@ const unsigned int dropsegments=5; //everything with less than this number of st
|
||||||
// be commented out otherwise
|
// be commented out otherwise
|
||||||
#define SDCARDDETECTINVERTED
|
#define SDCARDDETECTINVERTED
|
||||||
|
|
||||||
#ifdef ULTIPANEL
|
|
||||||
#undef SDCARDDETECTINVERTED
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// Power Signal Control Definitions
|
|
||||||
// By default use ATX definition
|
|
||||||
#ifndef POWER_SUPPLY
|
|
||||||
#define POWER_SUPPLY 1
|
|
||||||
#endif
|
|
||||||
// 1 = ATX
|
|
||||||
#if (POWER_SUPPLY == 1)
|
|
||||||
#define PS_ON_AWAKE LOW
|
|
||||||
#define PS_ON_ASLEEP HIGH
|
|
||||||
#endif
|
|
||||||
// 2 = X-Box 360 203W
|
|
||||||
#if (POWER_SUPPLY == 2)
|
|
||||||
#define PS_ON_AWAKE HIGH
|
|
||||||
#define PS_ON_ASLEEP LOW
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// Control heater 0 and heater 1 in parallel.
|
// Control heater 0 and heater 1 in parallel.
|
||||||
//#define HEATERS_PARALLEL
|
//#define HEATERS_PARALLEL
|
||||||
|
|
||||||
|
@ -444,9 +328,9 @@ const unsigned int dropsegments=5; //everything with less than this number of st
|
||||||
#define RETRACT_RECOVER_FEEDRATE 8 //default feedrate for recovering from retraction (mm/s)
|
#define RETRACT_RECOVER_FEEDRATE 8 //default feedrate for recovering from retraction (mm/s)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
//adds support for experimental filament exchange support M600; requires display
|
// Add support for experimental filament exchange support M600; requires display
|
||||||
#ifdef ULTIPANEL
|
#ifdef ULTIPANEL
|
||||||
#define FILAMENTCHANGEENABLE
|
//#define FILAMENTCHANGEENABLE
|
||||||
#ifdef FILAMENTCHANGEENABLE
|
#ifdef FILAMENTCHANGEENABLE
|
||||||
#define FILAMENTCHANGE_XPOS 3
|
#define FILAMENTCHANGE_XPOS 3
|
||||||
#define FILAMENTCHANGE_YPOS 3
|
#define FILAMENTCHANGE_YPOS 3
|
||||||
|
@ -456,86 +340,7 @@ const unsigned int dropsegments=5; //everything with less than this number of st
|
||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef FILAMENTCHANGEENABLE
|
#include "Conditionals.h"
|
||||||
#ifdef EXTRUDER_RUNOUT_PREVENT
|
#include "SanityCheck.h"
|
||||||
#error EXTRUDER_RUNOUT_PREVENT currently incompatible with FILAMENTCHANGE
|
|
||||||
#endif
|
|
||||||
#endif
|
|
||||||
|
|
||||||
//===========================================================================
|
#endif //CONFIGURATION_ADV_H
|
||||||
//============================= Define Defines ============================
|
|
||||||
//===========================================================================
|
|
||||||
|
|
||||||
#if defined (ENABLE_AUTO_BED_LEVELING) && defined (DELTA)
|
|
||||||
#error "Bed Auto Leveling is still not compatible with Delta Kinematics."
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if EXTRUDERS > 1 && defined TEMP_SENSOR_1_AS_REDUNDANT
|
|
||||||
#error "You cannot use TEMP_SENSOR_1_AS_REDUNDANT if EXTRUDERS > 1"
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if EXTRUDERS > 1 && defined HEATERS_PARALLEL
|
|
||||||
#error "You cannot use HEATERS_PARALLEL if EXTRUDERS > 1"
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if TEMP_SENSOR_0 > 0
|
|
||||||
#define THERMISTORHEATER_0 TEMP_SENSOR_0
|
|
||||||
#define HEATER_0_USES_THERMISTOR
|
|
||||||
#endif
|
|
||||||
#if TEMP_SENSOR_1 > 0
|
|
||||||
#define THERMISTORHEATER_1 TEMP_SENSOR_1
|
|
||||||
#define HEATER_1_USES_THERMISTOR
|
|
||||||
#endif
|
|
||||||
#if TEMP_SENSOR_2 > 0
|
|
||||||
#define THERMISTORHEATER_2 TEMP_SENSOR_2
|
|
||||||
#define HEATER_2_USES_THERMISTOR
|
|
||||||
#endif
|
|
||||||
#if TEMP_SENSOR_3 > 0
|
|
||||||
#define THERMISTORHEATER_3 TEMP_SENSOR_3
|
|
||||||
#define HEATER_3_USES_THERMISTOR
|
|
||||||
#endif
|
|
||||||
#if TEMP_SENSOR_BED > 0
|
|
||||||
#define THERMISTORBED TEMP_SENSOR_BED
|
|
||||||
#define BED_USES_THERMISTOR
|
|
||||||
#endif
|
|
||||||
#if TEMP_SENSOR_0 == -1
|
|
||||||
#define HEATER_0_USES_AD595
|
|
||||||
#endif
|
|
||||||
#if TEMP_SENSOR_1 == -1
|
|
||||||
#define HEATER_1_USES_AD595
|
|
||||||
#endif
|
|
||||||
#if TEMP_SENSOR_2 == -1
|
|
||||||
#define HEATER_2_USES_AD595
|
|
||||||
#endif
|
|
||||||
#if TEMP_SENSOR_3 == -1
|
|
||||||
#define HEATER_3_USES_AD595
|
|
||||||
#endif
|
|
||||||
#if TEMP_SENSOR_BED == -1
|
|
||||||
#define BED_USES_AD595
|
|
||||||
#endif
|
|
||||||
#if TEMP_SENSOR_0 == -2
|
|
||||||
#define HEATER_0_USES_MAX6675
|
|
||||||
#endif
|
|
||||||
#if TEMP_SENSOR_0 == 0
|
|
||||||
#undef HEATER_0_MINTEMP
|
|
||||||
#undef HEATER_0_MAXTEMP
|
|
||||||
#endif
|
|
||||||
#if TEMP_SENSOR_1 == 0
|
|
||||||
#undef HEATER_1_MINTEMP
|
|
||||||
#undef HEATER_1_MAXTEMP
|
|
||||||
#endif
|
|
||||||
#if TEMP_SENSOR_2 == 0
|
|
||||||
#undef HEATER_2_MINTEMP
|
|
||||||
#undef HEATER_2_MAXTEMP
|
|
||||||
#endif
|
|
||||||
#if TEMP_SENSOR_3 == 0
|
|
||||||
#undef HEATER_3_MINTEMP
|
|
||||||
#undef HEATER_3_MAXTEMP
|
|
||||||
#endif
|
|
||||||
#if TEMP_SENSOR_BED == 0
|
|
||||||
#undef BED_MINTEMP
|
|
||||||
#undef BED_MAXTEMP
|
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
||||||
#endif //__CONFIGURATION_ADV_H
|
|
||||||
|
|
|
@ -351,15 +351,6 @@ your extruder heater takes 2 minutes to hit the target on heating.
|
||||||
// #define ENDSTOPPULLUP_ZMIN
|
// #define ENDSTOPPULLUP_ZMIN
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef ENDSTOPPULLUPS
|
|
||||||
#define ENDSTOPPULLUP_XMAX
|
|
||||||
#define ENDSTOPPULLUP_YMAX
|
|
||||||
#define ENDSTOPPULLUP_ZMAX
|
|
||||||
#define ENDSTOPPULLUP_XMIN
|
|
||||||
#define ENDSTOPPULLUP_YMIN
|
|
||||||
#define ENDSTOPPULLUP_ZMIN
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// The pullups are needed if you directly connect a mechanical endswitch between the signal and ground pins.
|
// The pullups are needed if you directly connect a mechanical endswitch between the signal and ground pins.
|
||||||
const bool X_MIN_ENDSTOP_INVERTING = true; // set to true to invert the logic of the endstop.
|
const bool X_MIN_ENDSTOP_INVERTING = true; // set to true to invert the logic of the endstop.
|
||||||
const bool Y_MIN_ENDSTOP_INVERTING = true; // set to true to invert the logic of the endstop.
|
const bool Y_MIN_ENDSTOP_INVERTING = true; // set to true to invert the logic of the endstop.
|
||||||
|
@ -408,10 +399,32 @@ const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of
|
||||||
#define Z_MAX_POS 225
|
#define Z_MAX_POS 225
|
||||||
#define Z_MIN_POS MANUAL_Z_HOME_POS
|
#define Z_MIN_POS MANUAL_Z_HOME_POS
|
||||||
|
|
||||||
#define X_MAX_LENGTH (X_MAX_POS - X_MIN_POS)
|
//===========================================================================
|
||||||
#define Y_MAX_LENGTH (Y_MAX_POS - Y_MIN_POS)
|
//============================= Filament Runout Sensor ======================
|
||||||
#define Z_MAX_LENGTH (Z_MAX_POS - Z_MIN_POS)
|
//===========================================================================
|
||||||
|
//#define FILAMENT_RUNOUT_SENSOR // Uncomment for defining a filament runout sensor such as a mechanical or opto endstop to check the existence of filament
|
||||||
|
// In RAMPS uses servo pin 2. Can be changed in pins file. For other boards pin definition should be made.
|
||||||
|
// It is assumed that when logic high = filament available
|
||||||
|
// when logic low = filament ran out
|
||||||
|
//const bool FIL_RUNOUT_INVERTING = true; // Should be uncommented and true or false should assigned
|
||||||
|
//#define ENDSTOPPULLUP_FIL_RUNOUT // Uncomment to use internal pullup for filament runout pins if the sensor is defined.
|
||||||
|
|
||||||
|
//===========================================================================
|
||||||
|
//============================ Manual Bed Leveling ==========================
|
||||||
|
//===========================================================================
|
||||||
|
|
||||||
|
// #define MANUAL_BED_LEVELING // Add display menu option for bed leveling
|
||||||
|
// #define MESH_BED_LEVELING // Enable mesh bed leveling
|
||||||
|
|
||||||
|
#if defined(MESH_BED_LEVELING)
|
||||||
|
#define MESH_MIN_X 10
|
||||||
|
#define MESH_MAX_X (X_MAX_POS - MESH_MIN_X)
|
||||||
|
#define MESH_MIN_Y 10
|
||||||
|
#define MESH_MAX_Y (Y_MAX_POS - MESH_MIN_Y)
|
||||||
|
#define MESH_NUM_X_POINTS 3 // Don't use more than 7 points per axis, implementation limited
|
||||||
|
#define MESH_NUM_Y_POINTS 3
|
||||||
|
#define MESH_HOME_SEARCH_Z 4 // Z after Home, bed somewhere below but above 0.0
|
||||||
|
#endif // MESH_BED_LEVELING
|
||||||
|
|
||||||
//===========================================================================
|
//===========================================================================
|
||||||
//============================= Bed Auto Leveling ===========================
|
//============================= Bed Auto Leveling ===========================
|
||||||
|
@ -439,12 +452,6 @@ const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of
|
||||||
|
|
||||||
#ifdef AUTO_BED_LEVELING_GRID
|
#ifdef AUTO_BED_LEVELING_GRID
|
||||||
|
|
||||||
// Use one of these defines to specify the origin
|
|
||||||
// for a topographical map to be printed for your bed.
|
|
||||||
enum { OriginBackLeft, OriginFrontLeft, OriginBackRight, OriginFrontRight };
|
|
||||||
#define TOPO_ORIGIN OriginFrontLeft
|
|
||||||
|
|
||||||
// The edges of the rectangle in which to probe
|
|
||||||
#define LEFT_PROBE_BED_POSITION 15
|
#define LEFT_PROBE_BED_POSITION 15
|
||||||
#define RIGHT_PROBE_BED_POSITION 170
|
#define RIGHT_PROBE_BED_POSITION 170
|
||||||
#define FRONT_PROBE_BED_POSITION 20
|
#define FRONT_PROBE_BED_POSITION 20
|
||||||
|
@ -650,112 +657,17 @@ const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of
|
||||||
// REMEMBER TO INSTALL LiquidCrystal_I2C.h in your ARDUINO library folder: https://github.com/kiyoshigawa/LiquidCrystal_I2C
|
// REMEMBER TO INSTALL LiquidCrystal_I2C.h in your ARDUINO library folder: https://github.com/kiyoshigawa/LiquidCrystal_I2C
|
||||||
//#define RA_CONTROL_PANEL
|
//#define RA_CONTROL_PANEL
|
||||||
|
|
||||||
//automatic expansion
|
/**
|
||||||
#if defined (MAKRPANEL)
|
* I2C Panels
|
||||||
#define DOGLCD
|
*/
|
||||||
#define SDSUPPORT
|
|
||||||
#define ULTIPANEL
|
|
||||||
#define NEWPANEL
|
|
||||||
#define DEFAULT_LCD_CONTRAST 17
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if defined(miniVIKI) || defined(VIKI2)
|
|
||||||
#define ULTRA_LCD //general LCD support, also 16x2
|
|
||||||
#define DOGLCD // Support for SPI LCD 128x64 (Controller ST7565R graphic Display Family)
|
|
||||||
#define ULTIMAKERCONTROLLER //as available from the Ultimaker online store.
|
|
||||||
|
|
||||||
#ifdef miniVIKI
|
|
||||||
#define DEFAULT_LCD_CONTRAST 95
|
|
||||||
#else
|
|
||||||
#define DEFAULT_LCD_CONTRAST 40
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#define ENCODER_PULSES_PER_STEP 4
|
|
||||||
#define ENCODER_STEPS_PER_MENU_ITEM 1
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if defined (PANEL_ONE)
|
|
||||||
#define SDSUPPORT
|
|
||||||
#define ULTIMAKERCONTROLLER
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if defined (REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER)
|
|
||||||
#define DOGLCD
|
|
||||||
#define U8GLIB_ST7920
|
|
||||||
#define REPRAP_DISCOUNT_SMART_CONTROLLER
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if defined(ULTIMAKERCONTROLLER) || defined(REPRAP_DISCOUNT_SMART_CONTROLLER) || defined(G3D_PANEL)
|
|
||||||
#define ULTIPANEL
|
|
||||||
#define NEWPANEL
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if defined(REPRAPWORLD_KEYPAD)
|
|
||||||
#define NEWPANEL
|
|
||||||
#define ULTIPANEL
|
|
||||||
#endif
|
|
||||||
#if defined(RA_CONTROL_PANEL)
|
|
||||||
#define ULTIPANEL
|
|
||||||
#define NEWPANEL
|
|
||||||
#define LCD_I2C_TYPE_PCA8574
|
|
||||||
#define LCD_I2C_ADDRESS 0x27 // I2C Address of the port expander
|
|
||||||
#endif
|
|
||||||
|
|
||||||
//I2C PANELS
|
|
||||||
|
|
||||||
//#define LCD_I2C_SAINSMART_YWROBOT
|
//#define LCD_I2C_SAINSMART_YWROBOT
|
||||||
#ifdef LCD_I2C_SAINSMART_YWROBOT
|
|
||||||
// This uses the LiquidCrystal_I2C library ( https://bitbucket.org/fmalpartida/new-liquidcrystal/wiki/Home )
|
|
||||||
// Make sure it is placed in the Arduino libraries directory.
|
|
||||||
#define LCD_I2C_TYPE_PCF8575
|
|
||||||
#define LCD_I2C_ADDRESS 0x27 // I2C Address of the port expander
|
|
||||||
#define NEWPANEL
|
|
||||||
#define ULTIPANEL
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// PANELOLU2 LCD with status LEDs, separate encoder and click inputs
|
// PANELOLU2 LCD with status LEDs, separate encoder and click inputs
|
||||||
//#define LCD_I2C_PANELOLU2
|
//#define LCD_I2C_PANELOLU2
|
||||||
#ifdef LCD_I2C_PANELOLU2
|
|
||||||
// This uses the LiquidTWI2 library v1.2.3 or later ( https://github.com/lincomatic/LiquidTWI2 )
|
|
||||||
// Make sure the LiquidTWI2 directory is placed in the Arduino or Sketchbook libraries subdirectory.
|
|
||||||
// (v1.2.3 no longer requires you to define PANELOLU in the LiquidTWI2.h library header file)
|
|
||||||
// Note: The PANELOLU2 encoder click input can either be directly connected to a pin
|
|
||||||
// (if BTN_ENC defined to != -1) or read through I2C (when BTN_ENC == -1).
|
|
||||||
#define LCD_I2C_TYPE_MCP23017
|
|
||||||
#define LCD_I2C_ADDRESS 0x20 // I2C Address of the port expander
|
|
||||||
#define LCD_USE_I2C_BUZZER //comment out to disable buzzer on LCD
|
|
||||||
#define NEWPANEL
|
|
||||||
#define ULTIPANEL
|
|
||||||
|
|
||||||
#ifndef ENCODER_PULSES_PER_STEP
|
|
||||||
#define ENCODER_PULSES_PER_STEP 4
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifndef ENCODER_STEPS_PER_MENU_ITEM
|
|
||||||
#define ENCODER_STEPS_PER_MENU_ITEM 1
|
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
||||||
#ifdef LCD_USE_I2C_BUZZER
|
|
||||||
#define LCD_FEEDBACK_FREQUENCY_HZ 1000
|
|
||||||
#define LCD_FEEDBACK_FREQUENCY_DURATION_MS 100
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// Panucatt VIKI LCD with status LEDs, integrated click & L/R/U/P buttons, separate encoder inputs
|
// Panucatt VIKI LCD with status LEDs, integrated click & L/R/U/P buttons, separate encoder inputs
|
||||||
//#define LCD_I2C_VIKI
|
//#define LCD_I2C_VIKI
|
||||||
#ifdef LCD_I2C_VIKI
|
|
||||||
// This uses the LiquidTWI2 library v1.2.3 or later ( https://github.com/lincomatic/LiquidTWI2 )
|
|
||||||
// Make sure the LiquidTWI2 directory is placed in the Arduino or Sketchbook libraries subdirectory.
|
|
||||||
// Note: The pause/stop/resume LCD button pin should be connected to the Arduino
|
|
||||||
// BTN_ENC pin (or set BTN_ENC to -1 if not used)
|
|
||||||
#define LCD_I2C_TYPE_MCP23017
|
|
||||||
#define LCD_I2C_ADDRESS 0x20 // I2C Address of the port expander
|
|
||||||
#define LCD_USE_I2C_BUZZER //comment out to disable buzzer on LCD (requires LiquidTWI2 v1.2.3 or later)
|
|
||||||
#define NEWPANEL
|
|
||||||
#define ULTIPANEL
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// Shift register panels
|
// Shift register panels
|
||||||
// ---------------------
|
// ---------------------
|
||||||
|
@ -763,51 +675,10 @@ const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of
|
||||||
// https://bitbucket.org/fmalpartida/new-liquidcrystal/wiki/schematics#!shiftregister-connection
|
// https://bitbucket.org/fmalpartida/new-liquidcrystal/wiki/schematics#!shiftregister-connection
|
||||||
|
|
||||||
//#define SAV_3DLCD
|
//#define SAV_3DLCD
|
||||||
#ifdef SAV_3DLCD
|
|
||||||
#define SR_LCD_2W_NL // Non latching 2 wire shiftregister
|
|
||||||
#define NEWPANEL
|
|
||||||
#define ULTIPANEL
|
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
||||||
#ifdef ULTIPANEL
|
|
||||||
// #define NEWPANEL //enable this if you have a click-encoder panel
|
|
||||||
#define SDSUPPORT
|
|
||||||
#define ULTRA_LCD
|
|
||||||
#ifdef DOGLCD // Change number of lines to match the DOG graphic display
|
|
||||||
#define LCD_WIDTH 22
|
|
||||||
#define LCD_HEIGHT 5
|
|
||||||
#else
|
|
||||||
#define LCD_WIDTH 20
|
|
||||||
#define LCD_HEIGHT 4
|
|
||||||
#endif
|
|
||||||
#else //no panel but just LCD
|
|
||||||
#ifdef ULTRA_LCD
|
|
||||||
#ifdef DOGLCD // Change number of lines to match the 128x64 graphics display
|
|
||||||
#define LCD_WIDTH 22
|
|
||||||
#define LCD_HEIGHT 5
|
|
||||||
#else
|
|
||||||
#define LCD_WIDTH 16
|
|
||||||
#define LCD_HEIGHT 2
|
|
||||||
#endif
|
|
||||||
#endif
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// default LCD contrast for dogm-like LCD displays
|
|
||||||
#ifdef DOGLCD
|
|
||||||
# ifndef DEFAULT_LCD_CONTRAST
|
|
||||||
# define DEFAULT_LCD_CONTRAST 32
|
|
||||||
# endif
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// Increase the FAN pwm frequency. Removes the PWM noise but increases heating in the FET/Arduino
|
// Increase the FAN pwm frequency. Removes the PWM noise but increases heating in the FET/Arduino
|
||||||
//#define FAST_PWM_FAN
|
//#define FAST_PWM_FAN
|
||||||
|
|
||||||
// Temperature status LEDs that display the hotend and bet temperature.
|
|
||||||
// If all hotends and bed temperature and temperature setpoint are < 54C then the BLUE led is on.
|
|
||||||
// Otherwise the RED led is on. There is 1C hysteresis.
|
|
||||||
//#define TEMP_STAT_LEDS
|
|
||||||
|
|
||||||
// Use software PWM to drive the fan, as for the heaters. This uses a very low frequency
|
// Use software PWM to drive the fan, as for the heaters. This uses a very low frequency
|
||||||
// which is not ass annoying as with the hardware PWM. On the other hand, if this frequency
|
// which is not ass annoying as with the hardware PWM. On the other hand, if this frequency
|
||||||
// is too low, you should also increment SOFT_PWM_SCALE.
|
// is too low, you should also increment SOFT_PWM_SCALE.
|
||||||
|
@ -819,6 +690,11 @@ const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of
|
||||||
// at zero value, there are 128 effective control positions.
|
// at zero value, there are 128 effective control positions.
|
||||||
#define SOFT_PWM_SCALE 0
|
#define SOFT_PWM_SCALE 0
|
||||||
|
|
||||||
|
// Temperature status LEDs that display the hotend and bet temperature.
|
||||||
|
// If all hotends and bed temperature and temperature setpoint are < 54C then the BLUE led is on.
|
||||||
|
// Otherwise the RED led is on. There is 1C hysteresis.
|
||||||
|
//#define TEMP_STAT_LEDS
|
||||||
|
|
||||||
// M240 Triggers a camera by emulating a Canon RC-1 Remote
|
// M240 Triggers a camera by emulating a Canon RC-1 Remote
|
||||||
// Data from: http://www.doc-diy.net/photo/rc-1_hacked/
|
// Data from: http://www.doc-diy.net/photo/rc-1_hacked/
|
||||||
// #define PHOTOGRAPH_PIN 23
|
// #define PHOTOGRAPH_PIN 23
|
||||||
|
@ -890,4 +766,4 @@ const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of
|
||||||
#include "Configuration_adv.h"
|
#include "Configuration_adv.h"
|
||||||
#include "thermistortables.h"
|
#include "thermistortables.h"
|
||||||
|
|
||||||
#endif //__CONFIGURATION_H
|
#endif //CONFIGURATION_H
|
||||||
|
|
|
@ -1,6 +1,8 @@
|
||||||
#ifndef CONFIGURATION_ADV_H
|
#ifndef CONFIGURATION_ADV_H
|
||||||
#define CONFIGURATION_ADV_H
|
#define CONFIGURATION_ADV_H
|
||||||
|
|
||||||
|
#include "Conditionals.h"
|
||||||
|
|
||||||
//===========================================================================
|
//===========================================================================
|
||||||
//=============================Thermal Settings ============================
|
//=============================Thermal Settings ============================
|
||||||
//===========================================================================
|
//===========================================================================
|
||||||
|
@ -89,54 +91,6 @@
|
||||||
|
|
||||||
#define ENDSTOPS_ONLY_FOR_HOMING // If defined the endstops will only be used for homing
|
#define ENDSTOPS_ONLY_FOR_HOMING // If defined the endstops will only be used for homing
|
||||||
|
|
||||||
|
|
||||||
//// AUTOSET LOCATIONS OF LIMIT SWITCHES
|
|
||||||
//// Added by ZetaPhoenix 09-15-2012
|
|
||||||
#ifdef MANUAL_HOME_POSITIONS // Use manual limit switch locations
|
|
||||||
#define X_HOME_POS MANUAL_X_HOME_POS
|
|
||||||
#define Y_HOME_POS MANUAL_Y_HOME_POS
|
|
||||||
#define Z_HOME_POS MANUAL_Z_HOME_POS
|
|
||||||
#else //Set min/max homing switch positions based upon homing direction and min/max travel limits
|
|
||||||
//X axis
|
|
||||||
#if X_HOME_DIR == -1
|
|
||||||
#ifdef BED_CENTER_AT_0_0
|
|
||||||
#define X_HOME_POS X_MAX_LENGTH * -0.5
|
|
||||||
#else
|
|
||||||
#define X_HOME_POS X_MIN_POS
|
|
||||||
#endif //BED_CENTER_AT_0_0
|
|
||||||
#else
|
|
||||||
#ifdef BED_CENTER_AT_0_0
|
|
||||||
#define X_HOME_POS X_MAX_LENGTH * 0.5
|
|
||||||
#else
|
|
||||||
#define X_HOME_POS X_MAX_POS
|
|
||||||
#endif //BED_CENTER_AT_0_0
|
|
||||||
#endif //X_HOME_DIR == -1
|
|
||||||
|
|
||||||
//Y axis
|
|
||||||
#if Y_HOME_DIR == -1
|
|
||||||
#ifdef BED_CENTER_AT_0_0
|
|
||||||
#define Y_HOME_POS Y_MAX_LENGTH * -0.5
|
|
||||||
#else
|
|
||||||
#define Y_HOME_POS Y_MIN_POS
|
|
||||||
#endif //BED_CENTER_AT_0_0
|
|
||||||
#else
|
|
||||||
#ifdef BED_CENTER_AT_0_0
|
|
||||||
#define Y_HOME_POS Y_MAX_LENGTH * 0.5
|
|
||||||
#else
|
|
||||||
#define Y_HOME_POS Y_MAX_POS
|
|
||||||
#endif //BED_CENTER_AT_0_0
|
|
||||||
#endif //Y_HOME_DIR == -1
|
|
||||||
|
|
||||||
// Z axis
|
|
||||||
#if Z_HOME_DIR == -1 //BED_CENTER_AT_0_0 not used
|
|
||||||
#define Z_HOME_POS Z_MIN_POS
|
|
||||||
#else
|
|
||||||
#define Z_HOME_POS Z_MAX_POS
|
|
||||||
#endif //Z_HOME_DIR == -1
|
|
||||||
#endif //End auto min/max positions
|
|
||||||
//END AUTOSET LOCATIONS OF LIMIT SWITCHES -ZP
|
|
||||||
|
|
||||||
|
|
||||||
//#define Z_LATE_ENABLE // Enable Z the last moment. Needed if your Z driver overheats.
|
//#define Z_LATE_ENABLE // Enable Z the last moment. Needed if your Z driver overheats.
|
||||||
|
|
||||||
// A single Z stepper driver is usually used to drive 2 stepper motors.
|
// A single Z stepper driver is usually used to drive 2 stepper motors.
|
||||||
|
@ -146,26 +100,12 @@
|
||||||
// On a RAMPS (or other 5 driver) motherboard, using this feature will limit you to using 1 extruder.
|
// On a RAMPS (or other 5 driver) motherboard, using this feature will limit you to using 1 extruder.
|
||||||
//#define Z_DUAL_STEPPER_DRIVERS
|
//#define Z_DUAL_STEPPER_DRIVERS
|
||||||
|
|
||||||
#ifdef Z_DUAL_STEPPER_DRIVERS
|
|
||||||
#undef EXTRUDERS
|
|
||||||
#define EXTRUDERS 1
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// Same again but for Y Axis.
|
// Same again but for Y Axis.
|
||||||
//#define Y_DUAL_STEPPER_DRIVERS
|
//#define Y_DUAL_STEPPER_DRIVERS
|
||||||
|
|
||||||
// Define if the two Y drives need to rotate in opposite directions
|
// Define if the two Y drives need to rotate in opposite directions
|
||||||
#define INVERT_Y2_VS_Y_DIR true
|
#define INVERT_Y2_VS_Y_DIR true
|
||||||
|
|
||||||
#ifdef Y_DUAL_STEPPER_DRIVERS
|
|
||||||
#undef EXTRUDERS
|
|
||||||
#define EXTRUDERS 1
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if defined (Z_DUAL_STEPPER_DRIVERS) && defined (Y_DUAL_STEPPER_DRIVERS)
|
|
||||||
#error "You cannot have dual drivers for both Y and Z"
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// Enable this for dual x-carriage printers.
|
// Enable this for dual x-carriage printers.
|
||||||
// A dual x-carriage design has the advantage that the inactive extruder can be parked which
|
// A dual x-carriage design has the advantage that the inactive extruder can be parked which
|
||||||
// prevents hot-end ooze contaminating the print. It also reduces the weight of each x-carriage
|
// prevents hot-end ooze contaminating the print. It also reduces the weight of each x-carriage
|
||||||
|
@ -216,9 +156,6 @@
|
||||||
#define Z_HOME_RETRACT_MM 3
|
#define Z_HOME_RETRACT_MM 3
|
||||||
#define HOMING_BUMP_DIVISOR {10, 10, 20} // Re-Bump Speed Divisor (Divides the Homing Feedrate)
|
#define HOMING_BUMP_DIVISOR {10, 10, 20} // Re-Bump Speed Divisor (Divides the Homing Feedrate)
|
||||||
//#define QUICK_HOME //if this is defined, if both x and y are to be homed, a diagonal move will be performed initially.
|
//#define QUICK_HOME //if this is defined, if both x and y are to be homed, a diagonal move will be performed initially.
|
||||||
#ifdef SCARA
|
|
||||||
#define QUICK_HOME //SCARA needs Quickhome
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#define AXIS_RELATIVE_MODES {false, false, false, false}
|
#define AXIS_RELATIVE_MODES {false, false, false, false}
|
||||||
|
|
||||||
|
@ -230,20 +167,15 @@
|
||||||
#define INVERT_Z_STEP_PIN false
|
#define INVERT_Z_STEP_PIN false
|
||||||
#define INVERT_E_STEP_PIN false
|
#define INVERT_E_STEP_PIN false
|
||||||
|
|
||||||
//default stepper release if idle. Set to 0 to deactivate.
|
// Default stepper release if idle. Set to 0 to deactivate.
|
||||||
#define DEFAULT_STEPPER_DEACTIVE_TIME 240
|
#define DEFAULT_STEPPER_DEACTIVE_TIME 240
|
||||||
|
|
||||||
#define DEFAULT_MINIMUMFEEDRATE 0.0 // minimum feedrate
|
#define DEFAULT_MINIMUMFEEDRATE 0.0 // minimum feedrate
|
||||||
#define DEFAULT_MINTRAVELFEEDRATE 0.0
|
#define DEFAULT_MINTRAVELFEEDRATE 0.0
|
||||||
|
|
||||||
// Feedrates for manual moves along X, Y, Z, E from panel
|
|
||||||
#ifdef ULTIPANEL
|
#ifdef ULTIPANEL
|
||||||
#define MANUAL_FEEDRATE {50*60, 50*60, 10*60, 60} // set the speeds for manual moves (mm/min)
|
#define MANUAL_FEEDRATE {50*60, 50*60, 10*60, 60} // Feedrates for manual moves along X, Y, Z, E from panel
|
||||||
#endif
|
#define ULTIPANEL_FEEDMULTIPLY // Comment to disable setting feedrate multiplier via encoder
|
||||||
|
|
||||||
//Comment to disable setting feedrate multiplier via encoder
|
|
||||||
#ifdef ULTIPANEL
|
|
||||||
#define ULTIPANEL_FEEDMULTIPLY
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// minimum time in microseconds that a movement needs to take if the buffer is emptied.
|
// minimum time in microseconds that a movement needs to take if the buffer is emptied.
|
||||||
|
@ -251,9 +183,7 @@
|
||||||
|
|
||||||
// If defined the movements slow down when the look ahead buffer is only half full
|
// If defined the movements slow down when the look ahead buffer is only half full
|
||||||
//#define SLOWDOWN
|
//#define SLOWDOWN
|
||||||
#ifdef SCARA
|
|
||||||
#undef SLOWDOWN
|
|
||||||
#endif
|
|
||||||
// Frequency limit
|
// Frequency limit
|
||||||
// See nophead's blog for more info
|
// See nophead's blog for more info
|
||||||
// Not working O
|
// Not working O
|
||||||
|
@ -264,13 +194,6 @@
|
||||||
// if unwanted behavior is observed on a user's machine when running at very slow speeds.
|
// if unwanted behavior is observed on a user's machine when running at very slow speeds.
|
||||||
#define MINIMUM_PLANNER_SPEED 0.05// (mm/sec)
|
#define MINIMUM_PLANNER_SPEED 0.05// (mm/sec)
|
||||||
|
|
||||||
// MS1 MS2 Stepper Driver Microstepping mode table
|
|
||||||
#define MICROSTEP1 LOW,LOW
|
|
||||||
#define MICROSTEP2 HIGH,LOW
|
|
||||||
#define MICROSTEP4 LOW,HIGH
|
|
||||||
#define MICROSTEP8 HIGH,HIGH
|
|
||||||
#define MICROSTEP16 HIGH,HIGH
|
|
||||||
|
|
||||||
// Microstep setting (Only functional when stepper driver microstep pins are connected to MCU.
|
// Microstep setting (Only functional when stepper driver microstep pins are connected to MCU.
|
||||||
#define MICROSTEP_MODES {16,16,16,16,16} // [1,2,4,8,16]
|
#define MICROSTEP_MODES {16,16,16,16,16} // [1,2,4,8,16]
|
||||||
|
|
||||||
|
@ -339,21 +262,6 @@
|
||||||
#define BABYSTEP_XY //not only z, but also XY in the menu. more clutter, more functions
|
#define BABYSTEP_XY //not only z, but also XY in the menu. more clutter, more functions
|
||||||
#define BABYSTEP_INVERT_Z false //true for inverse movements in Z
|
#define BABYSTEP_INVERT_Z false //true for inverse movements in Z
|
||||||
#define BABYSTEP_Z_MULTIPLICATOR 2 //faster z movements
|
#define BABYSTEP_Z_MULTIPLICATOR 2 //faster z movements
|
||||||
|
|
||||||
#ifdef COREXY
|
|
||||||
#error BABYSTEPPING not implemented for COREXY yet.
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef DELTA
|
|
||||||
#ifdef BABYSTEP_XY
|
|
||||||
#error BABYSTEPPING only implemented for Z axis on deltabots.
|
|
||||||
#endif
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef SCARA
|
|
||||||
#error BABYSTEPPING not implemented for SCARA yet.
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// extruder advance constant (s2/mm3)
|
// extruder advance constant (s2/mm3)
|
||||||
|
@ -387,26 +295,6 @@ const unsigned int dropsegments=5; //everything with less than this number of st
|
||||||
// be commented out otherwise
|
// be commented out otherwise
|
||||||
#define SDCARDDETECTINVERTED
|
#define SDCARDDETECTINVERTED
|
||||||
|
|
||||||
#ifdef ULTIPANEL
|
|
||||||
#undef SDCARDDETECTINVERTED
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// Power Signal Control Definitions
|
|
||||||
// By default use ATX definition
|
|
||||||
#ifndef POWER_SUPPLY
|
|
||||||
#define POWER_SUPPLY 1
|
|
||||||
#endif
|
|
||||||
// 1 = ATX
|
|
||||||
#if (POWER_SUPPLY == 1)
|
|
||||||
#define PS_ON_AWAKE LOW
|
|
||||||
#define PS_ON_ASLEEP HIGH
|
|
||||||
#endif
|
|
||||||
// 2 = X-Box 360 203W
|
|
||||||
#if (POWER_SUPPLY == 2)
|
|
||||||
#define PS_ON_AWAKE HIGH
|
|
||||||
#define PS_ON_ASLEEP LOW
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// Control heater 0 and heater 1 in parallel.
|
// Control heater 0 and heater 1 in parallel.
|
||||||
//#define HEATERS_PARALLEL
|
//#define HEATERS_PARALLEL
|
||||||
|
|
||||||
|
@ -444,9 +332,9 @@ const unsigned int dropsegments=5; //everything with less than this number of st
|
||||||
#define RETRACT_RECOVER_FEEDRATE 8 //default feedrate for recovering from retraction (mm/s)
|
#define RETRACT_RECOVER_FEEDRATE 8 //default feedrate for recovering from retraction (mm/s)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
//adds support for experimental filament exchange support M600; requires display
|
// Add support for experimental filament exchange support M600; requires display
|
||||||
#ifdef ULTIPANEL
|
#ifdef ULTIPANEL
|
||||||
#define FILAMENTCHANGEENABLE
|
//#define FILAMENTCHANGEENABLE
|
||||||
#ifdef FILAMENTCHANGEENABLE
|
#ifdef FILAMENTCHANGEENABLE
|
||||||
#define FILAMENTCHANGE_XPOS 3
|
#define FILAMENTCHANGE_XPOS 3
|
||||||
#define FILAMENTCHANGE_YPOS 3
|
#define FILAMENTCHANGE_YPOS 3
|
||||||
|
@ -456,81 +344,7 @@ const unsigned int dropsegments=5; //everything with less than this number of st
|
||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef FILAMENTCHANGEENABLE
|
#include "Conditionals.h"
|
||||||
#ifdef EXTRUDER_RUNOUT_PREVENT
|
#include "SanityCheck.h"
|
||||||
#error EXTRUDER_RUNOUT_PREVENT currently incompatible with FILAMENTCHANGE
|
|
||||||
#endif
|
|
||||||
#endif
|
|
||||||
|
|
||||||
//===========================================================================
|
#endif //CONFIGURATION_ADV_H
|
||||||
//============================= Define Defines ============================
|
|
||||||
//===========================================================================
|
|
||||||
#if EXTRUDERS > 1 && defined TEMP_SENSOR_1_AS_REDUNDANT
|
|
||||||
#error "You cannot use TEMP_SENSOR_1_AS_REDUNDANT if EXTRUDERS > 1"
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if EXTRUDERS > 1 && defined HEATERS_PARALLEL
|
|
||||||
#error "You cannot use HEATERS_PARALLEL if EXTRUDERS > 1"
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if TEMP_SENSOR_0 > 0
|
|
||||||
#define THERMISTORHEATER_0 TEMP_SENSOR_0
|
|
||||||
#define HEATER_0_USES_THERMISTOR
|
|
||||||
#endif
|
|
||||||
#if TEMP_SENSOR_1 > 0
|
|
||||||
#define THERMISTORHEATER_1 TEMP_SENSOR_1
|
|
||||||
#define HEATER_1_USES_THERMISTOR
|
|
||||||
#endif
|
|
||||||
#if TEMP_SENSOR_2 > 0
|
|
||||||
#define THERMISTORHEATER_2 TEMP_SENSOR_2
|
|
||||||
#define HEATER_2_USES_THERMISTOR
|
|
||||||
#endif
|
|
||||||
#if TEMP_SENSOR_3 > 0
|
|
||||||
#define THERMISTORHEATER_3 TEMP_SENSOR_3
|
|
||||||
#define HEATER_3_USES_THERMISTOR
|
|
||||||
#endif
|
|
||||||
#if TEMP_SENSOR_BED > 0
|
|
||||||
#define THERMISTORBED TEMP_SENSOR_BED
|
|
||||||
#define BED_USES_THERMISTOR
|
|
||||||
#endif
|
|
||||||
#if TEMP_SENSOR_0 == -1
|
|
||||||
#define HEATER_0_USES_AD595
|
|
||||||
#endif
|
|
||||||
#if TEMP_SENSOR_1 == -1
|
|
||||||
#define HEATER_1_USES_AD595
|
|
||||||
#endif
|
|
||||||
#if TEMP_SENSOR_2 == -1
|
|
||||||
#define HEATER_2_USES_AD595
|
|
||||||
#endif
|
|
||||||
#if TEMP_SENSOR_3 == -1
|
|
||||||
#define HEATER_3_USES_AD595
|
|
||||||
#endif
|
|
||||||
#if TEMP_SENSOR_BED == -1
|
|
||||||
#define BED_USES_AD595
|
|
||||||
#endif
|
|
||||||
#if TEMP_SENSOR_0 == -2
|
|
||||||
#define HEATER_0_USES_MAX6675
|
|
||||||
#endif
|
|
||||||
#if TEMP_SENSOR_0 == 0
|
|
||||||
#undef HEATER_0_MINTEMP
|
|
||||||
#undef HEATER_0_MAXTEMP
|
|
||||||
#endif
|
|
||||||
#if TEMP_SENSOR_1 == 0
|
|
||||||
#undef HEATER_1_MINTEMP
|
|
||||||
#undef HEATER_1_MAXTEMP
|
|
||||||
#endif
|
|
||||||
#if TEMP_SENSOR_2 == 0
|
|
||||||
#undef HEATER_2_MINTEMP
|
|
||||||
#undef HEATER_2_MAXTEMP
|
|
||||||
#endif
|
|
||||||
#if TEMP_SENSOR_3 == 0
|
|
||||||
#undef HEATER_3_MINTEMP
|
|
||||||
#undef HEATER_3_MAXTEMP
|
|
||||||
#endif
|
|
||||||
#if TEMP_SENSOR_BED == 0
|
|
||||||
#undef BED_MINTEMP
|
|
||||||
#undef BED_MAXTEMP
|
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
||||||
#endif //__CONFIGURATION_ADV_H
|
|
||||||
|
|
|
@ -321,15 +321,6 @@ your extruder heater takes 2 minutes to hit the target on heating.
|
||||||
// #define ENDSTOPPULLUP_ZMIN
|
// #define ENDSTOPPULLUP_ZMIN
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef ENDSTOPPULLUPS
|
|
||||||
#define ENDSTOPPULLUP_XMAX
|
|
||||||
#define ENDSTOPPULLUP_YMAX
|
|
||||||
#define ENDSTOPPULLUP_ZMAX
|
|
||||||
#define ENDSTOPPULLUP_XMIN
|
|
||||||
#define ENDSTOPPULLUP_YMIN
|
|
||||||
#define ENDSTOPPULLUP_ZMIN
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// The pullups are needed if you directly connect a mechanical endswitch between the signal and ground pins.
|
// The pullups are needed if you directly connect a mechanical endswitch between the signal and ground pins.
|
||||||
const bool X_MIN_ENDSTOP_INVERTING = true; // set to true to invert the logic of the endstop.
|
const bool X_MIN_ENDSTOP_INVERTING = true; // set to true to invert the logic of the endstop.
|
||||||
const bool Y_MIN_ENDSTOP_INVERTING = true; // set to true to invert the logic of the endstop.
|
const bool Y_MIN_ENDSTOP_INVERTING = true; // set to true to invert the logic of the endstop.
|
||||||
|
@ -378,10 +369,32 @@ const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of
|
||||||
#define Z_MAX_POS 200
|
#define Z_MAX_POS 200
|
||||||
#define Z_MIN_POS 0
|
#define Z_MIN_POS 0
|
||||||
|
|
||||||
#define X_MAX_LENGTH (X_MAX_POS - X_MIN_POS)
|
//===========================================================================
|
||||||
#define Y_MAX_LENGTH (Y_MAX_POS - Y_MIN_POS)
|
//============================= Filament Runout Sensor ======================
|
||||||
#define Z_MAX_LENGTH (Z_MAX_POS - Z_MIN_POS)
|
//===========================================================================
|
||||||
|
//#define FILAMENT_RUNOUT_SENSOR // Uncomment for defining a filament runout sensor such as a mechanical or opto endstop to check the existence of filament
|
||||||
|
// In RAMPS uses servo pin 2. Can be changed in pins file. For other boards pin definition should be made.
|
||||||
|
// It is assumed that when logic high = filament available
|
||||||
|
// when logic low = filament ran out
|
||||||
|
//const bool FIL_RUNOUT_INVERTING = true; // Should be uncommented and true or false should assigned
|
||||||
|
//#define ENDSTOPPULLUP_FIL_RUNOUT // Uncomment to use internal pullup for filament runout pins if the sensor is defined.
|
||||||
|
|
||||||
|
//===========================================================================
|
||||||
|
//============================ Manual Bed Leveling ==========================
|
||||||
|
//===========================================================================
|
||||||
|
|
||||||
|
// #define MANUAL_BED_LEVELING // Add display menu option for bed leveling
|
||||||
|
// #define MESH_BED_LEVELING // Enable mesh bed leveling
|
||||||
|
|
||||||
|
#if defined(MESH_BED_LEVELING)
|
||||||
|
#define MESH_MIN_X 10
|
||||||
|
#define MESH_MAX_X (X_MAX_POS - MESH_MIN_X)
|
||||||
|
#define MESH_MIN_Y 10
|
||||||
|
#define MESH_MAX_Y (Y_MAX_POS - MESH_MIN_Y)
|
||||||
|
#define MESH_NUM_X_POINTS 3 // Don't use more than 7 points per axis, implementation limited
|
||||||
|
#define MESH_NUM_Y_POINTS 3
|
||||||
|
#define MESH_HOME_SEARCH_Z 4 // Z after Home, bed somewhere below but above 0.0
|
||||||
|
#endif // MESH_BED_LEVELING
|
||||||
|
|
||||||
//===========================================================================
|
//===========================================================================
|
||||||
//============================= Bed Auto Leveling ===========================
|
//============================= Bed Auto Leveling ===========================
|
||||||
|
@ -409,12 +422,6 @@ const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of
|
||||||
|
|
||||||
#ifdef AUTO_BED_LEVELING_GRID
|
#ifdef AUTO_BED_LEVELING_GRID
|
||||||
|
|
||||||
// Use one of these defines to specify the origin
|
|
||||||
// for a topographical map to be printed for your bed.
|
|
||||||
enum { OriginBackLeft, OriginFrontLeft, OriginBackRight, OriginFrontRight };
|
|
||||||
#define TOPO_ORIGIN OriginFrontLeft
|
|
||||||
|
|
||||||
// The edges of the rectangle in which to probe
|
|
||||||
#define LEFT_PROBE_BED_POSITION 15
|
#define LEFT_PROBE_BED_POSITION 15
|
||||||
#define RIGHT_PROBE_BED_POSITION 170
|
#define RIGHT_PROBE_BED_POSITION 170
|
||||||
#define FRONT_PROBE_BED_POSITION 20
|
#define FRONT_PROBE_BED_POSITION 20
|
||||||
|
@ -617,112 +624,17 @@ const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of
|
||||||
// REMEMBER TO INSTALL LiquidCrystal_I2C.h in your ARDUINO library folder: https://github.com/kiyoshigawa/LiquidCrystal_I2C
|
// REMEMBER TO INSTALL LiquidCrystal_I2C.h in your ARDUINO library folder: https://github.com/kiyoshigawa/LiquidCrystal_I2C
|
||||||
//#define RA_CONTROL_PANEL
|
//#define RA_CONTROL_PANEL
|
||||||
|
|
||||||
//automatic expansion
|
/**
|
||||||
#if defined (MAKRPANEL)
|
* I2C Panels
|
||||||
#define DOGLCD
|
*/
|
||||||
#define SDSUPPORT
|
|
||||||
#define ULTIPANEL
|
|
||||||
#define NEWPANEL
|
|
||||||
#define DEFAULT_LCD_CONTRAST 17
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if defined(miniVIKI) || defined(VIKI2)
|
|
||||||
#define ULTRA_LCD //general LCD support, also 16x2
|
|
||||||
#define DOGLCD // Support for SPI LCD 128x64 (Controller ST7565R graphic Display Family)
|
|
||||||
#define ULTIMAKERCONTROLLER //as available from the Ultimaker online store.
|
|
||||||
|
|
||||||
#ifdef miniVIKI
|
|
||||||
#define DEFAULT_LCD_CONTRAST 95
|
|
||||||
#else
|
|
||||||
#define DEFAULT_LCD_CONTRAST 40
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#define ENCODER_PULSES_PER_STEP 4
|
|
||||||
#define ENCODER_STEPS_PER_MENU_ITEM 1
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if defined (PANEL_ONE)
|
|
||||||
#define SDSUPPORT
|
|
||||||
#define ULTIMAKERCONTROLLER
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if defined (REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER)
|
|
||||||
#define DOGLCD
|
|
||||||
#define U8GLIB_ST7920
|
|
||||||
#define REPRAP_DISCOUNT_SMART_CONTROLLER
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if defined(ULTIMAKERCONTROLLER) || defined(REPRAP_DISCOUNT_SMART_CONTROLLER) || defined(G3D_PANEL)
|
|
||||||
#define ULTIPANEL
|
|
||||||
#define NEWPANEL
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if defined(REPRAPWORLD_KEYPAD)
|
|
||||||
#define NEWPANEL
|
|
||||||
#define ULTIPANEL
|
|
||||||
#endif
|
|
||||||
#if defined(RA_CONTROL_PANEL)
|
|
||||||
#define ULTIPANEL
|
|
||||||
#define NEWPANEL
|
|
||||||
#define LCD_I2C_TYPE_PCA8574
|
|
||||||
#define LCD_I2C_ADDRESS 0x27 // I2C Address of the port expander
|
|
||||||
#endif
|
|
||||||
|
|
||||||
//I2C PANELS
|
|
||||||
|
|
||||||
//#define LCD_I2C_SAINSMART_YWROBOT
|
//#define LCD_I2C_SAINSMART_YWROBOT
|
||||||
#ifdef LCD_I2C_SAINSMART_YWROBOT
|
|
||||||
// This uses the LiquidCrystal_I2C library ( https://bitbucket.org/fmalpartida/new-liquidcrystal/wiki/Home )
|
|
||||||
// Make sure it is placed in the Arduino libraries directory.
|
|
||||||
#define LCD_I2C_TYPE_PCF8575
|
|
||||||
#define LCD_I2C_ADDRESS 0x27 // I2C Address of the port expander
|
|
||||||
#define NEWPANEL
|
|
||||||
#define ULTIPANEL
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// PANELOLU2 LCD with status LEDs, separate encoder and click inputs
|
// PANELOLU2 LCD with status LEDs, separate encoder and click inputs
|
||||||
//#define LCD_I2C_PANELOLU2
|
//#define LCD_I2C_PANELOLU2
|
||||||
#ifdef LCD_I2C_PANELOLU2
|
|
||||||
// This uses the LiquidTWI2 library v1.2.3 or later ( https://github.com/lincomatic/LiquidTWI2 )
|
|
||||||
// Make sure the LiquidTWI2 directory is placed in the Arduino or Sketchbook libraries subdirectory.
|
|
||||||
// (v1.2.3 no longer requires you to define PANELOLU in the LiquidTWI2.h library header file)
|
|
||||||
// Note: The PANELOLU2 encoder click input can either be directly connected to a pin
|
|
||||||
// (if BTN_ENC defined to != -1) or read through I2C (when BTN_ENC == -1).
|
|
||||||
#define LCD_I2C_TYPE_MCP23017
|
|
||||||
#define LCD_I2C_ADDRESS 0x20 // I2C Address of the port expander
|
|
||||||
#define LCD_USE_I2C_BUZZER //comment out to disable buzzer on LCD
|
|
||||||
#define NEWPANEL
|
|
||||||
#define ULTIPANEL
|
|
||||||
|
|
||||||
#ifndef ENCODER_PULSES_PER_STEP
|
|
||||||
#define ENCODER_PULSES_PER_STEP 4
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifndef ENCODER_STEPS_PER_MENU_ITEM
|
|
||||||
#define ENCODER_STEPS_PER_MENU_ITEM 1
|
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
||||||
#ifdef LCD_USE_I2C_BUZZER
|
|
||||||
#define LCD_FEEDBACK_FREQUENCY_HZ 1000
|
|
||||||
#define LCD_FEEDBACK_FREQUENCY_DURATION_MS 100
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// Panucatt VIKI LCD with status LEDs, integrated click & L/R/U/P buttons, separate encoder inputs
|
// Panucatt VIKI LCD with status LEDs, integrated click & L/R/U/P buttons, separate encoder inputs
|
||||||
//#define LCD_I2C_VIKI
|
//#define LCD_I2C_VIKI
|
||||||
#ifdef LCD_I2C_VIKI
|
|
||||||
// This uses the LiquidTWI2 library v1.2.3 or later ( https://github.com/lincomatic/LiquidTWI2 )
|
|
||||||
// Make sure the LiquidTWI2 directory is placed in the Arduino or Sketchbook libraries subdirectory.
|
|
||||||
// Note: The pause/stop/resume LCD button pin should be connected to the Arduino
|
|
||||||
// BTN_ENC pin (or set BTN_ENC to -1 if not used)
|
|
||||||
#define LCD_I2C_TYPE_MCP23017
|
|
||||||
#define LCD_I2C_ADDRESS 0x20 // I2C Address of the port expander
|
|
||||||
#define LCD_USE_I2C_BUZZER //comment out to disable buzzer on LCD (requires LiquidTWI2 v1.2.3 or later)
|
|
||||||
#define NEWPANEL
|
|
||||||
#define ULTIPANEL
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// Shift register panels
|
// Shift register panels
|
||||||
// ---------------------
|
// ---------------------
|
||||||
|
@ -730,51 +642,10 @@ const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of
|
||||||
// https://bitbucket.org/fmalpartida/new-liquidcrystal/wiki/schematics#!shiftregister-connection
|
// https://bitbucket.org/fmalpartida/new-liquidcrystal/wiki/schematics#!shiftregister-connection
|
||||||
|
|
||||||
//#define SAV_3DLCD
|
//#define SAV_3DLCD
|
||||||
#ifdef SAV_3DLCD
|
|
||||||
#define SR_LCD_2W_NL // Non latching 2 wire shiftregister
|
|
||||||
#define NEWPANEL
|
|
||||||
#define ULTIPANEL
|
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
||||||
#ifdef ULTIPANEL
|
|
||||||
// #define NEWPANEL //enable this if you have a click-encoder panel
|
|
||||||
#define SDSUPPORT
|
|
||||||
#define ULTRA_LCD
|
|
||||||
#ifdef DOGLCD // Change number of lines to match the DOG graphic display
|
|
||||||
#define LCD_WIDTH 22
|
|
||||||
#define LCD_HEIGHT 5
|
|
||||||
#else
|
|
||||||
#define LCD_WIDTH 20
|
|
||||||
#define LCD_HEIGHT 4
|
|
||||||
#endif
|
|
||||||
#else //no panel but just LCD
|
|
||||||
#ifdef ULTRA_LCD
|
|
||||||
#ifdef DOGLCD // Change number of lines to match the 128x64 graphics display
|
|
||||||
#define LCD_WIDTH 22
|
|
||||||
#define LCD_HEIGHT 5
|
|
||||||
#else
|
|
||||||
#define LCD_WIDTH 16
|
|
||||||
#define LCD_HEIGHT 2
|
|
||||||
#endif
|
|
||||||
#endif
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// default LCD contrast for dogm-like LCD displays
|
|
||||||
#ifdef DOGLCD
|
|
||||||
# ifndef DEFAULT_LCD_CONTRAST
|
|
||||||
# define DEFAULT_LCD_CONTRAST 32
|
|
||||||
# endif
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// Increase the FAN pwm frequency. Removes the PWM noise but increases heating in the FET/Arduino
|
// Increase the FAN pwm frequency. Removes the PWM noise but increases heating in the FET/Arduino
|
||||||
//#define FAST_PWM_FAN
|
//#define FAST_PWM_FAN
|
||||||
|
|
||||||
// Temperature status LEDs that display the hotend and bet temperature.
|
|
||||||
// If all hotends and bed temperature and temperature setpoint are < 54C then the BLUE led is on.
|
|
||||||
// Otherwise the RED led is on. There is 1C hysteresis.
|
|
||||||
//#define TEMP_STAT_LEDS
|
|
||||||
|
|
||||||
// Use software PWM to drive the fan, as for the heaters. This uses a very low frequency
|
// Use software PWM to drive the fan, as for the heaters. This uses a very low frequency
|
||||||
// which is not ass annoying as with the hardware PWM. On the other hand, if this frequency
|
// which is not ass annoying as with the hardware PWM. On the other hand, if this frequency
|
||||||
// is too low, you should also increment SOFT_PWM_SCALE.
|
// is too low, you should also increment SOFT_PWM_SCALE.
|
||||||
|
@ -786,6 +657,11 @@ const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of
|
||||||
// at zero value, there are 128 effective control positions.
|
// at zero value, there are 128 effective control positions.
|
||||||
#define SOFT_PWM_SCALE 0
|
#define SOFT_PWM_SCALE 0
|
||||||
|
|
||||||
|
// Temperature status LEDs that display the hotend and bet temperature.
|
||||||
|
// If all hotends and bed temperature and temperature setpoint are < 54C then the BLUE led is on.
|
||||||
|
// Otherwise the RED led is on. There is 1C hysteresis.
|
||||||
|
//#define TEMP_STAT_LEDS
|
||||||
|
|
||||||
// M240 Triggers a camera by emulating a Canon RC-1 Remote
|
// M240 Triggers a camera by emulating a Canon RC-1 Remote
|
||||||
// Data from: http://www.doc-diy.net/photo/rc-1_hacked/
|
// Data from: http://www.doc-diy.net/photo/rc-1_hacked/
|
||||||
// #define PHOTOGRAPH_PIN 23
|
// #define PHOTOGRAPH_PIN 23
|
||||||
|
@ -857,4 +733,4 @@ const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of
|
||||||
#include "Configuration_adv.h"
|
#include "Configuration_adv.h"
|
||||||
#include "thermistortables.h"
|
#include "thermistortables.h"
|
||||||
|
|
||||||
#endif //__CONFIGURATION_H
|
#endif //CONFIGURATION_H
|
||||||
|
|
|
@ -1,6 +1,8 @@
|
||||||
#ifndef CONFIGURATION_ADV_H
|
#ifndef CONFIGURATION_ADV_H
|
||||||
#define CONFIGURATION_ADV_H
|
#define CONFIGURATION_ADV_H
|
||||||
|
|
||||||
|
#include "Conditionals.h"
|
||||||
|
|
||||||
//===========================================================================
|
//===========================================================================
|
||||||
//=============================Thermal Settings ============================
|
//=============================Thermal Settings ============================
|
||||||
//===========================================================================
|
//===========================================================================
|
||||||
|
@ -89,54 +91,6 @@
|
||||||
|
|
||||||
//#define ENDSTOPS_ONLY_FOR_HOMING // If defined the endstops will only be used for homing
|
//#define ENDSTOPS_ONLY_FOR_HOMING // If defined the endstops will only be used for homing
|
||||||
|
|
||||||
|
|
||||||
//// AUTOSET LOCATIONS OF LIMIT SWITCHES
|
|
||||||
//// Added by ZetaPhoenix 09-15-2012
|
|
||||||
#ifdef MANUAL_HOME_POSITIONS // Use manual limit switch locations
|
|
||||||
#define X_HOME_POS MANUAL_X_HOME_POS
|
|
||||||
#define Y_HOME_POS MANUAL_Y_HOME_POS
|
|
||||||
#define Z_HOME_POS MANUAL_Z_HOME_POS
|
|
||||||
#else //Set min/max homing switch positions based upon homing direction and min/max travel limits
|
|
||||||
//X axis
|
|
||||||
#if X_HOME_DIR == -1
|
|
||||||
#ifdef BED_CENTER_AT_0_0
|
|
||||||
#define X_HOME_POS X_MAX_LENGTH * -0.5
|
|
||||||
#else
|
|
||||||
#define X_HOME_POS X_MIN_POS
|
|
||||||
#endif //BED_CENTER_AT_0_0
|
|
||||||
#else
|
|
||||||
#ifdef BED_CENTER_AT_0_0
|
|
||||||
#define X_HOME_POS X_MAX_LENGTH * 0.5
|
|
||||||
#else
|
|
||||||
#define X_HOME_POS X_MAX_POS
|
|
||||||
#endif //BED_CENTER_AT_0_0
|
|
||||||
#endif //X_HOME_DIR == -1
|
|
||||||
|
|
||||||
//Y axis
|
|
||||||
#if Y_HOME_DIR == -1
|
|
||||||
#ifdef BED_CENTER_AT_0_0
|
|
||||||
#define Y_HOME_POS Y_MAX_LENGTH * -0.5
|
|
||||||
#else
|
|
||||||
#define Y_HOME_POS Y_MIN_POS
|
|
||||||
#endif //BED_CENTER_AT_0_0
|
|
||||||
#else
|
|
||||||
#ifdef BED_CENTER_AT_0_0
|
|
||||||
#define Y_HOME_POS Y_MAX_LENGTH * 0.5
|
|
||||||
#else
|
|
||||||
#define Y_HOME_POS Y_MAX_POS
|
|
||||||
#endif //BED_CENTER_AT_0_0
|
|
||||||
#endif //Y_HOME_DIR == -1
|
|
||||||
|
|
||||||
// Z axis
|
|
||||||
#if Z_HOME_DIR == -1 //BED_CENTER_AT_0_0 not used
|
|
||||||
#define Z_HOME_POS Z_MIN_POS
|
|
||||||
#else
|
|
||||||
#define Z_HOME_POS Z_MAX_POS
|
|
||||||
#endif //Z_HOME_DIR == -1
|
|
||||||
#endif //End auto min/max positions
|
|
||||||
//END AUTOSET LOCATIONS OF LIMIT SWITCHES -ZP
|
|
||||||
|
|
||||||
|
|
||||||
//#define Z_LATE_ENABLE // Enable Z the last moment. Needed if your Z driver overheats.
|
//#define Z_LATE_ENABLE // Enable Z the last moment. Needed if your Z driver overheats.
|
||||||
|
|
||||||
// A single Z stepper driver is usually used to drive 2 stepper motors.
|
// A single Z stepper driver is usually used to drive 2 stepper motors.
|
||||||
|
@ -146,26 +100,12 @@
|
||||||
// On a RAMPS (or other 5 driver) motherboard, using this feature will limit you to using 1 extruder.
|
// On a RAMPS (or other 5 driver) motherboard, using this feature will limit you to using 1 extruder.
|
||||||
//#define Z_DUAL_STEPPER_DRIVERS
|
//#define Z_DUAL_STEPPER_DRIVERS
|
||||||
|
|
||||||
#ifdef Z_DUAL_STEPPER_DRIVERS
|
|
||||||
#undef EXTRUDERS
|
|
||||||
#define EXTRUDERS 1
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// Same again but for Y Axis.
|
// Same again but for Y Axis.
|
||||||
//#define Y_DUAL_STEPPER_DRIVERS
|
//#define Y_DUAL_STEPPER_DRIVERS
|
||||||
|
|
||||||
// Define if the two Y drives need to rotate in opposite directions
|
// Define if the two Y drives need to rotate in opposite directions
|
||||||
#define INVERT_Y2_VS_Y_DIR true
|
#define INVERT_Y2_VS_Y_DIR true
|
||||||
|
|
||||||
#ifdef Y_DUAL_STEPPER_DRIVERS
|
|
||||||
#undef EXTRUDERS
|
|
||||||
#define EXTRUDERS 1
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if defined (Z_DUAL_STEPPER_DRIVERS) && defined (Y_DUAL_STEPPER_DRIVERS)
|
|
||||||
#error "You cannot have dual drivers for both Y and Z"
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// Enable this for dual x-carriage printers.
|
// Enable this for dual x-carriage printers.
|
||||||
// A dual x-carriage design has the advantage that the inactive extruder can be parked which
|
// A dual x-carriage design has the advantage that the inactive extruder can be parked which
|
||||||
// prevents hot-end ooze contaminating the print. It also reduces the weight of each x-carriage
|
// prevents hot-end ooze contaminating the print. It also reduces the weight of each x-carriage
|
||||||
|
@ -229,20 +169,15 @@
|
||||||
#define INVERT_Z_STEP_PIN false
|
#define INVERT_Z_STEP_PIN false
|
||||||
#define INVERT_E_STEP_PIN false
|
#define INVERT_E_STEP_PIN false
|
||||||
|
|
||||||
//default stepper release if idle. Set to 0 to deactivate.
|
// Default stepper release if idle. Set to 0 to deactivate.
|
||||||
#define DEFAULT_STEPPER_DEACTIVE_TIME 60
|
#define DEFAULT_STEPPER_DEACTIVE_TIME 60
|
||||||
|
|
||||||
#define DEFAULT_MINIMUMFEEDRATE 0.0 // minimum feedrate
|
#define DEFAULT_MINIMUMFEEDRATE 0.0 // minimum feedrate
|
||||||
#define DEFAULT_MINTRAVELFEEDRATE 0.0
|
#define DEFAULT_MINTRAVELFEEDRATE 0.0
|
||||||
|
|
||||||
// Feedrates for manual moves along X, Y, Z, E from panel
|
|
||||||
#ifdef ULTIPANEL
|
#ifdef ULTIPANEL
|
||||||
#define MANUAL_FEEDRATE {120*60, 120*60, 18*60, 60} // set the speeds for manual moves (mm/min)
|
#define MANUAL_FEEDRATE {120*60, 120*60, 18*60, 60} // Feedrates for manual moves along X, Y, Z, E from panel
|
||||||
#endif
|
#define ULTIPANEL_FEEDMULTIPLY // Comment to disable setting feedrate multiplier via encoder
|
||||||
|
|
||||||
//Comment to disable setting feedrate multiplier via encoder
|
|
||||||
#ifdef ULTIPANEL
|
|
||||||
#define ULTIPANEL_FEEDMULTIPLY
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// minimum time in microseconds that a movement needs to take if the buffer is emptied.
|
// minimum time in microseconds that a movement needs to take if the buffer is emptied.
|
||||||
|
@ -261,13 +196,6 @@
|
||||||
// if unwanted behavior is observed on a user's machine when running at very slow speeds.
|
// if unwanted behavior is observed on a user's machine when running at very slow speeds.
|
||||||
#define MINIMUM_PLANNER_SPEED 0.05// (mm/sec)
|
#define MINIMUM_PLANNER_SPEED 0.05// (mm/sec)
|
||||||
|
|
||||||
// MS1 MS2 Stepper Driver Microstepping mode table
|
|
||||||
#define MICROSTEP1 LOW,LOW
|
|
||||||
#define MICROSTEP2 HIGH,LOW
|
|
||||||
#define MICROSTEP4 LOW,HIGH
|
|
||||||
#define MICROSTEP8 HIGH,HIGH
|
|
||||||
#define MICROSTEP16 HIGH,HIGH
|
|
||||||
|
|
||||||
// Microstep setting (Only functional when stepper driver microstep pins are connected to MCU.
|
// Microstep setting (Only functional when stepper driver microstep pins are connected to MCU.
|
||||||
#define MICROSTEP_MODES {16,16,16,16,16} // [1,2,4,8,16]
|
#define MICROSTEP_MODES {16,16,16,16,16} // [1,2,4,8,16]
|
||||||
|
|
||||||
|
@ -313,12 +241,6 @@
|
||||||
#define PROGRESS_MSG_EXPIRE 0
|
#define PROGRESS_MSG_EXPIRE 0
|
||||||
// Enable this to show messages for MSG_TIME then hide them
|
// Enable this to show messages for MSG_TIME then hide them
|
||||||
//#define PROGRESS_MSG_ONCE
|
//#define PROGRESS_MSG_ONCE
|
||||||
#ifdef DOGLCD
|
|
||||||
#warning LCD_PROGRESS_BAR does not apply to graphical displays at this time.
|
|
||||||
#endif
|
|
||||||
#ifdef FILAMENT_LCD_DISPLAY
|
|
||||||
#error LCD_PROGRESS_BAR and FILAMENT_LCD_DISPLAY are not fully compatible. Comment out this line to use both.
|
|
||||||
#endif
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// The hardware watchdog should reset the microcontroller disabling all outputs, in case the firmware gets stuck and doesn't do temperature regulation.
|
// The hardware watchdog should reset the microcontroller disabling all outputs, in case the firmware gets stuck and doesn't do temperature regulation.
|
||||||
|
@ -342,16 +264,6 @@
|
||||||
#define BABYSTEP_XY //not only z, but also XY in the menu. more clutter, more functions
|
#define BABYSTEP_XY //not only z, but also XY in the menu. more clutter, more functions
|
||||||
#define BABYSTEP_INVERT_Z false //true for inverse movements in Z
|
#define BABYSTEP_INVERT_Z false //true for inverse movements in Z
|
||||||
#define BABYSTEP_Z_MULTIPLICATOR 2 //faster z movements
|
#define BABYSTEP_Z_MULTIPLICATOR 2 //faster z movements
|
||||||
|
|
||||||
#ifdef COREXY
|
|
||||||
#error BABYSTEPPING not implemented for COREXY yet.
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef DELTA
|
|
||||||
#ifdef BABYSTEP_XY
|
|
||||||
#error BABYSTEPPING only implemented for Z axis on deltabots.
|
|
||||||
#endif
|
|
||||||
#endif
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// extruder advance constant (s2/mm3)
|
// extruder advance constant (s2/mm3)
|
||||||
|
@ -365,12 +277,8 @@
|
||||||
|
|
||||||
#ifdef ADVANCE
|
#ifdef ADVANCE
|
||||||
#define EXTRUDER_ADVANCE_K .0
|
#define EXTRUDER_ADVANCE_K .0
|
||||||
|
|
||||||
#define D_FILAMENT 1.75
|
#define D_FILAMENT 1.75
|
||||||
#define STEPS_MM_E 100.47095761381482
|
#define STEPS_MM_E 100.47095761381482
|
||||||
#define EXTRUSION_AREA (0.25 * D_FILAMENT * D_FILAMENT * 3.14159)
|
|
||||||
#define STEPS_PER_CUBIC_MM_E (axis_steps_per_unit[E_AXIS]/ EXTRUSION_AREA)
|
|
||||||
|
|
||||||
#endif // ADVANCE
|
#endif // ADVANCE
|
||||||
|
|
||||||
// Arc interpretation settings:
|
// Arc interpretation settings:
|
||||||
|
@ -385,26 +293,6 @@ const unsigned int dropsegments=5; //everything with less than this number of st
|
||||||
// be commented out otherwise
|
// be commented out otherwise
|
||||||
#define SDCARDDETECTINVERTED
|
#define SDCARDDETECTINVERTED
|
||||||
|
|
||||||
#ifdef ULTIPANEL
|
|
||||||
#undef SDCARDDETECTINVERTED
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// Power Signal Control Definitions
|
|
||||||
// By default use ATX definition
|
|
||||||
#ifndef POWER_SUPPLY
|
|
||||||
#define POWER_SUPPLY 1
|
|
||||||
#endif
|
|
||||||
// 1 = ATX
|
|
||||||
#if (POWER_SUPPLY == 1)
|
|
||||||
#define PS_ON_AWAKE LOW
|
|
||||||
#define PS_ON_ASLEEP HIGH
|
|
||||||
#endif
|
|
||||||
// 2 = X-Box 360 203W
|
|
||||||
#if (POWER_SUPPLY == 2)
|
|
||||||
#define PS_ON_AWAKE HIGH
|
|
||||||
#define PS_ON_ASLEEP LOW
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// Control heater 0 and heater 1 in parallel.
|
// Control heater 0 and heater 1 in parallel.
|
||||||
//#define HEATERS_PARALLEL
|
//#define HEATERS_PARALLEL
|
||||||
|
|
||||||
|
@ -444,9 +332,9 @@ const unsigned int dropsegments=5; //everything with less than this number of st
|
||||||
#define RETRACT_RECOVER_FEEDRATE 8*60 //default feedrate for recovering from retraction (mm/s)
|
#define RETRACT_RECOVER_FEEDRATE 8*60 //default feedrate for recovering from retraction (mm/s)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
//adds support for experimental filament exchange support M600; requires display
|
// Add support for experimental filament exchange support M600; requires display
|
||||||
#ifdef ULTIPANEL
|
#ifdef ULTIPANEL
|
||||||
#define FILAMENTCHANGEENABLE
|
//#define FILAMENTCHANGEENABLE
|
||||||
#ifdef FILAMENTCHANGEENABLE
|
#ifdef FILAMENTCHANGEENABLE
|
||||||
#define FILAMENTCHANGE_XPOS 3
|
#define FILAMENTCHANGE_XPOS 3
|
||||||
#define FILAMENTCHANGE_YPOS 3
|
#define FILAMENTCHANGE_YPOS 3
|
||||||
|
@ -456,86 +344,7 @@ const unsigned int dropsegments=5; //everything with less than this number of st
|
||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef FILAMENTCHANGEENABLE
|
#include "Conditionals.h"
|
||||||
#ifdef EXTRUDER_RUNOUT_PREVENT
|
#include "SanityCheck.h"
|
||||||
#error EXTRUDER_RUNOUT_PREVENT currently incompatible with FILAMENTCHANGE
|
|
||||||
#endif
|
|
||||||
#endif
|
|
||||||
|
|
||||||
//===========================================================================
|
#endif //CONFIGURATION_ADV_H
|
||||||
//============================= Define Defines ============================
|
|
||||||
//===========================================================================
|
|
||||||
|
|
||||||
#if defined (ENABLE_AUTO_BED_LEVELING) && defined (DELTA)
|
|
||||||
#error "Bed Auto Leveling is still not compatible with Delta Kinematics."
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if EXTRUDERS > 1 && defined TEMP_SENSOR_1_AS_REDUNDANT
|
|
||||||
#error "You cannot use TEMP_SENSOR_1_AS_REDUNDANT if EXTRUDERS > 1"
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if EXTRUDERS > 1 && defined HEATERS_PARALLEL
|
|
||||||
#error "You cannot use HEATERS_PARALLEL if EXTRUDERS > 1"
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if TEMP_SENSOR_0 > 0
|
|
||||||
#define THERMISTORHEATER_0 TEMP_SENSOR_0
|
|
||||||
#define HEATER_0_USES_THERMISTOR
|
|
||||||
#endif
|
|
||||||
#if TEMP_SENSOR_1 > 0
|
|
||||||
#define THERMISTORHEATER_1 TEMP_SENSOR_1
|
|
||||||
#define HEATER_1_USES_THERMISTOR
|
|
||||||
#endif
|
|
||||||
#if TEMP_SENSOR_2 > 0
|
|
||||||
#define THERMISTORHEATER_2 TEMP_SENSOR_2
|
|
||||||
#define HEATER_2_USES_THERMISTOR
|
|
||||||
#endif
|
|
||||||
#if TEMP_SENSOR_3 > 0
|
|
||||||
#define THERMISTORHEATER_3 TEMP_SENSOR_3
|
|
||||||
#define HEATER_3_USES_THERMISTOR
|
|
||||||
#endif
|
|
||||||
#if TEMP_SENSOR_BED > 0
|
|
||||||
#define THERMISTORBED TEMP_SENSOR_BED
|
|
||||||
#define BED_USES_THERMISTOR
|
|
||||||
#endif
|
|
||||||
#if TEMP_SENSOR_0 == -1
|
|
||||||
#define HEATER_0_USES_AD595
|
|
||||||
#endif
|
|
||||||
#if TEMP_SENSOR_1 == -1
|
|
||||||
#define HEATER_1_USES_AD595
|
|
||||||
#endif
|
|
||||||
#if TEMP_SENSOR_2 == -1
|
|
||||||
#define HEATER_2_USES_AD595
|
|
||||||
#endif
|
|
||||||
#if TEMP_SENSOR_3 == -1
|
|
||||||
#define HEATER_3_USES_AD595
|
|
||||||
#endif
|
|
||||||
#if TEMP_SENSOR_BED == -1
|
|
||||||
#define BED_USES_AD595
|
|
||||||
#endif
|
|
||||||
#if TEMP_SENSOR_0 == -2
|
|
||||||
#define HEATER_0_USES_MAX6675
|
|
||||||
#endif
|
|
||||||
#if TEMP_SENSOR_0 == 0
|
|
||||||
#undef HEATER_0_MINTEMP
|
|
||||||
#undef HEATER_0_MAXTEMP
|
|
||||||
#endif
|
|
||||||
#if TEMP_SENSOR_1 == 0
|
|
||||||
#undef HEATER_1_MINTEMP
|
|
||||||
#undef HEATER_1_MAXTEMP
|
|
||||||
#endif
|
|
||||||
#if TEMP_SENSOR_2 == 0
|
|
||||||
#undef HEATER_2_MINTEMP
|
|
||||||
#undef HEATER_2_MAXTEMP
|
|
||||||
#endif
|
|
||||||
#if TEMP_SENSOR_3 == 0
|
|
||||||
#undef HEATER_3_MINTEMP
|
|
||||||
#undef HEATER_3_MAXTEMP
|
|
||||||
#endif
|
|
||||||
#if TEMP_SENSOR_BED == 0
|
|
||||||
#undef BED_MINTEMP
|
|
||||||
#undef BED_MAXTEMP
|
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
||||||
#endif //__CONFIGURATION_ADV_H
|
|
||||||
|
|
|
@ -349,15 +349,6 @@ your extruder heater takes 2 minutes to hit the target on heating.
|
||||||
// #define ENDSTOPPULLUP_ZMIN
|
// #define ENDSTOPPULLUP_ZMIN
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef ENDSTOPPULLUPS
|
|
||||||
#define ENDSTOPPULLUP_XMAX
|
|
||||||
#define ENDSTOPPULLUP_YMAX
|
|
||||||
#define ENDSTOPPULLUP_ZMAX
|
|
||||||
#define ENDSTOPPULLUP_XMIN
|
|
||||||
#define ENDSTOPPULLUP_YMIN
|
|
||||||
#define ENDSTOPPULLUP_ZMIN
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// The pullups are needed if you directly connect a mechanical endswitch between the signal and ground pins.
|
// The pullups are needed if you directly connect a mechanical endswitch between the signal and ground pins.
|
||||||
const bool X_MIN_ENDSTOP_INVERTING = true; // set to true to invert the logic of the endstop.
|
const bool X_MIN_ENDSTOP_INVERTING = true; // set to true to invert the logic of the endstop.
|
||||||
const bool Y_MIN_ENDSTOP_INVERTING = true; // set to true to invert the logic of the endstop.
|
const bool Y_MIN_ENDSTOP_INVERTING = true; // set to true to invert the logic of the endstop.
|
||||||
|
@ -408,10 +399,32 @@ const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of
|
||||||
#define Z_MAX_POS MANUAL_Z_HOME_POS
|
#define Z_MAX_POS MANUAL_Z_HOME_POS
|
||||||
#define Z_MIN_POS 0
|
#define Z_MIN_POS 0
|
||||||
|
|
||||||
#define X_MAX_LENGTH (X_MAX_POS - X_MIN_POS)
|
//===========================================================================
|
||||||
#define Y_MAX_LENGTH (Y_MAX_POS - Y_MIN_POS)
|
//============================= Filament Runout Sensor ======================
|
||||||
#define Z_MAX_LENGTH (Z_MAX_POS - Z_MIN_POS)
|
//===========================================================================
|
||||||
|
//#define FILAMENT_RUNOUT_SENSOR // Uncomment for defining a filament runout sensor such as a mechanical or opto endstop to check the existence of filament
|
||||||
|
// In RAMPS uses servo pin 2. Can be changed in pins file. For other boards pin definition should be made.
|
||||||
|
// It is assumed that when logic high = filament available
|
||||||
|
// when logic low = filament ran out
|
||||||
|
//const bool FIL_RUNOUT_INVERTING = true; // Should be uncommented and true or false should assigned
|
||||||
|
//#define ENDSTOPPULLUP_FIL_RUNOUT // Uncomment to use internal pullup for filament runout pins if the sensor is defined.
|
||||||
|
|
||||||
|
//===========================================================================
|
||||||
|
//============================ Manual Bed Leveling ==========================
|
||||||
|
//===========================================================================
|
||||||
|
|
||||||
|
// #define MANUAL_BED_LEVELING // Add display menu option for bed leveling
|
||||||
|
// #define MESH_BED_LEVELING // Enable mesh bed leveling
|
||||||
|
|
||||||
|
#if defined(MESH_BED_LEVELING)
|
||||||
|
#define MESH_MIN_X 10
|
||||||
|
#define MESH_MAX_X (X_MAX_POS - MESH_MIN_X)
|
||||||
|
#define MESH_MIN_Y 10
|
||||||
|
#define MESH_MAX_Y (Y_MAX_POS - MESH_MIN_Y)
|
||||||
|
#define MESH_NUM_X_POINTS 3 // Don't use more than 7 points per axis, implementation limited
|
||||||
|
#define MESH_NUM_Y_POINTS 3
|
||||||
|
#define MESH_HOME_SEARCH_Z 4 // Z after Home, bed somewhere below but above 0.0
|
||||||
|
#endif // MESH_BED_LEVELING
|
||||||
|
|
||||||
//===========================================================================
|
//===========================================================================
|
||||||
//============================= Bed Auto Leveling ===========================
|
//============================= Bed Auto Leveling ===========================
|
||||||
|
@ -637,112 +650,17 @@ const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of
|
||||||
// in ultralcd.cpp@lcd_delta_calibrate_menu()
|
// in ultralcd.cpp@lcd_delta_calibrate_menu()
|
||||||
// #define DELTA_CALIBRATION_MENU
|
// #define DELTA_CALIBRATION_MENU
|
||||||
|
|
||||||
//automatic expansion
|
/**
|
||||||
#if defined (MAKRPANEL)
|
* I2C PANELS
|
||||||
#define DOGLCD
|
*/
|
||||||
#define SDSUPPORT
|
|
||||||
#define ULTIPANEL
|
|
||||||
#define NEWPANEL
|
|
||||||
#define DEFAULT_LCD_CONTRAST 17
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if defined(miniVIKI) || defined(VIKI2)
|
|
||||||
#define ULTRA_LCD //general LCD support, also 16x2
|
|
||||||
#define DOGLCD // Support for SPI LCD 128x64 (Controller ST7565R graphic Display Family)
|
|
||||||
#define ULTIMAKERCONTROLLER //as available from the Ultimaker online store.
|
|
||||||
|
|
||||||
#ifdef miniVIKI
|
|
||||||
#define DEFAULT_LCD_CONTRAST 95
|
|
||||||
#else
|
|
||||||
#define DEFAULT_LCD_CONTRAST 40
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#define ENCODER_PULSES_PER_STEP 4
|
|
||||||
#define ENCODER_STEPS_PER_MENU_ITEM 1
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if defined (PANEL_ONE)
|
|
||||||
#define SDSUPPORT
|
|
||||||
#define ULTIMAKERCONTROLLER
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if defined (REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER)
|
|
||||||
#define DOGLCD
|
|
||||||
#define U8GLIB_ST7920
|
|
||||||
#define REPRAP_DISCOUNT_SMART_CONTROLLER
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if defined(ULTIMAKERCONTROLLER) || defined(REPRAP_DISCOUNT_SMART_CONTROLLER) || defined(G3D_PANEL)
|
|
||||||
#define ULTIPANEL
|
|
||||||
#define NEWPANEL
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if defined(REPRAPWORLD_KEYPAD)
|
|
||||||
#define NEWPANEL
|
|
||||||
#define ULTIPANEL
|
|
||||||
#endif
|
|
||||||
#if defined(RA_CONTROL_PANEL)
|
|
||||||
#define ULTIPANEL
|
|
||||||
#define NEWPANEL
|
|
||||||
#define LCD_I2C_TYPE_PCA8574
|
|
||||||
#define LCD_I2C_ADDRESS 0x27 // I2C Address of the port expander
|
|
||||||
#endif
|
|
||||||
|
|
||||||
//I2C PANELS
|
|
||||||
|
|
||||||
//#define LCD_I2C_SAINSMART_YWROBOT
|
//#define LCD_I2C_SAINSMART_YWROBOT
|
||||||
#ifdef LCD_I2C_SAINSMART_YWROBOT
|
|
||||||
// This uses the LiquidCrystal_I2C library ( https://bitbucket.org/fmalpartida/new-liquidcrystal/wiki/Home )
|
|
||||||
// Make sure it is placed in the Arduino libraries directory.
|
|
||||||
#define LCD_I2C_TYPE_PCF8575
|
|
||||||
#define LCD_I2C_ADDRESS 0x27 // I2C Address of the port expander
|
|
||||||
#define NEWPANEL
|
|
||||||
#define ULTIPANEL
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// PANELOLU2 LCD with status LEDs, separate encoder and click inputs
|
// PANELOLU2 LCD with status LEDs, separate encoder and click inputs
|
||||||
//#define LCD_I2C_PANELOLU2
|
//#define LCD_I2C_PANELOLU2
|
||||||
#ifdef LCD_I2C_PANELOLU2
|
|
||||||
// This uses the LiquidTWI2 library v1.2.3 or later ( https://github.com/lincomatic/LiquidTWI2 )
|
|
||||||
// Make sure the LiquidTWI2 directory is placed in the Arduino or Sketchbook libraries subdirectory.
|
|
||||||
// (v1.2.3 no longer requires you to define PANELOLU in the LiquidTWI2.h library header file)
|
|
||||||
// Note: The PANELOLU2 encoder click input can either be directly connected to a pin
|
|
||||||
// (if BTN_ENC defined to != -1) or read through I2C (when BTN_ENC == -1).
|
|
||||||
#define LCD_I2C_TYPE_MCP23017
|
|
||||||
#define LCD_I2C_ADDRESS 0x20 // I2C Address of the port expander
|
|
||||||
#define LCD_USE_I2C_BUZZER //comment out to disable buzzer on LCD
|
|
||||||
#define NEWPANEL
|
|
||||||
#define ULTIPANEL
|
|
||||||
|
|
||||||
#ifndef ENCODER_PULSES_PER_STEP
|
|
||||||
#define ENCODER_PULSES_PER_STEP 4
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifndef ENCODER_STEPS_PER_MENU_ITEM
|
|
||||||
#define ENCODER_STEPS_PER_MENU_ITEM 1
|
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
||||||
#ifdef LCD_USE_I2C_BUZZER
|
|
||||||
#define LCD_FEEDBACK_FREQUENCY_HZ 1000
|
|
||||||
#define LCD_FEEDBACK_FREQUENCY_DURATION_MS 100
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// Panucatt VIKI LCD with status LEDs, integrated click & L/R/U/P buttons, separate encoder inputs
|
// Panucatt VIKI LCD with status LEDs, integrated click & L/R/U/P buttons, separate encoder inputs
|
||||||
//#define LCD_I2C_VIKI
|
//#define LCD_I2C_VIKI
|
||||||
#ifdef LCD_I2C_VIKI
|
|
||||||
// This uses the LiquidTWI2 library v1.2.3 or later ( https://github.com/lincomatic/LiquidTWI2 )
|
|
||||||
// Make sure the LiquidTWI2 directory is placed in the Arduino or Sketchbook libraries subdirectory.
|
|
||||||
// Note: The pause/stop/resume LCD button pin should be connected to the Arduino
|
|
||||||
// BTN_ENC pin (or set BTN_ENC to -1 if not used)
|
|
||||||
#define LCD_I2C_TYPE_MCP23017
|
|
||||||
#define LCD_I2C_ADDRESS 0x20 // I2C Address of the port expander
|
|
||||||
#define LCD_USE_I2C_BUZZER //comment out to disable buzzer on LCD (requires LiquidTWI2 v1.2.3 or later)
|
|
||||||
#define NEWPANEL
|
|
||||||
#define ULTIPANEL
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// Shift register panels
|
// Shift register panels
|
||||||
// ---------------------
|
// ---------------------
|
||||||
|
@ -750,51 +668,10 @@ const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of
|
||||||
// https://bitbucket.org/fmalpartida/new-liquidcrystal/wiki/schematics#!shiftregister-connection
|
// https://bitbucket.org/fmalpartida/new-liquidcrystal/wiki/schematics#!shiftregister-connection
|
||||||
|
|
||||||
//#define SAV_3DLCD
|
//#define SAV_3DLCD
|
||||||
#ifdef SAV_3DLCD
|
|
||||||
#define SR_LCD_2W_NL // Non latching 2 wire shiftregister
|
|
||||||
#define NEWPANEL
|
|
||||||
#define ULTIPANEL
|
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
||||||
#ifdef ULTIPANEL
|
|
||||||
// #define NEWPANEL //enable this if you have a click-encoder panel
|
|
||||||
#define SDSUPPORT
|
|
||||||
#define ULTRA_LCD
|
|
||||||
#ifdef DOGLCD // Change number of lines to match the DOG graphic display
|
|
||||||
#define LCD_WIDTH 22
|
|
||||||
#define LCD_HEIGHT 5
|
|
||||||
#else
|
|
||||||
#define LCD_WIDTH 20
|
|
||||||
#define LCD_HEIGHT 4
|
|
||||||
#endif
|
|
||||||
#else //no panel but just LCD
|
|
||||||
#ifdef ULTRA_LCD
|
|
||||||
#ifdef DOGLCD // Change number of lines to match the 128x64 graphics display
|
|
||||||
#define LCD_WIDTH 22
|
|
||||||
#define LCD_HEIGHT 5
|
|
||||||
#else
|
|
||||||
#define LCD_WIDTH 16
|
|
||||||
#define LCD_HEIGHT 2
|
|
||||||
#endif
|
|
||||||
#endif
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// default LCD contrast for dogm-like LCD displays
|
|
||||||
#ifdef DOGLCD
|
|
||||||
# ifndef DEFAULT_LCD_CONTRAST
|
|
||||||
# define DEFAULT_LCD_CONTRAST 32
|
|
||||||
# endif
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// Increase the FAN pwm frequency. Removes the PWM noise but increases heating in the FET/Arduino
|
// Increase the FAN pwm frequency. Removes the PWM noise but increases heating in the FET/Arduino
|
||||||
//#define FAST_PWM_FAN
|
//#define FAST_PWM_FAN
|
||||||
|
|
||||||
// Temperature status LEDs that display the hotend and bet temperature.
|
|
||||||
// If all hotends and bed temperature and temperature setpoint are < 54C then the BLUE led is on.
|
|
||||||
// Otherwise the RED led is on. There is 1C hysteresis.
|
|
||||||
//#define TEMP_STAT_LEDS
|
|
||||||
|
|
||||||
// Use software PWM to drive the fan, as for the heaters. This uses a very low frequency
|
// Use software PWM to drive the fan, as for the heaters. This uses a very low frequency
|
||||||
// which is not ass annoying as with the hardware PWM. On the other hand, if this frequency
|
// which is not ass annoying as with the hardware PWM. On the other hand, if this frequency
|
||||||
// is too low, you should also increment SOFT_PWM_SCALE.
|
// is too low, you should also increment SOFT_PWM_SCALE.
|
||||||
|
@ -806,6 +683,11 @@ const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of
|
||||||
// at zero value, there are 128 effective control positions.
|
// at zero value, there are 128 effective control positions.
|
||||||
#define SOFT_PWM_SCALE 0
|
#define SOFT_PWM_SCALE 0
|
||||||
|
|
||||||
|
// Temperature status LEDs that display the hotend and bet temperature.
|
||||||
|
// If all hotends and bed temperature and temperature setpoint are < 54C then the BLUE led is on.
|
||||||
|
// Otherwise the RED led is on. There is 1C hysteresis.
|
||||||
|
//#define TEMP_STAT_LEDS
|
||||||
|
|
||||||
// M240 Triggers a camera by emulating a Canon RC-1 Remote
|
// M240 Triggers a camera by emulating a Canon RC-1 Remote
|
||||||
// Data from: http://www.doc-diy.net/photo/rc-1_hacked/
|
// Data from: http://www.doc-diy.net/photo/rc-1_hacked/
|
||||||
// #define PHOTOGRAPH_PIN 23
|
// #define PHOTOGRAPH_PIN 23
|
||||||
|
@ -877,4 +759,4 @@ const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of
|
||||||
#include "Configuration_adv.h"
|
#include "Configuration_adv.h"
|
||||||
#include "thermistortables.h"
|
#include "thermistortables.h"
|
||||||
|
|
||||||
#endif //__CONFIGURATION_H
|
#endif //CONFIGURATION_H
|
||||||
|
|
|
@ -1,6 +1,8 @@
|
||||||
#ifndef CONFIGURATION_ADV_H
|
#ifndef CONFIGURATION_ADV_H
|
||||||
#define CONFIGURATION_ADV_H
|
#define CONFIGURATION_ADV_H
|
||||||
|
|
||||||
|
#include "Conditionals.h"
|
||||||
|
|
||||||
//===========================================================================
|
//===========================================================================
|
||||||
//=============================Thermal Settings ============================
|
//=============================Thermal Settings ============================
|
||||||
//===========================================================================
|
//===========================================================================
|
||||||
|
@ -89,54 +91,6 @@
|
||||||
|
|
||||||
#define ENDSTOPS_ONLY_FOR_HOMING // If defined the endstops will only be used for homing
|
#define ENDSTOPS_ONLY_FOR_HOMING // If defined the endstops will only be used for homing
|
||||||
|
|
||||||
|
|
||||||
//// AUTOSET LOCATIONS OF LIMIT SWITCHES
|
|
||||||
//// Added by ZetaPhoenix 09-15-2012
|
|
||||||
#ifdef MANUAL_HOME_POSITIONS // Use manual limit switch locations
|
|
||||||
#define X_HOME_POS MANUAL_X_HOME_POS
|
|
||||||
#define Y_HOME_POS MANUAL_Y_HOME_POS
|
|
||||||
#define Z_HOME_POS MANUAL_Z_HOME_POS
|
|
||||||
#else //Set min/max homing switch positions based upon homing direction and min/max travel limits
|
|
||||||
//X axis
|
|
||||||
#if X_HOME_DIR == -1
|
|
||||||
#ifdef BED_CENTER_AT_0_0
|
|
||||||
#define X_HOME_POS X_MAX_LENGTH * -0.5
|
|
||||||
#else
|
|
||||||
#define X_HOME_POS X_MIN_POS
|
|
||||||
#endif //BED_CENTER_AT_0_0
|
|
||||||
#else
|
|
||||||
#ifdef BED_CENTER_AT_0_0
|
|
||||||
#define X_HOME_POS X_MAX_LENGTH * 0.5
|
|
||||||
#else
|
|
||||||
#define X_HOME_POS X_MAX_POS
|
|
||||||
#endif //BED_CENTER_AT_0_0
|
|
||||||
#endif //X_HOME_DIR == -1
|
|
||||||
|
|
||||||
//Y axis
|
|
||||||
#if Y_HOME_DIR == -1
|
|
||||||
#ifdef BED_CENTER_AT_0_0
|
|
||||||
#define Y_HOME_POS Y_MAX_LENGTH * -0.5
|
|
||||||
#else
|
|
||||||
#define Y_HOME_POS Y_MIN_POS
|
|
||||||
#endif //BED_CENTER_AT_0_0
|
|
||||||
#else
|
|
||||||
#ifdef BED_CENTER_AT_0_0
|
|
||||||
#define Y_HOME_POS Y_MAX_LENGTH * 0.5
|
|
||||||
#else
|
|
||||||
#define Y_HOME_POS Y_MAX_POS
|
|
||||||
#endif //BED_CENTER_AT_0_0
|
|
||||||
#endif //Y_HOME_DIR == -1
|
|
||||||
|
|
||||||
// Z axis
|
|
||||||
#if Z_HOME_DIR == -1 //BED_CENTER_AT_0_0 not used
|
|
||||||
#define Z_HOME_POS Z_MIN_POS
|
|
||||||
#else
|
|
||||||
#define Z_HOME_POS Z_MAX_POS
|
|
||||||
#endif //Z_HOME_DIR == -1
|
|
||||||
#endif //End auto min/max positions
|
|
||||||
//END AUTOSET LOCATIONS OF LIMIT SWITCHES -ZP
|
|
||||||
|
|
||||||
|
|
||||||
//#define Z_LATE_ENABLE // Enable Z the last moment. Needed if your Z driver overheats.
|
//#define Z_LATE_ENABLE // Enable Z the last moment. Needed if your Z driver overheats.
|
||||||
|
|
||||||
// A single Z stepper driver is usually used to drive 2 stepper motors.
|
// A single Z stepper driver is usually used to drive 2 stepper motors.
|
||||||
|
@ -146,26 +100,12 @@
|
||||||
// On a RAMPS (or other 5 driver) motherboard, using this feature will limit you to using 1 extruder.
|
// On a RAMPS (or other 5 driver) motherboard, using this feature will limit you to using 1 extruder.
|
||||||
//#define Z_DUAL_STEPPER_DRIVERS
|
//#define Z_DUAL_STEPPER_DRIVERS
|
||||||
|
|
||||||
#ifdef Z_DUAL_STEPPER_DRIVERS
|
|
||||||
#undef EXTRUDERS
|
|
||||||
#define EXTRUDERS 1
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// Same again but for Y Axis.
|
// Same again but for Y Axis.
|
||||||
//#define Y_DUAL_STEPPER_DRIVERS
|
//#define Y_DUAL_STEPPER_DRIVERS
|
||||||
|
|
||||||
// Define if the two Y drives need to rotate in opposite directions
|
// Define if the two Y drives need to rotate in opposite directions
|
||||||
#define INVERT_Y2_VS_Y_DIR true
|
#define INVERT_Y2_VS_Y_DIR true
|
||||||
|
|
||||||
#ifdef Y_DUAL_STEPPER_DRIVERS
|
|
||||||
#undef EXTRUDERS
|
|
||||||
#define EXTRUDERS 1
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if defined (Z_DUAL_STEPPER_DRIVERS) && defined (Y_DUAL_STEPPER_DRIVERS)
|
|
||||||
#error "You cannot have dual drivers for both Y and Z"
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// Enable this for dual x-carriage printers.
|
// Enable this for dual x-carriage printers.
|
||||||
// A dual x-carriage design has the advantage that the inactive extruder can be parked which
|
// A dual x-carriage design has the advantage that the inactive extruder can be parked which
|
||||||
// prevents hot-end ooze contaminating the print. It also reduces the weight of each x-carriage
|
// prevents hot-end ooze contaminating the print. It also reduces the weight of each x-carriage
|
||||||
|
@ -228,7 +168,7 @@
|
||||||
#define INVERT_Z_STEP_PIN false
|
#define INVERT_Z_STEP_PIN false
|
||||||
#define INVERT_E_STEP_PIN false
|
#define INVERT_E_STEP_PIN false
|
||||||
|
|
||||||
//default stepper release if idle. Set to 0 to deactivate.
|
// Default stepper release if idle. Set to 0 to deactivate.
|
||||||
#define DEFAULT_STEPPER_DEACTIVE_TIME 60
|
#define DEFAULT_STEPPER_DEACTIVE_TIME 60
|
||||||
|
|
||||||
#define DEFAULT_MINIMUMFEEDRATE 0.0 // minimum feedrate
|
#define DEFAULT_MINIMUMFEEDRATE 0.0 // minimum feedrate
|
||||||
|
@ -236,7 +176,7 @@
|
||||||
|
|
||||||
// Feedrates for manual moves along X, Y, Z, E from panel
|
// Feedrates for manual moves along X, Y, Z, E from panel
|
||||||
#ifdef ULTIPANEL
|
#ifdef ULTIPANEL
|
||||||
#define MANUAL_FEEDRATE {50*60, 50*60, 4*60, 60} // set the speeds for manual moves (mm/min)
|
#define MANUAL_FEEDRATE {50*60, 50*60, 4*60, 60} // Feedrates for manual moves along X, Y, Z, E from panel
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// minimum time in microseconds that a movement needs to take if the buffer is emptied.
|
// minimum time in microseconds that a movement needs to take if the buffer is emptied.
|
||||||
|
@ -256,13 +196,6 @@
|
||||||
// if unwanted behavior is observed on a user's machine when running at very slow speeds.
|
// if unwanted behavior is observed on a user's machine when running at very slow speeds.
|
||||||
#define MINIMUM_PLANNER_SPEED 0.05// (mm/sec)
|
#define MINIMUM_PLANNER_SPEED 0.05// (mm/sec)
|
||||||
|
|
||||||
// MS1 MS2 Stepper Driver Microstepping mode table
|
|
||||||
#define MICROSTEP1 LOW,LOW
|
|
||||||
#define MICROSTEP2 HIGH,LOW
|
|
||||||
#define MICROSTEP4 LOW,HIGH
|
|
||||||
#define MICROSTEP8 HIGH,HIGH
|
|
||||||
#define MICROSTEP16 HIGH,HIGH
|
|
||||||
|
|
||||||
// Microstep setting (Only functional when stepper driver microstep pins are connected to MCU.
|
// Microstep setting (Only functional when stepper driver microstep pins are connected to MCU.
|
||||||
#define MICROSTEP_MODES {16,16,16,16,16} // [1,2,4,8,16]
|
#define MICROSTEP_MODES {16,16,16,16,16} // [1,2,4,8,16]
|
||||||
|
|
||||||
|
@ -331,16 +264,6 @@
|
||||||
#define BABYSTEP_XY //not only z, but also XY in the menu. more clutter, more functions
|
#define BABYSTEP_XY //not only z, but also XY in the menu. more clutter, more functions
|
||||||
#define BABYSTEP_INVERT_Z false //true for inverse movements in Z
|
#define BABYSTEP_INVERT_Z false //true for inverse movements in Z
|
||||||
#define BABYSTEP_Z_MULTIPLICATOR 2 //faster z movements
|
#define BABYSTEP_Z_MULTIPLICATOR 2 //faster z movements
|
||||||
|
|
||||||
#ifdef COREXY
|
|
||||||
#error BABYSTEPPING not implemented for COREXY yet.
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef DELTA
|
|
||||||
#ifdef BABYSTEP_XY
|
|
||||||
#error BABYSTEPPING only implemented for Z axis on deltabots.
|
|
||||||
#endif
|
|
||||||
#endif
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// extruder advance constant (s2/mm3)
|
// extruder advance constant (s2/mm3)
|
||||||
|
@ -354,12 +277,8 @@
|
||||||
|
|
||||||
#ifdef ADVANCE
|
#ifdef ADVANCE
|
||||||
#define EXTRUDER_ADVANCE_K .0
|
#define EXTRUDER_ADVANCE_K .0
|
||||||
|
|
||||||
#define D_FILAMENT 2.85
|
#define D_FILAMENT 2.85
|
||||||
#define STEPS_MM_E 836
|
#define STEPS_MM_E 836
|
||||||
#define EXTRUSION_AREA (0.25 * D_FILAMENT * D_FILAMENT * 3.14159)
|
|
||||||
#define STEPS_PER_CUBIC_MM_E (axis_steps_per_unit[E_AXIS]/ EXTRUSION_AREA)
|
|
||||||
|
|
||||||
#endif // ADVANCE
|
#endif // ADVANCE
|
||||||
|
|
||||||
// Arc interpretation settings:
|
// Arc interpretation settings:
|
||||||
|
@ -374,26 +293,6 @@ const unsigned int dropsegments=5; //everything with less than this number of st
|
||||||
// be commented out otherwise
|
// be commented out otherwise
|
||||||
#define SDCARDDETECTINVERTED
|
#define SDCARDDETECTINVERTED
|
||||||
|
|
||||||
#ifdef ULTIPANEL
|
|
||||||
#undef SDCARDDETECTINVERTED
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// Power Signal Control Definitions
|
|
||||||
// By default use ATX definition
|
|
||||||
#ifndef POWER_SUPPLY
|
|
||||||
#define POWER_SUPPLY 1
|
|
||||||
#endif
|
|
||||||
// 1 = ATX
|
|
||||||
#if (POWER_SUPPLY == 1)
|
|
||||||
#define PS_ON_AWAKE LOW
|
|
||||||
#define PS_ON_ASLEEP HIGH
|
|
||||||
#endif
|
|
||||||
// 2 = X-Box 360 203W
|
|
||||||
#if (POWER_SUPPLY == 2)
|
|
||||||
#define PS_ON_AWAKE HIGH
|
|
||||||
#define PS_ON_ASLEEP LOW
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// Control heater 0 and heater 1 in parallel.
|
// Control heater 0 and heater 1 in parallel.
|
||||||
//#define HEATERS_PARALLEL
|
//#define HEATERS_PARALLEL
|
||||||
|
|
||||||
|
@ -433,9 +332,9 @@ const unsigned int dropsegments=5; //everything with less than this number of st
|
||||||
#define RETRACT_RECOVER_FEEDRATE 8 //default feedrate for recovering from retraction (mm/s)
|
#define RETRACT_RECOVER_FEEDRATE 8 //default feedrate for recovering from retraction (mm/s)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
//adds support for experimental filament exchange support M600; requires display
|
// Add support for experimental filament exchange support M600; requires display
|
||||||
#ifdef ULTIPANEL
|
#ifdef ULTIPANEL
|
||||||
#define FILAMENTCHANGEENABLE
|
//#define FILAMENTCHANGEENABLE
|
||||||
#ifdef FILAMENTCHANGEENABLE
|
#ifdef FILAMENTCHANGEENABLE
|
||||||
#define FILAMENTCHANGE_XPOS 3
|
#define FILAMENTCHANGE_XPOS 3
|
||||||
#define FILAMENTCHANGE_YPOS 3
|
#define FILAMENTCHANGE_YPOS 3
|
||||||
|
@ -445,104 +344,7 @@ const unsigned int dropsegments=5; //everything with less than this number of st
|
||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef FILAMENTCHANGEENABLE
|
#include "Conditionals.h"
|
||||||
#ifdef EXTRUDER_RUNOUT_PREVENT
|
#include "SanityCheck.h"
|
||||||
#error EXTRUDER_RUNOUT_PREVENT currently incompatible with FILAMENTCHANGE
|
|
||||||
#endif
|
|
||||||
#endif
|
|
||||||
|
|
||||||
//===========================================================================
|
#endif //CONFIGURATION_ADV_H
|
||||||
//============================= Define Defines ============================
|
|
||||||
//===========================================================================
|
|
||||||
|
|
||||||
#if defined (ENABLE_AUTO_BED_LEVELING) && defined (DELTA)
|
|
||||||
|
|
||||||
#if not defined(AUTO_BED_LEVELING_GRID)
|
|
||||||
#error "Only Grid Bed Auto Leveling is supported on Deltas."
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if defined(Z_PROBE_SLED)
|
|
||||||
#error "You cannot use Z_PROBE_SLED together with DELTA."
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if defined(Z_PROBE_REPEATABILITY_TEST)
|
|
||||||
#error "Z-probe repeatability test is not supported on Deltas yet."
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if defined(Z_PROBE_ALLEN_KEY)
|
|
||||||
#if !defined(AUTO_BED_LEVELING_GRID) || !defined(DELTA)
|
|
||||||
#error "Invalid use of Z_PROBE_ALLEN_KEY."
|
|
||||||
#endif
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if EXTRUDERS > 1 && defined TEMP_SENSOR_1_AS_REDUNDANT
|
|
||||||
#error "You cannot use TEMP_SENSOR_1_AS_REDUNDANT if EXTRUDERS > 1"
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if EXTRUDERS > 1 && defined HEATERS_PARALLEL
|
|
||||||
#error "You cannot use HEATERS_PARALLEL if EXTRUDERS > 1"
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if TEMP_SENSOR_0 > 0
|
|
||||||
#define THERMISTORHEATER_0 TEMP_SENSOR_0
|
|
||||||
#define HEATER_0_USES_THERMISTOR
|
|
||||||
#endif
|
|
||||||
#if TEMP_SENSOR_1 > 0
|
|
||||||
#define THERMISTORHEATER_1 TEMP_SENSOR_1
|
|
||||||
#define HEATER_1_USES_THERMISTOR
|
|
||||||
#endif
|
|
||||||
#if TEMP_SENSOR_2 > 0
|
|
||||||
#define THERMISTORHEATER_2 TEMP_SENSOR_2
|
|
||||||
#define HEATER_2_USES_THERMISTOR
|
|
||||||
#endif
|
|
||||||
#if TEMP_SENSOR_3 > 0
|
|
||||||
#define THERMISTORHEATER_3 TEMP_SENSOR_3
|
|
||||||
#define HEATER_3_USES_THERMISTOR
|
|
||||||
#endif
|
|
||||||
#if TEMP_SENSOR_BED > 0
|
|
||||||
#define THERMISTORBED TEMP_SENSOR_BED
|
|
||||||
#define BED_USES_THERMISTOR
|
|
||||||
#endif
|
|
||||||
#if TEMP_SENSOR_0 == -1
|
|
||||||
#define HEATER_0_USES_AD595
|
|
||||||
#endif
|
|
||||||
#if TEMP_SENSOR_1 == -1
|
|
||||||
#define HEATER_1_USES_AD595
|
|
||||||
#endif
|
|
||||||
#if TEMP_SENSOR_2 == -1
|
|
||||||
#define HEATER_2_USES_AD595
|
|
||||||
#endif
|
|
||||||
#if TEMP_SENSOR_3 == -1
|
|
||||||
#define HEATER_3_USES_AD595
|
|
||||||
#endif
|
|
||||||
#if TEMP_SENSOR_BED == -1
|
|
||||||
#define BED_USES_AD595
|
|
||||||
#endif
|
|
||||||
#if TEMP_SENSOR_0 == -2
|
|
||||||
#define HEATER_0_USES_MAX6675
|
|
||||||
#endif
|
|
||||||
#if TEMP_SENSOR_0 == 0
|
|
||||||
#undef HEATER_0_MINTEMP
|
|
||||||
#undef HEATER_0_MAXTEMP
|
|
||||||
#endif
|
|
||||||
#if TEMP_SENSOR_1 == 0
|
|
||||||
#undef HEATER_1_MINTEMP
|
|
||||||
#undef HEATER_1_MAXTEMP
|
|
||||||
#endif
|
|
||||||
#if TEMP_SENSOR_2 == 0
|
|
||||||
#undef HEATER_2_MINTEMP
|
|
||||||
#undef HEATER_2_MAXTEMP
|
|
||||||
#endif
|
|
||||||
#if TEMP_SENSOR_3 == 0
|
|
||||||
#undef HEATER_3_MINTEMP
|
|
||||||
#undef HEATER_3_MAXTEMP
|
|
||||||
#endif
|
|
||||||
#if TEMP_SENSOR_BED == 0
|
|
||||||
#undef BED_MINTEMP
|
|
||||||
#undef BED_MAXTEMP
|
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
||||||
#endif //__CONFIGURATION_ADV_H
|
|
||||||
|
|
|
@ -350,15 +350,6 @@ your extruder heater takes 2 minutes to hit the target on heating.
|
||||||
// #define ENDSTOPPULLUP_ZMIN
|
// #define ENDSTOPPULLUP_ZMIN
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef ENDSTOPPULLUPS
|
|
||||||
#define ENDSTOPPULLUP_XMAX
|
|
||||||
#define ENDSTOPPULLUP_YMAX
|
|
||||||
#define ENDSTOPPULLUP_ZMAX
|
|
||||||
#define ENDSTOPPULLUP_XMIN
|
|
||||||
#define ENDSTOPPULLUP_YMIN
|
|
||||||
#define ENDSTOPPULLUP_ZMIN
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// The pullups are needed if you directly connect a mechanical endswitch between the signal and ground pins.
|
// The pullups are needed if you directly connect a mechanical endswitch between the signal and ground pins.
|
||||||
const bool X_MIN_ENDSTOP_INVERTING = false; // set to true to invert the logic of the endstop.
|
const bool X_MIN_ENDSTOP_INVERTING = false; // set to true to invert the logic of the endstop.
|
||||||
const bool Y_MIN_ENDSTOP_INVERTING = false; // set to true to invert the logic of the endstop.
|
const bool Y_MIN_ENDSTOP_INVERTING = false; // set to true to invert the logic of the endstop.
|
||||||
|
@ -409,10 +400,32 @@ const bool Z_MAX_ENDSTOP_INVERTING = false; // set to true to invert the logic o
|
||||||
#define Z_MAX_POS MANUAL_Z_HOME_POS
|
#define Z_MAX_POS MANUAL_Z_HOME_POS
|
||||||
#define Z_MIN_POS 0
|
#define Z_MIN_POS 0
|
||||||
|
|
||||||
#define X_MAX_LENGTH (X_MAX_POS - X_MIN_POS)
|
//===========================================================================
|
||||||
#define Y_MAX_LENGTH (Y_MAX_POS - Y_MIN_POS)
|
//============================= Filament Runout Sensor ======================
|
||||||
#define Z_MAX_LENGTH (Z_MAX_POS - Z_MIN_POS)
|
//===========================================================================
|
||||||
|
//#define FILAMENT_RUNOUT_SENSOR // Uncomment for defining a filament runout sensor such as a mechanical or opto endstop to check the existence of filament
|
||||||
|
// In RAMPS uses servo pin 2. Can be changed in pins file. For other boards pin definition should be made.
|
||||||
|
// It is assumed that when logic high = filament available
|
||||||
|
// when logic low = filament ran out
|
||||||
|
//const bool FIL_RUNOUT_INVERTING = true; // Should be uncommented and true or false should assigned
|
||||||
|
//#define ENDSTOPPULLUP_FIL_RUNOUT // Uncomment to use internal pullup for filament runout pins if the sensor is defined.
|
||||||
|
|
||||||
|
//===========================================================================
|
||||||
|
//============================ Manual Bed Leveling ==========================
|
||||||
|
//===========================================================================
|
||||||
|
|
||||||
|
// #define MANUAL_BED_LEVELING // Add display menu option for bed leveling
|
||||||
|
// #define MESH_BED_LEVELING // Enable mesh bed leveling
|
||||||
|
|
||||||
|
#if defined(MESH_BED_LEVELING)
|
||||||
|
#define MESH_MIN_X 10
|
||||||
|
#define MESH_MAX_X (X_MAX_POS - MESH_MIN_X)
|
||||||
|
#define MESH_MIN_Y 10
|
||||||
|
#define MESH_MAX_Y (Y_MAX_POS - MESH_MIN_Y)
|
||||||
|
#define MESH_NUM_X_POINTS 3 // Don't use more than 7 points per axis, implementation limited
|
||||||
|
#define MESH_NUM_Y_POINTS 3
|
||||||
|
#define MESH_HOME_SEARCH_Z 4 // Z after Home, bed somewhere below but above 0.0
|
||||||
|
#endif // MESH_BED_LEVELING
|
||||||
|
|
||||||
//===========================================================================
|
//===========================================================================
|
||||||
//============================= Bed Auto Leveling ===========================
|
//============================= Bed Auto Leveling ===========================
|
||||||
|
@ -639,112 +652,17 @@ const bool Z_MAX_ENDSTOP_INVERTING = false; // set to true to invert the logic o
|
||||||
// in ultralcd.cpp@lcd_delta_calibrate_menu()
|
// in ultralcd.cpp@lcd_delta_calibrate_menu()
|
||||||
// #define DELTA_CALIBRATION_MENU
|
// #define DELTA_CALIBRATION_MENU
|
||||||
|
|
||||||
//automatic expansion
|
/**
|
||||||
#if defined (MAKRPANEL)
|
* I2C Panels
|
||||||
#define DOGLCD
|
*/
|
||||||
#define SDSUPPORT
|
|
||||||
#define ULTIPANEL
|
|
||||||
#define NEWPANEL
|
|
||||||
#define DEFAULT_LCD_CONTRAST 17
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if defined(miniVIKI) || defined(VIKI2)
|
|
||||||
#define ULTRA_LCD //general LCD support, also 16x2
|
|
||||||
#define DOGLCD // Support for SPI LCD 128x64 (Controller ST7565R graphic Display Family)
|
|
||||||
#define ULTIMAKERCONTROLLER //as available from the Ultimaker online store.
|
|
||||||
|
|
||||||
#ifdef miniVIKI
|
|
||||||
#define DEFAULT_LCD_CONTRAST 95
|
|
||||||
#else
|
|
||||||
#define DEFAULT_LCD_CONTRAST 40
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#define ENCODER_PULSES_PER_STEP 4
|
|
||||||
#define ENCODER_STEPS_PER_MENU_ITEM 1
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if defined (PANEL_ONE)
|
|
||||||
#define SDSUPPORT
|
|
||||||
#define ULTIMAKERCONTROLLER
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if defined (REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER)
|
|
||||||
#define DOGLCD
|
|
||||||
#define U8GLIB_ST7920
|
|
||||||
#define REPRAP_DISCOUNT_SMART_CONTROLLER
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if defined(ULTIMAKERCONTROLLER) || defined(REPRAP_DISCOUNT_SMART_CONTROLLER) || defined(G3D_PANEL)
|
|
||||||
#define ULTIPANEL
|
|
||||||
#define NEWPANEL
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if defined(REPRAPWORLD_KEYPAD)
|
|
||||||
#define NEWPANEL
|
|
||||||
#define ULTIPANEL
|
|
||||||
#endif
|
|
||||||
#if defined(RA_CONTROL_PANEL)
|
|
||||||
#define ULTIPANEL
|
|
||||||
#define NEWPANEL
|
|
||||||
#define LCD_I2C_TYPE_PCA8574
|
|
||||||
#define LCD_I2C_ADDRESS 0x27 // I2C Address of the port expander
|
|
||||||
#endif
|
|
||||||
|
|
||||||
//I2C PANELS
|
|
||||||
|
|
||||||
//#define LCD_I2C_SAINSMART_YWROBOT
|
//#define LCD_I2C_SAINSMART_YWROBOT
|
||||||
#ifdef LCD_I2C_SAINSMART_YWROBOT
|
|
||||||
// This uses the LiquidCrystal_I2C library ( https://bitbucket.org/fmalpartida/new-liquidcrystal/wiki/Home )
|
|
||||||
// Make sure it is placed in the Arduino libraries directory.
|
|
||||||
#define LCD_I2C_TYPE_PCF8575
|
|
||||||
#define LCD_I2C_ADDRESS 0x27 // I2C Address of the port expander
|
|
||||||
#define NEWPANEL
|
|
||||||
#define ULTIPANEL
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// PANELOLU2 LCD with status LEDs, separate encoder and click inputs
|
// PANELOLU2 LCD with status LEDs, separate encoder and click inputs
|
||||||
//#define LCD_I2C_PANELOLU2
|
//#define LCD_I2C_PANELOLU2
|
||||||
#ifdef LCD_I2C_PANELOLU2
|
|
||||||
// This uses the LiquidTWI2 library v1.2.3 or later ( https://github.com/lincomatic/LiquidTWI2 )
|
|
||||||
// Make sure the LiquidTWI2 directory is placed in the Arduino or Sketchbook libraries subdirectory.
|
|
||||||
// (v1.2.3 no longer requires you to define PANELOLU in the LiquidTWI2.h library header file)
|
|
||||||
// Note: The PANELOLU2 encoder click input can either be directly connected to a pin
|
|
||||||
// (if BTN_ENC defined to != -1) or read through I2C (when BTN_ENC == -1).
|
|
||||||
#define LCD_I2C_TYPE_MCP23017
|
|
||||||
#define LCD_I2C_ADDRESS 0x20 // I2C Address of the port expander
|
|
||||||
#define LCD_USE_I2C_BUZZER //comment out to disable buzzer on LCD
|
|
||||||
#define NEWPANEL
|
|
||||||
#define ULTIPANEL
|
|
||||||
|
|
||||||
#ifndef ENCODER_PULSES_PER_STEP
|
|
||||||
#define ENCODER_PULSES_PER_STEP 4
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifndef ENCODER_STEPS_PER_MENU_ITEM
|
|
||||||
#define ENCODER_STEPS_PER_MENU_ITEM 1
|
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
||||||
#ifdef LCD_USE_I2C_BUZZER
|
|
||||||
#define LCD_FEEDBACK_FREQUENCY_HZ 1000
|
|
||||||
#define LCD_FEEDBACK_FREQUENCY_DURATION_MS 100
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// Panucatt VIKI LCD with status LEDs, integrated click & L/R/U/P buttons, separate encoder inputs
|
// Panucatt VIKI LCD with status LEDs, integrated click & L/R/U/P buttons, separate encoder inputs
|
||||||
//#define LCD_I2C_VIKI
|
//#define LCD_I2C_VIKI
|
||||||
#ifdef LCD_I2C_VIKI
|
|
||||||
// This uses the LiquidTWI2 library v1.2.3 or later ( https://github.com/lincomatic/LiquidTWI2 )
|
|
||||||
// Make sure the LiquidTWI2 directory is placed in the Arduino or Sketchbook libraries subdirectory.
|
|
||||||
// Note: The pause/stop/resume LCD button pin should be connected to the Arduino
|
|
||||||
// BTN_ENC pin (or set BTN_ENC to -1 if not used)
|
|
||||||
#define LCD_I2C_TYPE_MCP23017
|
|
||||||
#define LCD_I2C_ADDRESS 0x20 // I2C Address of the port expander
|
|
||||||
#define LCD_USE_I2C_BUZZER //comment out to disable buzzer on LCD (requires LiquidTWI2 v1.2.3 or later)
|
|
||||||
#define NEWPANEL
|
|
||||||
#define ULTIPANEL
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// Shift register panels
|
// Shift register panels
|
||||||
// ---------------------
|
// ---------------------
|
||||||
|
@ -752,51 +670,10 @@ const bool Z_MAX_ENDSTOP_INVERTING = false; // set to true to invert the logic o
|
||||||
// https://bitbucket.org/fmalpartida/new-liquidcrystal/wiki/schematics#!shiftregister-connection
|
// https://bitbucket.org/fmalpartida/new-liquidcrystal/wiki/schematics#!shiftregister-connection
|
||||||
|
|
||||||
//#define SAV_3DLCD
|
//#define SAV_3DLCD
|
||||||
#ifdef SAV_3DLCD
|
|
||||||
#define SR_LCD_2W_NL // Non latching 2 wire shiftregister
|
|
||||||
#define NEWPANEL
|
|
||||||
#define ULTIPANEL
|
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
||||||
#ifdef ULTIPANEL
|
|
||||||
// #define NEWPANEL //enable this if you have a click-encoder panel
|
|
||||||
#define SDSUPPORT
|
|
||||||
#define ULTRA_LCD
|
|
||||||
#ifdef DOGLCD // Change number of lines to match the DOG graphic display
|
|
||||||
#define LCD_WIDTH 22
|
|
||||||
#define LCD_HEIGHT 5
|
|
||||||
#else
|
|
||||||
#define LCD_WIDTH 20
|
|
||||||
#define LCD_HEIGHT 4
|
|
||||||
#endif
|
|
||||||
#else //no panel but just LCD
|
|
||||||
#ifdef ULTRA_LCD
|
|
||||||
#ifdef DOGLCD // Change number of lines to match the 128x64 graphics display
|
|
||||||
#define LCD_WIDTH 22
|
|
||||||
#define LCD_HEIGHT 5
|
|
||||||
#else
|
|
||||||
#define LCD_WIDTH 16
|
|
||||||
#define LCD_HEIGHT 2
|
|
||||||
#endif
|
|
||||||
#endif
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// default LCD contrast for dogm-like LCD displays
|
|
||||||
#ifdef DOGLCD
|
|
||||||
# ifndef DEFAULT_LCD_CONTRAST
|
|
||||||
# define DEFAULT_LCD_CONTRAST 32
|
|
||||||
# endif
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// Increase the FAN pwm frequency. Removes the PWM noise but increases heating in the FET/Arduino
|
// Increase the FAN pwm frequency. Removes the PWM noise but increases heating in the FET/Arduino
|
||||||
//#define FAST_PWM_FAN
|
//#define FAST_PWM_FAN
|
||||||
|
|
||||||
// Temperature status LEDs that display the hotend and bet temperature.
|
|
||||||
// If all hotends and bed temperature and temperature setpoint are < 54C then the BLUE led is on.
|
|
||||||
// Otherwise the RED led is on. There is 1C hysteresis.
|
|
||||||
//#define TEMP_STAT_LEDS
|
|
||||||
|
|
||||||
// Use software PWM to drive the fan, as for the heaters. This uses a very low frequency
|
// Use software PWM to drive the fan, as for the heaters. This uses a very low frequency
|
||||||
// which is not ass annoying as with the hardware PWM. On the other hand, if this frequency
|
// which is not ass annoying as with the hardware PWM. On the other hand, if this frequency
|
||||||
// is too low, you should also increment SOFT_PWM_SCALE.
|
// is too low, you should also increment SOFT_PWM_SCALE.
|
||||||
|
@ -808,6 +685,11 @@ const bool Z_MAX_ENDSTOP_INVERTING = false; // set to true to invert the logic o
|
||||||
// at zero value, there are 128 effective control positions.
|
// at zero value, there are 128 effective control positions.
|
||||||
#define SOFT_PWM_SCALE 0
|
#define SOFT_PWM_SCALE 0
|
||||||
|
|
||||||
|
// Temperature status LEDs that display the hotend and bet temperature.
|
||||||
|
// If all hotends and bed temperature and temperature setpoint are < 54C then the BLUE led is on.
|
||||||
|
// Otherwise the RED led is on. There is 1C hysteresis.
|
||||||
|
//#define TEMP_STAT_LEDS
|
||||||
|
|
||||||
// M240 Triggers a camera by emulating a Canon RC-1 Remote
|
// M240 Triggers a camera by emulating a Canon RC-1 Remote
|
||||||
// Data from: http://www.doc-diy.net/photo/rc-1_hacked/
|
// Data from: http://www.doc-diy.net/photo/rc-1_hacked/
|
||||||
// #define PHOTOGRAPH_PIN 23
|
// #define PHOTOGRAPH_PIN 23
|
||||||
|
@ -879,4 +761,4 @@ const bool Z_MAX_ENDSTOP_INVERTING = false; // set to true to invert the logic o
|
||||||
#include "Configuration_adv.h"
|
#include "Configuration_adv.h"
|
||||||
#include "thermistortables.h"
|
#include "thermistortables.h"
|
||||||
|
|
||||||
#endif //__CONFIGURATION_H
|
#endif //CONFIGURATION_H
|
||||||
|
|
|
@ -1,6 +1,8 @@
|
||||||
#ifndef CONFIGURATION_ADV_H
|
#ifndef CONFIGURATION_ADV_H
|
||||||
#define CONFIGURATION_ADV_H
|
#define CONFIGURATION_ADV_H
|
||||||
|
|
||||||
|
#include "Conditionals.h"
|
||||||
|
|
||||||
//===========================================================================
|
//===========================================================================
|
||||||
//=============================Thermal Settings ============================
|
//=============================Thermal Settings ============================
|
||||||
//===========================================================================
|
//===========================================================================
|
||||||
|
@ -89,54 +91,6 @@
|
||||||
|
|
||||||
#define ENDSTOPS_ONLY_FOR_HOMING // If defined the endstops will only be used for homing
|
#define ENDSTOPS_ONLY_FOR_HOMING // If defined the endstops will only be used for homing
|
||||||
|
|
||||||
|
|
||||||
//// AUTOSET LOCATIONS OF LIMIT SWITCHES
|
|
||||||
//// Added by ZetaPhoenix 09-15-2012
|
|
||||||
#ifdef MANUAL_HOME_POSITIONS // Use manual limit switch locations
|
|
||||||
#define X_HOME_POS MANUAL_X_HOME_POS
|
|
||||||
#define Y_HOME_POS MANUAL_Y_HOME_POS
|
|
||||||
#define Z_HOME_POS MANUAL_Z_HOME_POS
|
|
||||||
#else //Set min/max homing switch positions based upon homing direction and min/max travel limits
|
|
||||||
//X axis
|
|
||||||
#if X_HOME_DIR == -1
|
|
||||||
#ifdef BED_CENTER_AT_0_0
|
|
||||||
#define X_HOME_POS X_MAX_LENGTH * -0.5
|
|
||||||
#else
|
|
||||||
#define X_HOME_POS X_MIN_POS
|
|
||||||
#endif //BED_CENTER_AT_0_0
|
|
||||||
#else
|
|
||||||
#ifdef BED_CENTER_AT_0_0
|
|
||||||
#define X_HOME_POS X_MAX_LENGTH * 0.5
|
|
||||||
#else
|
|
||||||
#define X_HOME_POS X_MAX_POS
|
|
||||||
#endif //BED_CENTER_AT_0_0
|
|
||||||
#endif //X_HOME_DIR == -1
|
|
||||||
|
|
||||||
//Y axis
|
|
||||||
#if Y_HOME_DIR == -1
|
|
||||||
#ifdef BED_CENTER_AT_0_0
|
|
||||||
#define Y_HOME_POS Y_MAX_LENGTH * -0.5
|
|
||||||
#else
|
|
||||||
#define Y_HOME_POS Y_MIN_POS
|
|
||||||
#endif //BED_CENTER_AT_0_0
|
|
||||||
#else
|
|
||||||
#ifdef BED_CENTER_AT_0_0
|
|
||||||
#define Y_HOME_POS Y_MAX_LENGTH * 0.5
|
|
||||||
#else
|
|
||||||
#define Y_HOME_POS Y_MAX_POS
|
|
||||||
#endif //BED_CENTER_AT_0_0
|
|
||||||
#endif //Y_HOME_DIR == -1
|
|
||||||
|
|
||||||
// Z axis
|
|
||||||
#if Z_HOME_DIR == -1 //BED_CENTER_AT_0_0 not used
|
|
||||||
#define Z_HOME_POS Z_MIN_POS
|
|
||||||
#else
|
|
||||||
#define Z_HOME_POS Z_MAX_POS
|
|
||||||
#endif //Z_HOME_DIR == -1
|
|
||||||
#endif //End auto min/max positions
|
|
||||||
//END AUTOSET LOCATIONS OF LIMIT SWITCHES -ZP
|
|
||||||
|
|
||||||
|
|
||||||
//#define Z_LATE_ENABLE // Enable Z the last moment. Needed if your Z driver overheats.
|
//#define Z_LATE_ENABLE // Enable Z the last moment. Needed if your Z driver overheats.
|
||||||
|
|
||||||
// A single Z stepper driver is usually used to drive 2 stepper motors.
|
// A single Z stepper driver is usually used to drive 2 stepper motors.
|
||||||
|
@ -146,26 +100,12 @@
|
||||||
// On a RAMPS (or other 5 driver) motherboard, using this feature will limit you to using 1 extruder.
|
// On a RAMPS (or other 5 driver) motherboard, using this feature will limit you to using 1 extruder.
|
||||||
//#define Z_DUAL_STEPPER_DRIVERS
|
//#define Z_DUAL_STEPPER_DRIVERS
|
||||||
|
|
||||||
#ifdef Z_DUAL_STEPPER_DRIVERS
|
|
||||||
#undef EXTRUDERS
|
|
||||||
#define EXTRUDERS 1
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// Same again but for Y Axis.
|
// Same again but for Y Axis.
|
||||||
//#define Y_DUAL_STEPPER_DRIVERS
|
//#define Y_DUAL_STEPPER_DRIVERS
|
||||||
|
|
||||||
// Define if the two Y drives need to rotate in opposite directions
|
// Define if the two Y drives need to rotate in opposite directions
|
||||||
#define INVERT_Y2_VS_Y_DIR true
|
#define INVERT_Y2_VS_Y_DIR true
|
||||||
|
|
||||||
#ifdef Y_DUAL_STEPPER_DRIVERS
|
|
||||||
#undef EXTRUDERS
|
|
||||||
#define EXTRUDERS 1
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if defined (Z_DUAL_STEPPER_DRIVERS) && defined (Y_DUAL_STEPPER_DRIVERS)
|
|
||||||
#error "You cannot have dual drivers for both Y and Z"
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// Enable this for dual x-carriage printers.
|
// Enable this for dual x-carriage printers.
|
||||||
// A dual x-carriage design has the advantage that the inactive extruder can be parked which
|
// A dual x-carriage design has the advantage that the inactive extruder can be parked which
|
||||||
// prevents hot-end ooze contaminating the print. It also reduces the weight of each x-carriage
|
// prevents hot-end ooze contaminating the print. It also reduces the weight of each x-carriage
|
||||||
|
@ -228,7 +168,7 @@
|
||||||
#define INVERT_Z_STEP_PIN false
|
#define INVERT_Z_STEP_PIN false
|
||||||
#define INVERT_E_STEP_PIN false
|
#define INVERT_E_STEP_PIN false
|
||||||
|
|
||||||
//default stepper release if idle. Set to 0 to deactivate.
|
// Default stepper release if idle. Set to 0 to deactivate.
|
||||||
#define DEFAULT_STEPPER_DEACTIVE_TIME 60
|
#define DEFAULT_STEPPER_DEACTIVE_TIME 60
|
||||||
|
|
||||||
#define DEFAULT_MINIMUMFEEDRATE 0.0 // minimum feedrate
|
#define DEFAULT_MINIMUMFEEDRATE 0.0 // minimum feedrate
|
||||||
|
@ -236,7 +176,7 @@
|
||||||
|
|
||||||
// Feedrates for manual moves along X, Y, Z, E from panel
|
// Feedrates for manual moves along X, Y, Z, E from panel
|
||||||
#ifdef ULTIPANEL
|
#ifdef ULTIPANEL
|
||||||
#define MANUAL_FEEDRATE {50*60, 50*60, 4*60, 60} // set the speeds for manual moves (mm/min)
|
#define MANUAL_FEEDRATE {50*60, 50*60, 4*60, 60} // Feedrates for manual moves along X, Y, Z, E from panel
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// minimum time in microseconds that a movement needs to take if the buffer is emptied.
|
// minimum time in microseconds that a movement needs to take if the buffer is emptied.
|
||||||
|
@ -255,13 +195,6 @@
|
||||||
// if unwanted behavior is observed on a user's machine when running at very slow speeds.
|
// if unwanted behavior is observed on a user's machine when running at very slow speeds.
|
||||||
#define MINIMUM_PLANNER_SPEED 0.05// (mm/sec)
|
#define MINIMUM_PLANNER_SPEED 0.05// (mm/sec)
|
||||||
|
|
||||||
// MS1 MS2 Stepper Driver Microstepping mode table
|
|
||||||
#define MICROSTEP1 LOW,LOW
|
|
||||||
#define MICROSTEP2 HIGH,LOW
|
|
||||||
#define MICROSTEP4 LOW,HIGH
|
|
||||||
#define MICROSTEP8 HIGH,HIGH
|
|
||||||
#define MICROSTEP16 HIGH,HIGH
|
|
||||||
|
|
||||||
// Microstep setting (Only functional when stepper driver microstep pins are connected to MCU.
|
// Microstep setting (Only functional when stepper driver microstep pins are connected to MCU.
|
||||||
#define MICROSTEP_MODES {16,16,16,16,16} // [1,2,4,8,16]
|
#define MICROSTEP_MODES {16,16,16,16,16} // [1,2,4,8,16]
|
||||||
|
|
||||||
|
@ -330,16 +263,6 @@
|
||||||
#define BABYSTEP_XY //not only z, but also XY in the menu. more clutter, more functions
|
#define BABYSTEP_XY //not only z, but also XY in the menu. more clutter, more functions
|
||||||
#define BABYSTEP_INVERT_Z false //true for inverse movements in Z
|
#define BABYSTEP_INVERT_Z false //true for inverse movements in Z
|
||||||
#define BABYSTEP_Z_MULTIPLICATOR 2 //faster z movements
|
#define BABYSTEP_Z_MULTIPLICATOR 2 //faster z movements
|
||||||
|
|
||||||
#ifdef COREXY
|
|
||||||
#error BABYSTEPPING not implemented for COREXY yet.
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef DELTA
|
|
||||||
#ifdef BABYSTEP_XY
|
|
||||||
#error BABYSTEPPING only implemented for Z axis on deltabots.
|
|
||||||
#endif
|
|
||||||
#endif
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// extruder advance constant (s2/mm3)
|
// extruder advance constant (s2/mm3)
|
||||||
|
@ -353,12 +276,8 @@
|
||||||
|
|
||||||
#ifdef ADVANCE
|
#ifdef ADVANCE
|
||||||
#define EXTRUDER_ADVANCE_K .0
|
#define EXTRUDER_ADVANCE_K .0
|
||||||
|
|
||||||
#define D_FILAMENT 2.85
|
#define D_FILAMENT 2.85
|
||||||
#define STEPS_MM_E 836
|
#define STEPS_MM_E 836
|
||||||
#define EXTRUSION_AREA (0.25 * D_FILAMENT * D_FILAMENT * 3.14159)
|
|
||||||
#define STEPS_PER_CUBIC_MM_E (axis_steps_per_unit[E_AXIS]/ EXTRUSION_AREA)
|
|
||||||
|
|
||||||
#endif // ADVANCE
|
#endif // ADVANCE
|
||||||
|
|
||||||
// Arc interpretation settings:
|
// Arc interpretation settings:
|
||||||
|
@ -373,26 +292,6 @@ const unsigned int dropsegments=5; //everything with less than this number of st
|
||||||
// be commented out otherwise
|
// be commented out otherwise
|
||||||
#define SDCARDDETECTINVERTED
|
#define SDCARDDETECTINVERTED
|
||||||
|
|
||||||
#ifdef ULTIPANEL
|
|
||||||
#undef SDCARDDETECTINVERTED
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// Power Signal Control Definitions
|
|
||||||
// By default use ATX definition
|
|
||||||
#ifndef POWER_SUPPLY
|
|
||||||
#define POWER_SUPPLY 1
|
|
||||||
#endif
|
|
||||||
// 1 = ATX
|
|
||||||
#if (POWER_SUPPLY == 1)
|
|
||||||
#define PS_ON_AWAKE LOW
|
|
||||||
#define PS_ON_ASLEEP HIGH
|
|
||||||
#endif
|
|
||||||
// 2 = X-Box 360 203W
|
|
||||||
#if (POWER_SUPPLY == 2)
|
|
||||||
#define PS_ON_AWAKE HIGH
|
|
||||||
#define PS_ON_ASLEEP LOW
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// Control heater 0 and heater 1 in parallel.
|
// Control heater 0 and heater 1 in parallel.
|
||||||
//#define HEATERS_PARALLEL
|
//#define HEATERS_PARALLEL
|
||||||
|
|
||||||
|
@ -432,9 +331,9 @@ const unsigned int dropsegments=5; //everything with less than this number of st
|
||||||
#define RETRACT_RECOVER_FEEDRATE 8 //default feedrate for recovering from retraction (mm/s)
|
#define RETRACT_RECOVER_FEEDRATE 8 //default feedrate for recovering from retraction (mm/s)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
//adds support for experimental filament exchange support M600; requires display
|
// Add support for experimental filament exchange support M600; requires display
|
||||||
#ifdef ULTIPANEL
|
#ifdef ULTIPANEL
|
||||||
#define FILAMENTCHANGEENABLE
|
//#define FILAMENTCHANGEENABLE
|
||||||
#ifdef FILAMENTCHANGEENABLE
|
#ifdef FILAMENTCHANGEENABLE
|
||||||
#define FILAMENTCHANGE_XPOS 3
|
#define FILAMENTCHANGE_XPOS 3
|
||||||
#define FILAMENTCHANGE_YPOS 3
|
#define FILAMENTCHANGE_YPOS 3
|
||||||
|
@ -444,104 +343,7 @@ const unsigned int dropsegments=5; //everything with less than this number of st
|
||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef FILAMENTCHANGEENABLE
|
#include "Conditionals.h"
|
||||||
#ifdef EXTRUDER_RUNOUT_PREVENT
|
#include "SanityCheck.h"
|
||||||
#error EXTRUDER_RUNOUT_PREVENT currently incompatible with FILAMENTCHANGE
|
|
||||||
#endif
|
|
||||||
#endif
|
|
||||||
|
|
||||||
//===========================================================================
|
#endif //CONFIGURATION_ADV_H
|
||||||
//============================= Define Defines ============================
|
|
||||||
//===========================================================================
|
|
||||||
|
|
||||||
#if defined (ENABLE_AUTO_BED_LEVELING) && defined (DELTA)
|
|
||||||
|
|
||||||
#if not defined(AUTO_BED_LEVELING_GRID)
|
|
||||||
#error "Only Grid Bed Auto Leveling is supported on Deltas."
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if defined(Z_PROBE_SLED)
|
|
||||||
#error "You cannot use Z_PROBE_SLED together with DELTA."
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if defined(Z_PROBE_REPEATABILITY_TEST)
|
|
||||||
#error "Z-probe repeatability test is not supported on Deltas yet."
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if defined(Z_PROBE_ALLEN_KEY)
|
|
||||||
#if !defined(AUTO_BED_LEVELING_GRID) || !defined(DELTA)
|
|
||||||
#error "Invalid use of Z_PROBE_ALLEN_KEY."
|
|
||||||
#endif
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if EXTRUDERS > 1 && defined TEMP_SENSOR_1_AS_REDUNDANT
|
|
||||||
#error "You cannot use TEMP_SENSOR_1_AS_REDUNDANT if EXTRUDERS > 1"
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if EXTRUDERS > 1 && defined HEATERS_PARALLEL
|
|
||||||
#error "You cannot use HEATERS_PARALLEL if EXTRUDERS > 1"
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if TEMP_SENSOR_0 > 0
|
|
||||||
#define THERMISTORHEATER_0 TEMP_SENSOR_0
|
|
||||||
#define HEATER_0_USES_THERMISTOR
|
|
||||||
#endif
|
|
||||||
#if TEMP_SENSOR_1 > 0
|
|
||||||
#define THERMISTORHEATER_1 TEMP_SENSOR_1
|
|
||||||
#define HEATER_1_USES_THERMISTOR
|
|
||||||
#endif
|
|
||||||
#if TEMP_SENSOR_2 > 0
|
|
||||||
#define THERMISTORHEATER_2 TEMP_SENSOR_2
|
|
||||||
#define HEATER_2_USES_THERMISTOR
|
|
||||||
#endif
|
|
||||||
#if TEMP_SENSOR_3 > 0
|
|
||||||
#define THERMISTORHEATER_3 TEMP_SENSOR_3
|
|
||||||
#define HEATER_3_USES_THERMISTOR
|
|
||||||
#endif
|
|
||||||
#if TEMP_SENSOR_BED > 0
|
|
||||||
#define THERMISTORBED TEMP_SENSOR_BED
|
|
||||||
#define BED_USES_THERMISTOR
|
|
||||||
#endif
|
|
||||||
#if TEMP_SENSOR_0 == -1
|
|
||||||
#define HEATER_0_USES_AD595
|
|
||||||
#endif
|
|
||||||
#if TEMP_SENSOR_1 == -1
|
|
||||||
#define HEATER_1_USES_AD595
|
|
||||||
#endif
|
|
||||||
#if TEMP_SENSOR_2 == -1
|
|
||||||
#define HEATER_2_USES_AD595
|
|
||||||
#endif
|
|
||||||
#if TEMP_SENSOR_3 == -1
|
|
||||||
#define HEATER_3_USES_AD595
|
|
||||||
#endif
|
|
||||||
#if TEMP_SENSOR_BED == -1
|
|
||||||
#define BED_USES_AD595
|
|
||||||
#endif
|
|
||||||
#if TEMP_SENSOR_0 == -2
|
|
||||||
#define HEATER_0_USES_MAX6675
|
|
||||||
#endif
|
|
||||||
#if TEMP_SENSOR_0 == 0
|
|
||||||
#undef HEATER_0_MINTEMP
|
|
||||||
#undef HEATER_0_MAXTEMP
|
|
||||||
#endif
|
|
||||||
#if TEMP_SENSOR_1 == 0
|
|
||||||
#undef HEATER_1_MINTEMP
|
|
||||||
#undef HEATER_1_MAXTEMP
|
|
||||||
#endif
|
|
||||||
#if TEMP_SENSOR_2 == 0
|
|
||||||
#undef HEATER_2_MINTEMP
|
|
||||||
#undef HEATER_2_MAXTEMP
|
|
||||||
#endif
|
|
||||||
#if TEMP_SENSOR_3 == 0
|
|
||||||
#undef HEATER_3_MINTEMP
|
|
||||||
#undef HEATER_3_MAXTEMP
|
|
||||||
#endif
|
|
||||||
#if TEMP_SENSOR_BED == 0
|
|
||||||
#undef BED_MINTEMP
|
|
||||||
#undef BED_MAXTEMP
|
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
||||||
#endif //__CONFIGURATION_ADV_H
|
|
||||||
|
|
|
@ -319,15 +319,6 @@ your extruder heater takes 2 minutes to hit the target on heating.
|
||||||
// #define ENDSTOPPULLUP_ZMIN
|
// #define ENDSTOPPULLUP_ZMIN
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef ENDSTOPPULLUPS
|
|
||||||
#define ENDSTOPPULLUP_XMAX
|
|
||||||
#define ENDSTOPPULLUP_YMAX
|
|
||||||
#define ENDSTOPPULLUP_ZMAX
|
|
||||||
#define ENDSTOPPULLUP_XMIN
|
|
||||||
#define ENDSTOPPULLUP_YMIN
|
|
||||||
#define ENDSTOPPULLUP_ZMIN
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// The pullups are needed if you directly connect a mechanical endswitch between the signal and ground pins.
|
// The pullups are needed if you directly connect a mechanical endswitch between the signal and ground pins.
|
||||||
const bool X_MIN_ENDSTOP_INVERTING = false; // set to true to invert the logic of the endstop.
|
const bool X_MIN_ENDSTOP_INVERTING = false; // set to true to invert the logic of the endstop.
|
||||||
const bool Y_MIN_ENDSTOP_INVERTING = false; // set to true to invert the logic of the endstop.
|
const bool Y_MIN_ENDSTOP_INVERTING = false; // set to true to invert the logic of the endstop.
|
||||||
|
@ -376,10 +367,32 @@ const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of
|
||||||
#define Z_MAX_POS 86
|
#define Z_MAX_POS 86
|
||||||
#define Z_MIN_POS 0
|
#define Z_MIN_POS 0
|
||||||
|
|
||||||
#define X_MAX_LENGTH (X_MAX_POS - X_MIN_POS)
|
//===========================================================================
|
||||||
#define Y_MAX_LENGTH (Y_MAX_POS - Y_MIN_POS)
|
//============================= Filament Runout Sensor ======================
|
||||||
#define Z_MAX_LENGTH (Z_MAX_POS - Z_MIN_POS)
|
//===========================================================================
|
||||||
|
//#define FILAMENT_RUNOUT_SENSOR // Uncomment for defining a filament runout sensor such as a mechanical or opto endstop to check the existence of filament
|
||||||
|
// In RAMPS uses servo pin 2. Can be changed in pins file. For other boards pin definition should be made.
|
||||||
|
// It is assumed that when logic high = filament available
|
||||||
|
// when logic low = filament ran out
|
||||||
|
//const bool FIL_RUNOUT_INVERTING = true; // Should be uncommented and true or false should assigned
|
||||||
|
//#define ENDSTOPPULLUP_FIL_RUNOUT // Uncomment to use internal pullup for filament runout pins if the sensor is defined.
|
||||||
|
|
||||||
|
//===========================================================================
|
||||||
|
//============================ Manual Bed Leveling ==========================
|
||||||
|
//===========================================================================
|
||||||
|
|
||||||
|
// #define MANUAL_BED_LEVELING // Add display menu option for bed leveling
|
||||||
|
// #define MESH_BED_LEVELING // Enable mesh bed leveling
|
||||||
|
|
||||||
|
#if defined(MESH_BED_LEVELING)
|
||||||
|
#define MESH_MIN_X 10
|
||||||
|
#define MESH_MAX_X (X_MAX_POS - MESH_MIN_X)
|
||||||
|
#define MESH_MIN_Y 10
|
||||||
|
#define MESH_MAX_Y (Y_MAX_POS - MESH_MIN_Y)
|
||||||
|
#define MESH_NUM_X_POINTS 3 // Don't use more than 7 points per axis, implementation limited
|
||||||
|
#define MESH_NUM_Y_POINTS 3
|
||||||
|
#define MESH_HOME_SEARCH_Z 4 // Z after Home, bed somewhere below but above 0.0
|
||||||
|
#endif // MESH_BED_LEVELING
|
||||||
|
|
||||||
//===========================================================================
|
//===========================================================================
|
||||||
//============================= Bed Auto Leveling ===========================
|
//============================= Bed Auto Leveling ===========================
|
||||||
|
@ -407,12 +420,6 @@ const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of
|
||||||
|
|
||||||
#ifdef AUTO_BED_LEVELING_GRID
|
#ifdef AUTO_BED_LEVELING_GRID
|
||||||
|
|
||||||
// Use one of these defines to specify the origin
|
|
||||||
// for a topographical map to be printed for your bed.
|
|
||||||
enum { OriginBackLeft, OriginFrontLeft, OriginBackRight, OriginFrontRight };
|
|
||||||
#define TOPO_ORIGIN OriginFrontLeft
|
|
||||||
|
|
||||||
// The edges of the rectangle in which to probe
|
|
||||||
#define LEFT_PROBE_BED_POSITION 15
|
#define LEFT_PROBE_BED_POSITION 15
|
||||||
#define RIGHT_PROBE_BED_POSITION 170
|
#define RIGHT_PROBE_BED_POSITION 170
|
||||||
#define FRONT_PROBE_BED_POSITION 20
|
#define FRONT_PROBE_BED_POSITION 20
|
||||||
|
@ -615,112 +622,17 @@ const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of
|
||||||
// REMEMBER TO INSTALL LiquidCrystal_I2C.h in your ARDUINO library folder: https://github.com/kiyoshigawa/LiquidCrystal_I2C
|
// REMEMBER TO INSTALL LiquidCrystal_I2C.h in your ARDUINO library folder: https://github.com/kiyoshigawa/LiquidCrystal_I2C
|
||||||
//#define RA_CONTROL_PANEL
|
//#define RA_CONTROL_PANEL
|
||||||
|
|
||||||
//automatic expansion
|
/**
|
||||||
#if defined (MAKRPANEL)
|
* I2C Panels
|
||||||
#define DOGLCD
|
*/
|
||||||
#define SDSUPPORT
|
|
||||||
#define ULTIPANEL
|
|
||||||
#define NEWPANEL
|
|
||||||
#define DEFAULT_LCD_CONTRAST 17
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if defined(miniVIKI) || defined(VIKI2)
|
|
||||||
#define ULTRA_LCD //general LCD support, also 16x2
|
|
||||||
#define DOGLCD // Support for SPI LCD 128x64 (Controller ST7565R graphic Display Family)
|
|
||||||
#define ULTIMAKERCONTROLLER //as available from the Ultimaker online store.
|
|
||||||
|
|
||||||
#ifdef miniVIKI
|
|
||||||
#define DEFAULT_LCD_CONTRAST 95
|
|
||||||
#else
|
|
||||||
#define DEFAULT_LCD_CONTRAST 40
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#define ENCODER_PULSES_PER_STEP 4
|
|
||||||
#define ENCODER_STEPS_PER_MENU_ITEM 1
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if defined (PANEL_ONE)
|
|
||||||
#define SDSUPPORT
|
|
||||||
#define ULTIMAKERCONTROLLER
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if defined (REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER)
|
|
||||||
#define DOGLCD
|
|
||||||
#define U8GLIB_ST7920
|
|
||||||
#define REPRAP_DISCOUNT_SMART_CONTROLLER
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if defined(ULTIMAKERCONTROLLER) || defined(REPRAP_DISCOUNT_SMART_CONTROLLER) || defined(G3D_PANEL)
|
|
||||||
#define ULTIPANEL
|
|
||||||
#define NEWPANEL
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if defined(REPRAPWORLD_KEYPAD)
|
|
||||||
#define NEWPANEL
|
|
||||||
#define ULTIPANEL
|
|
||||||
#endif
|
|
||||||
#if defined(RA_CONTROL_PANEL)
|
|
||||||
#define ULTIPANEL
|
|
||||||
#define NEWPANEL
|
|
||||||
#define LCD_I2C_TYPE_PCA8574
|
|
||||||
#define LCD_I2C_ADDRESS 0x27 // I2C Address of the port expander
|
|
||||||
#endif
|
|
||||||
|
|
||||||
//I2C PANELS
|
|
||||||
|
|
||||||
//#define LCD_I2C_SAINSMART_YWROBOT
|
//#define LCD_I2C_SAINSMART_YWROBOT
|
||||||
#ifdef LCD_I2C_SAINSMART_YWROBOT
|
|
||||||
// This uses the LiquidCrystal_I2C library ( https://bitbucket.org/fmalpartida/new-liquidcrystal/wiki/Home )
|
|
||||||
// Make sure it is placed in the Arduino libraries directory.
|
|
||||||
#define LCD_I2C_TYPE_PCF8575
|
|
||||||
#define LCD_I2C_ADDRESS 0x27 // I2C Address of the port expander
|
|
||||||
#define NEWPANEL
|
|
||||||
#define ULTIPANEL
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// PANELOLU2 LCD with status LEDs, separate encoder and click inputs
|
// PANELOLU2 LCD with status LEDs, separate encoder and click inputs
|
||||||
//#define LCD_I2C_PANELOLU2
|
//#define LCD_I2C_PANELOLU2
|
||||||
#ifdef LCD_I2C_PANELOLU2
|
|
||||||
// This uses the LiquidTWI2 library v1.2.3 or later ( https://github.com/lincomatic/LiquidTWI2 )
|
|
||||||
// Make sure the LiquidTWI2 directory is placed in the Arduino or Sketchbook libraries subdirectory.
|
|
||||||
// (v1.2.3 no longer requires you to define PANELOLU in the LiquidTWI2.h library header file)
|
|
||||||
// Note: The PANELOLU2 encoder click input can either be directly connected to a pin
|
|
||||||
// (if BTN_ENC defined to != -1) or read through I2C (when BTN_ENC == -1).
|
|
||||||
#define LCD_I2C_TYPE_MCP23017
|
|
||||||
#define LCD_I2C_ADDRESS 0x20 // I2C Address of the port expander
|
|
||||||
#define LCD_USE_I2C_BUZZER //comment out to disable buzzer on LCD
|
|
||||||
#define NEWPANEL
|
|
||||||
#define ULTIPANEL
|
|
||||||
|
|
||||||
#ifndef ENCODER_PULSES_PER_STEP
|
|
||||||
#define ENCODER_PULSES_PER_STEP 4
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifndef ENCODER_STEPS_PER_MENU_ITEM
|
|
||||||
#define ENCODER_STEPS_PER_MENU_ITEM 1
|
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
||||||
#ifdef LCD_USE_I2C_BUZZER
|
|
||||||
#define LCD_FEEDBACK_FREQUENCY_HZ 1000
|
|
||||||
#define LCD_FEEDBACK_FREQUENCY_DURATION_MS 100
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// Panucatt VIKI LCD with status LEDs, integrated click & L/R/U/P buttons, separate encoder inputs
|
// Panucatt VIKI LCD with status LEDs, integrated click & L/R/U/P buttons, separate encoder inputs
|
||||||
//#define LCD_I2C_VIKI
|
//#define LCD_I2C_VIKI
|
||||||
#ifdef LCD_I2C_VIKI
|
|
||||||
// This uses the LiquidTWI2 library v1.2.3 or later ( https://github.com/lincomatic/LiquidTWI2 )
|
|
||||||
// Make sure the LiquidTWI2 directory is placed in the Arduino or Sketchbook libraries subdirectory.
|
|
||||||
// Note: The pause/stop/resume LCD button pin should be connected to the Arduino
|
|
||||||
// BTN_ENC pin (or set BTN_ENC to -1 if not used)
|
|
||||||
#define LCD_I2C_TYPE_MCP23017
|
|
||||||
#define LCD_I2C_ADDRESS 0x20 // I2C Address of the port expander
|
|
||||||
#define LCD_USE_I2C_BUZZER //comment out to disable buzzer on LCD (requires LiquidTWI2 v1.2.3 or later)
|
|
||||||
#define NEWPANEL
|
|
||||||
#define ULTIPANEL
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// Shift register panels
|
// Shift register panels
|
||||||
// ---------------------
|
// ---------------------
|
||||||
|
@ -728,51 +640,10 @@ const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of
|
||||||
// https://bitbucket.org/fmalpartida/new-liquidcrystal/wiki/schematics#!shiftregister-connection
|
// https://bitbucket.org/fmalpartida/new-liquidcrystal/wiki/schematics#!shiftregister-connection
|
||||||
|
|
||||||
//#define SAV_3DLCD
|
//#define SAV_3DLCD
|
||||||
#ifdef SAV_3DLCD
|
|
||||||
#define SR_LCD_2W_NL // Non latching 2 wire shiftregister
|
|
||||||
#define NEWPANEL
|
|
||||||
#define ULTIPANEL
|
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
||||||
#ifdef ULTIPANEL
|
|
||||||
// #define NEWPANEL //enable this if you have a click-encoder panel
|
|
||||||
#define SDSUPPORT
|
|
||||||
#define ULTRA_LCD
|
|
||||||
#ifdef DOGLCD // Change number of lines to match the DOG graphic display
|
|
||||||
#define LCD_WIDTH 22
|
|
||||||
#define LCD_HEIGHT 5
|
|
||||||
#else
|
|
||||||
#define LCD_WIDTH 20
|
|
||||||
#define LCD_HEIGHT 4
|
|
||||||
#endif
|
|
||||||
#else //no panel but just LCD
|
|
||||||
#ifdef ULTRA_LCD
|
|
||||||
#ifdef DOGLCD // Change number of lines to match the 128x64 graphics display
|
|
||||||
#define LCD_WIDTH 22
|
|
||||||
#define LCD_HEIGHT 5
|
|
||||||
#else
|
|
||||||
#define LCD_WIDTH 16
|
|
||||||
#define LCD_HEIGHT 2
|
|
||||||
#endif
|
|
||||||
#endif
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// default LCD contrast for dogm-like LCD displays
|
|
||||||
#ifdef DOGLCD
|
|
||||||
# ifndef DEFAULT_LCD_CONTRAST
|
|
||||||
# define DEFAULT_LCD_CONTRAST 32
|
|
||||||
# endif
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// Increase the FAN pwm frequency. Removes the PWM noise but increases heating in the FET/Arduino
|
// Increase the FAN pwm frequency. Removes the PWM noise but increases heating in the FET/Arduino
|
||||||
//#define FAST_PWM_FAN
|
//#define FAST_PWM_FAN
|
||||||
|
|
||||||
// Temperature status LEDs that display the hotend and bet temperature.
|
|
||||||
// If all hotends and bed temperature and temperature setpoint are < 54C then the BLUE led is on.
|
|
||||||
// Otherwise the RED led is on. There is 1C hysteresis.
|
|
||||||
//#define TEMP_STAT_LEDS
|
|
||||||
|
|
||||||
// Use software PWM to drive the fan, as for the heaters. This uses a very low frequency
|
// Use software PWM to drive the fan, as for the heaters. This uses a very low frequency
|
||||||
// which is not ass annoying as with the hardware PWM. On the other hand, if this frequency
|
// which is not ass annoying as with the hardware PWM. On the other hand, if this frequency
|
||||||
// is too low, you should also increment SOFT_PWM_SCALE.
|
// is too low, you should also increment SOFT_PWM_SCALE.
|
||||||
|
@ -784,6 +655,11 @@ const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of
|
||||||
// at zero value, there are 128 effective control positions.
|
// at zero value, there are 128 effective control positions.
|
||||||
#define SOFT_PWM_SCALE 0
|
#define SOFT_PWM_SCALE 0
|
||||||
|
|
||||||
|
// Temperature status LEDs that display the hotend and bet temperature.
|
||||||
|
// If all hotends and bed temperature and temperature setpoint are < 54C then the BLUE led is on.
|
||||||
|
// Otherwise the RED led is on. There is 1C hysteresis.
|
||||||
|
//#define TEMP_STAT_LEDS
|
||||||
|
|
||||||
// M240 Triggers a camera by emulating a Canon RC-1 Remote
|
// M240 Triggers a camera by emulating a Canon RC-1 Remote
|
||||||
// Data from: http://www.doc-diy.net/photo/rc-1_hacked/
|
// Data from: http://www.doc-diy.net/photo/rc-1_hacked/
|
||||||
// #define PHOTOGRAPH_PIN 23
|
// #define PHOTOGRAPH_PIN 23
|
||||||
|
@ -855,4 +731,4 @@ const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of
|
||||||
#include "Configuration_adv.h"
|
#include "Configuration_adv.h"
|
||||||
#include "thermistortables.h"
|
#include "thermistortables.h"
|
||||||
|
|
||||||
#endif //__CONFIGURATION_H
|
#endif //CONFIGURATION_H
|
||||||
|
|
|
@ -1,6 +1,8 @@
|
||||||
#ifndef CONFIGURATION_ADV_H
|
#ifndef CONFIGURATION_ADV_H
|
||||||
#define CONFIGURATION_ADV_H
|
#define CONFIGURATION_ADV_H
|
||||||
|
|
||||||
|
#include "Conditionals.h"
|
||||||
|
|
||||||
//===========================================================================
|
//===========================================================================
|
||||||
//=============================Thermal Settings ============================
|
//=============================Thermal Settings ============================
|
||||||
//===========================================================================
|
//===========================================================================
|
||||||
|
@ -89,54 +91,6 @@
|
||||||
|
|
||||||
#define ENDSTOPS_ONLY_FOR_HOMING // If defined the endstops will only be used for homing
|
#define ENDSTOPS_ONLY_FOR_HOMING // If defined the endstops will only be used for homing
|
||||||
|
|
||||||
|
|
||||||
//// AUTOSET LOCATIONS OF LIMIT SWITCHES
|
|
||||||
//// Added by ZetaPhoenix 09-15-2012
|
|
||||||
#ifdef MANUAL_HOME_POSITIONS // Use manual limit switch locations
|
|
||||||
#define X_HOME_POS MANUAL_X_HOME_POS
|
|
||||||
#define Y_HOME_POS MANUAL_Y_HOME_POS
|
|
||||||
#define Z_HOME_POS MANUAL_Z_HOME_POS
|
|
||||||
#else //Set min/max homing switch positions based upon homing direction and min/max travel limits
|
|
||||||
//X axis
|
|
||||||
#if X_HOME_DIR == -1
|
|
||||||
#ifdef BED_CENTER_AT_0_0
|
|
||||||
#define X_HOME_POS X_MAX_LENGTH * -0.5
|
|
||||||
#else
|
|
||||||
#define X_HOME_POS X_MIN_POS
|
|
||||||
#endif //BED_CENTER_AT_0_0
|
|
||||||
#else
|
|
||||||
#ifdef BED_CENTER_AT_0_0
|
|
||||||
#define X_HOME_POS X_MAX_LENGTH * 0.5
|
|
||||||
#else
|
|
||||||
#define X_HOME_POS X_MAX_POS
|
|
||||||
#endif //BED_CENTER_AT_0_0
|
|
||||||
#endif //X_HOME_DIR == -1
|
|
||||||
|
|
||||||
//Y axis
|
|
||||||
#if Y_HOME_DIR == -1
|
|
||||||
#ifdef BED_CENTER_AT_0_0
|
|
||||||
#define Y_HOME_POS Y_MAX_LENGTH * -0.5
|
|
||||||
#else
|
|
||||||
#define Y_HOME_POS Y_MIN_POS
|
|
||||||
#endif //BED_CENTER_AT_0_0
|
|
||||||
#else
|
|
||||||
#ifdef BED_CENTER_AT_0_0
|
|
||||||
#define Y_HOME_POS Y_MAX_LENGTH * 0.5
|
|
||||||
#else
|
|
||||||
#define Y_HOME_POS Y_MAX_POS
|
|
||||||
#endif //BED_CENTER_AT_0_0
|
|
||||||
#endif //Y_HOME_DIR == -1
|
|
||||||
|
|
||||||
// Z axis
|
|
||||||
#if Z_HOME_DIR == -1 //BED_CENTER_AT_0_0 not used
|
|
||||||
#define Z_HOME_POS Z_MIN_POS
|
|
||||||
#else
|
|
||||||
#define Z_HOME_POS Z_MAX_POS
|
|
||||||
#endif //Z_HOME_DIR == -1
|
|
||||||
#endif //End auto min/max positions
|
|
||||||
//END AUTOSET LOCATIONS OF LIMIT SWITCHES -ZP
|
|
||||||
|
|
||||||
|
|
||||||
//#define Z_LATE_ENABLE // Enable Z the last moment. Needed if your Z driver overheats.
|
//#define Z_LATE_ENABLE // Enable Z the last moment. Needed if your Z driver overheats.
|
||||||
|
|
||||||
// A single Z stepper driver is usually used to drive 2 stepper motors.
|
// A single Z stepper driver is usually used to drive 2 stepper motors.
|
||||||
|
@ -146,26 +100,12 @@
|
||||||
// On a RAMPS (or other 5 driver) motherboard, using this feature will limit you to using 1 extruder.
|
// On a RAMPS (or other 5 driver) motherboard, using this feature will limit you to using 1 extruder.
|
||||||
//#define Z_DUAL_STEPPER_DRIVERS
|
//#define Z_DUAL_STEPPER_DRIVERS
|
||||||
|
|
||||||
#ifdef Z_DUAL_STEPPER_DRIVERS
|
|
||||||
#undef EXTRUDERS
|
|
||||||
#define EXTRUDERS 1
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// Same again but for Y Axis.
|
// Same again but for Y Axis.
|
||||||
//#define Y_DUAL_STEPPER_DRIVERS
|
//#define Y_DUAL_STEPPER_DRIVERS
|
||||||
|
|
||||||
// Define if the two Y drives need to rotate in opposite directions
|
// Define if the two Y drives need to rotate in opposite directions
|
||||||
#define INVERT_Y2_VS_Y_DIR true
|
#define INVERT_Y2_VS_Y_DIR true
|
||||||
|
|
||||||
#ifdef Y_DUAL_STEPPER_DRIVERS
|
|
||||||
#undef EXTRUDERS
|
|
||||||
#define EXTRUDERS 1
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if defined (Z_DUAL_STEPPER_DRIVERS) && defined (Y_DUAL_STEPPER_DRIVERS)
|
|
||||||
#error "You cannot have dual drivers for both Y and Z"
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// Enable this for dual x-carriage printers.
|
// Enable this for dual x-carriage printers.
|
||||||
// A dual x-carriage design has the advantage that the inactive extruder can be parked which
|
// A dual x-carriage design has the advantage that the inactive extruder can be parked which
|
||||||
// prevents hot-end ooze contaminating the print. It also reduces the weight of each x-carriage
|
// prevents hot-end ooze contaminating the print. It also reduces the weight of each x-carriage
|
||||||
|
@ -227,20 +167,15 @@
|
||||||
#define INVERT_Z_STEP_PIN false
|
#define INVERT_Z_STEP_PIN false
|
||||||
#define INVERT_E_STEP_PIN false
|
#define INVERT_E_STEP_PIN false
|
||||||
|
|
||||||
//default stepper release if idle. Set to 0 to deactivate.
|
// Default stepper release if idle. Set to 0 to deactivate.
|
||||||
#define DEFAULT_STEPPER_DEACTIVE_TIME 60
|
#define DEFAULT_STEPPER_DEACTIVE_TIME 60
|
||||||
|
|
||||||
#define DEFAULT_MINIMUMFEEDRATE 0.0 // minimum feedrate
|
#define DEFAULT_MINIMUMFEEDRATE 0.0 // minimum feedrate
|
||||||
#define DEFAULT_MINTRAVELFEEDRATE 0.0
|
#define DEFAULT_MINTRAVELFEEDRATE 0.0
|
||||||
|
|
||||||
// Feedrates for manual moves along X, Y, Z, E from panel
|
|
||||||
#ifdef ULTIPANEL
|
#ifdef ULTIPANEL
|
||||||
#define MANUAL_FEEDRATE {50*60, 50*60, 4*60, 60} // set the speeds for manual moves (mm/min)
|
#define MANUAL_FEEDRATE {50*60, 50*60, 4*60, 60} // Feedrates for manual moves along X, Y, Z, E from panel
|
||||||
#endif
|
#define ULTIPANEL_FEEDMULTIPLY // Comment to disable setting feedrate multiplier via encoder
|
||||||
|
|
||||||
//Comment to disable setting feedrate multiplier via encoder
|
|
||||||
#ifdef ULTIPANEL
|
|
||||||
#define ULTIPANEL_FEEDMULTIPLY
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// minimum time in microseconds that a movement needs to take if the buffer is emptied.
|
// minimum time in microseconds that a movement needs to take if the buffer is emptied.
|
||||||
|
@ -259,13 +194,6 @@
|
||||||
// if unwanted behavior is observed on a user's machine when running at very slow speeds.
|
// if unwanted behavior is observed on a user's machine when running at very slow speeds.
|
||||||
#define MINIMUM_PLANNER_SPEED 0.05// (mm/sec)
|
#define MINIMUM_PLANNER_SPEED 0.05// (mm/sec)
|
||||||
|
|
||||||
// MS1 MS2 Stepper Driver Microstepping mode table
|
|
||||||
#define MICROSTEP1 LOW,LOW
|
|
||||||
#define MICROSTEP2 HIGH,LOW
|
|
||||||
#define MICROSTEP4 LOW,HIGH
|
|
||||||
#define MICROSTEP8 HIGH,HIGH
|
|
||||||
#define MICROSTEP16 HIGH,HIGH
|
|
||||||
|
|
||||||
// Microstep setting (Only functional when stepper driver microstep pins are connected to MCU.
|
// Microstep setting (Only functional when stepper driver microstep pins are connected to MCU.
|
||||||
#define MICROSTEP_MODES {16,16,16,16,16} // [1,2,4,8,16]
|
#define MICROSTEP_MODES {16,16,16,16,16} // [1,2,4,8,16]
|
||||||
|
|
||||||
|
@ -335,16 +263,6 @@
|
||||||
#define BABYSTEP_XY //not only z, but also XY in the menu. more clutter, more functions
|
#define BABYSTEP_XY //not only z, but also XY in the menu. more clutter, more functions
|
||||||
#define BABYSTEP_INVERT_Z false //true for inverse movements in Z
|
#define BABYSTEP_INVERT_Z false //true for inverse movements in Z
|
||||||
#define BABYSTEP_Z_MULTIPLICATOR 2 //faster z movements
|
#define BABYSTEP_Z_MULTIPLICATOR 2 //faster z movements
|
||||||
|
|
||||||
#ifdef COREXY
|
|
||||||
#error BABYSTEPPING not implemented for COREXY yet.
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef DELTA
|
|
||||||
#ifdef BABYSTEP_XY
|
|
||||||
#error BABYSTEPPING only implemented for Z axis on deltabots.
|
|
||||||
#endif
|
|
||||||
#endif
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// extruder advance constant (s2/mm3)
|
// extruder advance constant (s2/mm3)
|
||||||
|
@ -358,12 +276,8 @@
|
||||||
|
|
||||||
#ifdef ADVANCE
|
#ifdef ADVANCE
|
||||||
#define EXTRUDER_ADVANCE_K .0
|
#define EXTRUDER_ADVANCE_K .0
|
||||||
|
|
||||||
#define D_FILAMENT 2.85
|
#define D_FILAMENT 2.85
|
||||||
#define STEPS_MM_E 836
|
#define STEPS_MM_E 836
|
||||||
#define EXTRUSION_AREA (0.25 * D_FILAMENT * D_FILAMENT * 3.14159)
|
|
||||||
#define STEPS_PER_CUBIC_MM_E (axis_steps_per_unit[E_AXIS]/ EXTRUSION_AREA)
|
|
||||||
|
|
||||||
#endif // ADVANCE
|
#endif // ADVANCE
|
||||||
|
|
||||||
// Arc interpretation settings:
|
// Arc interpretation settings:
|
||||||
|
@ -378,26 +292,6 @@ const unsigned int dropsegments=5; //everything with less than this number of st
|
||||||
// be commented out otherwise
|
// be commented out otherwise
|
||||||
//#define SDCARDDETECTINVERTED
|
//#define SDCARDDETECTINVERTED
|
||||||
|
|
||||||
#ifdef ULTIPANEL
|
|
||||||
#undef SDCARDDETECTINVERTED
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// Power Signal Control Definitions
|
|
||||||
// By default use ATX definition
|
|
||||||
#ifndef POWER_SUPPLY
|
|
||||||
#define POWER_SUPPLY 1
|
|
||||||
#endif
|
|
||||||
// 1 = ATX
|
|
||||||
#if (POWER_SUPPLY == 1)
|
|
||||||
#define PS_ON_AWAKE LOW
|
|
||||||
#define PS_ON_ASLEEP HIGH
|
|
||||||
#endif
|
|
||||||
// 2 = X-Box 360 203W
|
|
||||||
#if (POWER_SUPPLY == 2)
|
|
||||||
#define PS_ON_AWAKE HIGH
|
|
||||||
#define PS_ON_ASLEEP LOW
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// Control heater 0 and heater 1 in parallel.
|
// Control heater 0 and heater 1 in parallel.
|
||||||
//#define HEATERS_PARALLEL
|
//#define HEATERS_PARALLEL
|
||||||
|
|
||||||
|
@ -435,9 +329,9 @@ const unsigned int dropsegments=5; //everything with less than this number of st
|
||||||
#define RETRACT_RECOVER_FEEDRATE 8 //default feedrate for recovering from retraction (mm/s)
|
#define RETRACT_RECOVER_FEEDRATE 8 //default feedrate for recovering from retraction (mm/s)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
//adds support for experimental filament exchange support M600; requires display
|
// Add support for experimental filament exchange support M600; requires display
|
||||||
#ifdef ULTIPANEL
|
#ifdef ULTIPANEL
|
||||||
#define FILAMENTCHANGEENABLE
|
//#define FILAMENTCHANGEENABLE
|
||||||
#ifdef FILAMENTCHANGEENABLE
|
#ifdef FILAMENTCHANGEENABLE
|
||||||
#define FILAMENTCHANGE_XPOS 3
|
#define FILAMENTCHANGE_XPOS 3
|
||||||
#define FILAMENTCHANGE_YPOS 3
|
#define FILAMENTCHANGE_YPOS 3
|
||||||
|
@ -447,81 +341,7 @@ const unsigned int dropsegments=5; //everything with less than this number of st
|
||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef FILAMENTCHANGEENABLE
|
#include "Conditionals.h"
|
||||||
#ifdef EXTRUDER_RUNOUT_PREVENT
|
#include "SanityCheck.h"
|
||||||
#error EXTRUDER_RUNOUT_PREVENT currently incompatible with FILAMENTCHANGE
|
|
||||||
#endif
|
|
||||||
#endif
|
|
||||||
|
|
||||||
//===========================================================================
|
#endif //CONFIGURATION_ADV_H
|
||||||
//============================= Define Defines ============================
|
|
||||||
//===========================================================================
|
|
||||||
#if EXTRUDERS > 1 && defined TEMP_SENSOR_1_AS_REDUNDANT
|
|
||||||
#error "You cannot use TEMP_SENSOR_1_AS_REDUNDANT if EXTRUDERS > 1"
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if EXTRUDERS > 1 && defined HEATERS_PARALLEL
|
|
||||||
#error "You cannot use HEATERS_PARALLEL if EXTRUDERS > 1"
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if TEMP_SENSOR_0 > 0
|
|
||||||
#define THERMISTORHEATER_0 TEMP_SENSOR_0
|
|
||||||
#define HEATER_0_USES_THERMISTOR
|
|
||||||
#endif
|
|
||||||
#if TEMP_SENSOR_1 > 0
|
|
||||||
#define THERMISTORHEATER_1 TEMP_SENSOR_1
|
|
||||||
#define HEATER_1_USES_THERMISTOR
|
|
||||||
#endif
|
|
||||||
#if TEMP_SENSOR_2 > 0
|
|
||||||
#define THERMISTORHEATER_2 TEMP_SENSOR_2
|
|
||||||
#define HEATER_2_USES_THERMISTOR
|
|
||||||
#endif
|
|
||||||
#if TEMP_SENSOR_3 > 0
|
|
||||||
#define THERMISTORHEATER_3 TEMP_SENSOR_3
|
|
||||||
#define HEATER_3_USES_THERMISTOR
|
|
||||||
#endif
|
|
||||||
#if TEMP_SENSOR_BED > 0
|
|
||||||
#define THERMISTORBED TEMP_SENSOR_BED
|
|
||||||
#define BED_USES_THERMISTOR
|
|
||||||
#endif
|
|
||||||
#if TEMP_SENSOR_0 == -1
|
|
||||||
#define HEATER_0_USES_AD595
|
|
||||||
#endif
|
|
||||||
#if TEMP_SENSOR_1 == -1
|
|
||||||
#define HEATER_1_USES_AD595
|
|
||||||
#endif
|
|
||||||
#if TEMP_SENSOR_2 == -1
|
|
||||||
#define HEATER_2_USES_AD595
|
|
||||||
#endif
|
|
||||||
#if TEMP_SENSOR_3 == -1
|
|
||||||
#define HEATER_3_USES_AD595
|
|
||||||
#endif
|
|
||||||
#if TEMP_SENSOR_BED == -1
|
|
||||||
#define BED_USES_AD595
|
|
||||||
#endif
|
|
||||||
#if TEMP_SENSOR_0 == -2
|
|
||||||
#define HEATER_0_USES_MAX6675
|
|
||||||
#endif
|
|
||||||
#if TEMP_SENSOR_0 == 0
|
|
||||||
#undef HEATER_0_MINTEMP
|
|
||||||
#undef HEATER_0_MAXTEMP
|
|
||||||
#endif
|
|
||||||
#if TEMP_SENSOR_1 == 0
|
|
||||||
#undef HEATER_1_MINTEMP
|
|
||||||
#undef HEATER_1_MAXTEMP
|
|
||||||
#endif
|
|
||||||
#if TEMP_SENSOR_2 == 0
|
|
||||||
#undef HEATER_2_MINTEMP
|
|
||||||
#undef HEATER_2_MAXTEMP
|
|
||||||
#endif
|
|
||||||
#if TEMP_SENSOR_3 == 0
|
|
||||||
#undef HEATER_3_MINTEMP
|
|
||||||
#undef HEATER_3_MAXTEMP
|
|
||||||
#endif
|
|
||||||
#if TEMP_SENSOR_BED == 0
|
|
||||||
#undef BED_MINTEMP
|
|
||||||
#undef BED_MAXTEMP
|
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
||||||
#endif //__CONFIGURATION_ADV_H
|
|
||||||
|
|
|
@ -321,15 +321,6 @@ your extruder heater takes 2 minutes to hit the target on heating.
|
||||||
// #define ENDSTOPPULLUP_ZMIN
|
// #define ENDSTOPPULLUP_ZMIN
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef ENDSTOPPULLUPS
|
|
||||||
#define ENDSTOPPULLUP_XMAX
|
|
||||||
#define ENDSTOPPULLUP_YMAX
|
|
||||||
#define ENDSTOPPULLUP_ZMAX
|
|
||||||
#define ENDSTOPPULLUP_XMIN
|
|
||||||
#define ENDSTOPPULLUP_YMIN
|
|
||||||
#define ENDSTOPPULLUP_ZMIN
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// The pullups are needed if you directly connect a mechanical endswitch between the signal and ground pins.
|
// The pullups are needed if you directly connect a mechanical endswitch between the signal and ground pins.
|
||||||
const bool X_MIN_ENDSTOP_INVERTING = true; // set to true to invert the logic of the endstop.
|
const bool X_MIN_ENDSTOP_INVERTING = true; // set to true to invert the logic of the endstop.
|
||||||
const bool Y_MIN_ENDSTOP_INVERTING = true; // set to true to invert the logic of the endstop.
|
const bool Y_MIN_ENDSTOP_INVERTING = true; // set to true to invert the logic of the endstop.
|
||||||
|
@ -378,10 +369,32 @@ const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of
|
||||||
#define Z_MAX_POS 120
|
#define Z_MAX_POS 120
|
||||||
#define Z_MIN_POS 0
|
#define Z_MIN_POS 0
|
||||||
|
|
||||||
#define X_MAX_LENGTH (X_MAX_POS - X_MIN_POS)
|
//===========================================================================
|
||||||
#define Y_MAX_LENGTH (Y_MAX_POS - Y_MIN_POS)
|
//============================= Filament Runout Sensor ======================
|
||||||
#define Z_MAX_LENGTH (Z_MAX_POS - Z_MIN_POS)
|
//===========================================================================
|
||||||
|
//#define FILAMENT_RUNOUT_SENSOR // Uncomment for defining a filament runout sensor such as a mechanical or opto endstop to check the existence of filament
|
||||||
|
// In RAMPS uses servo pin 2. Can be changed in pins file. For other boards pin definition should be made.
|
||||||
|
// It is assumed that when logic high = filament available
|
||||||
|
// when logic low = filament ran out
|
||||||
|
//const bool FIL_RUNOUT_INVERTING = true; // Should be uncommented and true or false should assigned
|
||||||
|
//#define ENDSTOPPULLUP_FIL_RUNOUT // Uncomment to use internal pullup for filament runout pins if the sensor is defined.
|
||||||
|
|
||||||
|
//===========================================================================
|
||||||
|
//============================ Manual Bed Leveling ==========================
|
||||||
|
//===========================================================================
|
||||||
|
|
||||||
|
// #define MANUAL_BED_LEVELING // Add display menu option for bed leveling
|
||||||
|
// #define MESH_BED_LEVELING // Enable mesh bed leveling
|
||||||
|
|
||||||
|
#if defined(MESH_BED_LEVELING)
|
||||||
|
#define MESH_MIN_X 10
|
||||||
|
#define MESH_MAX_X (X_MAX_POS - MESH_MIN_X)
|
||||||
|
#define MESH_MIN_Y 10
|
||||||
|
#define MESH_MAX_Y (Y_MAX_POS - MESH_MIN_Y)
|
||||||
|
#define MESH_NUM_X_POINTS 3 // Don't use more than 7 points per axis, implementation limited
|
||||||
|
#define MESH_NUM_Y_POINTS 3
|
||||||
|
#define MESH_HOME_SEARCH_Z 4 // Z after Home, bed somewhere below but above 0.0
|
||||||
|
#endif // MESH_BED_LEVELING
|
||||||
|
|
||||||
//===========================================================================
|
//===========================================================================
|
||||||
//============================= Bed Auto Leveling ===========================
|
//============================= Bed Auto Leveling ===========================
|
||||||
|
@ -409,12 +422,6 @@ const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of
|
||||||
|
|
||||||
#ifdef AUTO_BED_LEVELING_GRID
|
#ifdef AUTO_BED_LEVELING_GRID
|
||||||
|
|
||||||
// Use one of these defines to specify the origin
|
|
||||||
// for a topographical map to be printed for your bed.
|
|
||||||
enum { OriginBackLeft, OriginFrontLeft, OriginBackRight, OriginFrontRight };
|
|
||||||
#define TOPO_ORIGIN OriginFrontLeft
|
|
||||||
|
|
||||||
// The edges of the rectangle in which to probe
|
|
||||||
#define LEFT_PROBE_BED_POSITION 15
|
#define LEFT_PROBE_BED_POSITION 15
|
||||||
#define RIGHT_PROBE_BED_POSITION 170
|
#define RIGHT_PROBE_BED_POSITION 170
|
||||||
#define FRONT_PROBE_BED_POSITION 20
|
#define FRONT_PROBE_BED_POSITION 20
|
||||||
|
@ -622,112 +629,17 @@ const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of
|
||||||
// REMEMBER TO INSTALL LiquidCrystal_I2C.h in your ARDUINO library folder: https://github.com/kiyoshigawa/LiquidCrystal_I2C
|
// REMEMBER TO INSTALL LiquidCrystal_I2C.h in your ARDUINO library folder: https://github.com/kiyoshigawa/LiquidCrystal_I2C
|
||||||
//#define RA_CONTROL_PANEL
|
//#define RA_CONTROL_PANEL
|
||||||
|
|
||||||
//automatic expansion
|
/**
|
||||||
#if defined (MAKRPANEL)
|
* I2C Panels
|
||||||
#define DOGLCD
|
*/
|
||||||
#define SDSUPPORT
|
|
||||||
#define ULTIPANEL
|
|
||||||
#define NEWPANEL
|
|
||||||
#define DEFAULT_LCD_CONTRAST 17
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if defined(miniVIKI) || defined(VIKI2)
|
|
||||||
#define ULTRA_LCD //general LCD support, also 16x2
|
|
||||||
#define DOGLCD // Support for SPI LCD 128x64 (Controller ST7565R graphic Display Family)
|
|
||||||
#define ULTIMAKERCONTROLLER //as available from the Ultimaker online store.
|
|
||||||
|
|
||||||
#ifdef miniVIKI
|
|
||||||
#define DEFAULT_LCD_CONTRAST 95
|
|
||||||
#else
|
|
||||||
#define DEFAULT_LCD_CONTRAST 40
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#define ENCODER_PULSES_PER_STEP 4
|
|
||||||
#define ENCODER_STEPS_PER_MENU_ITEM 1
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if defined (PANEL_ONE)
|
|
||||||
#define SDSUPPORT
|
|
||||||
#define ULTIMAKERCONTROLLER
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if defined (REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER)
|
|
||||||
#define DOGLCD
|
|
||||||
#define U8GLIB_ST7920
|
|
||||||
#define REPRAP_DISCOUNT_SMART_CONTROLLER
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if defined(ULTIMAKERCONTROLLER) || defined(REPRAP_DISCOUNT_SMART_CONTROLLER) || defined(G3D_PANEL)
|
|
||||||
#define ULTIPANEL
|
|
||||||
#define NEWPANEL
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if defined(REPRAPWORLD_KEYPAD)
|
|
||||||
#define NEWPANEL
|
|
||||||
#define ULTIPANEL
|
|
||||||
#endif
|
|
||||||
#if defined(RA_CONTROL_PANEL)
|
|
||||||
#define ULTIPANEL
|
|
||||||
#define NEWPANEL
|
|
||||||
#define LCD_I2C_TYPE_PCA8574
|
|
||||||
#define LCD_I2C_ADDRESS 0x27 // I2C Address of the port expander
|
|
||||||
#endif
|
|
||||||
|
|
||||||
//I2C PANELS
|
|
||||||
|
|
||||||
//#define LCD_I2C_SAINSMART_YWROBOT
|
//#define LCD_I2C_SAINSMART_YWROBOT
|
||||||
#ifdef LCD_I2C_SAINSMART_YWROBOT
|
|
||||||
// This uses the LiquidCrystal_I2C library ( https://bitbucket.org/fmalpartida/new-liquidcrystal/wiki/Home )
|
|
||||||
// Make sure it is placed in the Arduino libraries directory.
|
|
||||||
#define LCD_I2C_TYPE_PCF8575
|
|
||||||
#define LCD_I2C_ADDRESS 0x27 // I2C Address of the port expander
|
|
||||||
#define NEWPANEL
|
|
||||||
#define ULTIPANEL
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// PANELOLU2 LCD with status LEDs, separate encoder and click inputs
|
// PANELOLU2 LCD with status LEDs, separate encoder and click inputs
|
||||||
//#define LCD_I2C_PANELOLU2
|
//#define LCD_I2C_PANELOLU2
|
||||||
#ifdef LCD_I2C_PANELOLU2
|
|
||||||
// This uses the LiquidTWI2 library v1.2.3 or later ( https://github.com/lincomatic/LiquidTWI2 )
|
|
||||||
// Make sure the LiquidTWI2 directory is placed in the Arduino or Sketchbook libraries subdirectory.
|
|
||||||
// (v1.2.3 no longer requires you to define PANELOLU in the LiquidTWI2.h library header file)
|
|
||||||
// Note: The PANELOLU2 encoder click input can either be directly connected to a pin
|
|
||||||
// (if BTN_ENC defined to != -1) or read through I2C (when BTN_ENC == -1).
|
|
||||||
#define LCD_I2C_TYPE_MCP23017
|
|
||||||
#define LCD_I2C_ADDRESS 0x20 // I2C Address of the port expander
|
|
||||||
#define LCD_USE_I2C_BUZZER //comment out to disable buzzer on LCD
|
|
||||||
#define NEWPANEL
|
|
||||||
#define ULTIPANEL
|
|
||||||
|
|
||||||
#ifndef ENCODER_PULSES_PER_STEP
|
|
||||||
#define ENCODER_PULSES_PER_STEP 4
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifndef ENCODER_STEPS_PER_MENU_ITEM
|
|
||||||
#define ENCODER_STEPS_PER_MENU_ITEM 1
|
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
||||||
#ifdef LCD_USE_I2C_BUZZER
|
|
||||||
#define LCD_FEEDBACK_FREQUENCY_HZ 1000
|
|
||||||
#define LCD_FEEDBACK_FREQUENCY_DURATION_MS 100
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// Panucatt VIKI LCD with status LEDs, integrated click & L/R/U/P buttons, separate encoder inputs
|
// Panucatt VIKI LCD with status LEDs, integrated click & L/R/U/P buttons, separate encoder inputs
|
||||||
//#define LCD_I2C_VIKI
|
//#define LCD_I2C_VIKI
|
||||||
#ifdef LCD_I2C_VIKI
|
|
||||||
// This uses the LiquidTWI2 library v1.2.3 or later ( https://github.com/lincomatic/LiquidTWI2 )
|
|
||||||
// Make sure the LiquidTWI2 directory is placed in the Arduino or Sketchbook libraries subdirectory.
|
|
||||||
// Note: The pause/stop/resume LCD button pin should be connected to the Arduino
|
|
||||||
// BTN_ENC pin (or set BTN_ENC to -1 if not used)
|
|
||||||
#define LCD_I2C_TYPE_MCP23017
|
|
||||||
#define LCD_I2C_ADDRESS 0x20 // I2C Address of the port expander
|
|
||||||
#define LCD_USE_I2C_BUZZER //comment out to disable buzzer on LCD (requires LiquidTWI2 v1.2.3 or later)
|
|
||||||
#define NEWPANEL
|
|
||||||
#define ULTIPANEL
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// Shift register panels
|
// Shift register panels
|
||||||
// ---------------------
|
// ---------------------
|
||||||
|
@ -735,51 +647,10 @@ const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of
|
||||||
// https://bitbucket.org/fmalpartida/new-liquidcrystal/wiki/schematics#!shiftregister-connection
|
// https://bitbucket.org/fmalpartida/new-liquidcrystal/wiki/schematics#!shiftregister-connection
|
||||||
|
|
||||||
//#define SAV_3DLCD
|
//#define SAV_3DLCD
|
||||||
#ifdef SAV_3DLCD
|
|
||||||
#define SR_LCD_2W_NL // Non latching 2 wire shiftregister
|
|
||||||
#define NEWPANEL
|
|
||||||
#define ULTIPANEL
|
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
||||||
#ifdef ULTIPANEL
|
|
||||||
// #define NEWPANEL //enable this if you have a click-encoder panel
|
|
||||||
#define SDSUPPORT
|
|
||||||
#define ULTRA_LCD
|
|
||||||
#ifdef DOGLCD // Change number of lines to match the DOG graphic display
|
|
||||||
#define LCD_WIDTH 22
|
|
||||||
#define LCD_HEIGHT 5
|
|
||||||
#else
|
|
||||||
#define LCD_WIDTH 20
|
|
||||||
#define LCD_HEIGHT 4
|
|
||||||
#endif
|
|
||||||
#else //no panel but just LCD
|
|
||||||
#ifdef ULTRA_LCD
|
|
||||||
#ifdef DOGLCD // Change number of lines to match the 128x64 graphics display
|
|
||||||
#define LCD_WIDTH 22
|
|
||||||
#define LCD_HEIGHT 5
|
|
||||||
#else
|
|
||||||
#define LCD_WIDTH 16
|
|
||||||
#define LCD_HEIGHT 2
|
|
||||||
#endif
|
|
||||||
#endif
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// default LCD contrast for dogm-like LCD displays
|
|
||||||
#ifdef DOGLCD
|
|
||||||
# ifndef DEFAULT_LCD_CONTRAST
|
|
||||||
# define DEFAULT_LCD_CONTRAST 32
|
|
||||||
# endif
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// Increase the FAN pwm frequency. Removes the PWM noise but increases heating in the FET/Arduino
|
// Increase the FAN pwm frequency. Removes the PWM noise but increases heating in the FET/Arduino
|
||||||
//#define FAST_PWM_FAN
|
//#define FAST_PWM_FAN
|
||||||
|
|
||||||
// Temperature status LEDs that display the hotend and bet temperature.
|
|
||||||
// If all hotends and bed temperature and temperature setpoint are < 54C then the BLUE led is on.
|
|
||||||
// Otherwise the RED led is on. There is 1C hysteresis.
|
|
||||||
//#define TEMP_STAT_LEDS
|
|
||||||
|
|
||||||
// Use software PWM to drive the fan, as for the heaters. This uses a very low frequency
|
// Use software PWM to drive the fan, as for the heaters. This uses a very low frequency
|
||||||
// which is not ass annoying as with the hardware PWM. On the other hand, if this frequency
|
// which is not ass annoying as with the hardware PWM. On the other hand, if this frequency
|
||||||
// is too low, you should also increment SOFT_PWM_SCALE.
|
// is too low, you should also increment SOFT_PWM_SCALE.
|
||||||
|
@ -791,6 +662,11 @@ const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of
|
||||||
// at zero value, there are 128 effective control positions.
|
// at zero value, there are 128 effective control positions.
|
||||||
#define SOFT_PWM_SCALE 0
|
#define SOFT_PWM_SCALE 0
|
||||||
|
|
||||||
|
// Temperature status LEDs that display the hotend and bet temperature.
|
||||||
|
// If all hotends and bed temperature and temperature setpoint are < 54C then the BLUE led is on.
|
||||||
|
// Otherwise the RED led is on. There is 1C hysteresis.
|
||||||
|
//#define TEMP_STAT_LEDS
|
||||||
|
|
||||||
// M240 Triggers a camera by emulating a Canon RC-1 Remote
|
// M240 Triggers a camera by emulating a Canon RC-1 Remote
|
||||||
// Data from: http://www.doc-diy.net/photo/rc-1_hacked/
|
// Data from: http://www.doc-diy.net/photo/rc-1_hacked/
|
||||||
// #define PHOTOGRAPH_PIN 23
|
// #define PHOTOGRAPH_PIN 23
|
||||||
|
@ -862,4 +738,4 @@ const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of
|
||||||
#include "Configuration_adv.h"
|
#include "Configuration_adv.h"
|
||||||
#include "thermistortables.h"
|
#include "thermistortables.h"
|
||||||
|
|
||||||
#endif //__CONFIGURATION_H
|
#endif //CONFIGURATION_H
|
||||||
|
|
|
@ -1,6 +1,8 @@
|
||||||
#ifndef CONFIGURATION_ADV_H
|
#ifndef CONFIGURATION_ADV_H
|
||||||
#define CONFIGURATION_ADV_H
|
#define CONFIGURATION_ADV_H
|
||||||
|
|
||||||
|
#include "Conditionals.h"
|
||||||
|
|
||||||
//===========================================================================
|
//===========================================================================
|
||||||
//=============================Thermal Settings ============================
|
//=============================Thermal Settings ============================
|
||||||
//===========================================================================
|
//===========================================================================
|
||||||
|
@ -89,54 +91,6 @@
|
||||||
|
|
||||||
#define ENDSTOPS_ONLY_FOR_HOMING // If defined the endstops will only be used for homing
|
#define ENDSTOPS_ONLY_FOR_HOMING // If defined the endstops will only be used for homing
|
||||||
|
|
||||||
|
|
||||||
//// AUTOSET LOCATIONS OF LIMIT SWITCHES
|
|
||||||
//// Added by ZetaPhoenix 09-15-2012
|
|
||||||
#ifdef MANUAL_HOME_POSITIONS // Use manual limit switch locations
|
|
||||||
#define X_HOME_POS MANUAL_X_HOME_POS
|
|
||||||
#define Y_HOME_POS MANUAL_Y_HOME_POS
|
|
||||||
#define Z_HOME_POS MANUAL_Z_HOME_POS
|
|
||||||
#else //Set min/max homing switch positions based upon homing direction and min/max travel limits
|
|
||||||
//X axis
|
|
||||||
#if X_HOME_DIR == -1
|
|
||||||
#ifdef BED_CENTER_AT_0_0
|
|
||||||
#define X_HOME_POS X_MAX_LENGTH * -0.5
|
|
||||||
#else
|
|
||||||
#define X_HOME_POS X_MIN_POS
|
|
||||||
#endif //BED_CENTER_AT_0_0
|
|
||||||
#else
|
|
||||||
#ifdef BED_CENTER_AT_0_0
|
|
||||||
#define X_HOME_POS X_MAX_LENGTH * 0.5
|
|
||||||
#else
|
|
||||||
#define X_HOME_POS X_MAX_POS
|
|
||||||
#endif //BED_CENTER_AT_0_0
|
|
||||||
#endif //X_HOME_DIR == -1
|
|
||||||
|
|
||||||
//Y axis
|
|
||||||
#if Y_HOME_DIR == -1
|
|
||||||
#ifdef BED_CENTER_AT_0_0
|
|
||||||
#define Y_HOME_POS Y_MAX_LENGTH * -0.5
|
|
||||||
#else
|
|
||||||
#define Y_HOME_POS Y_MIN_POS
|
|
||||||
#endif //BED_CENTER_AT_0_0
|
|
||||||
#else
|
|
||||||
#ifdef BED_CENTER_AT_0_0
|
|
||||||
#define Y_HOME_POS Y_MAX_LENGTH * 0.5
|
|
||||||
#else
|
|
||||||
#define Y_HOME_POS Y_MAX_POS
|
|
||||||
#endif //BED_CENTER_AT_0_0
|
|
||||||
#endif //Y_HOME_DIR == -1
|
|
||||||
|
|
||||||
// Z axis
|
|
||||||
#if Z_HOME_DIR == -1 //BED_CENTER_AT_0_0 not used
|
|
||||||
#define Z_HOME_POS Z_MIN_POS
|
|
||||||
#else
|
|
||||||
#define Z_HOME_POS Z_MAX_POS
|
|
||||||
#endif //Z_HOME_DIR == -1
|
|
||||||
#endif //End auto min/max positions
|
|
||||||
//END AUTOSET LOCATIONS OF LIMIT SWITCHES -ZP
|
|
||||||
|
|
||||||
|
|
||||||
//#define Z_LATE_ENABLE // Enable Z the last moment. Needed if your Z driver overheats.
|
//#define Z_LATE_ENABLE // Enable Z the last moment. Needed if your Z driver overheats.
|
||||||
|
|
||||||
// A single Z stepper driver is usually used to drive 2 stepper motors.
|
// A single Z stepper driver is usually used to drive 2 stepper motors.
|
||||||
|
@ -146,26 +100,12 @@
|
||||||
// On a RAMPS (or other 5 driver) motherboard, using this feature will limit you to using 1 extruder.
|
// On a RAMPS (or other 5 driver) motherboard, using this feature will limit you to using 1 extruder.
|
||||||
//#define Z_DUAL_STEPPER_DRIVERS
|
//#define Z_DUAL_STEPPER_DRIVERS
|
||||||
|
|
||||||
#ifdef Z_DUAL_STEPPER_DRIVERS
|
|
||||||
#undef EXTRUDERS
|
|
||||||
#define EXTRUDERS 1
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// Same again but for Y Axis.
|
// Same again but for Y Axis.
|
||||||
//#define Y_DUAL_STEPPER_DRIVERS
|
//#define Y_DUAL_STEPPER_DRIVERS
|
||||||
|
|
||||||
// Define if the two Y drives need to rotate in opposite directions
|
// Define if the two Y drives need to rotate in opposite directions
|
||||||
#define INVERT_Y2_VS_Y_DIR true
|
#define INVERT_Y2_VS_Y_DIR true
|
||||||
|
|
||||||
#ifdef Y_DUAL_STEPPER_DRIVERS
|
|
||||||
#undef EXTRUDERS
|
|
||||||
#define EXTRUDERS 1
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if defined (Z_DUAL_STEPPER_DRIVERS) && defined (Y_DUAL_STEPPER_DRIVERS)
|
|
||||||
#error "You cannot have dual drivers for both Y and Z"
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// Enable this for dual x-carriage printers.
|
// Enable this for dual x-carriage printers.
|
||||||
// A dual x-carriage design has the advantage that the inactive extruder can be parked which
|
// A dual x-carriage design has the advantage that the inactive extruder can be parked which
|
||||||
// prevents hot-end ooze contaminating the print. It also reduces the weight of each x-carriage
|
// prevents hot-end ooze contaminating the print. It also reduces the weight of each x-carriage
|
||||||
|
@ -229,20 +169,15 @@
|
||||||
#define INVERT_Z_STEP_PIN false
|
#define INVERT_Z_STEP_PIN false
|
||||||
#define INVERT_E_STEP_PIN false
|
#define INVERT_E_STEP_PIN false
|
||||||
|
|
||||||
//default stepper release if idle. Set to 0 to deactivate.
|
// Default stepper release if idle. Set to 0 to deactivate.
|
||||||
#define DEFAULT_STEPPER_DEACTIVE_TIME 60
|
#define DEFAULT_STEPPER_DEACTIVE_TIME 60
|
||||||
|
|
||||||
#define DEFAULT_MINIMUMFEEDRATE 0.0 // minimum feedrate
|
#define DEFAULT_MINIMUMFEEDRATE 0.0 // minimum feedrate
|
||||||
#define DEFAULT_MINTRAVELFEEDRATE 0.0
|
#define DEFAULT_MINTRAVELFEEDRATE 0.0
|
||||||
|
|
||||||
// Feedrates for manual moves along X, Y, Z, E from panel
|
|
||||||
#ifdef ULTIPANEL
|
#ifdef ULTIPANEL
|
||||||
#define MANUAL_FEEDRATE {50*60, 50*60, 4*60, 60} // set the speeds for manual moves (mm/min)
|
#define MANUAL_FEEDRATE {50*60, 50*60, 4*60, 60} // Feedrates for manual moves along X, Y, Z, E from panel
|
||||||
#endif
|
#define ULTIPANEL_FEEDMULTIPLY // Comment to disable setting feedrate multiplier via encoder
|
||||||
|
|
||||||
//Comment to disable setting feedrate multiplier via encoder
|
|
||||||
#ifdef ULTIPANEL
|
|
||||||
#define ULTIPANEL_FEEDMULTIPLY
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// minimum time in microseconds that a movement needs to take if the buffer is emptied.
|
// minimum time in microseconds that a movement needs to take if the buffer is emptied.
|
||||||
|
@ -261,13 +196,6 @@
|
||||||
// if unwanted behavior is observed on a user's machine when running at very slow speeds.
|
// if unwanted behavior is observed on a user's machine when running at very slow speeds.
|
||||||
#define MINIMUM_PLANNER_SPEED 0.05// (mm/sec)
|
#define MINIMUM_PLANNER_SPEED 0.05// (mm/sec)
|
||||||
|
|
||||||
// MS1 MS2 Stepper Driver Microstepping mode table
|
|
||||||
#define MICROSTEP1 LOW,LOW
|
|
||||||
#define MICROSTEP2 HIGH,LOW
|
|
||||||
#define MICROSTEP4 LOW,HIGH
|
|
||||||
#define MICROSTEP8 HIGH,HIGH
|
|
||||||
#define MICROSTEP16 HIGH,HIGH
|
|
||||||
|
|
||||||
// Microstep setting (Only functional when stepper driver microstep pins are connected to MCU.
|
// Microstep setting (Only functional when stepper driver microstep pins are connected to MCU.
|
||||||
#define MICROSTEP_MODES {16,16,16,16,16} // [1,2,4,8,16]
|
#define MICROSTEP_MODES {16,16,16,16,16} // [1,2,4,8,16]
|
||||||
|
|
||||||
|
@ -336,16 +264,6 @@
|
||||||
#define BABYSTEP_XY //not only z, but also XY in the menu. more clutter, more functions
|
#define BABYSTEP_XY //not only z, but also XY in the menu. more clutter, more functions
|
||||||
#define BABYSTEP_INVERT_Z false //true for inverse movements in Z
|
#define BABYSTEP_INVERT_Z false //true for inverse movements in Z
|
||||||
#define BABYSTEP_Z_MULTIPLICATOR 2 //faster z movements
|
#define BABYSTEP_Z_MULTIPLICATOR 2 //faster z movements
|
||||||
|
|
||||||
#ifdef COREXY
|
|
||||||
#error BABYSTEPPING not implemented for COREXY yet.
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef DELTA
|
|
||||||
#ifdef BABYSTEP_XY
|
|
||||||
#error BABYSTEPPING only implemented for Z axis on deltabots.
|
|
||||||
#endif
|
|
||||||
#endif
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// extruder advance constant (s2/mm3)
|
// extruder advance constant (s2/mm3)
|
||||||
|
@ -379,26 +297,6 @@ const unsigned int dropsegments=5; //everything with less than this number of st
|
||||||
// be commented out otherwise
|
// be commented out otherwise
|
||||||
#define SDCARDDETECTINVERTED
|
#define SDCARDDETECTINVERTED
|
||||||
|
|
||||||
#ifdef ULTIPANEL
|
|
||||||
#undef SDCARDDETECTINVERTED
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// Power Signal Control Definitions
|
|
||||||
// By default use ATX definition
|
|
||||||
#ifndef POWER_SUPPLY
|
|
||||||
#define POWER_SUPPLY 1
|
|
||||||
#endif
|
|
||||||
// 1 = ATX
|
|
||||||
#if (POWER_SUPPLY == 1)
|
|
||||||
#define PS_ON_AWAKE LOW
|
|
||||||
#define PS_ON_ASLEEP HIGH
|
|
||||||
#endif
|
|
||||||
// 2 = X-Box 360 203W
|
|
||||||
#if (POWER_SUPPLY == 2)
|
|
||||||
#define PS_ON_AWAKE HIGH
|
|
||||||
#define PS_ON_ASLEEP LOW
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// Control heater 0 and heater 1 in parallel.
|
// Control heater 0 and heater 1 in parallel.
|
||||||
//#define HEATERS_PARALLEL
|
//#define HEATERS_PARALLEL
|
||||||
|
|
||||||
|
@ -438,9 +336,9 @@ const unsigned int dropsegments=5; //everything with less than this number of st
|
||||||
#define RETRACT_RECOVER_FEEDRATE 8 //default feedrate for recovering from retraction (mm/s)
|
#define RETRACT_RECOVER_FEEDRATE 8 //default feedrate for recovering from retraction (mm/s)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
//adds support for experimental filament exchange support M600; requires display
|
// Add support for experimental filament exchange support M600; requires display
|
||||||
#ifdef ULTIPANEL
|
#ifdef ULTIPANEL
|
||||||
#define FILAMENTCHANGEENABLE
|
//#define FILAMENTCHANGEENABLE
|
||||||
#ifdef FILAMENTCHANGEENABLE
|
#ifdef FILAMENTCHANGEENABLE
|
||||||
#define FILAMENTCHANGE_XPOS 3
|
#define FILAMENTCHANGE_XPOS 3
|
||||||
#define FILAMENTCHANGE_YPOS 3
|
#define FILAMENTCHANGE_YPOS 3
|
||||||
|
@ -450,81 +348,7 @@ const unsigned int dropsegments=5; //everything with less than this number of st
|
||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef FILAMENTCHANGEENABLE
|
#include "Conditionals.h"
|
||||||
#ifdef EXTRUDER_RUNOUT_PREVENT
|
#include "SanityCheck.h"
|
||||||
#error EXTRUDER_RUNOUT_PREVENT currently incompatible with FILAMENTCHANGE
|
|
||||||
#endif
|
|
||||||
#endif
|
|
||||||
|
|
||||||
//===========================================================================
|
#endif //CONFIGURATION_ADV_H
|
||||||
//============================= Define Defines ============================
|
|
||||||
//===========================================================================
|
|
||||||
#if EXTRUDERS > 1 && defined TEMP_SENSOR_1_AS_REDUNDANT
|
|
||||||
#error "You cannot use TEMP_SENSOR_1_AS_REDUNDANT if EXTRUDERS > 1"
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if EXTRUDERS > 1 && defined HEATERS_PARALLEL
|
|
||||||
#error "You cannot use HEATERS_PARALLEL if EXTRUDERS > 1"
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if TEMP_SENSOR_0 > 0
|
|
||||||
#define THERMISTORHEATER_0 TEMP_SENSOR_0
|
|
||||||
#define HEATER_0_USES_THERMISTOR
|
|
||||||
#endif
|
|
||||||
#if TEMP_SENSOR_1 > 0
|
|
||||||
#define THERMISTORHEATER_1 TEMP_SENSOR_1
|
|
||||||
#define HEATER_1_USES_THERMISTOR
|
|
||||||
#endif
|
|
||||||
#if TEMP_SENSOR_2 > 0
|
|
||||||
#define THERMISTORHEATER_2 TEMP_SENSOR_2
|
|
||||||
#define HEATER_2_USES_THERMISTOR
|
|
||||||
#endif
|
|
||||||
#if TEMP_SENSOR_3 > 0
|
|
||||||
#define THERMISTORHEATER_3 TEMP_SENSOR_3
|
|
||||||
#define HEATER_3_USES_THERMISTOR
|
|
||||||
#endif
|
|
||||||
#if TEMP_SENSOR_BED > 0
|
|
||||||
#define THERMISTORBED TEMP_SENSOR_BED
|
|
||||||
#define BED_USES_THERMISTOR
|
|
||||||
#endif
|
|
||||||
#if TEMP_SENSOR_0 == -1
|
|
||||||
#define HEATER_0_USES_AD595
|
|
||||||
#endif
|
|
||||||
#if TEMP_SENSOR_1 == -1
|
|
||||||
#define HEATER_1_USES_AD595
|
|
||||||
#endif
|
|
||||||
#if TEMP_SENSOR_2 == -1
|
|
||||||
#define HEATER_2_USES_AD595
|
|
||||||
#endif
|
|
||||||
#if TEMP_SENSOR_3 == -1
|
|
||||||
#define HEATER_3_USES_AD595
|
|
||||||
#endif
|
|
||||||
#if TEMP_SENSOR_BED == -1
|
|
||||||
#define BED_USES_AD595
|
|
||||||
#endif
|
|
||||||
#if TEMP_SENSOR_0 == -2
|
|
||||||
#define HEATER_0_USES_MAX6675
|
|
||||||
#endif
|
|
||||||
#if TEMP_SENSOR_0 == 0
|
|
||||||
#undef HEATER_0_MINTEMP
|
|
||||||
#undef HEATER_0_MAXTEMP
|
|
||||||
#endif
|
|
||||||
#if TEMP_SENSOR_1 == 0
|
|
||||||
#undef HEATER_1_MINTEMP
|
|
||||||
#undef HEATER_1_MAXTEMP
|
|
||||||
#endif
|
|
||||||
#if TEMP_SENSOR_2 == 0
|
|
||||||
#undef HEATER_2_MINTEMP
|
|
||||||
#undef HEATER_2_MAXTEMP
|
|
||||||
#endif
|
|
||||||
#if TEMP_SENSOR_3 == 0
|
|
||||||
#undef HEATER_3_MINTEMP
|
|
||||||
#undef HEATER_3_MAXTEMP
|
|
||||||
#endif
|
|
||||||
#if TEMP_SENSOR_BED == 0
|
|
||||||
#undef BED_MINTEMP
|
|
||||||
#undef BED_MAXTEMP
|
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
||||||
#endif //__CONFIGURATION_ADV_H
|
|
||||||
|
|
|
@ -202,7 +202,6 @@
|
||||||
|
|
||||||
// LCD Menu Messages
|
// LCD Menu Messages
|
||||||
|
|
||||||
|
|
||||||
#if !(defined( DISPLAY_CHARSET_HD44780_JAPAN ) || defined( DISPLAY_CHARSET_HD44780_WESTERN ) || defined( DISPLAY_CHARSET_HD44780_CYRILLIC ))
|
#if !(defined( DISPLAY_CHARSET_HD44780_JAPAN ) || defined( DISPLAY_CHARSET_HD44780_WESTERN ) || defined( DISPLAY_CHARSET_HD44780_CYRILLIC ))
|
||||||
#define DISPLAY_CHARSET_HD44780_JAPAN
|
#define DISPLAY_CHARSET_HD44780_JAPAN
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -105,6 +105,9 @@
|
||||||
#ifndef MSG_MOVE_AXIS
|
#ifndef MSG_MOVE_AXIS
|
||||||
#define MSG_MOVE_AXIS "Move axis"
|
#define MSG_MOVE_AXIS "Move axis"
|
||||||
#endif
|
#endif
|
||||||
|
#ifndef MSG_LEVEL_BED
|
||||||
|
#define MSG_LEVEL_BED "Level bed"
|
||||||
|
#endif
|
||||||
#ifndef MSG_MOVE_X
|
#ifndef MSG_MOVE_X
|
||||||
#define MSG_MOVE_X "Move X"
|
#define MSG_MOVE_X "Move X"
|
||||||
#endif
|
#endif
|
||||||
|
|
20
Marlin/mesh_bed_leveling.cpp
Normal file
20
Marlin/mesh_bed_leveling.cpp
Normal file
|
@ -0,0 +1,20 @@
|
||||||
|
#include "mesh_bed_leveling.h"
|
||||||
|
|
||||||
|
#if defined(MESH_BED_LEVELING)
|
||||||
|
|
||||||
|
mesh_bed_leveling mbl;
|
||||||
|
|
||||||
|
mesh_bed_leveling::mesh_bed_leveling() {
|
||||||
|
reset();
|
||||||
|
}
|
||||||
|
|
||||||
|
void mesh_bed_leveling::reset() {
|
||||||
|
for (int y=0; y<MESH_NUM_Y_POINTS; y++) {
|
||||||
|
for (int x=0; x<MESH_NUM_X_POINTS; x++) {
|
||||||
|
z_values[y][x] = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
active = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif // MESH_BED_LEVELING
|
61
Marlin/mesh_bed_leveling.h
Normal file
61
Marlin/mesh_bed_leveling.h
Normal file
|
@ -0,0 +1,61 @@
|
||||||
|
#include "Marlin.h"
|
||||||
|
|
||||||
|
#if defined(MESH_BED_LEVELING)
|
||||||
|
|
||||||
|
#define MESH_X_DIST ((MESH_MAX_X - MESH_MIN_X)/(MESH_NUM_X_POINTS - 1))
|
||||||
|
#define MESH_Y_DIST ((MESH_MAX_Y - MESH_MIN_Y)/(MESH_NUM_Y_POINTS - 1))
|
||||||
|
|
||||||
|
class mesh_bed_leveling {
|
||||||
|
public:
|
||||||
|
uint8_t active;
|
||||||
|
float z_values[MESH_NUM_Y_POINTS][MESH_NUM_X_POINTS];
|
||||||
|
|
||||||
|
mesh_bed_leveling();
|
||||||
|
|
||||||
|
void reset();
|
||||||
|
|
||||||
|
float get_x(int i) { return MESH_MIN_X + MESH_X_DIST*i; }
|
||||||
|
float get_y(int i) { return MESH_MIN_Y + MESH_Y_DIST*i; }
|
||||||
|
void set_z(int ix, int iy, float z) { z_values[iy][ix] = z; }
|
||||||
|
|
||||||
|
int select_x_index(float x) {
|
||||||
|
int i = 1;
|
||||||
|
while (x > get_x(i) && i < MESH_NUM_X_POINTS-1) {
|
||||||
|
i++;
|
||||||
|
}
|
||||||
|
return i-1;
|
||||||
|
}
|
||||||
|
|
||||||
|
int select_y_index(float y) {
|
||||||
|
int i = 1;
|
||||||
|
while (y > get_y(i) && i < MESH_NUM_Y_POINTS-1) {
|
||||||
|
i++;
|
||||||
|
}
|
||||||
|
return i-1;
|
||||||
|
}
|
||||||
|
|
||||||
|
float calc_z0(float a0, float a1, float z1, float a2, float z2) {
|
||||||
|
float delta_z = (z2 - z1)/(a2 - a1);
|
||||||
|
float delta_a = a0 - a1;
|
||||||
|
return z1 + delta_a * delta_z;
|
||||||
|
}
|
||||||
|
|
||||||
|
float get_z(float x0, float y0) {
|
||||||
|
int x_index = select_x_index(x0);
|
||||||
|
int y_index = select_y_index(y0);
|
||||||
|
float z1 = calc_z0(x0,
|
||||||
|
get_x(x_index), z_values[y_index][x_index],
|
||||||
|
get_x(x_index+1), z_values[y_index][x_index+1]);
|
||||||
|
float z2 = calc_z0(x0,
|
||||||
|
get_x(x_index), z_values[y_index+1][x_index],
|
||||||
|
get_x(x_index+1), z_values[y_index+1][x_index+1]);
|
||||||
|
float z0 = calc_z0(y0,
|
||||||
|
get_y(y_index), z1,
|
||||||
|
get_y(y_index+1), z2);
|
||||||
|
return z0;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
extern mesh_bed_leveling mbl;
|
||||||
|
|
||||||
|
#endif // MESH_BED_LEVELING
|
|
@ -5,8 +5,6 @@
|
||||||
#ifndef PINS_H
|
#ifndef PINS_H
|
||||||
#define PINS_H
|
#define PINS_H
|
||||||
|
|
||||||
#include "boards.h"
|
|
||||||
|
|
||||||
// Preset optional pins
|
// Preset optional pins
|
||||||
#define X_MS1_PIN -1
|
#define X_MS1_PIN -1
|
||||||
#define X_MS2_PIN -1
|
#define X_MS2_PIN -1
|
||||||
|
|
1138
Marlin/planner.cpp
1138
Marlin/planner.cpp
File diff suppressed because it is too large
Load diff
119
Marlin/planner.h
119
Marlin/planner.h
|
@ -21,20 +21,16 @@
|
||||||
// This module is to be considered a sub-module of stepper.c. Please don't include
|
// This module is to be considered a sub-module of stepper.c. Please don't include
|
||||||
// this file from any other module.
|
// this file from any other module.
|
||||||
|
|
||||||
#ifndef planner_h
|
#ifndef PLANNER_H
|
||||||
#define planner_h
|
#define PLANNER_H
|
||||||
|
|
||||||
#include "Marlin.h"
|
#include "Marlin.h"
|
||||||
|
|
||||||
#ifdef ENABLE_AUTO_BED_LEVELING
|
|
||||||
#include "vector_3.h"
|
|
||||||
#endif // ENABLE_AUTO_BED_LEVELING
|
|
||||||
|
|
||||||
// This struct is used when buffering the setup for each linear movement "nominal" values are as specified in
|
// This struct is used when buffering the setup for each linear movement "nominal" values are as specified in
|
||||||
// the source g-code and may never actually be reached if acceleration management is active.
|
// the source g-code and may never actually be reached if acceleration management is active.
|
||||||
typedef struct {
|
typedef struct {
|
||||||
// Fields used by the bresenham algorithm for tracing the line
|
// Fields used by the bresenham algorithm for tracing the line
|
||||||
long steps_x, steps_y, steps_z, steps_e; // Step count along each axis
|
long steps[NUM_AXIS]; // Step count along each axis
|
||||||
unsigned long step_event_count; // The number of step events required to complete this block
|
unsigned long step_event_count; // The number of step events required to complete this block
|
||||||
long accelerate_until; // The index of the step event on which to stop acceleration
|
long accelerate_until; // The index of the step event on which to stop acceleration
|
||||||
long decelerate_after; // The index of the step event on which to start decelerating
|
long decelerate_after; // The index of the step event on which to start decelerating
|
||||||
|
@ -49,7 +45,7 @@ typedef struct {
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// Fields used by the motion planner to manage acceleration
|
// Fields used by the motion planner to manage acceleration
|
||||||
// float speed_x, speed_y, speed_z, speed_e; // Nominal mm/sec for each axis
|
// float speed_x, speed_y, speed_z, speed_e; // Nominal mm/sec for each axis
|
||||||
float nominal_speed; // The nominal speed for this block in mm/sec
|
float nominal_speed; // The nominal speed for this block in mm/sec
|
||||||
float entry_speed; // Entry speed at previous-current junction in mm/sec
|
float entry_speed; // Entry speed at previous-current junction in mm/sec
|
||||||
float max_entry_speed; // Maximum allowable junction entry speed in mm/sec
|
float max_entry_speed; // Maximum allowable junction entry speed in mm/sec
|
||||||
|
@ -65,48 +61,44 @@ typedef struct {
|
||||||
unsigned long acceleration_st; // acceleration steps/sec^2
|
unsigned long acceleration_st; // acceleration steps/sec^2
|
||||||
unsigned long fan_speed;
|
unsigned long fan_speed;
|
||||||
#ifdef BARICUDA
|
#ifdef BARICUDA
|
||||||
unsigned long valve_pressure;
|
unsigned long valve_pressure;
|
||||||
unsigned long e_to_p_pressure;
|
unsigned long e_to_p_pressure;
|
||||||
#endif
|
#endif
|
||||||
volatile char busy;
|
volatile char busy;
|
||||||
} block_t;
|
} block_t;
|
||||||
|
|
||||||
#ifdef ENABLE_AUTO_BED_LEVELING
|
#define BLOCK_MOD(n) ((n)&(BLOCK_BUFFER_SIZE-1))
|
||||||
// this holds the required transform to compensate for bed level
|
|
||||||
extern matrix_3x3 plan_bed_level_matrix;
|
|
||||||
#endif // #ifdef ENABLE_AUTO_BED_LEVELING
|
|
||||||
|
|
||||||
// Initialize the motion plan subsystem
|
// Initialize the motion plan subsystem
|
||||||
void plan_init();
|
void plan_init();
|
||||||
|
|
||||||
// Add a new linear movement to the buffer. x, y and z is the signed, absolute target position in
|
void check_axes_activity();
|
||||||
// millimaters. Feed rate specifies the speed of the motion.
|
|
||||||
|
|
||||||
#ifdef ENABLE_AUTO_BED_LEVELING
|
// Get the number of buffered moves
|
||||||
void plan_buffer_line(float x, float y, float z, const float &e, float feed_rate, const uint8_t &extruder);
|
extern volatile unsigned char block_buffer_head;
|
||||||
|
extern volatile unsigned char block_buffer_tail;
|
||||||
|
FORCE_INLINE uint8_t movesplanned() { return BLOCK_MOD(block_buffer_head - block_buffer_tail + BLOCK_BUFFER_SIZE); }
|
||||||
|
|
||||||
#ifndef DELTA
|
#if defined(ENABLE_AUTO_BED_LEVELING) || defined(MESH_BED_LEVELING)
|
||||||
// Get the position applying the bed level matrix if enabled
|
#if defined(ENABLE_AUTO_BED_LEVELING)
|
||||||
vector_3 plan_get_position();
|
#include "vector_3.h"
|
||||||
#endif
|
// this holds the required transform to compensate for bed level
|
||||||
|
extern matrix_3x3 plan_bed_level_matrix;
|
||||||
|
// Get the position applying the bed level matrix if enabled
|
||||||
|
vector_3 plan_get_position();
|
||||||
|
#endif // ENABLE_AUTO_BED_LEVELING
|
||||||
|
// Add a new linear movement to the buffer. x, y and z is the signed, absolute target position in
|
||||||
|
// millimeters. Feed rate specifies the speed of the motion.
|
||||||
|
void plan_buffer_line(float x, float y, float z, const float &e, float feed_rate, const uint8_t &extruder);
|
||||||
|
// Set position. Used for G92 instructions.
|
||||||
|
void plan_set_position(float x, float y, float z, const float &e);
|
||||||
#else
|
#else
|
||||||
void plan_buffer_line(const float &x, const float &y, const float &z, const float &e, float feed_rate, const uint8_t &extruder);
|
void plan_buffer_line(const float &x, const float &y, const float &z, const float &e, float feed_rate, const uint8_t &extruder);
|
||||||
#endif // ENABLE_AUTO_BED_LEVELING
|
void plan_set_position(const float &x, const float &y, const float &z, const float &e);
|
||||||
|
#endif // ENABLE_AUTO_BED_LEVELING || MESH_BED_LEVELING
|
||||||
// Set position. Used for G92 instructions.
|
|
||||||
#ifdef ENABLE_AUTO_BED_LEVELING
|
|
||||||
void plan_set_position(float x, float y, float z, const float &e);
|
|
||||||
#else
|
|
||||||
void plan_set_position(const float &x, const float &y, const float &z, const float &e);
|
|
||||||
#endif // ENABLE_AUTO_BED_LEVELING
|
|
||||||
|
|
||||||
void plan_set_e_position(const float &e);
|
void plan_set_e_position(const float &e);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
void check_axes_activity();
|
|
||||||
uint8_t movesplanned(); //return the nr of buffered moves
|
|
||||||
|
|
||||||
extern unsigned long minsegmenttime;
|
extern unsigned long minsegmenttime;
|
||||||
extern float max_feedrate[NUM_AXIS]; // set the max speeds
|
extern float max_feedrate[NUM_AXIS]; // set the max speeds
|
||||||
extern float axis_steps_per_unit[NUM_AXIS];
|
extern float axis_steps_per_unit[NUM_AXIS];
|
||||||
|
@ -122,44 +114,41 @@ extern float mintravelfeedrate;
|
||||||
extern unsigned long axis_steps_per_sqr_second[NUM_AXIS];
|
extern unsigned long axis_steps_per_sqr_second[NUM_AXIS];
|
||||||
|
|
||||||
#ifdef AUTOTEMP
|
#ifdef AUTOTEMP
|
||||||
extern bool autotemp_enabled;
|
extern bool autotemp_enabled;
|
||||||
extern float autotemp_max;
|
extern float autotemp_max;
|
||||||
extern float autotemp_min;
|
extern float autotemp_min;
|
||||||
extern float autotemp_factor;
|
extern float autotemp_factor;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
extern block_t block_buffer[BLOCK_BUFFER_SIZE]; // A ring buffer for motion instructions
|
||||||
|
|
||||||
|
|
||||||
extern block_t block_buffer[BLOCK_BUFFER_SIZE]; // A ring buffer for motion instfructions
|
|
||||||
extern volatile unsigned char block_buffer_head; // Index of the next block to be pushed
|
extern volatile unsigned char block_buffer_head; // Index of the next block to be pushed
|
||||||
extern volatile unsigned char block_buffer_tail;
|
extern volatile unsigned char block_buffer_tail;
|
||||||
// Called when the current block is no longer needed. Discards the block and makes the memory
|
|
||||||
// availible for new blocks.
|
|
||||||
FORCE_INLINE void plan_discard_current_block()
|
|
||||||
{
|
|
||||||
if (block_buffer_head != block_buffer_tail) {
|
|
||||||
block_buffer_tail = (block_buffer_tail + 1) & (BLOCK_BUFFER_SIZE - 1);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Gets the current block. Returns NULL if buffer empty
|
|
||||||
FORCE_INLINE block_t *plan_get_current_block()
|
|
||||||
{
|
|
||||||
if (block_buffer_head == block_buffer_tail) {
|
|
||||||
return(NULL);
|
|
||||||
}
|
|
||||||
block_t *block = &block_buffer[block_buffer_tail];
|
|
||||||
block->busy = true;
|
|
||||||
return(block);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Returns true if the buffer has a queued block, false otherwise
|
// Returns true if the buffer has a queued block, false otherwise
|
||||||
FORCE_INLINE bool blocks_queued() { return (block_buffer_head != block_buffer_tail); }
|
FORCE_INLINE bool blocks_queued() { return (block_buffer_head != block_buffer_tail); }
|
||||||
|
|
||||||
|
// Called when the current block is no longer needed. Discards
|
||||||
|
// the block and makes the memory available for new blocks.
|
||||||
|
FORCE_INLINE void plan_discard_current_block() {
|
||||||
|
if (blocks_queued())
|
||||||
|
block_buffer_tail = BLOCK_MOD(block_buffer_tail + 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Gets the current block. Returns NULL if buffer empty
|
||||||
|
FORCE_INLINE block_t *plan_get_current_block() {
|
||||||
|
if (blocks_queued()) {
|
||||||
|
block_t *block = &block_buffer[block_buffer_tail];
|
||||||
|
block->busy = true;
|
||||||
|
return block;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
#ifdef PREVENT_DANGEROUS_EXTRUDE
|
#ifdef PREVENT_DANGEROUS_EXTRUDE
|
||||||
void set_extrude_min_temp(float temp);
|
void set_extrude_min_temp(float temp);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
void reset_acceleration_rates();
|
void reset_acceleration_rates();
|
||||||
#endif
|
|
||||||
|
#endif //PLANNER_H
|
||||||
|
|
|
@ -89,7 +89,7 @@ static bool old_x_min_endstop = false,
|
||||||
static bool check_endstops = true;
|
static bool check_endstops = true;
|
||||||
|
|
||||||
volatile long count_position[NUM_AXIS] = { 0 };
|
volatile long count_position[NUM_AXIS] = { 0 };
|
||||||
volatile signed char count_direction[NUM_AXIS] = { 1 };
|
volatile signed char count_direction[NUM_AXIS] = { 1, 1, 1, 1 };
|
||||||
|
|
||||||
|
|
||||||
//===========================================================================
|
//===========================================================================
|
||||||
|
@ -102,11 +102,8 @@ volatile signed char count_direction[NUM_AXIS] = { 1 };
|
||||||
X_DIR_WRITE(v); \
|
X_DIR_WRITE(v); \
|
||||||
X2_DIR_WRITE(v); \
|
X2_DIR_WRITE(v); \
|
||||||
} \
|
} \
|
||||||
else{ \
|
else { \
|
||||||
if (current_block->active_extruder) \
|
if (current_block->active_extruder) X2_DIR_WRITE(v); else X_DIR_WRITE(v); \
|
||||||
X2_DIR_WRITE(v); \
|
|
||||||
else \
|
|
||||||
X_DIR_WRITE(v); \
|
|
||||||
}
|
}
|
||||||
#define X_APPLY_STEP(v,ALWAYS) \
|
#define X_APPLY_STEP(v,ALWAYS) \
|
||||||
if (extruder_duplication_enabled || ALWAYS) { \
|
if (extruder_duplication_enabled || ALWAYS) { \
|
||||||
|
@ -114,10 +111,7 @@ volatile signed char count_direction[NUM_AXIS] = { 1 };
|
||||||
X2_STEP_WRITE(v); \
|
X2_STEP_WRITE(v); \
|
||||||
} \
|
} \
|
||||||
else { \
|
else { \
|
||||||
if (current_block->active_extruder != 0) \
|
if (current_block->active_extruder != 0) X2_STEP_WRITE(v); else X_STEP_WRITE(v); \
|
||||||
X2_STEP_WRITE(v); \
|
|
||||||
else \
|
|
||||||
X_STEP_WRITE(v); \
|
|
||||||
}
|
}
|
||||||
#else
|
#else
|
||||||
#define X_APPLY_DIR(v,Q) X_DIR_WRITE(v)
|
#define X_APPLY_DIR(v,Q) X_DIR_WRITE(v)
|
||||||
|
@ -125,16 +119,16 @@ volatile signed char count_direction[NUM_AXIS] = { 1 };
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef Y_DUAL_STEPPER_DRIVERS
|
#ifdef Y_DUAL_STEPPER_DRIVERS
|
||||||
#define Y_APPLY_DIR(v,Q) Y_DIR_WRITE(v), Y2_DIR_WRITE((v) != INVERT_Y2_VS_Y_DIR)
|
#define Y_APPLY_DIR(v,Q) { Y_DIR_WRITE(v); Y2_DIR_WRITE((v) != INVERT_Y2_VS_Y_DIR); }
|
||||||
#define Y_APPLY_STEP(v,Q) Y_STEP_WRITE(v), Y2_STEP_WRITE(v)
|
#define Y_APPLY_STEP(v,Q) { Y_STEP_WRITE(v); Y2_STEP_WRITE(v); }
|
||||||
#else
|
#else
|
||||||
#define Y_APPLY_DIR(v,Q) Y_DIR_WRITE(v)
|
#define Y_APPLY_DIR(v,Q) Y_DIR_WRITE(v)
|
||||||
#define Y_APPLY_STEP(v,Q) Y_STEP_WRITE(v)
|
#define Y_APPLY_STEP(v,Q) Y_STEP_WRITE(v)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef Z_DUAL_STEPPER_DRIVERS
|
#ifdef Z_DUAL_STEPPER_DRIVERS
|
||||||
#define Z_APPLY_DIR(v,Q) Z_DIR_WRITE(v), Z2_DIR_WRITE(v)
|
#define Z_APPLY_DIR(v,Q) { Z_DIR_WRITE(v); Z2_DIR_WRITE(v); }
|
||||||
#define Z_APPLY_STEP(v,Q) Z_STEP_WRITE(v), Z2_STEP_WRITE(v)
|
#define Z_APPLY_STEP(v,Q) { Z_STEP_WRITE(v); Z2_STEP_WRITE(v); }
|
||||||
#else
|
#else
|
||||||
#define Z_APPLY_DIR(v,Q) Z_DIR_WRITE(v)
|
#define Z_APPLY_DIR(v,Q) Z_DIR_WRITE(v)
|
||||||
#define Z_APPLY_STEP(v,Q) Z_STEP_WRITE(v)
|
#define Z_APPLY_STEP(v,Q) Z_STEP_WRITE(v)
|
||||||
|
@ -370,7 +364,7 @@ ISR(TIMER1_COMPA_vect) {
|
||||||
step_events_completed = 0;
|
step_events_completed = 0;
|
||||||
|
|
||||||
#ifdef Z_LATE_ENABLE
|
#ifdef Z_LATE_ENABLE
|
||||||
if (current_block->steps_z > 0) {
|
if (current_block->steps[Z_AXIS] > 0) {
|
||||||
enable_z();
|
enable_z();
|
||||||
OCR1A = 2000; //1ms wait
|
OCR1A = 2000; //1ms wait
|
||||||
return;
|
return;
|
||||||
|
@ -411,7 +405,7 @@ ISR(TIMER1_COMPA_vect) {
|
||||||
|
|
||||||
#define UPDATE_ENDSTOP(axis,AXIS,minmax,MINMAX) \
|
#define UPDATE_ENDSTOP(axis,AXIS,minmax,MINMAX) \
|
||||||
bool axis ##_## minmax ##_endstop = (READ(AXIS ##_## MINMAX ##_PIN) != AXIS ##_## MINMAX ##_ENDSTOP_INVERTING); \
|
bool axis ##_## minmax ##_endstop = (READ(AXIS ##_## MINMAX ##_PIN) != AXIS ##_## MINMAX ##_ENDSTOP_INVERTING); \
|
||||||
if (axis ##_## minmax ##_endstop && old_## axis ##_## minmax ##_endstop && (current_block->steps_## axis > 0)) { \
|
if (axis ##_## minmax ##_endstop && old_## axis ##_## minmax ##_endstop && (current_block->steps[AXIS ##_AXIS] > 0)) { \
|
||||||
endstops_trigsteps[AXIS ##_AXIS] = count_position[AXIS ##_AXIS]; \
|
endstops_trigsteps[AXIS ##_AXIS] = count_position[AXIS ##_AXIS]; \
|
||||||
endstop_## axis ##_hit = true; \
|
endstop_## axis ##_hit = true; \
|
||||||
step_events_completed = current_block->step_event_count; \
|
step_events_completed = current_block->step_event_count; \
|
||||||
|
@ -420,54 +414,54 @@ ISR(TIMER1_COMPA_vect) {
|
||||||
|
|
||||||
// Check X and Y endstops
|
// Check X and Y endstops
|
||||||
if (check_endstops) {
|
if (check_endstops) {
|
||||||
#ifndef COREXY
|
#ifdef COREXY
|
||||||
if (TEST(out_bits, X_AXIS)) // stepping along -X axis (regular cartesians bot)
|
|
||||||
#else
|
|
||||||
// Head direction in -X axis for CoreXY bots.
|
// Head direction in -X axis for CoreXY bots.
|
||||||
// If DeltaX == -DeltaY, the movement is only in Y axis
|
// If DeltaX == -DeltaY, the movement is only in Y axis
|
||||||
if (current_block->steps_x != current_block->steps_y || (TEST(out_bits, X_AXIS) == TEST(out_bits, Y_AXIS)))
|
if (current_block->steps[A_AXIS] != current_block->steps[B_AXIS] || (TEST(out_bits, A_AXIS) == TEST(out_bits, B_AXIS)))
|
||||||
if (TEST(out_bits, X_HEAD))
|
if (TEST(out_bits, X_HEAD))
|
||||||
#endif
|
|
||||||
{ // -direction
|
|
||||||
#ifdef DUAL_X_CARRIAGE
|
|
||||||
// with 2 x-carriages, endstops are only checked in the homing direction for the active extruder
|
|
||||||
if ((current_block->active_extruder == 0 && X_HOME_DIR == -1) || (current_block->active_extruder != 0 && X2_HOME_DIR == -1))
|
|
||||||
#endif
|
|
||||||
{
|
|
||||||
#if defined(X_MIN_PIN) && X_MIN_PIN >= 0
|
|
||||||
UPDATE_ENDSTOP(x, X, min, MIN);
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else { // +direction
|
|
||||||
#ifdef DUAL_X_CARRIAGE
|
|
||||||
// with 2 x-carriages, endstops are only checked in the homing direction for the active extruder
|
|
||||||
if ((current_block->active_extruder == 0 && X_HOME_DIR == 1) || (current_block->active_extruder != 0 && X2_HOME_DIR == 1))
|
|
||||||
#endif
|
|
||||||
{
|
|
||||||
#if defined(X_MAX_PIN) && X_MAX_PIN >= 0
|
|
||||||
UPDATE_ENDSTOP(x, X, max, MAX);
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
}
|
|
||||||
#ifndef COREXY
|
|
||||||
if (TEST(out_bits, Y_AXIS)) // -direction
|
|
||||||
#else
|
#else
|
||||||
|
if (TEST(out_bits, X_AXIS)) // stepping along -X axis (regular cartesians bot)
|
||||||
|
#endif
|
||||||
|
{ // -direction
|
||||||
|
#ifdef DUAL_X_CARRIAGE
|
||||||
|
// with 2 x-carriages, endstops are only checked in the homing direction for the active extruder
|
||||||
|
if ((current_block->active_extruder == 0 && X_HOME_DIR == -1) || (current_block->active_extruder != 0 && X2_HOME_DIR == -1))
|
||||||
|
#endif
|
||||||
|
{
|
||||||
|
#if defined(X_MIN_PIN) && X_MIN_PIN >= 0
|
||||||
|
UPDATE_ENDSTOP(x, X, min, MIN);
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else { // +direction
|
||||||
|
#ifdef DUAL_X_CARRIAGE
|
||||||
|
// with 2 x-carriages, endstops are only checked in the homing direction for the active extruder
|
||||||
|
if ((current_block->active_extruder == 0 && X_HOME_DIR == 1) || (current_block->active_extruder != 0 && X2_HOME_DIR == 1))
|
||||||
|
#endif
|
||||||
|
{
|
||||||
|
#if defined(X_MAX_PIN) && X_MAX_PIN >= 0
|
||||||
|
UPDATE_ENDSTOP(x, X, max, MAX);
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#ifdef COREXY
|
||||||
// Head direction in -Y axis for CoreXY bots.
|
// Head direction in -Y axis for CoreXY bots.
|
||||||
// If DeltaX == DeltaY, the movement is only in X axis
|
// If DeltaX == DeltaY, the movement is only in X axis
|
||||||
if (current_block->steps_x != current_block->steps_y || (TEST(out_bits, X_AXIS) != TEST(out_bits, Y_AXIS)))
|
if (current_block->steps[A_AXIS] != current_block->steps[B_AXIS] || (TEST(out_bits, A_AXIS) != TEST(out_bits, B_AXIS)))
|
||||||
if (TEST(out_bits, Y_HEAD))
|
if (TEST(out_bits, Y_HEAD))
|
||||||
|
#else
|
||||||
|
if (TEST(out_bits, Y_AXIS)) // -direction
|
||||||
#endif
|
#endif
|
||||||
{ // -direction
|
{ // -direction
|
||||||
#if defined(Y_MIN_PIN) && Y_MIN_PIN >= 0
|
#if defined(Y_MIN_PIN) && Y_MIN_PIN >= 0
|
||||||
UPDATE_ENDSTOP(y, Y, min, MIN);
|
UPDATE_ENDSTOP(y, Y, min, MIN);
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
else { // +direction
|
else { // +direction
|
||||||
#if defined(Y_MAX_PIN) && Y_MAX_PIN >= 0
|
#if defined(Y_MAX_PIN) && Y_MAX_PIN >= 0
|
||||||
UPDATE_ENDSTOP(y, Y, max, MAX);
|
UPDATE_ENDSTOP(y, Y, max, MAX);
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (TEST(out_bits, Z_AXIS)) { // -direction
|
if (TEST(out_bits, Z_AXIS)) { // -direction
|
||||||
|
@ -515,7 +509,7 @@ ISR(TIMER1_COMPA_vect) {
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef ADVANCE
|
#ifdef ADVANCE
|
||||||
counter_e += current_block->steps_e;
|
counter_e += current_block->steps[E_AXIS];
|
||||||
if (counter_e > 0) {
|
if (counter_e > 0) {
|
||||||
counter_e -= current_block->step_event_count;
|
counter_e -= current_block->step_event_count;
|
||||||
e_steps[current_block->active_extruder] += TEST(out_bits, E_AXIS) ? -1 : 1;
|
e_steps[current_block->active_extruder] += TEST(out_bits, E_AXIS) ? -1 : 1;
|
||||||
|
@ -529,15 +523,14 @@ ISR(TIMER1_COMPA_vect) {
|
||||||
* instead of doing each in turn. The extra tests add enough
|
* instead of doing each in turn. The extra tests add enough
|
||||||
* lag to allow it work with without needing NOPs
|
* lag to allow it work with without needing NOPs
|
||||||
*/
|
*/
|
||||||
counter_x += current_block->steps_x;
|
#define STEP_ADD(axis, AXIS) \
|
||||||
if (counter_x > 0) X_STEP_WRITE(HIGH);
|
counter_## axis += current_block->steps[AXIS ##_AXIS]; \
|
||||||
counter_y += current_block->steps_y;
|
if (counter_## axis > 0) { AXIS ##_STEP_WRITE(HIGH); }
|
||||||
if (counter_y > 0) Y_STEP_WRITE(HIGH);
|
STEP_ADD(x,X);
|
||||||
counter_z += current_block->steps_z;
|
STEP_ADD(y,Y);
|
||||||
if (counter_z > 0) Z_STEP_WRITE(HIGH);
|
STEP_ADD(z,Z);
|
||||||
#ifndef ADVANCE
|
#ifndef ADVANCE
|
||||||
counter_e += current_block->steps_e;
|
STEP_ADD(e,E);
|
||||||
if (counter_e > 0) E_STEP_WRITE(HIGH);
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#define STEP_IF_COUNTER(axis, AXIS) \
|
#define STEP_IF_COUNTER(axis, AXIS) \
|
||||||
|
@ -557,7 +550,7 @@ ISR(TIMER1_COMPA_vect) {
|
||||||
#else // !CONFIG_STEPPERS_TOSHIBA
|
#else // !CONFIG_STEPPERS_TOSHIBA
|
||||||
|
|
||||||
#define APPLY_MOVEMENT(axis, AXIS) \
|
#define APPLY_MOVEMENT(axis, AXIS) \
|
||||||
counter_## axis += current_block->steps_## axis; \
|
counter_## axis += current_block->steps[AXIS ##_AXIS]; \
|
||||||
if (counter_## axis > 0) { \
|
if (counter_## axis > 0) { \
|
||||||
AXIS ##_APPLY_STEP(!INVERT_## AXIS ##_STEP_PIN,0); \
|
AXIS ##_APPLY_STEP(!INVERT_## AXIS ##_STEP_PIN,0); \
|
||||||
counter_## axis -= current_block->step_event_count; \
|
counter_## axis -= current_block->step_event_count; \
|
||||||
|
|
|
@ -41,49 +41,13 @@
|
||||||
//================================== macros =================================
|
//================================== macros =================================
|
||||||
//===========================================================================
|
//===========================================================================
|
||||||
|
|
||||||
#if EXTRUDERS > 4
|
|
||||||
#error Unsupported number of extruders
|
|
||||||
#elif EXTRUDERS > 3
|
|
||||||
#define ARRAY_BY_EXTRUDERS(v1, v2, v3, v4) { v1, v2, v3, v4 }
|
|
||||||
#elif EXTRUDERS > 2
|
|
||||||
#define ARRAY_BY_EXTRUDERS(v1, v2, v3, v4) { v1, v2, v3 }
|
|
||||||
#elif EXTRUDERS > 1
|
|
||||||
#define ARRAY_BY_EXTRUDERS(v1, v2, v3, v4) { v1, v2 }
|
|
||||||
#else
|
|
||||||
#define ARRAY_BY_EXTRUDERS(v1, v2, v3, v4) { v1 }
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#define HAS_TEMP_0 (defined(TEMP_0_PIN) && TEMP_0_PIN >= 0)
|
|
||||||
#define HAS_TEMP_1 (defined(TEMP_1_PIN) && TEMP_1_PIN >= 0)
|
|
||||||
#define HAS_TEMP_2 (defined(TEMP_2_PIN) && TEMP_2_PIN >= 0)
|
|
||||||
#define HAS_TEMP_3 (defined(TEMP_3_PIN) && TEMP_3_PIN >= 0)
|
|
||||||
#define HAS_TEMP_BED (defined(TEMP_BED_PIN) && TEMP_BED_PIN >= 0)
|
|
||||||
#define HAS_FILAMENT_SENSOR (defined(FILAMENT_SENSOR) && defined(FILWIDTH_PIN) && FILWIDTH_PIN >= 0)
|
|
||||||
#define HAS_HEATER_0 (defined(HEATER_0_PIN) && HEATER_0_PIN >= 0)
|
|
||||||
#define HAS_HEATER_1 (defined(HEATER_1_PIN) && HEATER_1_PIN >= 0)
|
|
||||||
#define HAS_HEATER_2 (defined(HEATER_2_PIN) && HEATER_2_PIN >= 0)
|
|
||||||
#define HAS_HEATER_3 (defined(HEATER_3_PIN) && HEATER_3_PIN >= 0)
|
|
||||||
#define HAS_HEATER_BED (defined(HEATER_BED_PIN) && HEATER_BED_PIN >= 0)
|
|
||||||
#define HAS_AUTO_FAN_0 (defined(EXTRUDER_0_AUTO_FAN_PIN) && EXTRUDER_0_AUTO_FAN_PIN >= 0)
|
|
||||||
#define HAS_AUTO_FAN_1 (defined(EXTRUDER_1_AUTO_FAN_PIN) && EXTRUDER_1_AUTO_FAN_PIN >= 0)
|
|
||||||
#define HAS_AUTO_FAN_2 (defined(EXTRUDER_2_AUTO_FAN_PIN) && EXTRUDER_2_AUTO_FAN_PIN >= 0)
|
|
||||||
#define HAS_AUTO_FAN_3 (defined(EXTRUDER_3_AUTO_FAN_PIN) && EXTRUDER_3_AUTO_FAN_PIN >= 0)
|
|
||||||
#define HAS_AUTO_FAN HAS_AUTO_FAN_0 || HAS_AUTO_FAN_1 || HAS_AUTO_FAN_2 || HAS_AUTO_FAN_3
|
|
||||||
#define HAS_FAN (defined(FAN_PIN) && FAN_PIN >= 0)
|
|
||||||
|
|
||||||
//===========================================================================
|
|
||||||
//============================= public variables ============================
|
|
||||||
//===========================================================================
|
|
||||||
|
|
||||||
#ifdef K1 // Defined in Configuration.h in the PID settings
|
#ifdef K1 // Defined in Configuration.h in the PID settings
|
||||||
#define K2 (1.0-K1)
|
#define K2 (1.0-K1)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// Sampling period of the temperature routine
|
//===========================================================================
|
||||||
#ifdef PID_dT
|
//============================= public variables ============================
|
||||||
#undef PID_dT
|
//===========================================================================
|
||||||
#endif
|
|
||||||
#define PID_dT ((OVERSAMPLENR * 12.0)/(F_CPU / 64.0 / 256.0))
|
|
||||||
|
|
||||||
int target_temperature[EXTRUDERS] = { 0 };
|
int target_temperature[EXTRUDERS] = { 0 };
|
||||||
int target_temperature_bed = 0;
|
int target_temperature_bed = 0;
|
||||||
|
@ -145,7 +109,7 @@ static volatile bool temp_meas_ready = false;
|
||||||
static float temp_iState_min_bed;
|
static float temp_iState_min_bed;
|
||||||
static float temp_iState_max_bed;
|
static float temp_iState_max_bed;
|
||||||
#else //PIDTEMPBED
|
#else //PIDTEMPBED
|
||||||
static unsigned long previous_millis_bed_heater;
|
static unsigned long previous_millis_bed_heater;
|
||||||
#endif //PIDTEMPBED
|
#endif //PIDTEMPBED
|
||||||
static unsigned char soft_pwm[EXTRUDERS];
|
static unsigned char soft_pwm[EXTRUDERS];
|
||||||
|
|
||||||
|
@ -177,7 +141,7 @@ static volatile bool temp_meas_ready = false;
|
||||||
// Init min and max temp with extreme values to prevent false errors during startup
|
// Init min and max temp with extreme values to prevent false errors during startup
|
||||||
static int minttemp_raw[EXTRUDERS] = ARRAY_BY_EXTRUDERS( HEATER_0_RAW_LO_TEMP , HEATER_1_RAW_LO_TEMP , HEATER_2_RAW_LO_TEMP, HEATER_3_RAW_LO_TEMP);
|
static int minttemp_raw[EXTRUDERS] = ARRAY_BY_EXTRUDERS( HEATER_0_RAW_LO_TEMP , HEATER_1_RAW_LO_TEMP , HEATER_2_RAW_LO_TEMP, HEATER_3_RAW_LO_TEMP);
|
||||||
static int maxttemp_raw[EXTRUDERS] = ARRAY_BY_EXTRUDERS( HEATER_0_RAW_HI_TEMP , HEATER_1_RAW_HI_TEMP , HEATER_2_RAW_HI_TEMP, HEATER_3_RAW_HI_TEMP);
|
static int maxttemp_raw[EXTRUDERS] = ARRAY_BY_EXTRUDERS( HEATER_0_RAW_HI_TEMP , HEATER_1_RAW_HI_TEMP , HEATER_2_RAW_HI_TEMP, HEATER_3_RAW_HI_TEMP);
|
||||||
static int minttemp[EXTRUDERS] = ARRAY_BY_EXTRUDERS( 0, 0, 0, 0 );
|
static int minttemp[EXTRUDERS] = { 0 };
|
||||||
static int maxttemp[EXTRUDERS] = ARRAY_BY_EXTRUDERS( 16383, 16383, 16383, 16383 );
|
static int maxttemp[EXTRUDERS] = ARRAY_BY_EXTRUDERS( 16383, 16383, 16383, 16383 );
|
||||||
//static int bed_minttemp_raw = HEATER_BED_RAW_LO_TEMP; /* No bed mintemp error implemented?!? */
|
//static int bed_minttemp_raw = HEATER_BED_RAW_LO_TEMP; /* No bed mintemp error implemented?!? */
|
||||||
#ifdef BED_MAXTEMP
|
#ifdef BED_MAXTEMP
|
||||||
|
@ -197,8 +161,8 @@ static float analog2tempBed(int raw);
|
||||||
static void updateTemperaturesFromRawValues();
|
static void updateTemperaturesFromRawValues();
|
||||||
|
|
||||||
#ifdef WATCH_TEMP_PERIOD
|
#ifdef WATCH_TEMP_PERIOD
|
||||||
int watch_start_temp[EXTRUDERS] = ARRAY_BY_EXTRUDERS(0,0,0,0);
|
int watch_start_temp[EXTRUDERS] = { 0 };
|
||||||
unsigned long watchmillis[EXTRUDERS] = ARRAY_BY_EXTRUDERS(0,0,0,0);
|
unsigned long watchmillis[EXTRUDERS] = { 0 };
|
||||||
#endif //WATCH_TEMP_PERIOD
|
#endif //WATCH_TEMP_PERIOD
|
||||||
|
|
||||||
#ifndef SOFT_PWM_SCALE
|
#ifndef SOFT_PWM_SCALE
|
||||||
|
@ -391,21 +355,6 @@ int getHeaterPower(int heater) {
|
||||||
|
|
||||||
#if HAS_AUTO_FAN
|
#if HAS_AUTO_FAN
|
||||||
|
|
||||||
#if HAS_FAN
|
|
||||||
#if EXTRUDER_0_AUTO_FAN_PIN == FAN_PIN
|
|
||||||
#error "You cannot set EXTRUDER_0_AUTO_FAN_PIN equal to FAN_PIN"
|
|
||||||
#endif
|
|
||||||
#if EXTRUDER_1_AUTO_FAN_PIN == FAN_PIN
|
|
||||||
#error "You cannot set EXTRUDER_1_AUTO_FAN_PIN equal to FAN_PIN"
|
|
||||||
#endif
|
|
||||||
#if EXTRUDER_2_AUTO_FAN_PIN == FAN_PIN
|
|
||||||
#error "You cannot set EXTRUDER_2_AUTO_FAN_PIN equal to FAN_PIN"
|
|
||||||
#endif
|
|
||||||
#if EXTRUDER_3_AUTO_FAN_PIN == FAN_PIN
|
|
||||||
#error "You cannot set EXTRUDER_3_AUTO_FAN_PIN equal to FAN_PIN"
|
|
||||||
#endif
|
|
||||||
#endif
|
|
||||||
|
|
||||||
void setExtruderAutoFanState(int pin, bool state)
|
void setExtruderAutoFanState(int pin, bool state)
|
||||||
{
|
{
|
||||||
unsigned char newFanSpeed = (state != 0) ? EXTRUDER_AUTO_FAN_SPEED : 0;
|
unsigned char newFanSpeed = (state != 0) ? EXTRUDER_AUTO_FAN_SPEED : 0;
|
||||||
|
@ -482,42 +431,8 @@ void checkExtruderAutoFans()
|
||||||
#endif // any extruder auto fan pins set
|
#endif // any extruder auto fan pins set
|
||||||
|
|
||||||
//
|
//
|
||||||
// Error checking and Write Routines
|
// Temperature Error Handlers
|
||||||
//
|
//
|
||||||
#if !HAS_HEATER_0
|
|
||||||
#error HEATER_0_PIN not defined for this board
|
|
||||||
#endif
|
|
||||||
#define WRITE_HEATER_0P(v) WRITE(HEATER_0_PIN, v)
|
|
||||||
#if EXTRUDERS > 1 || defined(HEATERS_PARALLEL)
|
|
||||||
#if !HAS_HEATER_1
|
|
||||||
#error HEATER_1_PIN not defined for this board
|
|
||||||
#endif
|
|
||||||
#define WRITE_HEATER_1(v) WRITE(HEATER_1_PIN, v)
|
|
||||||
#if EXTRUDERS > 2
|
|
||||||
#if !HAS_HEATER_2
|
|
||||||
#error HEATER_2_PIN not defined for this board
|
|
||||||
#endif
|
|
||||||
#define WRITE_HEATER_2(v) WRITE(HEATER_2_PIN, v)
|
|
||||||
#if EXTRUDERS > 3
|
|
||||||
#if !HAS_HEATER_3
|
|
||||||
#error HEATER_3_PIN not defined for this board
|
|
||||||
#endif
|
|
||||||
#define WRITE_HEATER_3(v) WRITE(HEATER_3_PIN, v)
|
|
||||||
#endif
|
|
||||||
#endif
|
|
||||||
#endif
|
|
||||||
#ifdef HEATERS_PARALLEL
|
|
||||||
#define WRITE_HEATER_0(v) { WRITE_HEATER_0P(v); WRITE_HEATER_1(v); }
|
|
||||||
#else
|
|
||||||
#define WRITE_HEATER_0(v) WRITE_HEATER_0P(v)
|
|
||||||
#endif
|
|
||||||
#if HAS_HEATER_BED
|
|
||||||
#define WRITE_HEATER_BED(v) WRITE(HEATER_BED_PIN, v)
|
|
||||||
#endif
|
|
||||||
#if HAS_FAN
|
|
||||||
#define WRITE_FAN(v) WRITE(FAN_PIN, v)
|
|
||||||
#endif
|
|
||||||
|
|
||||||
inline void _temp_error(int e, const char *msg1, const char *msg2) {
|
inline void _temp_error(int e, const char *msg1, const char *msg2) {
|
||||||
if (!IsStopped()) {
|
if (!IsStopped()) {
|
||||||
SERIAL_ERROR_START;
|
SERIAL_ERROR_START;
|
||||||
|
@ -661,12 +576,6 @@ void manage_heater() {
|
||||||
|
|
||||||
updateTemperaturesFromRawValues();
|
updateTemperaturesFromRawValues();
|
||||||
|
|
||||||
#ifdef HEATER_0_USES_MAX6675
|
|
||||||
float ct = current_temperature[0];
|
|
||||||
if (ct > min(HEATER_0_MAXTEMP, 1023)) max_temp_error(0);
|
|
||||||
if (ct < max(HEATER_0_MINTEMP, 0.01)) min_temp_error(0);
|
|
||||||
#endif //HEATER_0_USES_MAX6675
|
|
||||||
|
|
||||||
unsigned long ms = millis();
|
unsigned long ms = millis();
|
||||||
|
|
||||||
// Loop through all extruders
|
// Loop through all extruders
|
||||||
|
@ -755,7 +664,7 @@ void manage_heater() {
|
||||||
#ifdef FILAMENT_SENSOR
|
#ifdef FILAMENT_SENSOR
|
||||||
if (filament_sensor) {
|
if (filament_sensor) {
|
||||||
meas_shift_index = delay_index1 - meas_delay_cm;
|
meas_shift_index = delay_index1 - meas_delay_cm;
|
||||||
if (meas_shift_index < 0) meas_shift_index += MAX_MEASUREMENT_DELAY + 1; //loop around buffer if needed
|
if (meas_shift_index < 0) meas_shift_index += MAX_MEASUREMENT_DELAY + 1; //loop around buffer if needed
|
||||||
|
|
||||||
// Get the delayed info and add 100 to reconstitute to a percent of
|
// Get the delayed info and add 100 to reconstitute to a percent of
|
||||||
// the nominal filament diameter then square it to get an area
|
// the nominal filament diameter then square it to get an area
|
||||||
|
@ -1145,28 +1054,28 @@ void disable_heater() {
|
||||||
for (int i=0; i<EXTRUDERS; i++) setTargetHotend(0, i);
|
for (int i=0; i<EXTRUDERS; i++) setTargetHotend(0, i);
|
||||||
setTargetBed(0);
|
setTargetBed(0);
|
||||||
|
|
||||||
|
#define DISABLE_HEATER(NR) { \
|
||||||
|
target_temperature[NR] = 0; \
|
||||||
|
soft_pwm[NR] = 0; \
|
||||||
|
WRITE_HEATER_ ## NR (LOW); \
|
||||||
|
}
|
||||||
|
|
||||||
#if HAS_TEMP_0
|
#if HAS_TEMP_0
|
||||||
target_temperature[0] = 0;
|
target_temperature[0] = 0;
|
||||||
soft_pwm[0] = 0;
|
soft_pwm[0] = 0;
|
||||||
WRITE_HEATER_0P(LOW); // If HEATERS_PARALLEL should apply, change to WRITE_HEATER_0
|
WRITE_HEATER_0P(LOW); // Should HEATERS_PARALLEL apply here? Then change to DISABLE_HEATER(0)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if EXTRUDERS > 1 && HAS_TEMP_1
|
#if EXTRUDERS > 1 && HAS_TEMP_1
|
||||||
target_temperature[1] = 0;
|
DISABLE_HEATER(1);
|
||||||
soft_pwm[1] = 0;
|
|
||||||
WRITE_HEATER_1(LOW);
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if EXTRUDERS > 2 && HAS_TEMP_2
|
#if EXTRUDERS > 2 && HAS_TEMP_2
|
||||||
target_temperature[2] = 0;
|
DISABLE_HEATER(2);
|
||||||
soft_pwm[2] = 0;
|
|
||||||
WRITE_HEATER_2(LOW);
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if EXTRUDERS > 3 && HAS_TEMP_3
|
#if EXTRUDERS > 3 && HAS_TEMP_3
|
||||||
target_temperature[3] = 0;
|
DISABLE_HEATER(3);
|
||||||
soft_pwm[3] = 0;
|
|
||||||
WRITE_HEATER_3(LOW);
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if HAS_TEMP_BED
|
#if HAS_TEMP_BED
|
||||||
|
@ -1257,12 +1166,15 @@ enum TempState {
|
||||||
// Timer 0 is shared with millies
|
// Timer 0 is shared with millies
|
||||||
//
|
//
|
||||||
ISR(TIMER0_COMPB_vect) {
|
ISR(TIMER0_COMPB_vect) {
|
||||||
|
#ifdef TEMP_SENSOR_1_AS_REDUNDANT
|
||||||
|
#define TEMP_SENSOR_COUNT 2
|
||||||
|
#else
|
||||||
|
#define TEMP_SENSOR_COUNT EXTRUDERS
|
||||||
|
#endif
|
||||||
|
|
||||||
//these variables are only accesible from the ISR, but static, so they don't lose their value
|
//these variables are only accesible from the ISR, but static, so they don't lose their value
|
||||||
static unsigned char temp_count = 0;
|
static unsigned char temp_count = 0;
|
||||||
static unsigned long raw_temp_0_value = 0;
|
static unsigned long raw_temp_value[TEMP_SENSOR_COUNT] = { 0 };
|
||||||
static unsigned long raw_temp_1_value = 0;
|
|
||||||
static unsigned long raw_temp_2_value = 0;
|
|
||||||
static unsigned long raw_temp_3_value = 0;
|
|
||||||
static unsigned long raw_temp_bed_value = 0;
|
static unsigned long raw_temp_bed_value = 0;
|
||||||
static TempState temp_state = StartupDelay;
|
static TempState temp_state = StartupDelay;
|
||||||
static unsigned char pwm_count = BIT(SOFT_PWM_SCALE);
|
static unsigned char pwm_count = BIT(SOFT_PWM_SCALE);
|
||||||
|
@ -1474,10 +1386,11 @@ ISR(TIMER0_COMPB_vect) {
|
||||||
break;
|
break;
|
||||||
case MeasureTemp_0:
|
case MeasureTemp_0:
|
||||||
#if HAS_TEMP_0
|
#if HAS_TEMP_0
|
||||||
raw_temp_0_value += ADC;
|
raw_temp_value[0] += ADC;
|
||||||
#endif
|
#endif
|
||||||
temp_state = PrepareTemp_BED;
|
temp_state = PrepareTemp_BED;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case PrepareTemp_BED:
|
case PrepareTemp_BED:
|
||||||
#if HAS_TEMP_BED
|
#if HAS_TEMP_BED
|
||||||
START_ADC(TEMP_BED_PIN);
|
START_ADC(TEMP_BED_PIN);
|
||||||
|
@ -1491,6 +1404,7 @@ ISR(TIMER0_COMPB_vect) {
|
||||||
#endif
|
#endif
|
||||||
temp_state = PrepareTemp_1;
|
temp_state = PrepareTemp_1;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case PrepareTemp_1:
|
case PrepareTemp_1:
|
||||||
#if HAS_TEMP_1
|
#if HAS_TEMP_1
|
||||||
START_ADC(TEMP_1_PIN);
|
START_ADC(TEMP_1_PIN);
|
||||||
|
@ -1500,10 +1414,11 @@ ISR(TIMER0_COMPB_vect) {
|
||||||
break;
|
break;
|
||||||
case MeasureTemp_1:
|
case MeasureTemp_1:
|
||||||
#if HAS_TEMP_1
|
#if HAS_TEMP_1
|
||||||
raw_temp_1_value += ADC;
|
raw_temp_value[1] += ADC;
|
||||||
#endif
|
#endif
|
||||||
temp_state = PrepareTemp_2;
|
temp_state = PrepareTemp_2;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case PrepareTemp_2:
|
case PrepareTemp_2:
|
||||||
#if HAS_TEMP_2
|
#if HAS_TEMP_2
|
||||||
START_ADC(TEMP_2_PIN);
|
START_ADC(TEMP_2_PIN);
|
||||||
|
@ -1513,10 +1428,11 @@ ISR(TIMER0_COMPB_vect) {
|
||||||
break;
|
break;
|
||||||
case MeasureTemp_2:
|
case MeasureTemp_2:
|
||||||
#if HAS_TEMP_2
|
#if HAS_TEMP_2
|
||||||
raw_temp_2_value += ADC;
|
raw_temp_value[2] += ADC;
|
||||||
#endif
|
#endif
|
||||||
temp_state = PrepareTemp_3;
|
temp_state = PrepareTemp_3;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case PrepareTemp_3:
|
case PrepareTemp_3:
|
||||||
#if HAS_TEMP_3
|
#if HAS_TEMP_3
|
||||||
START_ADC(TEMP_3_PIN);
|
START_ADC(TEMP_3_PIN);
|
||||||
|
@ -1526,10 +1442,11 @@ ISR(TIMER0_COMPB_vect) {
|
||||||
break;
|
break;
|
||||||
case MeasureTemp_3:
|
case MeasureTemp_3:
|
||||||
#if HAS_TEMP_3
|
#if HAS_TEMP_3
|
||||||
raw_temp_3_value += ADC;
|
raw_temp_value[3] += ADC;
|
||||||
#endif
|
#endif
|
||||||
temp_state = Prepare_FILWIDTH;
|
temp_state = Prepare_FILWIDTH;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case Prepare_FILWIDTH:
|
case Prepare_FILWIDTH:
|
||||||
#if HAS_FILAMENT_SENSOR
|
#if HAS_FILAMENT_SENSOR
|
||||||
START_ADC(FILWIDTH_PIN);
|
START_ADC(FILWIDTH_PIN);
|
||||||
|
@ -1548,6 +1465,7 @@ ISR(TIMER0_COMPB_vect) {
|
||||||
temp_state = PrepareTemp_0;
|
temp_state = PrepareTemp_0;
|
||||||
temp_count++;
|
temp_count++;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case StartupDelay:
|
case StartupDelay:
|
||||||
temp_state = PrepareTemp_0;
|
temp_state = PrepareTemp_0;
|
||||||
break;
|
break;
|
||||||
|
@ -1561,19 +1479,19 @@ ISR(TIMER0_COMPB_vect) {
|
||||||
if (temp_count >= OVERSAMPLENR) { // 10 * 16 * 1/(16000000/64/256) = 164ms.
|
if (temp_count >= OVERSAMPLENR) { // 10 * 16 * 1/(16000000/64/256) = 164ms.
|
||||||
if (!temp_meas_ready) { //Only update the raw values if they have been read. Else we could be updating them during reading.
|
if (!temp_meas_ready) { //Only update the raw values if they have been read. Else we could be updating them during reading.
|
||||||
#ifndef HEATER_0_USES_MAX6675
|
#ifndef HEATER_0_USES_MAX6675
|
||||||
current_temperature_raw[0] = raw_temp_0_value;
|
current_temperature_raw[0] = raw_temp_value[0];
|
||||||
#endif
|
#endif
|
||||||
#if EXTRUDERS > 1
|
#if EXTRUDERS > 1
|
||||||
current_temperature_raw[1] = raw_temp_1_value;
|
current_temperature_raw[1] = raw_temp_value[1];
|
||||||
#if EXTRUDERS > 2
|
#if EXTRUDERS > 2
|
||||||
current_temperature_raw[2] = raw_temp_2_value;
|
current_temperature_raw[2] = raw_temp_value[2];
|
||||||
#if EXTRUDERS > 3
|
#if EXTRUDERS > 3
|
||||||
current_temperature_raw[3] = raw_temp_3_value;
|
current_temperature_raw[3] = raw_temp_value[3];
|
||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
#ifdef TEMP_SENSOR_1_AS_REDUNDANT
|
#ifdef TEMP_SENSOR_1_AS_REDUNDANT
|
||||||
redundant_temperature_raw = raw_temp_1_value;
|
redundant_temperature_raw = raw_temp_value[1];
|
||||||
#endif
|
#endif
|
||||||
current_temperature_bed_raw = raw_temp_bed_value;
|
current_temperature_bed_raw = raw_temp_bed_value;
|
||||||
} //!temp_meas_ready
|
} //!temp_meas_ready
|
||||||
|
@ -1585,31 +1503,66 @@ ISR(TIMER0_COMPB_vect) {
|
||||||
|
|
||||||
temp_meas_ready = true;
|
temp_meas_ready = true;
|
||||||
temp_count = 0;
|
temp_count = 0;
|
||||||
raw_temp_0_value = 0;
|
for (int i = 0; i < TEMP_SENSOR_COUNT; i++) raw_temp_value[i] = 0;
|
||||||
raw_temp_1_value = 0;
|
|
||||||
raw_temp_2_value = 0;
|
|
||||||
raw_temp_3_value = 0;
|
|
||||||
raw_temp_bed_value = 0;
|
raw_temp_bed_value = 0;
|
||||||
|
|
||||||
#if HEATER_0_RAW_LO_TEMP > HEATER_0_RAW_HI_TEMP
|
#ifdef HEATER_0_USES_MAX6675
|
||||||
#define MAXTEST <=
|
float ct = current_temperature[0];
|
||||||
#define MINTEST >=
|
if (ct > min(HEATER_0_MAXTEMP, 1023)) max_temp_error(0);
|
||||||
|
if (ct < max(HEATER_0_MINTEMP, 0.01)) min_temp_error(0);
|
||||||
#else
|
#else
|
||||||
#define MAXTEST >=
|
#if HEATER_0_RAW_LO_TEMP > HEATER_0_RAW_HI_TEMP
|
||||||
#define MINTEST <=
|
#define GE0 <=
|
||||||
|
#else
|
||||||
|
#define GE0 >=
|
||||||
|
#endif
|
||||||
|
if (current_temperature_raw[0] GE0 maxttemp_raw[0]) max_temp_error(0);
|
||||||
|
if (minttemp_raw[0] GE0 current_temperature_raw[0]) min_temp_error(0);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
for (int i=0; i<EXTRUDERS; i++) {
|
#if EXTRUDERS > 1
|
||||||
if (current_temperature_raw[i] MAXTEST maxttemp_raw[i]) max_temp_error(i);
|
#if HEATER_1_RAW_LO_TEMP > HEATER_1_RAW_HI_TEMP
|
||||||
else if (current_temperature_raw[i] MINTEST minttemp_raw[i]) min_temp_error(i);
|
#define GE1 <=
|
||||||
}
|
#else
|
||||||
/* No bed MINTEMP error? */
|
#define GE1 >=
|
||||||
|
#endif
|
||||||
|
if (current_temperature_raw[1] GE1 maxttemp_raw[1]) max_temp_error(1);
|
||||||
|
if (minttemp_raw[1] GE0 current_temperature_raw[1]) min_temp_error(1);
|
||||||
|
|
||||||
|
#if EXTRUDERS > 2
|
||||||
|
#if HEATER_2_RAW_LO_TEMP > HEATER_2_RAW_HI_TEMP
|
||||||
|
#define GE2 <=
|
||||||
|
#else
|
||||||
|
#define GE2 >=
|
||||||
|
#endif
|
||||||
|
if (current_temperature_raw[2] GE2 maxttemp_raw[2]) max_temp_error(2);
|
||||||
|
if (minttemp_raw[2] GE0 current_temperature_raw[2]) min_temp_error(2);
|
||||||
|
|
||||||
|
#if EXTRUDERS > 3
|
||||||
|
#if HEATER_3_RAW_LO_TEMP > HEATER_3_RAW_HI_TEMP
|
||||||
|
#define GE3 <=
|
||||||
|
#else
|
||||||
|
#define GE3 >=
|
||||||
|
#endif
|
||||||
|
if (current_temperature_raw[3] GE3 maxttemp_raw[3]) max_temp_error(3);
|
||||||
|
if (minttemp_raw[3] GE0 current_temperature_raw[3]) min_temp_error(3);
|
||||||
|
|
||||||
|
#endif // EXTRUDERS > 3
|
||||||
|
#endif // EXTRUDERS > 2
|
||||||
|
#endif // EXTRUDERS > 1
|
||||||
|
|
||||||
#if defined(BED_MAXTEMP) && (TEMP_SENSOR_BED != 0)
|
#if defined(BED_MAXTEMP) && (TEMP_SENSOR_BED != 0)
|
||||||
if (current_temperature_bed_raw MAXTEST bed_maxttemp_raw) {
|
#if HEATER_BED_RAW_LO_TEMP > HEATER_BED_RAW_HI_TEMP
|
||||||
target_temperature_bed = 0;
|
#define GEBED <=
|
||||||
bed_max_temp_error();
|
#else
|
||||||
}
|
#define GEBED >=
|
||||||
|
#endif
|
||||||
|
if (current_temperature_bed_raw GEBED bed_maxttemp_raw) {
|
||||||
|
target_temperature_bed = 0;
|
||||||
|
bed_max_temp_error();
|
||||||
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
} // temp_count >= OVERSAMPLENR
|
} // temp_count >= OVERSAMPLENR
|
||||||
|
|
||||||
#ifdef BABYSTEPPING
|
#ifdef BABYSTEPPING
|
||||||
|
|
|
@ -1,4 +1,3 @@
|
||||||
#include "temperature.h"
|
|
||||||
#include "ultralcd.h"
|
#include "ultralcd.h"
|
||||||
#ifdef ULTRA_LCD
|
#ifdef ULTRA_LCD
|
||||||
#include "Marlin.h"
|
#include "Marlin.h"
|
||||||
|
@ -70,6 +69,13 @@ static void lcd_sdcard_menu();
|
||||||
static void lcd_delta_calibrate_menu();
|
static void lcd_delta_calibrate_menu();
|
||||||
#endif // DELTA_CALIBRATION_MENU
|
#endif // DELTA_CALIBRATION_MENU
|
||||||
|
|
||||||
|
#if defined(MANUAL_BED_LEVELING)
|
||||||
|
#include "mesh_bed_leveling.h"
|
||||||
|
static void _lcd_level_bed();
|
||||||
|
static void _lcd_level_bed_homing();
|
||||||
|
static void lcd_level_bed();
|
||||||
|
#endif // MANUAL_BED_LEVELING
|
||||||
|
|
||||||
static void lcd_quick_feedback();//Cause an LCD refresh, and give the user visual or audible feedback that something has happened
|
static void lcd_quick_feedback();//Cause an LCD refresh, and give the user visual or audible feedback that something has happened
|
||||||
|
|
||||||
/* Different types of actions that can be used in menu items. */
|
/* Different types of actions that can be used in menu items. */
|
||||||
|
@ -198,8 +204,8 @@ static void menu_action_setting_edit_callback_long5(const char* pstr, unsigned l
|
||||||
#define MENU_MULTIPLIER_ITEM_EDIT_CALLBACK(type, label, args...) MENU_ITEM(setting_edit_callback_ ## type, label, PSTR(label), ## args)
|
#define MENU_MULTIPLIER_ITEM_EDIT_CALLBACK(type, label, args...) MENU_ITEM(setting_edit_callback_ ## type, label, PSTR(label), ## args)
|
||||||
#endif //!ENCODER_RATE_MULTIPLIER
|
#endif //!ENCODER_RATE_MULTIPLIER
|
||||||
#define END_MENU() \
|
#define END_MENU() \
|
||||||
if (encoderPosition / ENCODER_STEPS_PER_MENU_ITEM >= _menuItemNr) encoderPosition = _menuItemNr * ENCODER_STEPS_PER_MENU_ITEM - 1; \
|
if (encoderLine >= _menuItemNr) encoderPosition = _menuItemNr * ENCODER_STEPS_PER_MENU_ITEM - 1; encoderLine = encoderPosition / ENCODER_STEPS_PER_MENU_ITEM;\
|
||||||
if ((uint8_t)(encoderPosition / ENCODER_STEPS_PER_MENU_ITEM) >= currentMenuViewOffset + LCD_HEIGHT) { currentMenuViewOffset = (encoderPosition / ENCODER_STEPS_PER_MENU_ITEM) - LCD_HEIGHT + 1; lcdDrawUpdate = 1; _lineNr = currentMenuViewOffset - 1; _drawLineNr = -1; } \
|
if (encoderLine >= currentMenuViewOffset + LCD_HEIGHT) { currentMenuViewOffset = encoderLine - LCD_HEIGHT + 1; lcdDrawUpdate = 1; _lineNr = currentMenuViewOffset - 1; _drawLineNr = -1; } \
|
||||||
} } while(0)
|
} } while(0)
|
||||||
|
|
||||||
/** Used variables to keep track of the menu */
|
/** Used variables to keep track of the menu */
|
||||||
|
@ -430,7 +436,7 @@ static void lcd_main_menu() {
|
||||||
void lcd_set_home_offsets() {
|
void lcd_set_home_offsets() {
|
||||||
for(int8_t i=0; i < NUM_AXIS; i++) {
|
for(int8_t i=0; i < NUM_AXIS; i++) {
|
||||||
if (i != E_AXIS) {
|
if (i != E_AXIS) {
|
||||||
add_homing[i] -= current_position[i];
|
home_offset[i] -= current_position[i];
|
||||||
current_position[i] = 0.0;
|
current_position[i] = 0.0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -631,6 +637,10 @@ static void lcd_prepare_menu() {
|
||||||
#endif
|
#endif
|
||||||
MENU_ITEM(submenu, MSG_MOVE_AXIS, lcd_move_menu);
|
MENU_ITEM(submenu, MSG_MOVE_AXIS, lcd_move_menu);
|
||||||
|
|
||||||
|
#if defined(MANUAL_BED_LEVELING)
|
||||||
|
MENU_ITEM(submenu, MSG_LEVEL_BED, lcd_level_bed);
|
||||||
|
#endif
|
||||||
|
|
||||||
END_MENU();
|
END_MENU();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -901,9 +911,9 @@ static void lcd_control_motion_menu() {
|
||||||
START_MENU();
|
START_MENU();
|
||||||
MENU_ITEM(back, MSG_CONTROL, lcd_control_menu);
|
MENU_ITEM(back, MSG_CONTROL, lcd_control_menu);
|
||||||
#ifdef ENABLE_AUTO_BED_LEVELING
|
#ifdef ENABLE_AUTO_BED_LEVELING
|
||||||
MENU_ITEM_EDIT(float32, MSG_ZPROBE_ZOFFSET, &zprobe_zoffset, 0.5, 50);
|
MENU_ITEM_EDIT(float32, MSG_ZPROBE_ZOFFSET, &zprobe_zoffset, 0.0, 50);
|
||||||
#endif
|
#endif
|
||||||
MENU_ITEM_EDIT(float5, MSG_ACC, &acceleration, 500, 99000);
|
MENU_ITEM_EDIT(float5, MSG_ACC, &acceleration, 10, 99000);
|
||||||
MENU_ITEM_EDIT(float3, MSG_VXY_JERK, &max_xy_jerk, 1, 990);
|
MENU_ITEM_EDIT(float3, MSG_VXY_JERK, &max_xy_jerk, 1, 990);
|
||||||
MENU_ITEM_EDIT(float52, MSG_VZ_JERK, &max_z_jerk, 0.1, 990);
|
MENU_ITEM_EDIT(float52, MSG_VZ_JERK, &max_z_jerk, 0.1, 990);
|
||||||
MENU_ITEM_EDIT(float3, MSG_VE_JERK, &max_e_jerk, 1, 990);
|
MENU_ITEM_EDIT(float3, MSG_VE_JERK, &max_e_jerk, 1, 990);
|
||||||
|
@ -915,7 +925,7 @@ static void lcd_control_motion_menu() {
|
||||||
MENU_ITEM_EDIT(float3, MSG_VTRAV_MIN, &mintravelfeedrate, 0, 999);
|
MENU_ITEM_EDIT(float3, MSG_VTRAV_MIN, &mintravelfeedrate, 0, 999);
|
||||||
MENU_ITEM_EDIT_CALLBACK(long5, MSG_AMAX MSG_X, &max_acceleration_units_per_sq_second[X_AXIS], 100, 99000, reset_acceleration_rates);
|
MENU_ITEM_EDIT_CALLBACK(long5, MSG_AMAX MSG_X, &max_acceleration_units_per_sq_second[X_AXIS], 100, 99000, reset_acceleration_rates);
|
||||||
MENU_ITEM_EDIT_CALLBACK(long5, MSG_AMAX MSG_Y, &max_acceleration_units_per_sq_second[Y_AXIS], 100, 99000, reset_acceleration_rates);
|
MENU_ITEM_EDIT_CALLBACK(long5, MSG_AMAX MSG_Y, &max_acceleration_units_per_sq_second[Y_AXIS], 100, 99000, reset_acceleration_rates);
|
||||||
MENU_ITEM_EDIT_CALLBACK(long5, MSG_AMAX MSG_Z, &max_acceleration_units_per_sq_second[Z_AXIS], 100, 99000, reset_acceleration_rates);
|
MENU_ITEM_EDIT_CALLBACK(long5, MSG_AMAX MSG_Z, &max_acceleration_units_per_sq_second[Z_AXIS], 10, 99000, reset_acceleration_rates);
|
||||||
MENU_ITEM_EDIT_CALLBACK(long5, MSG_AMAX MSG_E, &max_acceleration_units_per_sq_second[E_AXIS], 100, 99000, reset_acceleration_rates);
|
MENU_ITEM_EDIT_CALLBACK(long5, MSG_AMAX MSG_E, &max_acceleration_units_per_sq_second[E_AXIS], 100, 99000, reset_acceleration_rates);
|
||||||
MENU_ITEM_EDIT(float5, MSG_A_RETRACT, &retract_acceleration, 100, 99000);
|
MENU_ITEM_EDIT(float5, MSG_A_RETRACT, &retract_acceleration, 100, 99000);
|
||||||
MENU_ITEM_EDIT(float5, MSG_A_TRAVEL, &travel_acceleration, 100, 99000);
|
MENU_ITEM_EDIT(float5, MSG_A_TRAVEL, &travel_acceleration, 100, 99000);
|
||||||
|
@ -1189,10 +1199,6 @@ void lcd_init() {
|
||||||
WRITE(SHIFT_OUT,HIGH);
|
WRITE(SHIFT_OUT,HIGH);
|
||||||
WRITE(SHIFT_LD,HIGH);
|
WRITE(SHIFT_LD,HIGH);
|
||||||
WRITE(SHIFT_EN,LOW);
|
WRITE(SHIFT_EN,LOW);
|
||||||
#else
|
|
||||||
#ifdef ULTIPANEL
|
|
||||||
#error ULTIPANEL requires an encoder
|
|
||||||
#endif
|
|
||||||
#endif // SR_LCD_2W_NL
|
#endif // SR_LCD_2W_NL
|
||||||
#endif//!NEWPANEL
|
#endif//!NEWPANEL
|
||||||
|
|
||||||
|
@ -1341,7 +1347,12 @@ void lcd_update() {
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef ULTIPANEL
|
#ifdef ULTIPANEL
|
||||||
if (currentMenu != lcd_status_screen && millis() > timeoutToStatus) {
|
if (currentMenu != lcd_status_screen &&
|
||||||
|
#if defined(MANUAL_BED_LEVELING)
|
||||||
|
currentMenu != _lcd_level_bed &&
|
||||||
|
currentMenu != _lcd_level_bed_homing &&
|
||||||
|
#endif // MANUAL_BED_LEVELING
|
||||||
|
millis() > timeoutToStatus) {
|
||||||
lcd_return_to_status();
|
lcd_return_to_status();
|
||||||
lcdDrawUpdate = 2;
|
lcdDrawUpdate = 2;
|
||||||
}
|
}
|
||||||
|
@ -1760,4 +1771,75 @@ char *ftostr52(const float &x)
|
||||||
return conv;
|
return conv;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if defined(MANUAL_BED_LEVELING)
|
||||||
|
static int _lcd_level_bed_position;
|
||||||
|
static void _lcd_level_bed()
|
||||||
|
{
|
||||||
|
if (encoderPosition != 0) {
|
||||||
|
refresh_cmd_timeout();
|
||||||
|
current_position[Z_AXIS] += float((int)encoderPosition) * 0.05;
|
||||||
|
if (min_software_endstops && current_position[Z_AXIS] < Z_MIN_POS) current_position[Z_AXIS] = Z_MIN_POS;
|
||||||
|
if (max_software_endstops && current_position[Z_AXIS] > Z_MAX_POS) current_position[Z_AXIS] = Z_MAX_POS;
|
||||||
|
encoderPosition = 0;
|
||||||
|
plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], manual_feedrate[Z_AXIS]/60, active_extruder);
|
||||||
|
lcdDrawUpdate = 1;
|
||||||
|
}
|
||||||
|
if (lcdDrawUpdate) lcd_implementation_drawedit(PSTR("Z"), ftostr32(current_position[Z_AXIS]));
|
||||||
|
static bool debounce_click = false;
|
||||||
|
if (LCD_CLICKED) {
|
||||||
|
if (!debounce_click) {
|
||||||
|
debounce_click = true;
|
||||||
|
int ix = _lcd_level_bed_position % MESH_NUM_X_POINTS;
|
||||||
|
int iy = _lcd_level_bed_position / MESH_NUM_X_POINTS;
|
||||||
|
mbl.set_z(ix, iy, current_position[Z_AXIS]);
|
||||||
|
_lcd_level_bed_position++;
|
||||||
|
if (_lcd_level_bed_position == MESH_NUM_X_POINTS*MESH_NUM_Y_POINTS) {
|
||||||
|
current_position[Z_AXIS] = MESH_HOME_SEARCH_Z;
|
||||||
|
plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], manual_feedrate[X_AXIS]/60, active_extruder);
|
||||||
|
mbl.active = 1;
|
||||||
|
enquecommands_P(PSTR("G28"));
|
||||||
|
lcd_return_to_status();
|
||||||
|
} else {
|
||||||
|
current_position[Z_AXIS] = MESH_HOME_SEARCH_Z;
|
||||||
|
plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], manual_feedrate[X_AXIS]/60, active_extruder);
|
||||||
|
ix = _lcd_level_bed_position % MESH_NUM_X_POINTS;
|
||||||
|
iy = _lcd_level_bed_position / MESH_NUM_X_POINTS;
|
||||||
|
if (iy&1) { // Zig zag
|
||||||
|
ix = (MESH_NUM_X_POINTS - 1) - ix;
|
||||||
|
}
|
||||||
|
current_position[X_AXIS] = mbl.get_x(ix);
|
||||||
|
current_position[Y_AXIS] = mbl.get_y(iy);
|
||||||
|
plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], manual_feedrate[X_AXIS]/60, active_extruder);
|
||||||
|
lcdDrawUpdate = 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
debounce_click = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
static void _lcd_level_bed_homing()
|
||||||
|
{
|
||||||
|
if (axis_known_position[X_AXIS] &&
|
||||||
|
axis_known_position[Y_AXIS] &&
|
||||||
|
axis_known_position[Z_AXIS]) {
|
||||||
|
current_position[Z_AXIS] = MESH_HOME_SEARCH_Z;
|
||||||
|
plan_set_position(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS]);
|
||||||
|
current_position[X_AXIS] = MESH_MIN_X;
|
||||||
|
current_position[Y_AXIS] = MESH_MIN_Y;
|
||||||
|
plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], manual_feedrate[X_AXIS]/60, active_extruder);
|
||||||
|
_lcd_level_bed_position = 0;
|
||||||
|
lcd_goto_menu(_lcd_level_bed);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
static void lcd_level_bed()
|
||||||
|
{
|
||||||
|
axis_known_position[X_AXIS] = false;
|
||||||
|
axis_known_position[Y_AXIS] = false;
|
||||||
|
axis_known_position[Z_AXIS] = false;
|
||||||
|
mbl.reset();
|
||||||
|
enquecommands_P(PSTR("G28"));
|
||||||
|
lcd_goto_menu(_lcd_level_bed_homing);
|
||||||
|
}
|
||||||
|
#endif // MANUAL_BED_LEVELING
|
||||||
|
|
||||||
#endif //ULTRA_LCD
|
#endif //ULTRA_LCD
|
||||||
|
|
|
@ -14,10 +14,10 @@
|
||||||
void lcd_reset_alert_level();
|
void lcd_reset_alert_level();
|
||||||
bool lcd_detected(void);
|
bool lcd_detected(void);
|
||||||
|
|
||||||
#ifdef DOGLCD
|
#ifdef DOGLCD
|
||||||
extern int lcd_contrast;
|
extern int lcd_contrast;
|
||||||
void lcd_setcontrast(uint8_t value);
|
void lcd_setcontrast(uint8_t value);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
static unsigned char blink = 0; // Variable for visualization of fan rotation in GLCD
|
static unsigned char blink = 0; // Variable for visualization of fan rotation in GLCD
|
||||||
|
|
||||||
|
@ -28,19 +28,18 @@
|
||||||
#define LCD_TIMEOUT_TO_STATUS 15000
|
#define LCD_TIMEOUT_TO_STATUS 15000
|
||||||
|
|
||||||
#ifdef ULTIPANEL
|
#ifdef ULTIPANEL
|
||||||
void lcd_buttons_update();
|
void lcd_buttons_update();
|
||||||
extern volatile uint8_t buttons; //the last checked buttons in a bit array.
|
extern volatile uint8_t buttons; //the last checked buttons in a bit array.
|
||||||
#ifdef REPRAPWORLD_KEYPAD
|
#ifdef REPRAPWORLD_KEYPAD
|
||||||
extern volatile uint8_t buttons_reprapworld_keypad; // to store the keypad shift register values
|
extern volatile uint8_t buttons_reprapworld_keypad; // to store the keypad shift register values
|
||||||
#endif
|
#endif
|
||||||
#else
|
#else
|
||||||
FORCE_INLINE void lcd_buttons_update() {}
|
FORCE_INLINE void lcd_buttons_update() {}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
extern int plaPreheatHotendTemp;
|
extern int plaPreheatHotendTemp;
|
||||||
extern int plaPreheatHPBTemp;
|
extern int plaPreheatHPBTemp;
|
||||||
extern int plaPreheatFanSpeed;
|
extern int plaPreheatFanSpeed;
|
||||||
|
|
||||||
extern int absPreheatHotendTemp;
|
extern int absPreheatHotendTemp;
|
||||||
extern int absPreheatHPBTemp;
|
extern int absPreheatHPBTemp;
|
||||||
extern int absPreheatFanSpeed;
|
extern int absPreheatFanSpeed;
|
||||||
|
@ -48,7 +47,7 @@
|
||||||
extern bool cancel_heatup;
|
extern bool cancel_heatup;
|
||||||
|
|
||||||
#ifdef FILAMENT_LCD_DISPLAY
|
#ifdef FILAMENT_LCD_DISPLAY
|
||||||
extern unsigned long message_millis;
|
extern unsigned long message_millis;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
void lcd_buzz(long duration,uint16_t freq);
|
void lcd_buzz(long duration,uint16_t freq);
|
||||||
|
|
Loading…
Reference in a new issue