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 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 ======================
|
||||
//===========================================================================
|
||||
|
@ -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
|
||||
//#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 ===========================
|
||||
//===========================================================================
|
||||
|
@ -400,12 +413,6 @@ const bool Z_MAX_ENDSTOP_INVERTING = false; // set to true to invert the logic o
|
|||
|
||||
#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 RIGHT_PROBE_BED_POSITION 170
|
||||
#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
|
||||
//#define RA_CONTROL_PANEL
|
||||
|
||||
//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
|
||||
/**
|
||||
* I2C Panels
|
||||
*/
|
||||
|
||||
//#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
|
||||
//#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
|
||||
//#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
|
||||
// ---------------------
|
||||
|
@ -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
|
||||
|
||||
//#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
|
||||
//#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
|
||||
// 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.
|
||||
|
@ -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.
|
||||
#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
|
||||
// Data from: http://www.doc-diy.net/photo/rc-1_hacked/
|
||||
// #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 "thermistortables.h"
|
||||
|
||||
#endif //__CONFIGURATION_H
|
||||
#endif //CONFIGURATION_H
|
||||
|
|
|
@ -18,7 +18,13 @@
|
|||
* max_xy_jerk
|
||||
* max_z_jerk
|
||||
* max_e_jerk
|
||||
* add_homing (x3)
|
||||
* home_offset (x3)
|
||||
*
|
||||
* Mesh bed leveling:
|
||||
* active
|
||||
* mesh_num_x
|
||||
* mesh_num_y
|
||||
* z_values[][]
|
||||
*
|
||||
* DELTA:
|
||||
* endstop_adj (x3)
|
||||
|
@ -69,6 +75,10 @@
|
|||
#include "ultralcd.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) {
|
||||
uint8_t c;
|
||||
while(size--) {
|
||||
|
@ -105,7 +115,7 @@ void _EEPROM_readData(int &pos, uint8_t* value, uint8_t size) {
|
|||
// wrong data being written to the variables.
|
||||
// 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
|
||||
|
||||
|
@ -126,7 +136,29 @@ void Config_StoreSettings() {
|
|||
EEPROM_WRITE_VAR(i, max_xy_jerk);
|
||||
EEPROM_WRITE_VAR(i, max_z_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
|
||||
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_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();
|
||||
|
||||
EEPROM_READ_VAR(i, acceleration);
|
||||
|
@ -262,7 +294,32 @@ void Config_RetrieveSettings() {
|
|||
EEPROM_READ_VAR(i, max_xy_jerk);
|
||||
EEPROM_READ_VAR(i, max_z_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
|
||||
EEPROM_READ_VAR(i, endstop_adj); // 3 floats
|
||||
|
@ -390,7 +447,11 @@ void Config_ResetDefault() {
|
|||
max_xy_jerk = DEFAULT_XYJERK;
|
||||
max_z_jerk = DEFAULT_ZJERK;
|
||||
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
|
||||
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_ECHO_START;
|
||||
}
|
||||
SERIAL_ECHOPAIR(" M206 X", add_homing[X_AXIS] );
|
||||
SERIAL_ECHOPAIR(" Y", add_homing[Y_AXIS] );
|
||||
SERIAL_ECHOPAIR(" Z", add_homing[Z_AXIS] );
|
||||
SERIAL_ECHOPAIR(" M206 X", home_offset[X_AXIS] );
|
||||
SERIAL_ECHOPAIR(" Y", home_offset[Y_AXIS] );
|
||||
SERIAL_ECHOPAIR(" Z", home_offset[Z_AXIS] );
|
||||
SERIAL_EOL;
|
||||
|
||||
#ifdef DELTA
|
||||
|
|
|
@ -1,6 +1,8 @@
|
|||
#ifndef CONFIGURATION_ADV_H
|
||||
#define CONFIGURATION_ADV_H
|
||||
|
||||
#include "Conditionals.h"
|
||||
|
||||
//===========================================================================
|
||||
//=============================Thermal Settings ============================
|
||||
//===========================================================================
|
||||
|
@ -89,54 +91,6 @@
|
|||
|
||||
#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.
|
||||
|
||||
// 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.
|
||||
//#define Z_DUAL_STEPPER_DRIVERS
|
||||
|
||||
#ifdef Z_DUAL_STEPPER_DRIVERS
|
||||
#undef EXTRUDERS
|
||||
#define EXTRUDERS 1
|
||||
#endif
|
||||
|
||||
// Same again but for Y Axis.
|
||||
//#define Y_DUAL_STEPPER_DRIVERS
|
||||
|
||||
// Define if the two Y drives need to rotate in opposite directions
|
||||
#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.
|
||||
// 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
|
||||
// allowing faster printing speeds.
|
||||
//#define DUAL_X_CARRIAGE
|
||||
#ifdef DUAL_X_CARRIAGE
|
||||
// Configuration for second X-carriage
|
||||
// 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.
|
||||
#define X2_MIN_POS 80 // set minimum to ensure second x-carriage doesn't hit the parked first X-carriage
|
||||
#define X2_MAX_POS 353 // set maximum to the distance between toolheads when both heads are homed
|
||||
#define X2_HOME_DIR 1 // the second X-carriage always homes to the maximum endstop position
|
||||
#define X2_HOME_POS X2_MAX_POS // default home position is the maximum carriage position
|
||||
// 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
|
||||
// without modifying the firmware (through the "M218 T1 X???" command).
|
||||
// Remember: you should set the second extruder x-offset to 0 in your slicer.
|
||||
// Configuration for second X-carriage
|
||||
// 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.
|
||||
#define X2_MIN_POS 80 // set minimum to ensure second x-carriage doesn't hit the parked first X-carriage
|
||||
#define X2_MAX_POS 353 // set maximum to the distance between toolheads when both heads are homed
|
||||
#define X2_HOME_DIR 1 // the second X-carriage always homes to the maximum endstop position
|
||||
#define X2_HOME_POS X2_MAX_POS // default home position is the maximum carriage position
|
||||
// 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
|
||||
// without modifying the firmware (through the "M218 T1 X???" command).
|
||||
// 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)
|
||||
#define X2_ENABLE_PIN 29
|
||||
#define X2_STEP_PIN 25
|
||||
#define X2_DIR_PIN 23
|
||||
// Pins for second x-carriage stepper driver (defined here to avoid further complicating pins.h)
|
||||
#define X2_ENABLE_PIN 29
|
||||
#define X2_STEP_PIN 25
|
||||
#define X2_DIR_PIN 23
|
||||
|
||||
// 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
|
||||
// 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
|
||||
// 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
|
||||
// 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])
|
||||
// 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
|
||||
// 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
|
||||
// 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
|
||||
// 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])
|
||||
|
||||
// This is the default power-up mode which can be later using M605.
|
||||
#define DEFAULT_DUAL_X_CARRIAGE_MODE 0
|
||||
// This is the default power-up mode which can be later using M605.
|
||||
#define DEFAULT_DUAL_X_CARRIAGE_MODE 0
|
||||
|
||||
// Default settings in "Auto-park Mode"
|
||||
#define TOOLCHANGE_PARK_ZLIFT 0.2 // the distance to raise Z axis when parking an extruder
|
||||
#define TOOLCHANGE_UNPARK_ZLIFT 1 // the distance to raise Z axis when unparking an extruder
|
||||
// Default settings in "Auto-park Mode"
|
||||
#define TOOLCHANGE_PARK_ZLIFT 0.2 // the distance to raise Z axis when parking an extruder
|
||||
#define TOOLCHANGE_UNPARK_ZLIFT 1 // the distance to raise Z axis when unparking an extruder
|
||||
|
||||
// Default x offset in duplication mode (typically set to half print bed width)
|
||||
#define DEFAULT_DUPLICATION_X_OFFSET 100
|
||||
// Default x offset in duplication mode (typically set to half print bed width)
|
||||
#define DEFAULT_DUPLICATION_X_OFFSET 100
|
||||
|
||||
#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 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.
|
||||
#define INVERT_X_STEP_PIN false
|
||||
#define INVERT_Y_STEP_PIN false
|
||||
#define INVERT_Z_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_MINIMUMFEEDRATE 0.0 // minimum feedrate
|
||||
#define DEFAULT_MINTRAVELFEEDRATE 0.0
|
||||
|
||||
// Feedrates for manual moves along X, Y, Z, E from panel
|
||||
#ifdef ULTIPANEL
|
||||
#define MANUAL_FEEDRATE {50*60, 50*60, 4*60, 60} // set the speeds for manual moves (mm/min)
|
||||
#endif
|
||||
|
||||
//Comment to disable setting feedrate multiplier via encoder
|
||||
#ifdef ULTIPANEL
|
||||
#define ULTIPANEL_FEEDMULTIPLY
|
||||
#define MANUAL_FEEDRATE {50*60, 50*60, 4*60, 60} // Feedrates for manual moves along X, Y, Z, E from panel
|
||||
#define ULTIPANEL_FEEDMULTIPLY // Comment to disable setting feedrate multiplier via encoder
|
||||
#endif
|
||||
|
||||
// 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.
|
||||
#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.
|
||||
#define MICROSTEP_MODES {16,16,16,16,16} // [1,2,4,8,16]
|
||||
|
||||
|
@ -313,12 +237,6 @@
|
|||
#define PROGRESS_MSG_EXPIRE 0
|
||||
// Enable this to show messages for MSG_TIME then hide them
|
||||
//#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
|
||||
|
||||
// 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_INVERT_Z false //true for inverse movements in Z
|
||||
#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
|
||||
|
||||
// extruder advance constant (s2/mm3)
|
||||
|
@ -365,12 +273,8 @@
|
|||
|
||||
#ifdef ADVANCE
|
||||
#define EXTRUDER_ADVANCE_K .0
|
||||
|
||||
#define D_FILAMENT 2.85
|
||||
#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
|
||||
|
||||
// Arc interpretation settings:
|
||||
|
@ -385,26 +289,6 @@ const unsigned int dropsegments=5; //everything with less than this number of st
|
|||
// be commented out otherwise
|
||||
#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.
|
||||
//#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 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
|
||||
#else
|
||||
#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)
|
||||
#endif
|
||||
|
||||
//adds support for experimental filament exchange support M600; requires display
|
||||
// Add support for experimental filament exchange support M600; requires display
|
||||
#ifdef ULTIPANEL
|
||||
#define FILAMENTCHANGEENABLE
|
||||
//#define FILAMENTCHANGEENABLE
|
||||
#ifdef FILAMENTCHANGEENABLE
|
||||
#define FILAMENTCHANGE_XPOS 3
|
||||
#define FILAMENTCHANGE_YPOS 3
|
||||
|
@ -456,13 +340,6 @@ const unsigned int dropsegments=5; //everything with less than this number of st
|
|||
#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.
|
||||
* 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
|
||||
|
||||
#include "Conditionals.h"
|
||||
#include "SanityCheck.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
|
||||
#endif //CONFIGURATION_ADV_H
|
||||
|
|
|
@ -20,11 +20,6 @@
|
|||
|
||||
#include "fastio.h"
|
||||
#include "Configuration.h"
|
||||
#include "pins.h"
|
||||
|
||||
#ifndef AT90USB
|
||||
#define HardwareSerial_h // trick to disable the standard HWserial
|
||||
#endif
|
||||
|
||||
#if (ARDUINO >= 100)
|
||||
#include "Arduino.h"
|
||||
|
@ -183,7 +178,7 @@ void manage_inactivity(bool ignore_stepper_queue=false);
|
|||
#define disable_e3() /* nothing */
|
||||
#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.
|
||||
|
||||
void FlushSerialRequestResend();
|
||||
|
@ -191,17 +186,17 @@ void ClearToSend();
|
|||
|
||||
void get_coordinates();
|
||||
#ifdef DELTA
|
||||
void calculate_delta(float cartesian[3]);
|
||||
void calculate_delta(float cartesian[3]);
|
||||
#ifdef ENABLE_AUTO_BED_LEVELING
|
||||
extern int delta_grid_spacing[2];
|
||||
void adjust_delta(float cartesian[3]);
|
||||
extern int delta_grid_spacing[2];
|
||||
void adjust_delta(float cartesian[3]);
|
||||
#endif
|
||||
extern float delta[3];
|
||||
void prepare_move_raw();
|
||||
extern float delta[3];
|
||||
void prepare_move_raw();
|
||||
#endif
|
||||
#ifdef SCARA
|
||||
void calculate_delta(float cartesian[3]);
|
||||
void calculate_SCARA_forward_Transform(float f_scara[3]);
|
||||
void calculate_delta(float cartesian[3]);
|
||||
void calculate_SCARA_forward_Transform(float f_scara[3]);
|
||||
#endif
|
||||
void reset_bed_level();
|
||||
void prepare_move();
|
||||
|
@ -209,7 +204,7 @@ void kill();
|
|||
void Stop();
|
||||
|
||||
#ifdef FILAMENT_RUNOUT_SENSOR
|
||||
void filrunout();
|
||||
void filrunout();
|
||||
#endif
|
||||
|
||||
bool IsStopped();
|
||||
|
@ -223,7 +218,7 @@ void clamp_to_software_endstops(float target[3]);
|
|||
void refresh_cmd_timeout(void);
|
||||
|
||||
#ifdef FAST_PWM_FAN
|
||||
void setPwmFrequency(uint8_t pin, int val);
|
||||
void setPwmFrequency(uint8_t pin, int val);
|
||||
#endif
|
||||
|
||||
#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 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 add_homing[3];
|
||||
extern float home_offset[3];
|
||||
#ifdef DELTA
|
||||
extern float endstop_adj[3];
|
||||
extern float delta_radius;
|
||||
extern float delta_diagonal_rod;
|
||||
extern float delta_segments_per_second;
|
||||
void recalc_delta_settings(float radius, float diagonal_rod);
|
||||
extern float endstop_adj[3];
|
||||
extern float delta_radius;
|
||||
extern float delta_diagonal_rod;
|
||||
extern float delta_segments_per_second;
|
||||
void recalc_delta_settings(float radius, float diagonal_rod);
|
||||
#endif
|
||||
#ifdef SCARA
|
||||
extern float axis_scaling[3]; // Build size scaling
|
||||
extern float axis_scaling[3]; // Build size scaling
|
||||
#endif
|
||||
extern float min_pos[3];
|
||||
extern float max_pos[3];
|
||||
|
@ -257,12 +252,12 @@ extern bool axis_known_position[3];
|
|||
extern float zprobe_zoffset;
|
||||
extern int fanSpeed;
|
||||
#ifdef BARICUDA
|
||||
extern int ValvePressure;
|
||||
extern int EtoPPressure;
|
||||
extern int ValvePressure;
|
||||
extern int EtoPPressure;
|
||||
#endif
|
||||
|
||||
#ifdef FAN_SOFT_PWM
|
||||
extern unsigned char fanSpeedSoftPwm;
|
||||
extern unsigned char fanSpeedSoftPwm;
|
||||
#endif
|
||||
|
||||
#ifdef FILAMENT_SENSOR
|
||||
|
@ -270,16 +265,16 @@ extern unsigned char fanSpeedSoftPwm;
|
|||
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 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 int meas_delay_cm; //delay distance
|
||||
#endif
|
||||
|
||||
#ifdef FWRETRACT
|
||||
extern bool autoretract_enabled;
|
||||
extern bool retracted[EXTRUDERS];
|
||||
extern float retract_length, retract_length_swap, retract_feedrate, retract_zlift;
|
||||
extern float retract_recover_length, retract_recover_length_swap, retract_recover_feedrate;
|
||||
extern bool autoretract_enabled;
|
||||
extern bool retracted[EXTRUDERS];
|
||||
extern float retract_length, retract_length_swap, retract_feedrate, retract_zlift;
|
||||
extern float retract_recover_length, retract_recover_length_swap, retract_recover_feedrate;
|
||||
#endif
|
||||
|
||||
extern unsigned long starttime;
|
||||
|
@ -289,11 +284,10 @@ extern unsigned long stoptime;
|
|||
extern uint8_t active_extruder;
|
||||
|
||||
#ifdef DIGIPOT_I2C
|
||||
extern void digipot_i2c_set_current( int channel, float current );
|
||||
extern void digipot_i2c_init();
|
||||
#endif
|
||||
|
||||
extern void digipot_i2c_set_current( int channel, float current );
|
||||
extern void digipot_i2c_init();
|
||||
#endif
|
||||
|
||||
extern void calculate_volumetric_multipliers();
|
||||
|
||||
#endif //MARLIN_H
|
||||
|
|
|
@ -30,9 +30,6 @@
|
|||
#include "Marlin.h"
|
||||
|
||||
#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"
|
||||
#ifdef AUTO_BED_LEVELING_GRID
|
||||
#include "qr_solve.h"
|
||||
|
@ -41,6 +38,10 @@
|
|||
|
||||
#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 "planner.h"
|
||||
#include "stepper.h"
|
||||
|
@ -244,7 +245,7 @@ float volumetric_multiplier[EXTRUDERS] = {1.0
|
|||
#endif
|
||||
};
|
||||
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
|
||||
float endstop_adj[3] = { 0, 0, 0 };
|
||||
#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);
|
||||
|
||||
#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_AUTO_PARK_MODE 1
|
||||
#define DXC_DUPLICATION_MODE 2
|
||||
static int dual_x_carriage_mode = DEFAULT_DUAL_X_CARRIAGE_MODE;
|
||||
#define DXC_FULL_CONTROL_MODE 0
|
||||
#define DXC_AUTO_PARK_MODE 1
|
||||
#define DXC_DUPLICATION_MODE 2
|
||||
|
||||
static float x_home_pos(int extruder) {
|
||||
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 dual_x_carriage_mode = DEFAULT_DUAL_X_CARRIAGE_MODE;
|
||||
|
||||
static int x_home_dir(int extruder) {
|
||||
return (extruder == 0) ? X_HOME_DIR : X2_HOME_DIR;
|
||||
}
|
||||
static float x_home_pos(int extruder) {
|
||||
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
|
||||
|
||||
static void axis_is_at_home(int axis) {
|
||||
|
@ -1012,9 +1006,9 @@ static void axis_is_at_home(int axis) {
|
|||
return;
|
||||
}
|
||||
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];
|
||||
min_pos[X_AXIS] = base_min_pos(X_AXIS) + add_homing[X_AXIS];
|
||||
max_pos[X_AXIS] = min(base_max_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) + home_offset[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);
|
||||
return;
|
||||
}
|
||||
|
@ -1042,11 +1036,11 @@ static void axis_is_at_home(int axis) {
|
|||
|
||||
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 Y="); SERIAL_ECHO(add_homing[Y_AXIS]);
|
||||
// SERIAL_ECHOPGM("addhome X="); SERIAL_ECHO(home_offset[X_AXIS]);
|
||||
// SERIAL_ECHOPGM(" addhome Y="); SERIAL_ECHO(home_offset[Y_AXIS]);
|
||||
// SERIAL_ECHOPGM(" addhome Theta="); SERIAL_ECHO(delta[X_AXIS]);
|
||||
// SERIAL_ECHOPGM(" addhome Psi+Theta="); SERIAL_ECHOLN(delta[Y_AXIS]);
|
||||
|
||||
|
@ -1064,14 +1058,14 @@ static void axis_is_at_home(int axis) {
|
|||
}
|
||||
else
|
||||
{
|
||||
current_position[axis] = base_home_pos(axis) + add_homing[axis];
|
||||
min_pos[axis] = base_min_pos(axis) + add_homing[axis];
|
||||
max_pos[axis] = base_max_pos(axis) + add_homing[axis];
|
||||
current_position[axis] = base_home_pos(axis) + home_offset[axis];
|
||||
min_pos[axis] = base_min_pos(axis) + home_offset[axis];
|
||||
max_pos[axis] = base_max_pos(axis) + home_offset[axis];
|
||||
}
|
||||
#else
|
||||
current_position[axis] = base_home_pos(axis) + add_homing[axis];
|
||||
min_pos[axis] = base_min_pos(axis) + add_homing[axis];
|
||||
max_pos[axis] = base_max_pos(axis) + add_homing[axis];
|
||||
current_position[axis] = base_home_pos(axis) + home_offset[axis];
|
||||
min_pos[axis] = base_min_pos(axis) + home_offset[axis];
|
||||
max_pos[axis] = base_max_pos(axis) + home_offset[axis];
|
||||
#endif
|
||||
}
|
||||
|
||||
|
@ -1305,7 +1299,13 @@ static void engage_z_probe() {
|
|||
static void retract_z_probe() {
|
||||
// Retract Z Servo endstop if enabled
|
||||
#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
|
||||
servos[servo_endstops[Z_AXIS]].attach(0);
|
||||
#endif
|
||||
|
@ -1318,7 +1318,7 @@ static void retract_z_probe() {
|
|||
#elif defined(Z_PROBE_ALLEN_KEY)
|
||||
// Move up for safety
|
||||
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();
|
||||
|
||||
// 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
|
||||
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
|
||||
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]);
|
||||
|
@ -1737,6 +1742,11 @@ inline void gcode_G28() {
|
|||
#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_feedmultiply = feedmultiply;
|
||||
feedmultiply = 100;
|
||||
|
@ -1849,7 +1859,7 @@ inline void gcode_G28() {
|
|||
if (code_value_long() != 0) {
|
||||
current_position[X_AXIS] = code_value()
|
||||
#ifndef SCARA
|
||||
+ add_homing[X_AXIS]
|
||||
+ home_offset[X_AXIS]
|
||||
#endif
|
||||
;
|
||||
}
|
||||
|
@ -1858,7 +1868,7 @@ inline void gcode_G28() {
|
|||
if (code_seen(axis_codes[Y_AXIS]) && code_value_long() != 0) {
|
||||
current_position[Y_AXIS] = code_value()
|
||||
#ifndef SCARA
|
||||
+ add_homing[Y_AXIS]
|
||||
+ home_offset[Y_AXIS]
|
||||
#endif
|
||||
;
|
||||
}
|
||||
|
@ -1932,7 +1942,7 @@ inline void gcode_G28() {
|
|||
|
||||
|
||||
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
|
||||
if (home_all_axis || code_seen(axis_codes[Z_AXIS]))
|
||||
|
@ -1951,52 +1961,114 @@ inline void gcode_G28() {
|
|||
enable_endstops(false);
|
||||
#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;
|
||||
feedmultiply = saved_feedmultiply;
|
||||
previous_millis_cmd = millis();
|
||||
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
|
||||
|
||||
// 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.
|
||||
* Will fail if the printer has not been homed with G28.
|
||||
|
@ -2057,7 +2129,7 @@ inline void gcode_G28() {
|
|||
#ifdef AUTO_BED_LEVELING_GRID
|
||||
|
||||
#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
|
||||
|
||||
if (verbose_level > 0)
|
||||
|
@ -2112,15 +2184,16 @@ inline void gcode_G28() {
|
|||
|
||||
#ifdef Z_PROBE_SLED
|
||||
dock_sled(false); // engage (un-dock) the probe
|
||||
#elif not defined(SERVO_ENDSTOPS)
|
||||
#elif defined(Z_PROBE_ALLEN_KEY)
|
||||
engage_z_probe();
|
||||
#endif
|
||||
|
||||
st_synchronize();
|
||||
|
||||
#ifdef DELTA
|
||||
reset_bed_level();
|
||||
#else
|
||||
#ifdef DELTA
|
||||
reset_bed_level();
|
||||
#else
|
||||
|
||||
// make sure the bed_level_rotation_matrix is identity or the planner will get it incorectly
|
||||
//vector_3 corrected_position = plan_get_position_mm();
|
||||
//corrected_position.debug("position before G29");
|
||||
|
@ -2161,42 +2234,36 @@ inline void gcode_G28() {
|
|||
delta_grid_spacing[1] = yGridSpacing;
|
||||
|
||||
float z_offset = Z_PROBE_OFFSET_FROM_EXTRUDER;
|
||||
if (code_seen(axis_codes[Z_AXIS])) {
|
||||
z_offset += code_value();
|
||||
}
|
||||
if (code_seen(axis_codes[Z_AXIS])) z_offset += code_value();
|
||||
#endif
|
||||
|
||||
int probePointCounter = 0;
|
||||
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;
|
||||
int xStart, xStop, xInc;
|
||||
|
||||
if (zig)
|
||||
{
|
||||
if (zig) {
|
||||
xStart = 0;
|
||||
xStop = auto_bed_leveling_grid_points;
|
||||
xInc = 1;
|
||||
zig = false;
|
||||
}
|
||||
else
|
||||
{
|
||||
else {
|
||||
xStart = auto_bed_leveling_grid_points - 1;
|
||||
xStop = -1;
|
||||
xInc = -1;
|
||||
zig = true;
|
||||
}
|
||||
|
||||
#ifndef DELTA
|
||||
// If topo_flag is set then don't zig-zag. Just scan in one direction.
|
||||
// This gets the probe points in more readable order.
|
||||
if (!topo_flag) zig = !zig;
|
||||
#endif
|
||||
#ifndef DELTA
|
||||
// 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.
|
||||
if (!do_topography_map) zig = !zig;
|
||||
#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;
|
||||
|
||||
// raise extruder
|
||||
|
@ -2221,7 +2288,7 @@ inline void gcode_G28() {
|
|||
act = ProbeStay;
|
||||
}
|
||||
else
|
||||
act = ProbeEngageRetract;
|
||||
act = ProbeEngageAndRetract;
|
||||
|
||||
measured_z = probe_pt(xProbe, yProbe, z_before, act, verbose_level);
|
||||
|
||||
|
@ -2263,49 +2330,31 @@ inline void gcode_G28() {
|
|||
}
|
||||
}
|
||||
|
||||
if (topo_flag) {
|
||||
|
||||
int xx, yy;
|
||||
// Show the Topography map if enabled
|
||||
if (do_topography_map) {
|
||||
|
||||
SERIAL_PROTOCOLPGM(" \nBed Height Topography: \n");
|
||||
#if TOPO_ORIGIN == OriginFrontLeft
|
||||
SERIAL_PROTOCOLPGM("+-----------+\n");
|
||||
SERIAL_PROTOCOLPGM("|...Back....|\n");
|
||||
SERIAL_PROTOCOLPGM("|Left..Right|\n");
|
||||
SERIAL_PROTOCOLPGM("|...Front...|\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;
|
||||
SERIAL_PROTOCOLPGM("+-----------+\n");
|
||||
SERIAL_PROTOCOLPGM("|...Back....|\n");
|
||||
SERIAL_PROTOCOLPGM("|Left..Right|\n");
|
||||
SERIAL_PROTOCOLPGM("|...Front...|\n");
|
||||
SERIAL_PROTOCOLPGM("+-----------+\n");
|
||||
|
||||
} //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);
|
||||
|
@ -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);
|
||||
}
|
||||
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_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_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_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, 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, ProbeEngageAndRetract, verbose_level);
|
||||
}
|
||||
clean_up_after_endstop_move();
|
||||
set_bed_level_equation_3pts(z_at_pt_1, z_at_pt_2, z_at_pt_3);
|
||||
|
||||
#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
|
||||
if (verbose_level > 0)
|
||||
plan_bed_level_matrix.debug(" \n\nBed Level Correction Matrix:");
|
||||
|
@ -2358,7 +2404,7 @@ inline void gcode_G28() {
|
|||
|
||||
#ifdef Z_PROBE_SLED
|
||||
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();
|
||||
#endif
|
||||
|
||||
|
@ -2403,22 +2449,13 @@ inline void gcode_G92() {
|
|||
if (!code_seen(axis_codes[E_AXIS]))
|
||||
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 (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]);
|
||||
}
|
||||
else {
|
||||
current_position[i] = code_value() +
|
||||
#ifdef SCARA
|
||||
((i != X_AXIS && i != Y_AXIS) ? add_homing[i] : 0)
|
||||
#else
|
||||
add_homing[i]
|
||||
#endif
|
||||
;
|
||||
else
|
||||
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_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_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_PROTOCOLPGM("SCARA step Cal - Theta:");
|
||||
|
@ -3575,12 +3612,12 @@ inline void gcode_M205() {
|
|||
inline void gcode_M206() {
|
||||
for (int8_t i=X_AXIS; i <= Z_AXIS; i++) {
|
||||
if (code_seen(axis_codes[i])) {
|
||||
add_homing[i] = code_value();
|
||||
home_offset[i] = code_value();
|
||||
}
|
||||
}
|
||||
#ifdef SCARA
|
||||
if (code_seen('T')) add_homing[X_AXIS] = code_value(); // Theta
|
||||
if (code_seen('P')) add_homing[Y_AXIS] = code_value(); // Psi
|
||||
if (code_seen('T')) home_offset[X_AXIS] = code_value(); // Theta
|
||||
if (code_seen('P')) home_offset[Y_AXIS] = code_value(); // Psi
|
||||
#endif
|
||||
}
|
||||
|
||||
|
@ -3967,18 +4004,13 @@ inline void gcode_M303() {
|
|||
}
|
||||
|
||||
#ifdef SCARA
|
||||
|
||||
/**
|
||||
* M360: SCARA calibration: Move to cal-position ThetaA (0 deg calibration)
|
||||
*/
|
||||
inline bool gcode_M360() {
|
||||
SERIAL_ECHOLN(" Cal: Theta 0 ");
|
||||
bool SCARA_move_to_cal(uint8_t delta_x, uint8_t delta_y) {
|
||||
//SoftEndsEnabled = false; // Ignore soft endstops during calibration
|
||||
//SERIAL_ECHOLN(" Soft endstops disabled ");
|
||||
if (! Stopped) {
|
||||
//get_coordinates(); // For X Y Z E F
|
||||
delta[X_AXIS] = 0;
|
||||
delta[Y_AXIS] = 120;
|
||||
delta[X_AXIS] = delta_x;
|
||||
delta[Y_AXIS] = delta_y;
|
||||
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];
|
||||
|
@ -3989,25 +4021,20 @@ inline void gcode_M303() {
|
|||
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)
|
||||
*/
|
||||
inline bool gcode_M361() {
|
||||
SERIAL_ECHOLN(" Cal: Theta 90 ");
|
||||
//SoftEndsEnabled = false; // Ignore soft endstops during calibration
|
||||
//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;
|
||||
return SCARA_move_to_cal(90, 130);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -4015,20 +4042,7 @@ inline void gcode_M303() {
|
|||
*/
|
||||
inline bool gcode_M362() {
|
||||
SERIAL_ECHOLN(" Cal: Psi 0 ");
|
||||
//SoftEndsEnabled = false; // Ignore soft endstops during calibration
|
||||
//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;
|
||||
return SCARA_move_to_cal(60, 180);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -4036,20 +4050,7 @@ inline void gcode_M303() {
|
|||
*/
|
||||
inline bool gcode_M363() {
|
||||
SERIAL_ECHOLN(" Cal: Psi 90 ");
|
||||
//SoftEndsEnabled = false; // Ignore soft endstops during calibration
|
||||
//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;
|
||||
return SCARA_move_to_cal(50, 90);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -4057,20 +4058,7 @@ inline void gcode_M303() {
|
|||
*/
|
||||
inline bool gcode_M364() {
|
||||
SERIAL_ECHOLN(" Cal: Theta-Psi 90 ");
|
||||
// SoftEndsEnabled = false; // Ignore soft endstops during calibration
|
||||
//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;
|
||||
return SCARA_move_to_cal(45, 135);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -4661,6 +4649,12 @@ void process_commands() {
|
|||
gcode_G28();
|
||||
break;
|
||||
|
||||
#if defined(MESH_BED_LEVELING)
|
||||
case 29: // G29 Handle mesh based leveling
|
||||
gcode_G29();
|
||||
break;
|
||||
#endif
|
||||
|
||||
#ifdef ENABLE_AUTO_BED_LEVELING
|
||||
|
||||
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;
|
||||
#ifdef ENABLE_AUTO_BED_LEVELING
|
||||
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
|
||||
|
||||
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
|
||||
|
||||
#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()
|
||||
{
|
||||
clamp_to_software_endstops(destination);
|
||||
|
@ -5395,10 +5464,14 @@ for (int s = 1; s <= steps; s++) {
|
|||
#if ! (defined DELTA || defined SCARA)
|
||||
// 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])) {
|
||||
plan_buffer_line(destination[X_AXIS], destination[Y_AXIS], destination[Z_AXIS], destination[E_AXIS], feedrate/60, active_extruder);
|
||||
}
|
||||
else {
|
||||
plan_buffer_line(destination[X_AXIS], destination[Y_AXIS], destination[Z_AXIS], destination[E_AXIS], feedrate/60, active_extruder);
|
||||
} 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);
|
||||
#endif // MESH_BED_LEVELING
|
||||
}
|
||||
#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;
|
||||
};
|
||||
//------------------------------------------------------------------------------
|
||||
#if defined(__AVR_ATmega1280__)\
|
||||
|| defined(__AVR_ATmega2560__)
|
||||
// Mega
|
||||
#if defined(__AVR_ATmega1280__) || defined(__AVR_ATmega2560__) // Mega
|
||||
|
||||
// Two Wire (aka I2C) ports
|
||||
uint8_t const SDA_PIN = 20; // D1
|
||||
|
@ -43,6 +41,7 @@ uint8_t const SCL_PIN = 21; // D0
|
|||
|
||||
#undef MOSI_PIN
|
||||
#undef MISO_PIN
|
||||
#undef SCK_PIN
|
||||
// SPI port
|
||||
uint8_t const SS_PIN = 53; // B0
|
||||
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
|
||||
#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.
|
||||
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.
|
||||
|
@ -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 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)
|
||||
#define Z_MAX_LENGTH (Z_MAX_POS - Z_MIN_POS)
|
||||
//===========================================================================
|
||||
//============================ 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 ===========================
|
||||
|
@ -440,12 +451,6 @@ const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of
|
|||
|
||||
#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 RIGHT_PROBE_BED_POSITION 170
|
||||
#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
|
||||
//#define RA_CONTROL_PANEL
|
||||
|
||||
// @section hidden
|
||||
|
||||
//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
|
||||
/**
|
||||
* I2C Panels
|
||||
*/
|
||||
|
||||
//#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
|
||||
//#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
|
||||
//#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
|
||||
// ---------------------
|
||||
|
@ -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
|
||||
|
||||
//#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
|
||||
|
||||
// Increase the FAN pwm frequency. Removes the PWM noise but increases heating in the FET/Arduino
|
||||
//#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
|
||||
// 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.
|
||||
|
@ -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.
|
||||
#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
|
||||
// Data from: http://www.doc-diy.net/photo/rc-1_hacked/
|
||||
// #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 "thermistortables.h"
|
||||
|
||||
#endif //__CONFIGURATION_H
|
||||
#endif //CONFIGURATION_H
|
||||
|
|
|
@ -1,6 +1,8 @@
|
|||
#ifndef CONFIGURATION_ADV_H
|
||||
#define CONFIGURATION_ADV_H
|
||||
|
||||
#include "Conditionals.h"
|
||||
|
||||
// @section temperature
|
||||
|
||||
//===========================================================================
|
||||
|
@ -99,56 +101,6 @@
|
|||
|
||||
#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
|
||||
|
||||
//#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.
|
||||
//#define Z_DUAL_STEPPER_DRIVERS
|
||||
|
||||
#ifdef Z_DUAL_STEPPER_DRIVERS
|
||||
#undef EXTRUDERS
|
||||
#define EXTRUDERS 1
|
||||
#endif
|
||||
|
||||
// Same again but for Y Axis.
|
||||
//#define Y_DUAL_STEPPER_DRIVERS
|
||||
|
||||
// Define if the two Y drives need to rotate in opposite directions
|
||||
#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.
|
||||
// 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
|
||||
|
@ -236,14 +174,6 @@
|
|||
|
||||
#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
|
||||
|
||||
//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_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_MINIMUMFEEDRATE 0.0 // minimum feedrate
|
||||
|
@ -260,14 +190,9 @@
|
|||
|
||||
// @section lcd
|
||||
|
||||
// Feedrates for manual moves along X, Y, Z, E from panel
|
||||
#ifdef ULTIPANEL
|
||||
#define MANUAL_FEEDRATE {50*60, 50*60, 4*60, 60} // set the speeds for manual moves (mm/min)
|
||||
#endif
|
||||
|
||||
//Comment to disable setting feedrate multiplier via encoder
|
||||
#ifdef ULTIPANEL
|
||||
#define ULTIPANEL_FEEDMULTIPLY
|
||||
#define MANUAL_FEEDRATE {50*60, 50*60, 4*60, 60} // Feedrates for manual moves along X, Y, Z, E from panel
|
||||
#define ULTIPANEL_FEEDMULTIPLY // Comment to disable setting feedrate multiplier via encoder
|
||||
#endif
|
||||
|
||||
// @section extras
|
||||
|
@ -288,13 +213,6 @@
|
|||
// if unwanted behavior is observed on a user's machine when running at very slow speeds.
|
||||
#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.
|
||||
#define MICROSTEP_MODES {16,16,16,16,16} // [1,2,4,8,16]
|
||||
|
||||
|
@ -342,12 +260,6 @@
|
|||
#define PROGRESS_MSG_EXPIRE 0
|
||||
// Enable this to show messages for MSG_TIME then hide them
|
||||
//#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
|
||||
|
||||
// @section more
|
||||
|
@ -373,16 +285,6 @@
|
|||
#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_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
|
||||
|
||||
// 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
|
||||
#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
|
||||
|
||||
// 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)
|
||||
#endif
|
||||
|
||||
//adds support for experimental filament exchange support M600; requires display
|
||||
// Add support for experimental filament exchange support M600; requires display
|
||||
#ifdef ULTIPANEL
|
||||
#define FILAMENTCHANGEENABLE
|
||||
//#define FILAMENTCHANGEENABLE
|
||||
#ifdef FILAMENTCHANGEENABLE
|
||||
#define FILAMENTCHANGE_XPOS 3
|
||||
#define FILAMENTCHANGE_YPOS 3
|
||||
|
@ -497,88 +377,7 @@ const unsigned int dropsegments=5; //everything with less than this number of st
|
|||
#endif
|
||||
#endif
|
||||
|
||||
#ifdef FILAMENTCHANGEENABLE
|
||||
#ifdef EXTRUDER_RUNOUT_PREVENT
|
||||
#error EXTRUDER_RUNOUT_PREVENT currently incompatible with FILAMENTCHANGE
|
||||
#endif
|
||||
#endif
|
||||
#include "Conditionals.h"
|
||||
#include "SanityCheck.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
|
||||
#endif //CONFIGURATION_ADV_H
|
||||
|
|
|
@ -296,15 +296,6 @@ your extruder heater takes 2 minutes to hit the target on heating.
|
|||
// #define ENDSTOPPULLUP_ZMIN
|
||||
#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.
|
||||
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.
|
||||
|
@ -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_MIN_POS 0
|
||||
|
||||
#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 ======================
|
||||
//===========================================================================
|
||||
//#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 ===========================
|
||||
|
@ -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
|
||||
#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 RIGHT_PROBE_BED_POSITION 170
|
||||
#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
|
||||
|
||||
#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
|
||||
|
||||
|
||||
|
@ -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
|
||||
//#define RA_CONTROL_PANEL
|
||||
|
||||
//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
|
||||
/**
|
||||
* I2C Panels
|
||||
*/
|
||||
|
||||
//#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
|
||||
//#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
|
||||
//#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
|
||||
// ---------------------
|
||||
|
@ -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
|
||||
|
||||
//#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
|
||||
#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
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
#include "Configuration_adv.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
|
||||
#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.
|
||||
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.
|
||||
|
@ -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_MIN_POS 0
|
||||
|
||||
#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 ======================
|
||||
//===========================================================================
|
||||
//#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 ===========================
|
||||
|
@ -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
|
||||
#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 RIGHT_PROBE_BED_POSITION 170
|
||||
#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
|
||||
|
||||
#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
|
||||
|
||||
|
||||
|
@ -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
|
||||
//#define RA_CONTROL_PANEL
|
||||
|
||||
//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
|
||||
/**
|
||||
* I2C Panels
|
||||
*/
|
||||
|
||||
//#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
|
||||
//#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
|
||||
//#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
|
||||
// ---------------------
|
||||
|
@ -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
|
||||
|
||||
//#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
|
||||
#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
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
#include "Configuration_adv.h"
|
||||
#include "thermistortables.h"
|
||||
|
||||
#endif //__CONFIGURATION_H
|
||||
#endif //CONFIGURATION_H
|
||||
|
|
|
@ -1,6 +1,8 @@
|
|||
#ifndef CONFIGURATION_ADV_H
|
||||
#define CONFIGURATION_ADV_H
|
||||
|
||||
#include "Conditionals.h"
|
||||
|
||||
//===========================================================================
|
||||
//=============================Thermal Settings ============================
|
||||
//===========================================================================
|
||||
|
@ -89,54 +91,6 @@
|
|||
|
||||
#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.
|
||||
|
||||
// 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.
|
||||
//#define Z_DUAL_STEPPER_DRIVERS
|
||||
|
||||
#ifdef Z_DUAL_STEPPER_DRIVERS
|
||||
#undef EXTRUDERS
|
||||
#define EXTRUDERS 1
|
||||
#endif
|
||||
|
||||
// Same again but for Y Axis.
|
||||
//#define Y_DUAL_STEPPER_DRIVERS
|
||||
|
||||
// Define if the two Y drives need to rotate in opposite directions
|
||||
#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.
|
||||
// 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
|
||||
|
@ -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 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.
|
||||
#define INVERT_X_STEP_PIN false
|
||||
#define INVERT_Y_STEP_PIN false
|
||||
#define INVERT_Z_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_MINIMUMFEEDRATE 0.0 // minimum feedrate
|
||||
#define DEFAULT_MINTRAVELFEEDRATE 0.0
|
||||
|
||||
// Feedrates for manual moves along X, Y, Z, E from panel
|
||||
#ifdef ULTIPANEL
|
||||
#define MANUAL_FEEDRATE {50*60, 50*60, 4*60, 60} // set the speeds for manual moves (mm/min)
|
||||
#endif
|
||||
|
||||
//Comment to disable setting feedrate multiplier via encoder
|
||||
#ifdef ULTIPANEL
|
||||
#define ULTIPANEL_FEEDMULTIPLY
|
||||
#define MANUAL_FEEDRATE {50*60, 50*60, 4*60, 60} // Feedrates for manual moves along X, Y, Z, E from panel
|
||||
#define ULTIPANEL_FEEDMULTIPLY // Comment to disable setting feedrate multiplier via encoder
|
||||
#endif
|
||||
|
||||
// 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.
|
||||
#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.
|
||||
#define MICROSTEP_MODES {16,16,16,16,16} // [1,2,4,8,16]
|
||||
|
||||
|
@ -313,12 +237,6 @@
|
|||
#define PROGRESS_MSG_EXPIRE 0
|
||||
// Enable this to show messages for MSG_TIME then hide them
|
||||
//#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
|
||||
|
||||
// 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_INVERT_Z false //true for inverse movements in Z
|
||||
#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
|
||||
|
||||
// extruder advance constant (s2/mm3)
|
||||
|
@ -365,12 +273,8 @@
|
|||
|
||||
#ifdef ADVANCE
|
||||
#define EXTRUDER_ADVANCE_K .0
|
||||
|
||||
#define D_FILAMENT 2.85
|
||||
#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
|
||||
|
||||
// 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)
|
||||
#endif
|
||||
|
||||
//adds support for experimental filament exchange support M600; requires display
|
||||
// Add support for experimental filament exchange support M600; requires display
|
||||
#ifdef ULTIPANEL
|
||||
#define FILAMENTCHANGEENABLE
|
||||
//#define FILAMENTCHANGEENABLE
|
||||
#ifdef FILAMENTCHANGEENABLE
|
||||
#define FILAMENTCHANGE_XPOS 3
|
||||
#define FILAMENTCHANGE_YPOS 3
|
||||
|
@ -456,86 +360,7 @@ const unsigned int dropsegments=5; //everything with less than this number of st
|
|||
#endif
|
||||
#endif
|
||||
|
||||
#ifdef FILAMENTCHANGEENABLE
|
||||
#ifdef EXTRUDER_RUNOUT_PREVENT
|
||||
#error EXTRUDER_RUNOUT_PREVENT currently incompatible with FILAMENTCHANGE
|
||||
#endif
|
||||
#endif
|
||||
#include "Conditionals.h"
|
||||
#include "SanityCheck.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
|
||||
#endif //CONFIGURATION_ADV_H
|
||||
|
|
|
@ -322,15 +322,6 @@ your extruder heater takes 2 minutes to hit the target on heating.
|
|||
// #define ENDSTOPPULLUP_ZMIN
|
||||
#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.
|
||||
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.
|
||||
|
@ -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_MIN_POS 0
|
||||
|
||||
#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 ======================
|
||||
//===========================================================================
|
||||
//#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 ===========================
|
||||
|
@ -410,12 +423,6 @@ const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of
|
|||
|
||||
#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 RIGHT_PROBE_BED_POSITION 170
|
||||
#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
|
||||
//#define RA_CONTROL_PANEL
|
||||
|
||||
//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
|
||||
/**
|
||||
* I2C Panels
|
||||
*/
|
||||
|
||||
//#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
|
||||
//#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
|
||||
//#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
|
||||
// ---------------------
|
||||
|
@ -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
|
||||
|
||||
//#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
|
||||
//#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
|
||||
// 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.
|
||||
|
@ -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.
|
||||
#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
|
||||
// Data from: http://www.doc-diy.net/photo/rc-1_hacked/
|
||||
// #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 "thermistortables.h"
|
||||
|
||||
#endif //__CONFIGURATION_H
|
||||
#endif //CONFIGURATION_H
|
||||
|
|
|
@ -1,6 +1,8 @@
|
|||
#ifndef CONFIGURATION_ADV_H
|
||||
#define CONFIGURATION_ADV_H
|
||||
|
||||
#include "Conditionals.h"
|
||||
|
||||
//===========================================================================
|
||||
//=============================Thermal Settings ============================
|
||||
//===========================================================================
|
||||
|
@ -89,54 +91,6 @@
|
|||
|
||||
//#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.
|
||||
|
||||
// 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.
|
||||
//#define Z_DUAL_STEPPER_DRIVERS
|
||||
|
||||
#ifdef Z_DUAL_STEPPER_DRIVERS
|
||||
#undef EXTRUDERS
|
||||
#define EXTRUDERS 1
|
||||
#endif
|
||||
|
||||
// Same again but for Y Axis.
|
||||
//#define Y_DUAL_STEPPER_DRIVERS
|
||||
|
||||
// Define if the two Y drives need to rotate in opposite directions
|
||||
#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.
|
||||
// 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
|
||||
|
@ -229,20 +169,15 @@
|
|||
#define INVERT_Z_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_MINIMUMFEEDRATE 0.0 // minimum feedrate
|
||||
#define DEFAULT_MINTRAVELFEEDRATE 0.0
|
||||
|
||||
// Feedrates for manual moves along X, Y, Z, E from panel
|
||||
#ifdef ULTIPANEL
|
||||
#define MANUAL_FEEDRATE {120*60, 120*60, 18*60, 60} // set the speeds for manual moves (mm/min)
|
||||
#endif
|
||||
|
||||
//Comment to disable setting feedrate multiplier via encoder
|
||||
#ifdef ULTIPANEL
|
||||
#define ULTIPANEL_FEEDMULTIPLY
|
||||
#define MANUAL_FEEDRATE {120*60, 120*60, 18*60, 60} // Feedrates for manual moves along X, Y, Z, E from panel
|
||||
#define ULTIPANEL_FEEDMULTIPLY // Comment to disable setting feedrate multiplier via encoder
|
||||
#endif
|
||||
|
||||
// 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.
|
||||
#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.
|
||||
#define MICROSTEP_MODES {16,16,16,16,16} // [1,2,4,8,16]
|
||||
|
||||
|
@ -313,12 +241,6 @@
|
|||
#define PROGRESS_MSG_EXPIRE 0
|
||||
// Enable this to show messages for MSG_TIME then hide them
|
||||
//#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
|
||||
|
||||
// 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_INVERT_Z false //true for inverse movements in Z
|
||||
#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
|
||||
|
||||
// extruder advance constant (s2/mm3)
|
||||
|
@ -365,12 +277,8 @@
|
|||
|
||||
#ifdef ADVANCE
|
||||
#define EXTRUDER_ADVANCE_K .0
|
||||
|
||||
#define D_FILAMENT 1.75
|
||||
#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
|
||||
|
||||
// Arc interpretation settings:
|
||||
|
@ -385,26 +293,6 @@ const unsigned int dropsegments=5; //everything with less than this number of st
|
|||
// be commented out otherwise
|
||||
#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.
|
||||
//#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)
|
||||
#endif
|
||||
|
||||
//adds support for experimental filament exchange support M600; requires display
|
||||
// Add support for experimental filament exchange support M600; requires display
|
||||
#ifdef ULTIPANEL
|
||||
#define FILAMENTCHANGEENABLE
|
||||
//#define FILAMENTCHANGEENABLE
|
||||
#ifdef FILAMENTCHANGEENABLE
|
||||
#define FILAMENTCHANGE_XPOS 3
|
||||
#define FILAMENTCHANGE_YPOS 3
|
||||
|
@ -456,86 +344,7 @@ const unsigned int dropsegments=5; //everything with less than this number of st
|
|||
#endif
|
||||
#endif
|
||||
|
||||
#ifdef FILAMENTCHANGEENABLE
|
||||
#ifdef EXTRUDER_RUNOUT_PREVENT
|
||||
#error EXTRUDER_RUNOUT_PREVENT currently incompatible with FILAMENTCHANGE
|
||||
#endif
|
||||
#endif
|
||||
#include "Conditionals.h"
|
||||
#include "SanityCheck.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
|
||||
#endif //CONFIGURATION_ADV_H
|
||||
|
|
|
@ -327,15 +327,6 @@ your extruder heater takes 2 minutes to hit the target on heating.
|
|||
#define ENDSTOPPULLUP_ZMIN
|
||||
#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.
|
||||
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.
|
||||
|
@ -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_MIN_POS 0
|
||||
|
||||
#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 ======================
|
||||
//===========================================================================
|
||||
//#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 ===========================
|
||||
|
@ -415,12 +428,6 @@ const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of
|
|||
|
||||
#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 RIGHT_PROBE_BED_POSITION 170
|
||||
#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
|
||||
//#define RA_CONTROL_PANEL
|
||||
|
||||
//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
|
||||
/**
|
||||
* I2C Panels
|
||||
*/
|
||||
|
||||
//#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
|
||||
//#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
|
||||
//#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
|
||||
// ---------------------
|
||||
|
@ -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
|
||||
|
||||
//#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
|
||||
//#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
|
||||
// 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.
|
||||
|
@ -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.
|
||||
#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
|
||||
// Data from: http://www.doc-diy.net/photo/rc-1_hacked/
|
||||
// #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 "thermistortables.h"
|
||||
|
||||
#endif //__CONFIGURATION_H
|
||||
#endif //CONFIGURATION_H
|
||||
|
|
|
@ -1,6 +1,8 @@
|
|||
#ifndef CONFIGURATION_ADV_H
|
||||
#define CONFIGURATION_ADV_H
|
||||
|
||||
#include "Conditionals.h"
|
||||
|
||||
//===========================================================================
|
||||
//=============================Thermal Settings ============================
|
||||
//===========================================================================
|
||||
|
@ -89,54 +91,6 @@
|
|||
|
||||
#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.
|
||||
|
||||
// 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.
|
||||
//#define Z_DUAL_STEPPER_DRIVERS
|
||||
|
||||
#ifdef Z_DUAL_STEPPER_DRIVERS
|
||||
#undef EXTRUDERS
|
||||
#define EXTRUDERS 1
|
||||
#endif
|
||||
|
||||
// Same again but for Y Axis.
|
||||
//#define Y_DUAL_STEPPER_DRIVERS
|
||||
|
||||
// Define if the two Y drives need to rotate in opposite directions
|
||||
#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.
|
||||
// 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
|
||||
|
@ -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 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.
|
||||
#define INVERT_X_STEP_PIN false
|
||||
#define INVERT_Y_STEP_PIN false
|
||||
#define INVERT_Z_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_MINIMUMFEEDRATE 0.0 // minimum feedrate
|
||||
#define DEFAULT_MINTRAVELFEEDRATE 0.0
|
||||
|
||||
// Feedrates for manual moves along X, Y, Z, E from panel
|
||||
#ifdef ULTIPANEL
|
||||
#define MANUAL_FEEDRATE {50*60, 50*60, 4*60, 60} // set the speeds for manual moves (mm/min)
|
||||
#endif
|
||||
|
||||
//Comment to disable setting feedrate multiplier via encoder
|
||||
#ifdef ULTIPANEL
|
||||
#define ULTIPANEL_FEEDMULTIPLY
|
||||
#define MANUAL_FEEDRATE {50*60, 50*60, 4*60, 60} // Feedrates for manual moves along X, Y, Z, E from panel
|
||||
#define ULTIPANEL_FEEDMULTIPLY // Comment to disable setting feedrate multiplier via encoder
|
||||
#endif
|
||||
|
||||
// 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.
|
||||
#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.
|
||||
#define MICROSTEP_MODES {16,16,16,16,16} // [1,2,4,8,16]
|
||||
|
||||
|
@ -313,12 +237,6 @@
|
|||
#define PROGRESS_MSG_EXPIRE 0
|
||||
// Enable this to show messages for MSG_TIME then hide them
|
||||
//#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
|
||||
|
||||
// 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_INVERT_Z false //true for inverse movements in Z
|
||||
#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
|
||||
|
||||
// extruder advance constant (s2/mm3)
|
||||
|
@ -365,12 +273,8 @@
|
|||
|
||||
#ifdef ADVANCE
|
||||
#define EXTRUDER_ADVANCE_K .0
|
||||
|
||||
#define D_FILAMENT 2.85
|
||||
#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
|
||||
|
||||
// Arc interpretation settings:
|
||||
|
@ -385,26 +289,6 @@ const unsigned int dropsegments=5; //everything with less than this number of st
|
|||
// be commented out otherwise
|
||||
#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.
|
||||
//#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)
|
||||
#endif
|
||||
|
||||
//adds support for experimental filament exchange support M600; requires display
|
||||
// Add support for experimental filament exchange support M600; requires display
|
||||
#ifdef ULTIPANEL
|
||||
#define FILAMENTCHANGEENABLE
|
||||
//#define FILAMENTCHANGEENABLE
|
||||
#ifdef FILAMENTCHANGEENABLE
|
||||
#define FILAMENTCHANGE_XPOS 3
|
||||
#define FILAMENTCHANGE_YPOS 3
|
||||
|
@ -456,86 +340,7 @@ const unsigned int dropsegments=5; //everything with less than this number of st
|
|||
#endif
|
||||
#endif
|
||||
|
||||
#ifdef FILAMENTCHANGEENABLE
|
||||
#ifdef EXTRUDER_RUNOUT_PREVENT
|
||||
#error EXTRUDER_RUNOUT_PREVENT currently incompatible with FILAMENTCHANGE
|
||||
#endif
|
||||
#endif
|
||||
#include "Conditionals.h"
|
||||
#include "SanityCheck.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
|
||||
#endif //CONFIGURATION_ADV_H
|
||||
|
|
|
@ -351,15 +351,6 @@ your extruder heater takes 2 minutes to hit the target on heating.
|
|||
// #define ENDSTOPPULLUP_ZMIN
|
||||
#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.
|
||||
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.
|
||||
|
@ -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_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)
|
||||
#define Z_MAX_LENGTH (Z_MAX_POS - Z_MIN_POS)
|
||||
//===========================================================================
|
||||
//============================= 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.
|
||||
|
||||
//===========================================================================
|
||||
//============================ 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 ===========================
|
||||
|
@ -439,12 +452,6 @@ const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of
|
|||
|
||||
#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 RIGHT_PROBE_BED_POSITION 170
|
||||
#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
|
||||
//#define RA_CONTROL_PANEL
|
||||
|
||||
//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
|
||||
/**
|
||||
* I2C Panels
|
||||
*/
|
||||
|
||||
//#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
|
||||
//#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
|
||||
//#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
|
||||
// ---------------------
|
||||
|
@ -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
|
||||
|
||||
//#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
|
||||
//#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
|
||||
// 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.
|
||||
|
@ -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.
|
||||
#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
|
||||
// Data from: http://www.doc-diy.net/photo/rc-1_hacked/
|
||||
// #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 "thermistortables.h"
|
||||
|
||||
#endif //__CONFIGURATION_H
|
||||
#endif //CONFIGURATION_H
|
||||
|
|
|
@ -1,6 +1,8 @@
|
|||
#ifndef CONFIGURATION_ADV_H
|
||||
#define CONFIGURATION_ADV_H
|
||||
|
||||
#include "Conditionals.h"
|
||||
|
||||
//===========================================================================
|
||||
//=============================Thermal Settings ============================
|
||||
//===========================================================================
|
||||
|
@ -89,54 +91,6 @@
|
|||
|
||||
#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.
|
||||
|
||||
// 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.
|
||||
//#define Z_DUAL_STEPPER_DRIVERS
|
||||
|
||||
#ifdef Z_DUAL_STEPPER_DRIVERS
|
||||
#undef EXTRUDERS
|
||||
#define EXTRUDERS 1
|
||||
#endif
|
||||
|
||||
// Same again but for Y Axis.
|
||||
//#define Y_DUAL_STEPPER_DRIVERS
|
||||
|
||||
// Define if the two Y drives need to rotate in opposite directions
|
||||
#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.
|
||||
// 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
|
||||
|
@ -216,9 +156,6 @@
|
|||
#define Z_HOME_RETRACT_MM 3
|
||||
#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.
|
||||
#ifdef SCARA
|
||||
#define QUICK_HOME //SCARA needs Quickhome
|
||||
#endif
|
||||
|
||||
#define AXIS_RELATIVE_MODES {false, false, false, false}
|
||||
|
||||
|
@ -230,20 +167,15 @@
|
|||
#define INVERT_Z_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_MINIMUMFEEDRATE 0.0 // minimum feedrate
|
||||
#define DEFAULT_MINTRAVELFEEDRATE 0.0
|
||||
|
||||
// Feedrates for manual moves along X, Y, Z, E from panel
|
||||
#ifdef ULTIPANEL
|
||||
#define MANUAL_FEEDRATE {50*60, 50*60, 10*60, 60} // set the speeds for manual moves (mm/min)
|
||||
#endif
|
||||
|
||||
//Comment to disable setting feedrate multiplier via encoder
|
||||
#ifdef ULTIPANEL
|
||||
#define ULTIPANEL_FEEDMULTIPLY
|
||||
#define MANUAL_FEEDRATE {50*60, 50*60, 10*60, 60} // Feedrates for manual moves along X, Y, Z, E from panel
|
||||
#define ULTIPANEL_FEEDMULTIPLY // Comment to disable setting feedrate multiplier via encoder
|
||||
#endif
|
||||
|
||||
// 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
|
||||
//#define SLOWDOWN
|
||||
#ifdef SCARA
|
||||
#undef SLOWDOWN
|
||||
#endif
|
||||
|
||||
// Frequency limit
|
||||
// See nophead's blog for more info
|
||||
// Not working O
|
||||
|
@ -264,13 +194,6 @@
|
|||
// if unwanted behavior is observed on a user's machine when running at very slow speeds.
|
||||
#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.
|
||||
#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_INVERT_Z false //true for inverse movements in Z
|
||||
#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
|
||||
|
||||
// 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
|
||||
#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.
|
||||
//#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)
|
||||
#endif
|
||||
|
||||
//adds support for experimental filament exchange support M600; requires display
|
||||
// Add support for experimental filament exchange support M600; requires display
|
||||
#ifdef ULTIPANEL
|
||||
#define FILAMENTCHANGEENABLE
|
||||
//#define FILAMENTCHANGEENABLE
|
||||
#ifdef FILAMENTCHANGEENABLE
|
||||
#define FILAMENTCHANGE_XPOS 3
|
||||
#define FILAMENTCHANGE_YPOS 3
|
||||
|
@ -456,81 +344,7 @@ const unsigned int dropsegments=5; //everything with less than this number of st
|
|||
#endif
|
||||
#endif
|
||||
|
||||
#ifdef FILAMENTCHANGEENABLE
|
||||
#ifdef EXTRUDER_RUNOUT_PREVENT
|
||||
#error EXTRUDER_RUNOUT_PREVENT currently incompatible with FILAMENTCHANGE
|
||||
#endif
|
||||
#endif
|
||||
#include "Conditionals.h"
|
||||
#include "SanityCheck.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
|
||||
#endif //CONFIGURATION_ADV_H
|
||||
|
|
|
@ -321,15 +321,6 @@ your extruder heater takes 2 minutes to hit the target on heating.
|
|||
// #define ENDSTOPPULLUP_ZMIN
|
||||
#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.
|
||||
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.
|
||||
|
@ -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_MIN_POS 0
|
||||
|
||||
#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 ======================
|
||||
//===========================================================================
|
||||
//#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 ===========================
|
||||
|
@ -409,12 +422,6 @@ const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of
|
|||
|
||||
#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 RIGHT_PROBE_BED_POSITION 170
|
||||
#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
|
||||
//#define RA_CONTROL_PANEL
|
||||
|
||||
//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
|
||||
/**
|
||||
* I2C Panels
|
||||
*/
|
||||
|
||||
//#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
|
||||
//#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
|
||||
//#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
|
||||
// ---------------------
|
||||
|
@ -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
|
||||
|
||||
//#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
|
||||
//#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
|
||||
// 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.
|
||||
|
@ -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.
|
||||
#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
|
||||
// Data from: http://www.doc-diy.net/photo/rc-1_hacked/
|
||||
// #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 "thermistortables.h"
|
||||
|
||||
#endif //__CONFIGURATION_H
|
||||
#endif //CONFIGURATION_H
|
||||
|
|
|
@ -1,6 +1,8 @@
|
|||
#ifndef CONFIGURATION_ADV_H
|
||||
#define CONFIGURATION_ADV_H
|
||||
|
||||
#include "Conditionals.h"
|
||||
|
||||
//===========================================================================
|
||||
//=============================Thermal Settings ============================
|
||||
//===========================================================================
|
||||
|
@ -89,54 +91,6 @@
|
|||
|
||||
//#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.
|
||||
|
||||
// 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.
|
||||
//#define Z_DUAL_STEPPER_DRIVERS
|
||||
|
||||
#ifdef Z_DUAL_STEPPER_DRIVERS
|
||||
#undef EXTRUDERS
|
||||
#define EXTRUDERS 1
|
||||
#endif
|
||||
|
||||
// Same again but for Y Axis.
|
||||
//#define Y_DUAL_STEPPER_DRIVERS
|
||||
|
||||
// Define if the two Y drives need to rotate in opposite directions
|
||||
#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.
|
||||
// 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
|
||||
|
@ -229,20 +169,15 @@
|
|||
#define INVERT_Z_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_MINIMUMFEEDRATE 0.0 // minimum feedrate
|
||||
#define DEFAULT_MINTRAVELFEEDRATE 0.0
|
||||
|
||||
// Feedrates for manual moves along X, Y, Z, E from panel
|
||||
#ifdef ULTIPANEL
|
||||
#define MANUAL_FEEDRATE {120*60, 120*60, 18*60, 60} // set the speeds for manual moves (mm/min)
|
||||
#endif
|
||||
|
||||
//Comment to disable setting feedrate multiplier via encoder
|
||||
#ifdef ULTIPANEL
|
||||
#define ULTIPANEL_FEEDMULTIPLY
|
||||
#define MANUAL_FEEDRATE {120*60, 120*60, 18*60, 60} // Feedrates for manual moves along X, Y, Z, E from panel
|
||||
#define ULTIPANEL_FEEDMULTIPLY // Comment to disable setting feedrate multiplier via encoder
|
||||
#endif
|
||||
|
||||
// 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.
|
||||
#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.
|
||||
#define MICROSTEP_MODES {16,16,16,16,16} // [1,2,4,8,16]
|
||||
|
||||
|
@ -313,12 +241,6 @@
|
|||
#define PROGRESS_MSG_EXPIRE 0
|
||||
// Enable this to show messages for MSG_TIME then hide them
|
||||
//#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
|
||||
|
||||
// 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_INVERT_Z false //true for inverse movements in Z
|
||||
#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
|
||||
|
||||
// extruder advance constant (s2/mm3)
|
||||
|
@ -365,12 +277,8 @@
|
|||
|
||||
#ifdef ADVANCE
|
||||
#define EXTRUDER_ADVANCE_K .0
|
||||
|
||||
#define D_FILAMENT 1.75
|
||||
#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
|
||||
|
||||
// Arc interpretation settings:
|
||||
|
@ -385,26 +293,6 @@ const unsigned int dropsegments=5; //everything with less than this number of st
|
|||
// be commented out otherwise
|
||||
#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.
|
||||
//#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)
|
||||
#endif
|
||||
|
||||
//adds support for experimental filament exchange support M600; requires display
|
||||
// Add support for experimental filament exchange support M600; requires display
|
||||
#ifdef ULTIPANEL
|
||||
#define FILAMENTCHANGEENABLE
|
||||
//#define FILAMENTCHANGEENABLE
|
||||
#ifdef FILAMENTCHANGEENABLE
|
||||
#define FILAMENTCHANGE_XPOS 3
|
||||
#define FILAMENTCHANGE_YPOS 3
|
||||
|
@ -456,86 +344,7 @@ const unsigned int dropsegments=5; //everything with less than this number of st
|
|||
#endif
|
||||
#endif
|
||||
|
||||
#ifdef FILAMENTCHANGEENABLE
|
||||
#ifdef EXTRUDER_RUNOUT_PREVENT
|
||||
#error EXTRUDER_RUNOUT_PREVENT currently incompatible with FILAMENTCHANGE
|
||||
#endif
|
||||
#endif
|
||||
#include "Conditionals.h"
|
||||
#include "SanityCheck.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
|
||||
#endif //CONFIGURATION_ADV_H
|
||||
|
|
|
@ -137,7 +137,7 @@ Here are some standard links for getting your machine calibrated:
|
|||
// 10 is 100k RS thermistor 198-961 (4.7k pullup)
|
||||
// 11 is 100k beta 3950 1% thermistor (4.7k pullup)
|
||||
// 12 is 100k 0603 SMD Vishay NTCS0603E3104FXT (4.7k pullup) (calibrated for Makibox hot bed)
|
||||
// 13 is 100k Hisens 3950 1% up to 300°C for hotend "Simple ONE " & "Hotend "All In ONE"
|
||||
// 13 is 100k Hisens 3950 1% up to 300°C for hotend "Simple ONE " & "Hotend "All In ONE"
|
||||
// 20 is the PT100 circuit found in the Ultimainboard V2.x
|
||||
// 60 is 100k Maker's Tool Works Kapton Bed Thermistor beta=3950
|
||||
//
|
||||
|
@ -151,7 +151,7 @@ Here are some standard links for getting your machine calibrated:
|
|||
// 1010 is Pt1000 with 1k pullup (non standard)
|
||||
// 147 is Pt100 with 4k7 pullup
|
||||
// 110 is Pt100 with 1k pullup (non standard)
|
||||
// 998 and 999 are Dummy Tables. They will ALWAYS read 25°C or the temperature defined below.
|
||||
// 998 and 999 are Dummy Tables. They will ALWAYS read 25°C or the temperature defined below.
|
||||
// Use it for Testing or Development purposes. NEVER for production machine.
|
||||
// #define DUMMY_THERMISTOR_998_VALUE 25
|
||||
// #define DUMMY_THERMISTOR_999_VALUE 100
|
||||
|
@ -298,15 +298,15 @@ The issue: If a thermistor come off, it will read a lower temperature than actua
|
|||
The system will turn the heater on forever, burning up the filament and anything
|
||||
else around.
|
||||
|
||||
After the temperature reaches the target for the first time, this feature will
|
||||
start measuring for how long the current temperature stays below the target
|
||||
After the temperature reaches the target for the first time, this feature will
|
||||
start measuring for how long the current temperature stays below the target
|
||||
minus _HYSTERESIS (set_temperature - THERMAL_RUNAWAY_PROTECTION_HYSTERESIS).
|
||||
|
||||
If it stays longer than _PERIOD, it means the thermistor temperature
|
||||
cannot catch up with the target, so something *may be* wrong. Then, to be on the
|
||||
safe side, the system will he halt.
|
||||
|
||||
Bear in mind the count down will just start AFTER the first time the
|
||||
Bear in mind the count down will just start AFTER the first time the
|
||||
thermistor temperature is over the target, so you will have no problem if
|
||||
your extruder heater takes 2 minutes to hit the target on heating.
|
||||
|
||||
|
@ -349,15 +349,6 @@ your extruder heater takes 2 minutes to hit the target on heating.
|
|||
// #define ENDSTOPPULLUP_ZMIN
|
||||
#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.
|
||||
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.
|
||||
|
@ -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_MIN_POS 0
|
||||
|
||||
#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 ======================
|
||||
//===========================================================================
|
||||
//#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 ===========================
|
||||
|
@ -429,7 +442,7 @@ const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of
|
|||
#define LEFT_PROBE_BED_POSITION -DELTA_PROBABLE_RADIUS
|
||||
#define RIGHT_PROBE_BED_POSITION DELTA_PROBABLE_RADIUS
|
||||
#define BACK_PROBE_BED_POSITION DELTA_PROBABLE_RADIUS
|
||||
#define FRONT_PROBE_BED_POSITION -DELTA_PROBABLE_RADIUS
|
||||
#define FRONT_PROBE_BED_POSITION -DELTA_PROBABLE_RADIUS
|
||||
|
||||
// Non-linear bed leveling will be used.
|
||||
// Compensate by interpolating between the nearest four Z probe values for each point.
|
||||
|
@ -459,13 +472,13 @@ const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of
|
|||
#define Z_PROBE_ALLEN_KEY_DEPLOY_X 30
|
||||
#define Z_PROBE_ALLEN_KEY_DEPLOY_Y DELTA_PRINTABLE_RADIUS
|
||||
#define Z_PROBE_ALLEN_KEY_DEPLOY_Z 100
|
||||
|
||||
|
||||
#define Z_PROBE_ALLEN_KEY_RETRACT_X -64
|
||||
#define Z_PROBE_ALLEN_KEY_RETRACT_Y 56
|
||||
#define Z_PROBE_ALLEN_KEY_RETRACT_Z 23
|
||||
#define Z_PROBE_ALLEN_KEY_RETRACT_DEPTH 20
|
||||
#endif
|
||||
|
||||
|
||||
//If defined, the Probe servo will be turned on only during movement and then turned off to avoid jerk
|
||||
//The value is the delay to turn the servo off after powered on - depends on the servo speed; 300ms is good value, but you can try lower it.
|
||||
// You MUST HAVE the SERVO_ENDSTOPS defined to use here a value higher than zero otherwise your code will not compile.
|
||||
|
@ -637,164 +650,28 @@ const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of
|
|||
// in ultralcd.cpp@lcd_delta_calibrate_menu()
|
||||
// #define DELTA_CALIBRATION_MENU
|
||||
|
||||
//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
|
||||
/**
|
||||
* I2C PANELS
|
||||
*/
|
||||
|
||||
//#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
|
||||
//#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
|
||||
//#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
|
||||
// ---------------------
|
||||
// 2 wire Non-latching LCD SR from:
|
||||
// https://bitbucket.org/fmalpartida/new-liquidcrystal/wiki/schematics#!shiftregister-connection
|
||||
// https://bitbucket.org/fmalpartida/new-liquidcrystal/wiki/schematics#!shiftregister-connection
|
||||
|
||||
//#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
|
||||
//#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
|
||||
// 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.
|
||||
|
@ -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.
|
||||
#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
|
||||
// Data from: http://www.doc-diy.net/photo/rc-1_hacked/
|
||||
// #define PHOTOGRAPH_PIN 23
|
||||
|
@ -845,9 +727,9 @@ const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of
|
|||
* Support for a filament diameter sensor
|
||||
* Also allows adjustment of diameter at print time (vs at slicing)
|
||||
* Single extruder only at this point (extruder 0)
|
||||
*
|
||||
*
|
||||
* Motherboards
|
||||
* 34 - RAMPS1.4 - uses Analog input 5 on the AUX2 connector
|
||||
* 34 - RAMPS1.4 - uses Analog input 5 on the AUX2 connector
|
||||
* 81 - Printrboard - Uses Analog input 2 on the Exp1 connector (version B,C,D,E)
|
||||
* 301 - Rambo - uses Analog input 3
|
||||
* Note may require analog pins to be defined for different motherboards
|
||||
|
@ -877,4 +759,4 @@ const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of
|
|||
#include "Configuration_adv.h"
|
||||
#include "thermistortables.h"
|
||||
|
||||
#endif //__CONFIGURATION_H
|
||||
#endif //CONFIGURATION_H
|
||||
|
|
|
@ -1,6 +1,8 @@
|
|||
#ifndef CONFIGURATION_ADV_H
|
||||
#define CONFIGURATION_ADV_H
|
||||
|
||||
#include "Conditionals.h"
|
||||
|
||||
//===========================================================================
|
||||
//=============================Thermal Settings ============================
|
||||
//===========================================================================
|
||||
|
@ -89,54 +91,6 @@
|
|||
|
||||
#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.
|
||||
|
||||
// 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.
|
||||
//#define Z_DUAL_STEPPER_DRIVERS
|
||||
|
||||
#ifdef Z_DUAL_STEPPER_DRIVERS
|
||||
#undef EXTRUDERS
|
||||
#define EXTRUDERS 1
|
||||
#endif
|
||||
|
||||
// Same again but for Y Axis.
|
||||
//#define Y_DUAL_STEPPER_DRIVERS
|
||||
|
||||
// Define if the two Y drives need to rotate in opposite directions
|
||||
#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.
|
||||
// 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
|
||||
|
@ -228,7 +168,7 @@
|
|||
#define INVERT_Z_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_MINIMUMFEEDRATE 0.0 // minimum feedrate
|
||||
|
@ -236,7 +176,7 @@
|
|||
|
||||
// Feedrates for manual moves along X, Y, Z, E from panel
|
||||
#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
|
||||
|
||||
// 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.
|
||||
#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.
|
||||
#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_INVERT_Z false //true for inverse movements in Z
|
||||
#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
|
||||
|
||||
// extruder advance constant (s2/mm3)
|
||||
|
@ -354,12 +277,8 @@
|
|||
|
||||
#ifdef ADVANCE
|
||||
#define EXTRUDER_ADVANCE_K .0
|
||||
|
||||
#define D_FILAMENT 2.85
|
||||
#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
|
||||
|
||||
// Arc interpretation settings:
|
||||
|
@ -374,26 +293,6 @@ const unsigned int dropsegments=5; //everything with less than this number of st
|
|||
// be commented out otherwise
|
||||
#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.
|
||||
//#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)
|
||||
#endif
|
||||
|
||||
//adds support for experimental filament exchange support M600; requires display
|
||||
// Add support for experimental filament exchange support M600; requires display
|
||||
#ifdef ULTIPANEL
|
||||
#define FILAMENTCHANGEENABLE
|
||||
//#define FILAMENTCHANGEENABLE
|
||||
#ifdef FILAMENTCHANGEENABLE
|
||||
#define FILAMENTCHANGE_XPOS 3
|
||||
#define FILAMENTCHANGE_YPOS 3
|
||||
|
@ -445,104 +344,7 @@ const unsigned int dropsegments=5; //everything with less than this number of st
|
|||
#endif
|
||||
#endif
|
||||
|
||||
#ifdef FILAMENTCHANGEENABLE
|
||||
#ifdef EXTRUDER_RUNOUT_PREVENT
|
||||
#error EXTRUDER_RUNOUT_PREVENT currently incompatible with FILAMENTCHANGE
|
||||
#endif
|
||||
#endif
|
||||
|
||||
//===========================================================================
|
||||
//============================= Define Defines ============================
|
||||
//===========================================================================
|
||||
#include "Conditionals.h"
|
||||
#include "SanityCheck.h"
|
||||
|
||||
#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
|
||||
#endif //CONFIGURATION_ADV_H
|
||||
|
|
|
@ -138,7 +138,7 @@ Here are some standard links for getting your machine calibrated:
|
|||
// 10 is 100k RS thermistor 198-961 (4.7k pullup)
|
||||
// 11 is 100k beta 3950 1% thermistor (4.7k pullup)
|
||||
// 12 is 100k 0603 SMD Vishay NTCS0603E3104FXT (4.7k pullup) (calibrated for Makibox hot bed)
|
||||
// 13 is 100k Hisens 3950 1% up to 300°C for hotend "Simple ONE " & "Hotend "All In ONE"
|
||||
// 13 is 100k Hisens 3950 1% up to 300°C for hotend "Simple ONE " & "Hotend "All In ONE"
|
||||
// 20 is the PT100 circuit found in the Ultimainboard V2.x
|
||||
// 60 is 100k Maker's Tool Works Kapton Bed Thermistor beta=3950
|
||||
//
|
||||
|
@ -152,7 +152,7 @@ Here are some standard links for getting your machine calibrated:
|
|||
// 1010 is Pt1000 with 1k pullup (non standard)
|
||||
// 147 is Pt100 with 4k7 pullup
|
||||
// 110 is Pt100 with 1k pullup (non standard)
|
||||
// 998 and 999 are Dummy Tables. They will ALWAYS read 25°C or the temperature defined below.
|
||||
// 998 and 999 are Dummy Tables. They will ALWAYS read 25°C or the temperature defined below.
|
||||
// Use it for Testing or Development purposes. NEVER for production machine.
|
||||
// #define DUMMY_THERMISTOR_998_VALUE 25
|
||||
// #define DUMMY_THERMISTOR_999_VALUE 100
|
||||
|
@ -299,15 +299,15 @@ The issue: If a thermistor come off, it will read a lower temperature than actua
|
|||
The system will turn the heater on forever, burning up the filament and anything
|
||||
else around.
|
||||
|
||||
After the temperature reaches the target for the first time, this feature will
|
||||
start measuring for how long the current temperature stays below the target
|
||||
After the temperature reaches the target for the first time, this feature will
|
||||
start measuring for how long the current temperature stays below the target
|
||||
minus _HYSTERESIS (set_temperature - THERMAL_RUNAWAY_PROTECTION_HYSTERESIS).
|
||||
|
||||
If it stays longer than _PERIOD, it means the thermistor temperature
|
||||
cannot catch up with the target, so something *may be* wrong. Then, to be on the
|
||||
safe side, the system will he halt.
|
||||
|
||||
Bear in mind the count down will just start AFTER the first time the
|
||||
Bear in mind the count down will just start AFTER the first time the
|
||||
thermistor temperature is over the target, so you will have no problem if
|
||||
your extruder heater takes 2 minutes to hit the target on heating.
|
||||
|
||||
|
@ -350,15 +350,6 @@ your extruder heater takes 2 minutes to hit the target on heating.
|
|||
// #define ENDSTOPPULLUP_ZMIN
|
||||
#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.
|
||||
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.
|
||||
|
@ -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_MIN_POS 0
|
||||
|
||||
#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 ======================
|
||||
//===========================================================================
|
||||
//#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 ===========================
|
||||
|
@ -430,9 +443,9 @@ const bool Z_MAX_ENDSTOP_INVERTING = false; // set to true to invert the logic o
|
|||
#define LEFT_PROBE_BED_POSITION -DELTA_PROBABLE_RADIUS
|
||||
#define RIGHT_PROBE_BED_POSITION DELTA_PROBABLE_RADIUS
|
||||
#define BACK_PROBE_BED_POSITION DELTA_PROBABLE_RADIUS
|
||||
#define FRONT_PROBE_BED_POSITION -DELTA_PROBABLE_RADIUS
|
||||
#define FRONT_PROBE_BED_POSITION -DELTA_PROBABLE_RADIUS
|
||||
|
||||
#define MIN_PROBE_EDGE 10 // The probe square sides can be no smaller than this
|
||||
#define MIN_PROBE_EDGE 10 // The probe square sides can be no smaller than this
|
||||
|
||||
// Non-linear bed leveling will be used.
|
||||
// Compensate by interpolating between the nearest four Z probe values for each point.
|
||||
|
@ -454,7 +467,7 @@ const bool Z_MAX_ENDSTOP_INVERTING = false; // set to true to invert the logic o
|
|||
#define Z_RAISE_BEFORE_PROBING 15 //How much the extruder will be raised before traveling to the first probing point.
|
||||
#define Z_RAISE_BETWEEN_PROBINGS 5 //How much the extruder will be raised when traveling from between next probing points
|
||||
#define Z_RAISE_AFTER_PROBING 50 //How much the extruder will be raised after the last probing point.
|
||||
|
||||
|
||||
// Allen key retractable z-probe as seen on many Kossel delta printers - http://reprap.org/wiki/Kossel#Automatic_bed_leveling_probe
|
||||
// Deploys by touching z-axis belt. Retracts by pushing the probe down. Uses Z_MIN_PIN.
|
||||
#define Z_PROBE_ALLEN_KEY
|
||||
|
@ -462,13 +475,13 @@ const bool Z_MAX_ENDSTOP_INVERTING = false; // set to true to invert the logic o
|
|||
#define Z_PROBE_ALLEN_KEY_DEPLOY_X 30
|
||||
#define Z_PROBE_ALLEN_KEY_DEPLOY_Y DELTA_PRINTABLE_RADIUS
|
||||
#define Z_PROBE_ALLEN_KEY_DEPLOY_Z 100
|
||||
|
||||
|
||||
#define Z_PROBE_ALLEN_KEY_RETRACT_X -64
|
||||
#define Z_PROBE_ALLEN_KEY_RETRACT_Y 56
|
||||
#define Z_PROBE_ALLEN_KEY_RETRACT_Z 23
|
||||
#define Z_PROBE_ALLEN_KEY_RETRACT_DEPTH 20
|
||||
#endif
|
||||
|
||||
|
||||
//If defined, the Probe servo will be turned on only during movement and then turned off to avoid jerk
|
||||
//The value is the delay to turn the servo off after powered on - depends on the servo speed; 300ms is good value, but you can try lower it.
|
||||
// You MUST HAVE the SERVO_ENDSTOPS defined to use here a value higher than zero otherwise your code will not compile.
|
||||
|
@ -639,164 +652,28 @@ const bool Z_MAX_ENDSTOP_INVERTING = false; // set to true to invert the logic o
|
|||
// in ultralcd.cpp@lcd_delta_calibrate_menu()
|
||||
// #define DELTA_CALIBRATION_MENU
|
||||
|
||||
//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
|
||||
/**
|
||||
* I2C Panels
|
||||
*/
|
||||
|
||||
//#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
|
||||
//#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
|
||||
//#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
|
||||
// ---------------------
|
||||
// 2 wire Non-latching LCD SR from:
|
||||
// https://bitbucket.org/fmalpartida/new-liquidcrystal/wiki/schematics#!shiftregister-connection
|
||||
// https://bitbucket.org/fmalpartida/new-liquidcrystal/wiki/schematics#!shiftregister-connection
|
||||
|
||||
//#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
|
||||
//#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
|
||||
// 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.
|
||||
|
@ -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.
|
||||
#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
|
||||
// Data from: http://www.doc-diy.net/photo/rc-1_hacked/
|
||||
// #define PHOTOGRAPH_PIN 23
|
||||
|
@ -847,9 +729,9 @@ const bool Z_MAX_ENDSTOP_INVERTING = false; // set to true to invert the logic o
|
|||
* Support for a filament diameter sensor
|
||||
* Also allows adjustment of diameter at print time (vs at slicing)
|
||||
* Single extruder only at this point (extruder 0)
|
||||
*
|
||||
*
|
||||
* Motherboards
|
||||
* 34 - RAMPS1.4 - uses Analog input 5 on the AUX2 connector
|
||||
* 34 - RAMPS1.4 - uses Analog input 5 on the AUX2 connector
|
||||
* 81 - Printrboard - Uses Analog input 2 on the Exp1 connector (version B,C,D,E)
|
||||
* 301 - Rambo - uses Analog input 3
|
||||
* Note may require analog pins to be defined for different motherboards
|
||||
|
@ -879,4 +761,4 @@ const bool Z_MAX_ENDSTOP_INVERTING = false; // set to true to invert the logic o
|
|||
#include "Configuration_adv.h"
|
||||
#include "thermistortables.h"
|
||||
|
||||
#endif //__CONFIGURATION_H
|
||||
#endif //CONFIGURATION_H
|
||||
|
|
|
@ -1,6 +1,8 @@
|
|||
#ifndef CONFIGURATION_ADV_H
|
||||
#define CONFIGURATION_ADV_H
|
||||
|
||||
#include "Conditionals.h"
|
||||
|
||||
//===========================================================================
|
||||
//=============================Thermal Settings ============================
|
||||
//===========================================================================
|
||||
|
@ -89,54 +91,6 @@
|
|||
|
||||
#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.
|
||||
|
||||
// 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.
|
||||
//#define Z_DUAL_STEPPER_DRIVERS
|
||||
|
||||
#ifdef Z_DUAL_STEPPER_DRIVERS
|
||||
#undef EXTRUDERS
|
||||
#define EXTRUDERS 1
|
||||
#endif
|
||||
|
||||
// Same again but for Y Axis.
|
||||
//#define Y_DUAL_STEPPER_DRIVERS
|
||||
|
||||
// Define if the two Y drives need to rotate in opposite directions
|
||||
#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.
|
||||
// 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
|
||||
|
@ -228,7 +168,7 @@
|
|||
#define INVERT_Z_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_MINIMUMFEEDRATE 0.0 // minimum feedrate
|
||||
|
@ -236,7 +176,7 @@
|
|||
|
||||
// Feedrates for manual moves along X, Y, Z, E from panel
|
||||
#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
|
||||
|
||||
// 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.
|
||||
#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.
|
||||
#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_INVERT_Z false //true for inverse movements in Z
|
||||
#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
|
||||
|
||||
// extruder advance constant (s2/mm3)
|
||||
|
@ -353,12 +276,8 @@
|
|||
|
||||
#ifdef ADVANCE
|
||||
#define EXTRUDER_ADVANCE_K .0
|
||||
|
||||
#define D_FILAMENT 2.85
|
||||
#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
|
||||
|
||||
// Arc interpretation settings:
|
||||
|
@ -373,26 +292,6 @@ const unsigned int dropsegments=5; //everything with less than this number of st
|
|||
// be commented out otherwise
|
||||
#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.
|
||||
//#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)
|
||||
#endif
|
||||
|
||||
//adds support for experimental filament exchange support M600; requires display
|
||||
// Add support for experimental filament exchange support M600; requires display
|
||||
#ifdef ULTIPANEL
|
||||
#define FILAMENTCHANGEENABLE
|
||||
//#define FILAMENTCHANGEENABLE
|
||||
#ifdef FILAMENTCHANGEENABLE
|
||||
#define FILAMENTCHANGE_XPOS 3
|
||||
#define FILAMENTCHANGE_YPOS 3
|
||||
|
@ -444,104 +343,7 @@ const unsigned int dropsegments=5; //everything with less than this number of st
|
|||
#endif
|
||||
#endif
|
||||
|
||||
#ifdef FILAMENTCHANGEENABLE
|
||||
#ifdef EXTRUDER_RUNOUT_PREVENT
|
||||
#error EXTRUDER_RUNOUT_PREVENT currently incompatible with FILAMENTCHANGE
|
||||
#endif
|
||||
#endif
|
||||
|
||||
//===========================================================================
|
||||
//============================= Define Defines ============================
|
||||
//===========================================================================
|
||||
#include "Conditionals.h"
|
||||
#include "SanityCheck.h"
|
||||
|
||||
#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
|
||||
#endif //CONFIGURATION_ADV_H
|
||||
|
|
|
@ -319,15 +319,6 @@ your extruder heater takes 2 minutes to hit the target on heating.
|
|||
// #define ENDSTOPPULLUP_ZMIN
|
||||
#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.
|
||||
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.
|
||||
|
@ -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_MIN_POS 0
|
||||
|
||||
#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 ======================
|
||||
//===========================================================================
|
||||
//#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 ===========================
|
||||
|
@ -407,12 +420,6 @@ const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of
|
|||
|
||||
#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 RIGHT_PROBE_BED_POSITION 170
|
||||
#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
|
||||
//#define RA_CONTROL_PANEL
|
||||
|
||||
//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
|
||||
/**
|
||||
* I2C Panels
|
||||
*/
|
||||
|
||||
//#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
|
||||
//#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
|
||||
//#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
|
||||
// ---------------------
|
||||
|
@ -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
|
||||
|
||||
//#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
|
||||
//#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
|
||||
// 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.
|
||||
|
@ -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.
|
||||
#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
|
||||
// Data from: http://www.doc-diy.net/photo/rc-1_hacked/
|
||||
// #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 "thermistortables.h"
|
||||
|
||||
#endif //__CONFIGURATION_H
|
||||
#endif //CONFIGURATION_H
|
||||
|
|
|
@ -1,6 +1,8 @@
|
|||
#ifndef CONFIGURATION_ADV_H
|
||||
#define CONFIGURATION_ADV_H
|
||||
|
||||
#include "Conditionals.h"
|
||||
|
||||
//===========================================================================
|
||||
//=============================Thermal Settings ============================
|
||||
//===========================================================================
|
||||
|
@ -89,54 +91,6 @@
|
|||
|
||||
#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.
|
||||
|
||||
// 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.
|
||||
//#define Z_DUAL_STEPPER_DRIVERS
|
||||
|
||||
#ifdef Z_DUAL_STEPPER_DRIVERS
|
||||
#undef EXTRUDERS
|
||||
#define EXTRUDERS 1
|
||||
#endif
|
||||
|
||||
// Same again but for Y Axis.
|
||||
//#define Y_DUAL_STEPPER_DRIVERS
|
||||
|
||||
// Define if the two Y drives need to rotate in opposite directions
|
||||
#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.
|
||||
// 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
|
||||
|
@ -227,20 +167,15 @@
|
|||
#define INVERT_Z_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_MINIMUMFEEDRATE 0.0 // minimum feedrate
|
||||
#define DEFAULT_MINTRAVELFEEDRATE 0.0
|
||||
|
||||
// Feedrates for manual moves along X, Y, Z, E from panel
|
||||
#ifdef ULTIPANEL
|
||||
#define MANUAL_FEEDRATE {50*60, 50*60, 4*60, 60} // set the speeds for manual moves (mm/min)
|
||||
#endif
|
||||
|
||||
//Comment to disable setting feedrate multiplier via encoder
|
||||
#ifdef ULTIPANEL
|
||||
#define ULTIPANEL_FEEDMULTIPLY
|
||||
#define MANUAL_FEEDRATE {50*60, 50*60, 4*60, 60} // Feedrates for manual moves along X, Y, Z, E from panel
|
||||
#define ULTIPANEL_FEEDMULTIPLY // Comment to disable setting feedrate multiplier via encoder
|
||||
#endif
|
||||
|
||||
// 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.
|
||||
#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.
|
||||
#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_INVERT_Z false //true for inverse movements in Z
|
||||
#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
|
||||
|
||||
// extruder advance constant (s2/mm3)
|
||||
|
@ -358,12 +276,8 @@
|
|||
|
||||
#ifdef ADVANCE
|
||||
#define EXTRUDER_ADVANCE_K .0
|
||||
|
||||
#define D_FILAMENT 2.85
|
||||
#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
|
||||
|
||||
// Arc interpretation settings:
|
||||
|
@ -378,26 +292,6 @@ const unsigned int dropsegments=5; //everything with less than this number of st
|
|||
// be commented out otherwise
|
||||
//#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.
|
||||
//#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)
|
||||
#endif
|
||||
|
||||
//adds support for experimental filament exchange support M600; requires display
|
||||
// Add support for experimental filament exchange support M600; requires display
|
||||
#ifdef ULTIPANEL
|
||||
#define FILAMENTCHANGEENABLE
|
||||
//#define FILAMENTCHANGEENABLE
|
||||
#ifdef FILAMENTCHANGEENABLE
|
||||
#define FILAMENTCHANGE_XPOS 3
|
||||
#define FILAMENTCHANGE_YPOS 3
|
||||
|
@ -447,81 +341,7 @@ const unsigned int dropsegments=5; //everything with less than this number of st
|
|||
#endif
|
||||
#endif
|
||||
|
||||
#ifdef FILAMENTCHANGEENABLE
|
||||
#ifdef EXTRUDER_RUNOUT_PREVENT
|
||||
#error EXTRUDER_RUNOUT_PREVENT currently incompatible with FILAMENTCHANGE
|
||||
#endif
|
||||
#endif
|
||||
#include "Conditionals.h"
|
||||
#include "SanityCheck.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
|
||||
#endif //CONFIGURATION_ADV_H
|
||||
|
|
|
@ -321,15 +321,6 @@ your extruder heater takes 2 minutes to hit the target on heating.
|
|||
// #define ENDSTOPPULLUP_ZMIN
|
||||
#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.
|
||||
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.
|
||||
|
@ -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_MIN_POS 0
|
||||
|
||||
#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 ======================
|
||||
//===========================================================================
|
||||
//#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 ===========================
|
||||
|
@ -409,12 +422,6 @@ const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of
|
|||
|
||||
#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 RIGHT_PROBE_BED_POSITION 170
|
||||
#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
|
||||
//#define RA_CONTROL_PANEL
|
||||
|
||||
//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
|
||||
/**
|
||||
* I2C Panels
|
||||
*/
|
||||
|
||||
//#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
|
||||
//#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
|
||||
//#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
|
||||
// ---------------------
|
||||
|
@ -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
|
||||
|
||||
//#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
|
||||
//#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
|
||||
// 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.
|
||||
|
@ -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.
|
||||
#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
|
||||
// Data from: http://www.doc-diy.net/photo/rc-1_hacked/
|
||||
// #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 "thermistortables.h"
|
||||
|
||||
#endif //__CONFIGURATION_H
|
||||
#endif //CONFIGURATION_H
|
||||
|
|
|
@ -1,6 +1,8 @@
|
|||
#ifndef CONFIGURATION_ADV_H
|
||||
#define CONFIGURATION_ADV_H
|
||||
|
||||
#include "Conditionals.h"
|
||||
|
||||
//===========================================================================
|
||||
//=============================Thermal Settings ============================
|
||||
//===========================================================================
|
||||
|
@ -89,54 +91,6 @@
|
|||
|
||||
#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.
|
||||
|
||||
// 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.
|
||||
//#define Z_DUAL_STEPPER_DRIVERS
|
||||
|
||||
#ifdef Z_DUAL_STEPPER_DRIVERS
|
||||
#undef EXTRUDERS
|
||||
#define EXTRUDERS 1
|
||||
#endif
|
||||
|
||||
// Same again but for Y Axis.
|
||||
//#define Y_DUAL_STEPPER_DRIVERS
|
||||
|
||||
// Define if the two Y drives need to rotate in opposite directions
|
||||
#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.
|
||||
// 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
|
||||
|
@ -229,20 +169,15 @@
|
|||
#define INVERT_Z_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_MINIMUMFEEDRATE 0.0 // minimum feedrate
|
||||
#define DEFAULT_MINTRAVELFEEDRATE 0.0
|
||||
|
||||
// Feedrates for manual moves along X, Y, Z, E from panel
|
||||
#ifdef ULTIPANEL
|
||||
#define MANUAL_FEEDRATE {50*60, 50*60, 4*60, 60} // set the speeds for manual moves (mm/min)
|
||||
#endif
|
||||
|
||||
//Comment to disable setting feedrate multiplier via encoder
|
||||
#ifdef ULTIPANEL
|
||||
#define ULTIPANEL_FEEDMULTIPLY
|
||||
#define MANUAL_FEEDRATE {50*60, 50*60, 4*60, 60} // Feedrates for manual moves along X, Y, Z, E from panel
|
||||
#define ULTIPANEL_FEEDMULTIPLY // Comment to disable setting feedrate multiplier via encoder
|
||||
#endif
|
||||
|
||||
// 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.
|
||||
#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.
|
||||
#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_INVERT_Z false //true for inverse movements in Z
|
||||
#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
|
||||
|
||||
// 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
|
||||
#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.
|
||||
//#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)
|
||||
#endif
|
||||
|
||||
//adds support for experimental filament exchange support M600; requires display
|
||||
// Add support for experimental filament exchange support M600; requires display
|
||||
#ifdef ULTIPANEL
|
||||
#define FILAMENTCHANGEENABLE
|
||||
//#define FILAMENTCHANGEENABLE
|
||||
#ifdef FILAMENTCHANGEENABLE
|
||||
#define FILAMENTCHANGE_XPOS 3
|
||||
#define FILAMENTCHANGE_YPOS 3
|
||||
|
@ -450,81 +348,7 @@ const unsigned int dropsegments=5; //everything with less than this number of st
|
|||
#endif
|
||||
#endif
|
||||
|
||||
#ifdef FILAMENTCHANGEENABLE
|
||||
#ifdef EXTRUDER_RUNOUT_PREVENT
|
||||
#error EXTRUDER_RUNOUT_PREVENT currently incompatible with FILAMENTCHANGE
|
||||
#endif
|
||||
#endif
|
||||
#include "Conditionals.h"
|
||||
#include "SanityCheck.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
|
||||
#endif //CONFIGURATION_ADV_H
|
||||
|
|
|
@ -202,7 +202,6 @@
|
|||
|
||||
// LCD Menu Messages
|
||||
|
||||
|
||||
#if !(defined( DISPLAY_CHARSET_HD44780_JAPAN ) || defined( DISPLAY_CHARSET_HD44780_WESTERN ) || defined( DISPLAY_CHARSET_HD44780_CYRILLIC ))
|
||||
#define DISPLAY_CHARSET_HD44780_JAPAN
|
||||
#endif
|
||||
|
|
|
@ -105,6 +105,9 @@
|
|||
#ifndef MSG_MOVE_AXIS
|
||||
#define MSG_MOVE_AXIS "Move axis"
|
||||
#endif
|
||||
#ifndef MSG_LEVEL_BED
|
||||
#define MSG_LEVEL_BED "Level bed"
|
||||
#endif
|
||||
#ifndef MSG_MOVE_X
|
||||
#define MSG_MOVE_X "Move X"
|
||||
#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
|
||||
#define PINS_H
|
||||
|
||||
#include "boards.h"
|
||||
|
||||
// Preset optional pins
|
||||
#define X_MS1_PIN -1
|
||||
#define X_MS2_PIN -1
|
||||
|
|
1158
Marlin/planner.cpp
1158
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 file from any other module.
|
||||
|
||||
#ifndef planner_h
|
||||
#define planner_h
|
||||
#ifndef PLANNER_H
|
||||
#define PLANNER_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
|
||||
// the source g-code and may never actually be reached if acceleration management is active.
|
||||
typedef struct {
|
||||
// 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
|
||||
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
|
||||
|
@ -49,7 +45,7 @@ typedef struct {
|
|||
#endif
|
||||
|
||||
// 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 entry_speed; // Entry speed at previous-current junction 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 fan_speed;
|
||||
#ifdef BARICUDA
|
||||
unsigned long valve_pressure;
|
||||
unsigned long e_to_p_pressure;
|
||||
unsigned long valve_pressure;
|
||||
unsigned long e_to_p_pressure;
|
||||
#endif
|
||||
volatile char busy;
|
||||
} block_t;
|
||||
|
||||
#ifdef ENABLE_AUTO_BED_LEVELING
|
||||
// this holds the required transform to compensate for bed level
|
||||
extern matrix_3x3 plan_bed_level_matrix;
|
||||
#endif // #ifdef ENABLE_AUTO_BED_LEVELING
|
||||
#define BLOCK_MOD(n) ((n)&(BLOCK_BUFFER_SIZE-1))
|
||||
|
||||
// Initialize the motion plan subsystem
|
||||
void plan_init();
|
||||
|
||||
// Add a new linear movement to the buffer. x, y and z is the signed, absolute target position in
|
||||
// millimaters. Feed rate specifies the speed of the motion.
|
||||
void check_axes_activity();
|
||||
|
||||
#ifdef ENABLE_AUTO_BED_LEVELING
|
||||
void plan_buffer_line(float x, float y, float z, const float &e, float feed_rate, const uint8_t &extruder);
|
||||
// Get the number of buffered moves
|
||||
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
|
||||
// Get the position applying the bed level matrix if enabled
|
||||
vector_3 plan_get_position();
|
||||
#endif
|
||||
#if defined(ENABLE_AUTO_BED_LEVELING) || defined(MESH_BED_LEVELING)
|
||||
#if defined(ENABLE_AUTO_BED_LEVELING)
|
||||
#include "vector_3.h"
|
||||
// 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
|
||||
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
|
||||
|
||||
// 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_buffer_line(const float &x, const float &y, const float &z, const float &e, float feed_rate, const uint8_t &extruder);
|
||||
void plan_set_position(const float &x, const float &y, const float &z, const float &e);
|
||||
#endif // ENABLE_AUTO_BED_LEVELING || MESH_BED_LEVELING
|
||||
|
||||
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 float max_feedrate[NUM_AXIS]; // set the max speeds
|
||||
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];
|
||||
|
||||
#ifdef AUTOTEMP
|
||||
extern bool autotemp_enabled;
|
||||
extern float autotemp_max;
|
||||
extern float autotemp_min;
|
||||
extern float autotemp_factor;
|
||||
extern bool autotemp_enabled;
|
||||
extern float autotemp_max;
|
||||
extern float autotemp_min;
|
||||
extern float autotemp_factor;
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
|
||||
extern block_t block_buffer[BLOCK_BUFFER_SIZE]; // A ring buffer for motion instfructions
|
||||
extern block_t block_buffer[BLOCK_BUFFER_SIZE]; // A ring buffer for motion instructions
|
||||
extern volatile unsigned char block_buffer_head; // Index of the next block to be pushed
|
||||
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
|
||||
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
|
||||
void set_extrude_min_temp(float temp);
|
||||
void set_extrude_min_temp(float temp);
|
||||
#endif
|
||||
|
||||
void reset_acceleration_rates();
|
||||
#endif
|
||||
|
||||
#endif //PLANNER_H
|
||||
|
|
|
@ -89,7 +89,7 @@ static bool old_x_min_endstop = false,
|
|||
static bool check_endstops = true;
|
||||
|
||||
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); \
|
||||
X2_DIR_WRITE(v); \
|
||||
} \
|
||||
else{ \
|
||||
if (current_block->active_extruder) \
|
||||
X2_DIR_WRITE(v); \
|
||||
else \
|
||||
X_DIR_WRITE(v); \
|
||||
else { \
|
||||
if (current_block->active_extruder) X2_DIR_WRITE(v); else X_DIR_WRITE(v); \
|
||||
}
|
||||
#define X_APPLY_STEP(v,ALWAYS) \
|
||||
if (extruder_duplication_enabled || ALWAYS) { \
|
||||
|
@ -114,10 +111,7 @@ volatile signed char count_direction[NUM_AXIS] = { 1 };
|
|||
X2_STEP_WRITE(v); \
|
||||
} \
|
||||
else { \
|
||||
if (current_block->active_extruder != 0) \
|
||||
X2_STEP_WRITE(v); \
|
||||
else \
|
||||
X_STEP_WRITE(v); \
|
||||
if (current_block->active_extruder != 0) X2_STEP_WRITE(v); else X_STEP_WRITE(v); \
|
||||
}
|
||||
#else
|
||||
#define X_APPLY_DIR(v,Q) X_DIR_WRITE(v)
|
||||
|
@ -125,16 +119,16 @@ volatile signed char count_direction[NUM_AXIS] = { 1 };
|
|||
#endif
|
||||
|
||||
#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_STEP(v,Q) Y_STEP_WRITE(v), Y2_STEP_WRITE(v)
|
||||
#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); }
|
||||
#else
|
||||
#define Y_APPLY_DIR(v,Q) Y_DIR_WRITE(v)
|
||||
#define Y_APPLY_STEP(v,Q) Y_STEP_WRITE(v)
|
||||
#endif
|
||||
|
||||
#ifdef Z_DUAL_STEPPER_DRIVERS
|
||||
#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_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); }
|
||||
#else
|
||||
#define Z_APPLY_DIR(v,Q) Z_DIR_WRITE(v)
|
||||
#define Z_APPLY_STEP(v,Q) Z_STEP_WRITE(v)
|
||||
|
@ -370,7 +364,7 @@ ISR(TIMER1_COMPA_vect) {
|
|||
step_events_completed = 0;
|
||||
|
||||
#ifdef Z_LATE_ENABLE
|
||||
if (current_block->steps_z > 0) {
|
||||
if (current_block->steps[Z_AXIS] > 0) {
|
||||
enable_z();
|
||||
OCR1A = 2000; //1ms wait
|
||||
return;
|
||||
|
@ -411,7 +405,7 @@ ISR(TIMER1_COMPA_vect) {
|
|||
|
||||
#define UPDATE_ENDSTOP(axis,AXIS,minmax,MINMAX) \
|
||||
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]; \
|
||||
endstop_## axis ##_hit = true; \
|
||||
step_events_completed = current_block->step_event_count; \
|
||||
|
@ -420,54 +414,54 @@ ISR(TIMER1_COMPA_vect) {
|
|||
|
||||
// Check X and Y endstops
|
||||
if (check_endstops) {
|
||||
#ifndef COREXY
|
||||
if (TEST(out_bits, X_AXIS)) // stepping along -X axis (regular cartesians bot)
|
||||
#else
|
||||
#ifdef COREXY
|
||||
// Head direction in -X axis for CoreXY bots.
|
||||
// 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 (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
|
||||
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))
|
||||
#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.
|
||||
// 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 (TEST(out_bits, Y_HEAD))
|
||||
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))
|
||||
#else
|
||||
if (TEST(out_bits, Y_AXIS)) // -direction
|
||||
#endif
|
||||
{ // -direction
|
||||
#if defined(Y_MIN_PIN) && Y_MIN_PIN >= 0
|
||||
UPDATE_ENDSTOP(y, Y, min, MIN);
|
||||
#endif
|
||||
}
|
||||
else { // +direction
|
||||
#if defined(Y_MAX_PIN) && Y_MAX_PIN >= 0
|
||||
UPDATE_ENDSTOP(y, Y, max, MAX);
|
||||
#endif
|
||||
}
|
||||
{ // -direction
|
||||
#if defined(Y_MIN_PIN) && Y_MIN_PIN >= 0
|
||||
UPDATE_ENDSTOP(y, Y, min, MIN);
|
||||
#endif
|
||||
}
|
||||
else { // +direction
|
||||
#if defined(Y_MAX_PIN) && Y_MAX_PIN >= 0
|
||||
UPDATE_ENDSTOP(y, Y, max, MAX);
|
||||
#endif
|
||||
}
|
||||
}
|
||||
|
||||
if (TEST(out_bits, Z_AXIS)) { // -direction
|
||||
|
@ -515,7 +509,7 @@ ISR(TIMER1_COMPA_vect) {
|
|||
#endif
|
||||
|
||||
#ifdef ADVANCE
|
||||
counter_e += current_block->steps_e;
|
||||
counter_e += current_block->steps[E_AXIS];
|
||||
if (counter_e > 0) {
|
||||
counter_e -= current_block->step_event_count;
|
||||
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
|
||||
* lag to allow it work with without needing NOPs
|
||||
*/
|
||||
counter_x += current_block->steps_x;
|
||||
if (counter_x > 0) X_STEP_WRITE(HIGH);
|
||||
counter_y += current_block->steps_y;
|
||||
if (counter_y > 0) Y_STEP_WRITE(HIGH);
|
||||
counter_z += current_block->steps_z;
|
||||
if (counter_z > 0) Z_STEP_WRITE(HIGH);
|
||||
#define STEP_ADD(axis, AXIS) \
|
||||
counter_## axis += current_block->steps[AXIS ##_AXIS]; \
|
||||
if (counter_## axis > 0) { AXIS ##_STEP_WRITE(HIGH); }
|
||||
STEP_ADD(x,X);
|
||||
STEP_ADD(y,Y);
|
||||
STEP_ADD(z,Z);
|
||||
#ifndef ADVANCE
|
||||
counter_e += current_block->steps_e;
|
||||
if (counter_e > 0) E_STEP_WRITE(HIGH);
|
||||
STEP_ADD(e,E);
|
||||
#endif
|
||||
|
||||
#define STEP_IF_COUNTER(axis, AXIS) \
|
||||
|
@ -557,7 +550,7 @@ ISR(TIMER1_COMPA_vect) {
|
|||
#else // !CONFIG_STEPPERS_TOSHIBA
|
||||
|
||||
#define APPLY_MOVEMENT(axis, AXIS) \
|
||||
counter_## axis += current_block->steps_## axis; \
|
||||
counter_## axis += current_block->steps[AXIS ##_AXIS]; \
|
||||
if (counter_## axis > 0) { \
|
||||
AXIS ##_APPLY_STEP(!INVERT_## AXIS ##_STEP_PIN,0); \
|
||||
counter_## axis -= current_block->step_event_count; \
|
||||
|
|
|
@ -41,49 +41,13 @@
|
|||
//================================== 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
|
||||
#define K2 (1.0-K1)
|
||||
#endif
|
||||
|
||||
// Sampling period of the temperature routine
|
||||
#ifdef PID_dT
|
||||
#undef PID_dT
|
||||
#endif
|
||||
#define PID_dT ((OVERSAMPLENR * 12.0)/(F_CPU / 64.0 / 256.0))
|
||||
//===========================================================================
|
||||
//============================= public variables ============================
|
||||
//===========================================================================
|
||||
|
||||
int target_temperature[EXTRUDERS] = { 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_max_bed;
|
||||
#else //PIDTEMPBED
|
||||
static unsigned long previous_millis_bed_heater;
|
||||
static unsigned long previous_millis_bed_heater;
|
||||
#endif //PIDTEMPBED
|
||||
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
|
||||
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 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 bed_minttemp_raw = HEATER_BED_RAW_LO_TEMP; /* No bed mintemp error implemented?!? */
|
||||
#ifdef BED_MAXTEMP
|
||||
|
@ -197,8 +161,8 @@ static float analog2tempBed(int raw);
|
|||
static void updateTemperaturesFromRawValues();
|
||||
|
||||
#ifdef WATCH_TEMP_PERIOD
|
||||
int watch_start_temp[EXTRUDERS] = ARRAY_BY_EXTRUDERS(0,0,0,0);
|
||||
unsigned long watchmillis[EXTRUDERS] = ARRAY_BY_EXTRUDERS(0,0,0,0);
|
||||
int watch_start_temp[EXTRUDERS] = { 0 };
|
||||
unsigned long watchmillis[EXTRUDERS] = { 0 };
|
||||
#endif //WATCH_TEMP_PERIOD
|
||||
|
||||
#ifndef SOFT_PWM_SCALE
|
||||
|
@ -243,7 +207,7 @@ void PID_autotune(float temp, int extruder, int ncycles)
|
|||
SERIAL_ECHOLN(MSG_PID_BAD_EXTRUDER_NUM);
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
SERIAL_ECHOLN(MSG_PID_AUTOTUNE_START);
|
||||
|
||||
disable_heater(); // switch off all heaters.
|
||||
|
@ -391,21 +355,6 @@ int getHeaterPower(int heater) {
|
|||
|
||||
#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)
|
||||
{
|
||||
unsigned char newFanSpeed = (state != 0) ? EXTRUDER_AUTO_FAN_SPEED : 0;
|
||||
|
@ -482,42 +431,8 @@ void checkExtruderAutoFans()
|
|||
#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) {
|
||||
if (!IsStopped()) {
|
||||
SERIAL_ERROR_START;
|
||||
|
@ -661,12 +576,6 @@ void manage_heater() {
|
|||
|
||||
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();
|
||||
|
||||
// Loop through all extruders
|
||||
|
@ -755,8 +664,8 @@ void manage_heater() {
|
|||
#ifdef FILAMENT_SENSOR
|
||||
if (filament_sensor) {
|
||||
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
|
||||
// the nominal filament diameter then square it to get an area
|
||||
meas_shift_index = constrain(meas_shift_index, 0, MAX_MEASUREMENT_DELAY);
|
||||
|
@ -1145,28 +1054,28 @@ void disable_heater() {
|
|||
for (int i=0; i<EXTRUDERS; i++) setTargetHotend(0, i);
|
||||
setTargetBed(0);
|
||||
|
||||
#define DISABLE_HEATER(NR) { \
|
||||
target_temperature[NR] = 0; \
|
||||
soft_pwm[NR] = 0; \
|
||||
WRITE_HEATER_ ## NR (LOW); \
|
||||
}
|
||||
|
||||
#if HAS_TEMP_0
|
||||
target_temperature[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
|
||||
|
||||
#if EXTRUDERS > 1 && HAS_TEMP_1
|
||||
target_temperature[1] = 0;
|
||||
soft_pwm[1] = 0;
|
||||
WRITE_HEATER_1(LOW);
|
||||
DISABLE_HEATER(1);
|
||||
#endif
|
||||
|
||||
#if EXTRUDERS > 2 && HAS_TEMP_2
|
||||
target_temperature[2] = 0;
|
||||
soft_pwm[2] = 0;
|
||||
WRITE_HEATER_2(LOW);
|
||||
DISABLE_HEATER(2);
|
||||
#endif
|
||||
|
||||
#if EXTRUDERS > 3 && HAS_TEMP_3
|
||||
target_temperature[3] = 0;
|
||||
soft_pwm[3] = 0;
|
||||
WRITE_HEATER_3(LOW);
|
||||
DISABLE_HEATER(3);
|
||||
#endif
|
||||
|
||||
#if HAS_TEMP_BED
|
||||
|
@ -1257,12 +1166,15 @@ enum TempState {
|
|||
// Timer 0 is shared with millies
|
||||
//
|
||||
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
|
||||
static unsigned char temp_count = 0;
|
||||
static unsigned long raw_temp_0_value = 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_value[TEMP_SENSOR_COUNT] = { 0 };
|
||||
static unsigned long raw_temp_bed_value = 0;
|
||||
static TempState temp_state = StartupDelay;
|
||||
static unsigned char pwm_count = BIT(SOFT_PWM_SCALE);
|
||||
|
@ -1474,10 +1386,11 @@ ISR(TIMER0_COMPB_vect) {
|
|||
break;
|
||||
case MeasureTemp_0:
|
||||
#if HAS_TEMP_0
|
||||
raw_temp_0_value += ADC;
|
||||
raw_temp_value[0] += ADC;
|
||||
#endif
|
||||
temp_state = PrepareTemp_BED;
|
||||
break;
|
||||
|
||||
case PrepareTemp_BED:
|
||||
#if HAS_TEMP_BED
|
||||
START_ADC(TEMP_BED_PIN);
|
||||
|
@ -1491,6 +1404,7 @@ ISR(TIMER0_COMPB_vect) {
|
|||
#endif
|
||||
temp_state = PrepareTemp_1;
|
||||
break;
|
||||
|
||||
case PrepareTemp_1:
|
||||
#if HAS_TEMP_1
|
||||
START_ADC(TEMP_1_PIN);
|
||||
|
@ -1500,10 +1414,11 @@ ISR(TIMER0_COMPB_vect) {
|
|||
break;
|
||||
case MeasureTemp_1:
|
||||
#if HAS_TEMP_1
|
||||
raw_temp_1_value += ADC;
|
||||
raw_temp_value[1] += ADC;
|
||||
#endif
|
||||
temp_state = PrepareTemp_2;
|
||||
break;
|
||||
|
||||
case PrepareTemp_2:
|
||||
#if HAS_TEMP_2
|
||||
START_ADC(TEMP_2_PIN);
|
||||
|
@ -1513,10 +1428,11 @@ ISR(TIMER0_COMPB_vect) {
|
|||
break;
|
||||
case MeasureTemp_2:
|
||||
#if HAS_TEMP_2
|
||||
raw_temp_2_value += ADC;
|
||||
raw_temp_value[2] += ADC;
|
||||
#endif
|
||||
temp_state = PrepareTemp_3;
|
||||
break;
|
||||
|
||||
case PrepareTemp_3:
|
||||
#if HAS_TEMP_3
|
||||
START_ADC(TEMP_3_PIN);
|
||||
|
@ -1526,10 +1442,11 @@ ISR(TIMER0_COMPB_vect) {
|
|||
break;
|
||||
case MeasureTemp_3:
|
||||
#if HAS_TEMP_3
|
||||
raw_temp_3_value += ADC;
|
||||
raw_temp_value[3] += ADC;
|
||||
#endif
|
||||
temp_state = Prepare_FILWIDTH;
|
||||
break;
|
||||
|
||||
case Prepare_FILWIDTH:
|
||||
#if HAS_FILAMENT_SENSOR
|
||||
START_ADC(FILWIDTH_PIN);
|
||||
|
@ -1548,6 +1465,7 @@ ISR(TIMER0_COMPB_vect) {
|
|||
temp_state = PrepareTemp_0;
|
||||
temp_count++;
|
||||
break;
|
||||
|
||||
case StartupDelay:
|
||||
temp_state = PrepareTemp_0;
|
||||
break;
|
||||
|
@ -1557,23 +1475,23 @@ ISR(TIMER0_COMPB_vect) {
|
|||
// SERIAL_ERRORLNPGM("Temp measurement error!");
|
||||
// break;
|
||||
} // switch(temp_state)
|
||||
|
||||
|
||||
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.
|
||||
#ifndef HEATER_0_USES_MAX6675
|
||||
current_temperature_raw[0] = raw_temp_0_value;
|
||||
current_temperature_raw[0] = raw_temp_value[0];
|
||||
#endif
|
||||
#if EXTRUDERS > 1
|
||||
current_temperature_raw[1] = raw_temp_1_value;
|
||||
current_temperature_raw[1] = raw_temp_value[1];
|
||||
#if EXTRUDERS > 2
|
||||
current_temperature_raw[2] = raw_temp_2_value;
|
||||
current_temperature_raw[2] = raw_temp_value[2];
|
||||
#if EXTRUDERS > 3
|
||||
current_temperature_raw[3] = raw_temp_3_value;
|
||||
current_temperature_raw[3] = raw_temp_value[3];
|
||||
#endif
|
||||
#endif
|
||||
#endif
|
||||
#ifdef TEMP_SENSOR_1_AS_REDUNDANT
|
||||
redundant_temperature_raw = raw_temp_1_value;
|
||||
redundant_temperature_raw = raw_temp_value[1];
|
||||
#endif
|
||||
current_temperature_bed_raw = raw_temp_bed_value;
|
||||
} //!temp_meas_ready
|
||||
|
@ -1582,34 +1500,69 @@ ISR(TIMER0_COMPB_vect) {
|
|||
#if HAS_FILAMENT_SENSOR
|
||||
current_raw_filwidth = raw_filwidth_value >> 10; // Divide to get to 0-16384 range since we used 1/128 IIR filter approach
|
||||
#endif
|
||||
|
||||
|
||||
temp_meas_ready = true;
|
||||
temp_count = 0;
|
||||
raw_temp_0_value = 0;
|
||||
raw_temp_1_value = 0;
|
||||
raw_temp_2_value = 0;
|
||||
raw_temp_3_value = 0;
|
||||
for (int i = 0; i < TEMP_SENSOR_COUNT; i++) raw_temp_value[i] = 0;
|
||||
raw_temp_bed_value = 0;
|
||||
|
||||
#if HEATER_0_RAW_LO_TEMP > HEATER_0_RAW_HI_TEMP
|
||||
#define MAXTEST <=
|
||||
#define MINTEST >=
|
||||
#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);
|
||||
#else
|
||||
#define MAXTEST >=
|
||||
#define MINTEST <=
|
||||
#if HEATER_0_RAW_LO_TEMP > HEATER_0_RAW_HI_TEMP
|
||||
#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
|
||||
|
||||
for (int i=0; i<EXTRUDERS; i++) {
|
||||
if (current_temperature_raw[i] MAXTEST maxttemp_raw[i]) max_temp_error(i);
|
||||
else if (current_temperature_raw[i] MINTEST minttemp_raw[i]) min_temp_error(i);
|
||||
}
|
||||
/* No bed MINTEMP error? */
|
||||
#if EXTRUDERS > 1
|
||||
#if HEATER_1_RAW_LO_TEMP > HEATER_1_RAW_HI_TEMP
|
||||
#define GE1 <=
|
||||
#else
|
||||
#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 (current_temperature_bed_raw MAXTEST bed_maxttemp_raw) {
|
||||
target_temperature_bed = 0;
|
||||
bed_max_temp_error();
|
||||
}
|
||||
#if HEATER_BED_RAW_LO_TEMP > HEATER_BED_RAW_HI_TEMP
|
||||
#define GEBED <=
|
||||
#else
|
||||
#define GEBED >=
|
||||
#endif
|
||||
if (current_temperature_bed_raw GEBED bed_maxttemp_raw) {
|
||||
target_temperature_bed = 0;
|
||||
bed_max_temp_error();
|
||||
}
|
||||
#endif
|
||||
|
||||
} // temp_count >= OVERSAMPLENR
|
||||
|
||||
#ifdef BABYSTEPPING
|
||||
|
|
|
@ -1,4 +1,3 @@
|
|||
#include "temperature.h"
|
||||
#include "ultralcd.h"
|
||||
#ifdef ULTRA_LCD
|
||||
#include "Marlin.h"
|
||||
|
@ -70,6 +69,13 @@ static void lcd_sdcard_menu();
|
|||
static void lcd_delta_calibrate_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
|
||||
|
||||
/* 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)
|
||||
#endif //!ENCODER_RATE_MULTIPLIER
|
||||
#define END_MENU() \
|
||||
if (encoderPosition / ENCODER_STEPS_PER_MENU_ITEM >= _menuItemNr) encoderPosition = _menuItemNr * ENCODER_STEPS_PER_MENU_ITEM - 1; \
|
||||
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 >= _menuItemNr) encoderPosition = _menuItemNr * ENCODER_STEPS_PER_MENU_ITEM - 1; encoderLine = encoderPosition / ENCODER_STEPS_PER_MENU_ITEM;\
|
||||
if (encoderLine >= currentMenuViewOffset + LCD_HEIGHT) { currentMenuViewOffset = encoderLine - LCD_HEIGHT + 1; lcdDrawUpdate = 1; _lineNr = currentMenuViewOffset - 1; _drawLineNr = -1; } \
|
||||
} } while(0)
|
||||
|
||||
/** Used variables to keep track of the menu */
|
||||
|
@ -430,7 +436,7 @@ static void lcd_main_menu() {
|
|||
void lcd_set_home_offsets() {
|
||||
for(int8_t i=0; i < NUM_AXIS; i++) {
|
||||
if (i != E_AXIS) {
|
||||
add_homing[i] -= current_position[i];
|
||||
home_offset[i] -= current_position[i];
|
||||
current_position[i] = 0.0;
|
||||
}
|
||||
}
|
||||
|
@ -630,6 +636,10 @@ static void lcd_prepare_menu() {
|
|||
}
|
||||
#endif
|
||||
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();
|
||||
}
|
||||
|
@ -901,9 +911,9 @@ static void lcd_control_motion_menu() {
|
|||
START_MENU();
|
||||
MENU_ITEM(back, MSG_CONTROL, lcd_control_menu);
|
||||
#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
|
||||
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(float52, MSG_VZ_JERK, &max_z_jerk, 0.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_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_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(float5, MSG_A_RETRACT, &retract_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_LD,HIGH);
|
||||
WRITE(SHIFT_EN,LOW);
|
||||
#else
|
||||
#ifdef ULTIPANEL
|
||||
#error ULTIPANEL requires an encoder
|
||||
#endif
|
||||
#endif // SR_LCD_2W_NL
|
||||
#endif//!NEWPANEL
|
||||
|
||||
|
@ -1341,7 +1347,12 @@ void lcd_update() {
|
|||
#endif
|
||||
|
||||
#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();
|
||||
lcdDrawUpdate = 2;
|
||||
}
|
||||
|
@ -1760,4 +1771,75 @@ char *ftostr52(const float &x)
|
|||
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
|
||||
|
|
|
@ -14,10 +14,10 @@
|
|||
void lcd_reset_alert_level();
|
||||
bool lcd_detected(void);
|
||||
|
||||
#ifdef DOGLCD
|
||||
extern int lcd_contrast;
|
||||
void lcd_setcontrast(uint8_t value);
|
||||
#endif
|
||||
#ifdef DOGLCD
|
||||
extern int lcd_contrast;
|
||||
void lcd_setcontrast(uint8_t value);
|
||||
#endif
|
||||
|
||||
static unsigned char blink = 0; // Variable for visualization of fan rotation in GLCD
|
||||
|
||||
|
@ -28,27 +28,26 @@
|
|||
#define LCD_TIMEOUT_TO_STATUS 15000
|
||||
|
||||
#ifdef ULTIPANEL
|
||||
void lcd_buttons_update();
|
||||
extern volatile uint8_t buttons; //the last checked buttons in a bit array.
|
||||
#ifdef REPRAPWORLD_KEYPAD
|
||||
extern volatile uint8_t buttons_reprapworld_keypad; // to store the keypad shift register values
|
||||
#endif
|
||||
void lcd_buttons_update();
|
||||
extern volatile uint8_t buttons; //the last checked buttons in a bit array.
|
||||
#ifdef REPRAPWORLD_KEYPAD
|
||||
extern volatile uint8_t buttons_reprapworld_keypad; // to store the keypad shift register values
|
||||
#endif
|
||||
#else
|
||||
FORCE_INLINE void lcd_buttons_update() {}
|
||||
FORCE_INLINE void lcd_buttons_update() {}
|
||||
#endif
|
||||
|
||||
extern int plaPreheatHotendTemp;
|
||||
extern int plaPreheatHPBTemp;
|
||||
extern int plaPreheatFanSpeed;
|
||||
|
||||
extern int absPreheatHotendTemp;
|
||||
extern int absPreheatHPBTemp;
|
||||
extern int absPreheatFanSpeed;
|
||||
|
||||
|
||||
extern bool cancel_heatup;
|
||||
|
||||
#ifdef FILAMENT_LCD_DISPLAY
|
||||
extern unsigned long message_millis;
|
||||
extern unsigned long message_millis;
|
||||
#endif
|
||||
|
||||
void lcd_buzz(long duration,uint16_t freq);
|
||||
|
|
Loading…
Reference in a new issue