From 670006b919a3a26a7262e1bcda0929eebae70a94 Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Thu, 19 Mar 2015 22:22:23 -0700 Subject: [PATCH] Remove invariant code from Configurations - Add `Conditionals.h` with calculated configuration values - Add `SanityCheck.h` with checks for configuration errors - Remove equivalent code from all configurations - Move error checks from some sources to `SanityCheck.h` also - Fix initialization of count_direction in stepper.cpp --- Marlin/Conditionals.h | 392 +++++++++++++ Marlin/Configuration.h | 155 +---- Marlin/Configuration_adv.h | 203 +------ Marlin/Marlin_main.cpp | 102 +--- Marlin/SanityCheck.h | 261 +++++++++ Marlin/configurator/config/Configuration.h | 179 +----- .../configurator/config/Configuration_adv.h | 207 +------ .../Felix/Configuration.h | 190 +----- .../Felix/Configuration_DUAL.h | 185 +----- .../Felix/Configuration_adv.h | 541 ------------------ .../Hephestos/Configuration.h | 173 +----- .../Hephestos/Configuration_adv.h | 541 ------------------ .../K8200/Configuration.h | 173 +----- .../K8200/Configuration_adv.h | 203 +------ .../SCARA/Configuration.h | 173 +----- .../SCARA/Configuration_adv.h | 194 +------ .../WITBOX/Configuration.h | 173 +----- .../WITBOX/Configuration_adv.h | 197 +------ .../delta/generic/Configuration.h | 173 +----- .../delta/generic/Configuration_adv.h | 207 +------ .../delta/kossel_mini/Configuration.h | 173 +----- .../delta/kossel_mini/Configuration_adv.h | 207 +------ .../makibox/Configuration.h | 173 +----- .../makibox/Configuration_adv.h | 186 +----- .../tvrrug/Round2/Configuration.h | 173 +----- .../tvrrug/Round2/Configuration_adv.h | 184 +----- Marlin/language.h | 2 - Marlin/stepper.cpp | 2 +- Marlin/temperature.cpp | 91 +-- Marlin/ultralcd.cpp | 4 - 30 files changed, 937 insertions(+), 4880 deletions(-) create mode 100644 Marlin/Conditionals.h create mode 100644 Marlin/SanityCheck.h delete mode 100644 Marlin/example_configurations/Felix/Configuration_adv.h delete mode 100644 Marlin/example_configurations/Hephestos/Configuration_adv.h diff --git a/Marlin/Conditionals.h b/Marlin/Conditionals.h new file mode 100644 index 000000000..6e62bf7ee --- /dev/null +++ b/Marlin/Conditionals.h @@ -0,0 +1,392 @@ +/** + * Conditionals.h + * Defines that depend on configuration but are not editable. + */ +#ifndef CONDITIONALS_H + #define CONDITIONALS_H + + #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 + + + /** + * LCD Controllers + */ + + #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 + + #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 NEWPANEL + #define ULTIPANEL + #endif + + #ifdef 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 + */ + + #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 + #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 + #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 + + #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 + */ + #if defined(DOGLCD) && !defined(DEFAULT_LCD_CONTRAST) + #define DEFAULT_LCD_CONTRAST 32 + #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 //CONDITIONALS_H diff --git a/Marlin/Configuration.h b/Marlin/Configuration.h index 1778fc28f..3c5d92dee 100644 --- a/Marlin/Configuration.h +++ b/Marlin/Configuration.h @@ -358,10 +358,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 ====================== //=========================================================================== @@ -611,112 +607,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 // --------------------- @@ -724,51 +625,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. @@ -780,6 +640,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 @@ -849,6 +714,8 @@ const bool Z_MAX_ENDSTOP_INVERTING = false; // set to true to invert the logic o #include "Configuration_adv.h" +#include "Conditionals.h" +#include "SanityCheck.h" #include "thermistortables.h" -#endif //__CONFIGURATION_H +#endif //CONFIGURATION_H diff --git a/Marlin/Configuration_adv.h b/Marlin/Configuration_adv.h index 2c8e5ea48..42cf4d28b 100644 --- a/Marlin/Configuration_adv.h +++ b/Marlin/Configuration_adv.h @@ -89,54 +89,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 +98,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,11 +156,7 @@ //#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 @@ -237,7 +171,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} // set the speeds for manual moves (mm/min) #endif //Comment to disable setting feedrate multiplier via encoder @@ -261,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] @@ -313,12 +240,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 +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) @@ -365,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: @@ -385,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 @@ -456,13 +343,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 +476,4 @@ const unsigned int dropsegments=5; //everything with less than this number of st #endif - -//=========================================================================== -//============================= 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 diff --git a/Marlin/Marlin_main.cpp b/Marlin/Marlin_main.cpp index 15f12bbc0..08f7f9297 100644 --- a/Marlin/Marlin_main.cpp +++ b/Marlin/Marlin_main.cpp @@ -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" @@ -963,43 +960,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; - -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; -} + #define DXC_FULL_CONTROL_MODE 0 + #define DXC_AUTO_PARK_MODE 1 + #define DXC_DUPLICATION_MODE 2 -static int x_home_dir(int extruder) { - return (extruder == 0) ? X_HOME_DIR : X2_HOME_DIR; -} + static int dual_x_carriage_mode = DEFAULT_DUAL_X_CARRIAGE_MODE; + + 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) { @@ -1959,44 +1949,6 @@ inline void gcode_G28() { #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. diff --git a/Marlin/SanityCheck.h b/Marlin/SanityCheck.h new file mode 100644 index 000000000..cad6353ae --- /dev/null +++ b/Marlin/SanityCheck.h @@ -0,0 +1,261 @@ +/** + * 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 + + /** + * Auto Bed Leveling and Delta + */ + #if defined(ENABLE_AUTO_BED_LEVELING) && defined(DELTA) + #error Bed Auto Leveling is still not compatible with Delta Kinematics. + #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 + */ + #if defined(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 diff --git a/Marlin/configurator/config/Configuration.h b/Marlin/configurator/config/Configuration.h index 89bfe5c18..04de471cd 100644 --- a/Marlin/configurator/config/Configuration.h +++ b/Marlin/configurator/config/Configuration.h @@ -328,15 +328,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. @@ -403,12 +394,15 @@ 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 - -#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. //=========================================================================== //============================= Bed Auto Leveling =========================== @@ -654,114 +648,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 // --------------------- @@ -769,55 +666,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. @@ -829,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 @@ -898,6 +757,8 @@ const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of #include "Configuration_adv.h" +#include "Conditionals.h" +#include "SanityCheck.h" #include "thermistortables.h" -#endif //__CONFIGURATION_H +#endif //CONFIGURATION_H diff --git a/Marlin/configurator/config/Configuration_adv.h b/Marlin/configurator/config/Configuration_adv.h index 00722c142..24243a48d 100644 --- a/Marlin/configurator/config/Configuration_adv.h +++ b/Marlin/configurator/config/Configuration_adv.h @@ -99,56 +99,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 +110,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 +172,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. @@ -262,12 +190,12 @@ // 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} // set the speeds for manual moves (mm/min) #endif //Comment to disable setting feedrate multiplier via encoder #ifdef ULTIPANEL - #define ULTIPANEL_FEEDMULTIPLY + #define ULTIPANEL_FEEDMULTIPLY #endif // @section extras @@ -288,13 +216,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 +263,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 +288,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 +323,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. @@ -497,88 +380,4 @@ 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 ============================ -//=========================================================================== - -// @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 diff --git a/Marlin/example_configurations/Felix/Configuration.h b/Marlin/example_configurations/Felix/Configuration.h index 12a82f589..03a09c6db 100644 --- a/Marlin/example_configurations/Felix/Configuration.h +++ b/Marlin/example_configurations/Felix/Configuration.h @@ -294,15 +294,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. @@ -351,10 +342,15 @@ 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. //=========================================================================== //============================= Bed Auto Leveling =========================== @@ -455,29 +451,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 @@ -613,112 +586,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 // --------------------- @@ -726,42 +604,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 @@ -846,7 +688,13 @@ const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of //#define FILAMENT_LCD_DISPLAY + + + + #include "Configuration_adv.h" +#include "Conditionals.h" +#include "SanityCheck.h" #include "thermistortables.h" -#endif //__CONFIGURATION_H +#endif //CONFIGURATION_H diff --git a/Marlin/example_configurations/Felix/Configuration_DUAL.h b/Marlin/example_configurations/Felix/Configuration_DUAL.h index 9b1f10263..37c797882 100644 --- a/Marlin/example_configurations/Felix/Configuration_DUAL.h +++ b/Marlin/example_configurations/Felix/Configuration_DUAL.h @@ -294,15 +294,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. @@ -351,10 +342,15 @@ 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. //=========================================================================== //============================= Bed Auto Leveling =========================== @@ -455,29 +451,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 @@ -613,112 +586,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 // --------------------- @@ -726,42 +604,7 @@ 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 @@ -847,6 +690,8 @@ const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of #include "Configuration_adv.h" +#include "Conditionals.h" +#include "SanityCheck.h" #include "thermistortables.h" -#endif //__CONFIGURATION_H +#endif //CONFIGURATION_H diff --git a/Marlin/example_configurations/Felix/Configuration_adv.h b/Marlin/example_configurations/Felix/Configuration_adv.h deleted file mode 100644 index f3d758d49..000000000 --- a/Marlin/example_configurations/Felix/Configuration_adv.h +++ /dev/null @@ -1,541 +0,0 @@ -#ifndef CONFIGURATION_ADV_H -#define CONFIGURATION_ADV_H - -//=========================================================================== -//=============================Thermal Settings ============================ -//=========================================================================== - -#ifdef BED_LIMIT_SWITCHING - #define BED_HYSTERESIS 2 //only disable heating if T>target+BED_HYSTERESIS and enable heating if T>target-BED_HYSTERESIS -#endif -#define BED_CHECK_INTERVAL 5000 //ms between checks in bang-bang control - -//// Heating sanity check: -// This waits for the watch period in milliseconds whenever an M104 or M109 increases the target temperature -// If the temperature has not increased at the end of that period, the target temperature is set to zero. -// It can be reset with another M104/M109. This check is also only triggered if the target temperature and the current temperature -// differ by at least 2x WATCH_TEMP_INCREASE -//#define WATCH_TEMP_PERIOD 40000 //40 seconds -//#define WATCH_TEMP_INCREASE 10 //Heat up at least 10 degree in 20 seconds - -#ifdef PIDTEMP - // this adds an experimental additional term to the heating power, proportional to the extrusion speed. - // if Kc is chosen well, the additional required power due to increased melting should be compensated. - #define PID_ADD_EXTRUSION_RATE - #ifdef PID_ADD_EXTRUSION_RATE - #define DEFAULT_Kc (1) //heating power=Kc*(e_speed) - #endif -#endif - - -//automatic temperature: The hot end target temperature is calculated by all the buffered lines of gcode. -//The maximum buffered steps/sec of the extruder motor are called "se". -//You enter the autotemp mode by a M109 S B F -// the target temperature is set to mintemp+factor*se[steps/sec] and limited by mintemp and maxtemp -// you exit the value by any M109 without F* -// Also, if the temperature is set to a value -// 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 - -// 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 - -#endif //DUAL_X_CARRIAGE - -//homing hits the endstop, then retracts by this distance, before it tries to slowly bump again: -#define X_HOME_RETRACT_MM 5 -#define Y_HOME_RETRACT_MM 5 -#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. - -#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. -#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 -#endif - -// minimum time in microseconds that a movement needs to take if the buffer is emptied. -#define DEFAULT_MINSEGMENTTIME 20000 - -// If defined the movements slow down when the look ahead buffer is only half full -#define SLOWDOWN - -// Frequency limit -// See nophead's blog for more info -// Not working O -//#define XY_FREQUENCY_LIMIT 15 - -// Minimum planner junction speed. Sets the default minimum speed the planner plans for at the end -// of the buffer and all stops. This should not be much greater than zero and should only be changed -// 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] - -// Motor Current setting (Only functional when motor driver current ref pins are connected to a digital trimpot on supported boards) -#define DIGIPOT_MOTOR_CURRENT {135,135,135,135,135} // Values 0-255 (RAMBO 135 = ~0.75A, 185 = ~1A) - -// uncomment to enable an I2C based DIGIPOT like on the Azteeg X3 Pro -//#define DIGIPOT_I2C -// Number of channels available for I2C digipot, For Azteeg X3 Pro we have 8 -#define DIGIPOT_I2C_NUM_CHANNELS 8 -// actual motor currents in Amps, need as many here as DIGIPOT_I2C_NUM_CHANNELS -#define DIGIPOT_I2C_MOTOR_CURRENTS {1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0} - -//=========================================================================== -//=============================Additional Features=========================== -//=========================================================================== - -#define ENCODER_RATE_MULTIPLIER // If defined, certain menu edit operations automatically multiply the steps when the encoder is moved quickly -#define ENCODER_10X_STEPS_PER_SEC 75 // If the encoder steps per sec exceed this value, multiple the steps moved by ten to quickly advance the value -#define ENCODER_100X_STEPS_PER_SEC 160 // If the encoder steps per sec exceed this value, multiple the steps moved by 100 to really quickly advance the value -//#define ENCODER_RATE_MULTIPLIER_DEBUG // If defined, output the encoder steps per second value - -//#define CHDK 4 //Pin for triggering CHDK to take a picture see how to use it here http://captain-slow.dk/2014/03/09/3d-printing-timelapses/ -#define CHDK_DELAY 50 //How long in ms the pin should stay HIGH before going LOW again - -#define SD_FINISHED_STEPPERRELEASE true //if sd support and the file is finished: disable steppers? -#define SD_FINISHED_RELEASECOMMAND "M84 X Y Z E" // You might want to keep the z enabled so your bed stays in place. - -#define SDCARD_RATHERRECENTFIRST //reverse file order of sd card menu display. Its sorted practically after the file system block order. -// if a file is deleted, it frees a block. hence, the order is not purely chronological. To still have auto0.g accessible, there is again the option to do that. -// using: -//#define MENU_ADDAUTOSTART - -// Show a progress bar on HD44780 LCDs for SD printing -//#define LCD_PROGRESS_BAR - -#ifdef LCD_PROGRESS_BAR - // Amount of time (ms) to show the bar - #define PROGRESS_BAR_BAR_TIME 2000 - // Amount of time (ms) to show the status message - #define PROGRESS_BAR_MSG_TIME 3000 - // Amount of time (ms) to retain the status message (0=forever) - #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. -//#define USE_WATCHDOG - -#ifdef USE_WATCHDOG -// If you have a watchdog reboot in an ArduinoMega2560 then the device will hang forever, as a watchdog reset will leave the watchdog on. -// The "WATCHDOG_RESET_MANUAL" goes around this by not using the hardware reset. -// However, THIS FEATURE IS UNSAFE!, as it will only work if interrupts are disabled. And the code could hang in an interrupt routine with interrupts disabled. -//#define WATCHDOG_RESET_MANUAL -#endif - -// Enable the option to stop SD printing when hitting and endstops, needs to be enabled from the LCD menu when this option is enabled. -//#define ABORT_ON_ENDSTOP_HIT_FEATURE_ENABLED - -// Babystepping enables the user to control the axis in tiny amounts, independently from the normal printing process -// it can e.g. be used to change z-positions in the print startup phase in real-time -// does not respect endstops! -//#define BABYSTEPPING -#ifdef BABYSTEPPING - #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) -// -// advance (steps) = STEPS_PER_CUBIC_MM_E * EXTRUDER_ADVANCE_K * cubic mm per second ^ 2 -// -// Hooke's law says: force = k * distance -// Bernoulli's principle says: v ^ 2 / 2 + g . h + pressure / density = constant -// so: v ^ 2 is proportional to number of steps we advance the extruder -//#define ADVANCE - -#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: -#define MM_PER_ARC_SEGMENT 1 -#define N_ARC_CORRECTION 25 - -const unsigned int dropsegments=5; //everything with less than this number of steps will be ignored as move and joined with the next movement - -// If you are using a RAMPS board or cheap E-bay purchased boards that do not detect when an SD card is inserted -// You can get round this by connecting a push button or single throw switch to the pin defined as SDCARDCARDDETECT -// in the pins.h file. When using a push button pulling the pin to ground this will need inverted. This setting should -// 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 - -//=========================================================================== -//=============================Buffers ============================ -//=========================================================================== - -// 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 - #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 -#endif - - -//The ASCII buffer for receiving from the serial: -#define MAX_CMD_SIZE 96 -#define BUFSIZE 4 - - -// Firmware based and LCD controlled retract -// M207 and M208 can be used to define parameters for the retraction. -// The retraction can be called by the slicer using G10 and G11 -// until then, intended retractions can be detected by moves that only extrude and the direction. -// the moves are than replaced by the firmware controlled ones. - -// #define FWRETRACT //ONLY PARTIALLY TESTED -#ifdef FWRETRACT - #define MIN_RETRACT 0.1 //minimum extruded mm to accept a automatic gcode retraction attempt - #define RETRACT_LENGTH 3 //default retract length (positive mm) - #define RETRACT_LENGTH_SWAP 13 //default swap retract length (positive mm), for extruder change - #define RETRACT_FEEDRATE 45 //default feedrate for retracting (mm/s) - #define RETRACT_ZLIFT 0 //default retract Z-lift - #define RETRACT_RECOVER_LENGTH 0 //default additional recover length (mm, added to retract length when recovering) - #define RETRACT_RECOVER_LENGTH_SWAP 0 //default additional swap recover length (mm, added to retract length when recovering from extruder change) - #define RETRACT_RECOVER_FEEDRATE 8 //default feedrate for recovering from retraction (mm/s) -#endif - -//adds support for experimental filament exchange support M600; requires display -#ifdef ULTIPANEL - #define FILAMENTCHANGEENABLE - #ifdef FILAMENTCHANGEENABLE - #define FILAMENTCHANGE_XPOS 3 - #define FILAMENTCHANGE_YPOS 3 - #define FILAMENTCHANGE_ZADD 10 - #define FILAMENTCHANGE_FIRSTRETRACT -2 - #define FILAMENTCHANGE_FINALRETRACT -100 - #endif -#endif - -#ifdef FILAMENTCHANGEENABLE - #ifdef EXTRUDER_RUNOUT_PREVENT - #error EXTRUDER_RUNOUT_PREVENT currently incompatible with FILAMENTCHANGE - #endif -#endif - -//=========================================================================== -//============================= 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 diff --git a/Marlin/example_configurations/Hephestos/Configuration.h b/Marlin/example_configurations/Hephestos/Configuration.h index 3ec047bb7..481ece7bb 100644 --- a/Marlin/example_configurations/Hephestos/Configuration.h +++ b/Marlin/example_configurations/Hephestos/Configuration.h @@ -320,15 +320,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. @@ -377,10 +368,15 @@ 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. //=========================================================================== //============================= Bed Auto Leveling =========================== @@ -618,112 +614,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 // --------------------- @@ -731,51 +632,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. @@ -787,6 +647,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 @@ -856,6 +721,8 @@ const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of #include "Configuration_adv.h" +#include "Conditionals.h" +#include "SanityCheck.h" #include "thermistortables.h" -#endif //__CONFIGURATION_H +#endif //CONFIGURATION_H diff --git a/Marlin/example_configurations/Hephestos/Configuration_adv.h b/Marlin/example_configurations/Hephestos/Configuration_adv.h deleted file mode 100644 index cf18b9585..000000000 --- a/Marlin/example_configurations/Hephestos/Configuration_adv.h +++ /dev/null @@ -1,541 +0,0 @@ -#ifndef CONFIGURATION_ADV_H -#define CONFIGURATION_ADV_H - -//=========================================================================== -//=============================Thermal Settings ============================ -//=========================================================================== - -#ifdef BED_LIMIT_SWITCHING - #define BED_HYSTERESIS 2 //only disable heating if T>target+BED_HYSTERESIS and enable heating if T>target-BED_HYSTERESIS -#endif -#define BED_CHECK_INTERVAL 5000 //ms between checks in bang-bang control - -//// Heating sanity check: -// This waits for the watch period in milliseconds whenever an M104 or M109 increases the target temperature -// If the temperature has not increased at the end of that period, the target temperature is set to zero. -// It can be reset with another M104/M109. This check is also only triggered if the target temperature and the current temperature -// differ by at least 2x WATCH_TEMP_INCREASE -//#define WATCH_TEMP_PERIOD 40000 //40 seconds -//#define WATCH_TEMP_INCREASE 10 //Heat up at least 10 degree in 20 seconds - -#ifdef PIDTEMP - // this adds an experimental additional term to the heating power, proportional to the extrusion speed. - // if Kc is chosen well, the additional required power due to increased melting should be compensated. - #define PID_ADD_EXTRUSION_RATE - #ifdef PID_ADD_EXTRUSION_RATE - #define DEFAULT_Kc (1) //heating power=Kc*(e_speed) - #endif -#endif - - -//automatic temperature: The hot end target temperature is calculated by all the buffered lines of gcode. -//The maximum buffered steps/sec of the extruder motor are called "se". -//You enter the autotemp mode by a M109 S B F -// the target temperature is set to mintemp+factor*se[steps/sec] and limited by mintemp and maxtemp -// you exit the value by any M109 without F* -// Also, if the temperature is set to a value -// 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 - -// 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 - -#endif //DUAL_X_CARRIAGE - -//homing hits the endstop, then retracts by this distance, before it tries to slowly bump again: -#define X_HOME_RETRACT_MM 5 -#define Y_HOME_RETRACT_MM 5 -#define Z_HOME_RETRACT_MM 2 -#define HOMING_BUMP_DIVISOR {10, 10, 20} // Re-Bump Speed Divisor (Divides the Homing Feedrate) -//#define QUICK_HOME //if this is defined, if both x and y are to be homed, a diagonal move will be performed initially. - -#define 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. -#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 -#endif - -// minimum time in microseconds that a movement needs to take if the buffer is emptied. -#define DEFAULT_MINSEGMENTTIME 20000 - -// If defined the movements slow down when the look ahead buffer is only half full -#define SLOWDOWN - -// Frequency limit -// See nophead's blog for more info -// Not working O -//#define XY_FREQUENCY_LIMIT 15 - -// Minimum planner junction speed. Sets the default minimum speed the planner plans for at the end -// of the buffer and all stops. This should not be much greater than zero and should only be changed -// 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] - -// Motor Current setting (Only functional when motor driver current ref pins are connected to a digital trimpot on supported boards) -#define DIGIPOT_MOTOR_CURRENT {135,135,135,135,135} // Values 0-255 (RAMBO 135 = ~0.75A, 185 = ~1A) - -// uncomment to enable an I2C based DIGIPOT like on the Azteeg X3 Pro -//#define DIGIPOT_I2C -// Number of channels available for I2C digipot, For Azteeg X3 Pro we have 8 -#define DIGIPOT_I2C_NUM_CHANNELS 8 -// actual motor currents in Amps, need as many here as DIGIPOT_I2C_NUM_CHANNELS -#define DIGIPOT_I2C_MOTOR_CURRENTS {1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0} - -//=========================================================================== -//=============================Additional Features=========================== -//=========================================================================== - -#define ENCODER_RATE_MULTIPLIER // If defined, certain menu edit operations automatically multiply the steps when the encoder is moved quickly -#define ENCODER_10X_STEPS_PER_SEC 75 // If the encoder steps per sec exceed this value, multiple the steps moved by ten to quickly advance the value -#define ENCODER_100X_STEPS_PER_SEC 160 // If the encoder steps per sec exceed this value, multiple the steps moved by 100 to really quickly advance the value -//#define ENCODER_RATE_MULTIPLIER_DEBUG // If defined, output the encoder steps per second value - -//#define CHDK 4 //Pin for triggering CHDK to take a picture see how to use it here http://captain-slow.dk/2014/03/09/3d-printing-timelapses/ -#define CHDK_DELAY 50 //How long in ms the pin should stay HIGH before going LOW again - -#define SD_FINISHED_STEPPERRELEASE true //if sd support and the file is finished: disable steppers? -#define SD_FINISHED_RELEASECOMMAND "M84 X Y Z E" // You might want to keep the z enabled so your bed stays in place. - -#define SDCARD_RATHERRECENTFIRST //reverse file order of sd card menu display. Its sorted practically after the file system block order. -// if a file is deleted, it frees a block. hence, the order is not purely chronological. To still have auto0.g accessible, there is again the option to do that. -// using: -#define MENU_ADDAUTOSTART - -// Show a progress bar on HD44780 LCDs for SD printing -//#define LCD_PROGRESS_BAR - -#ifdef LCD_PROGRESS_BAR - // Amount of time (ms) to show the bar - #define PROGRESS_BAR_BAR_TIME 2000 - // Amount of time (ms) to show the status message - #define PROGRESS_BAR_MSG_TIME 3000 - // Amount of time (ms) to retain the status message (0=forever) - #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. -//#define USE_WATCHDOG - -#ifdef USE_WATCHDOG -// If you have a watchdog reboot in an ArduinoMega2560 then the device will hang forever, as a watchdog reset will leave the watchdog on. -// The "WATCHDOG_RESET_MANUAL" goes around this by not using the hardware reset. -// However, THIS FEATURE IS UNSAFE!, as it will only work if interrupts are disabled. And the code could hang in an interrupt routine with interrupts disabled. -//#define WATCHDOG_RESET_MANUAL -#endif - -// Enable the option to stop SD printing when hitting and endstops, needs to be enabled from the LCD menu when this option is enabled. -//#define ABORT_ON_ENDSTOP_HIT_FEATURE_ENABLED - -// Babystepping enables the user to control the axis in tiny amounts, independently from the normal printing process -// it can e.g. be used to change z-positions in the print startup phase in real-time -// does not respect endstops! -//#define BABYSTEPPING -#ifdef BABYSTEPPING - #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) -// -// advance (steps) = STEPS_PER_CUBIC_MM_E * EXTRUDER_ADVANCE_K * cubic mm per second ^ 2 -// -// Hooke's law says: force = k * distance -// Bernoulli's principle says: v ^ 2 / 2 + g . h + pressure / density = constant -// so: v ^ 2 is proportional to number of steps we advance the extruder -//#define ADVANCE - -#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: -#define MM_PER_ARC_SEGMENT 1 -#define N_ARC_CORRECTION 25 - -const unsigned int dropsegments=5; //everything with less than this number of steps will be ignored as move and joined with the next movement - -// If you are using a RAMPS board or cheap E-bay purchased boards that do not detect when an SD card is inserted -// You can get round this by connecting a push button or single throw switch to the pin defined as SDCARDCARDDETECT -// in the pins.h file. When using a push button pulling the pin to ground this will need inverted. This setting should -// 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 - -//=========================================================================== -//=============================Buffers ============================ -//=========================================================================== - -// 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 - #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 -#endif - - -//The ASCII buffer for receiving from the serial: -#define MAX_CMD_SIZE 96 -#define BUFSIZE 5 - - -// Firmware based and LCD controlled retract -// M207 and M208 can be used to define parameters for the retraction. -// The retraction can be called by the slicer using G10 and G11 -// until then, intended retractions can be detected by moves that only extrude and the direction. -// the moves are than replaced by the firmware controlled ones. - -// #define FWRETRACT //ONLY PARTIALLY TESTED -#ifdef FWRETRACT - #define MIN_RETRACT 0.1 //minimum extruded mm to accept a automatic gcode retraction attempt - #define RETRACT_LENGTH 3 //default retract length (positive mm) - #define RETRACT_LENGTH_SWAP 13 //default swap retract length (positive mm), for extruder change - #define RETRACT_FEEDRATE 80*60 //default feedrate for retracting (mm/s) - #define RETRACT_ZLIFT 0 //default retract Z-lift - #define RETRACT_RECOVER_LENGTH 0 //default additional recover length (mm, added to retract length when recovering) - //#define RETRACT_RECOVER_LENGTH_SWAP 0 //default additional swap recover length (mm, added to retract length when recovering from extruder change) - #define RETRACT_RECOVER_FEEDRATE 8*60 //default feedrate for recovering from retraction (mm/s) -#endif - -//adds support for experimental filament exchange support M600; requires display -#ifdef ULTIPANEL - #define FILAMENTCHANGEENABLE - #ifdef FILAMENTCHANGEENABLE - #define FILAMENTCHANGE_XPOS 3 - #define FILAMENTCHANGE_YPOS 3 - #define FILAMENTCHANGE_ZADD 10 - #define FILAMENTCHANGE_FIRSTRETRACT -2 - #define FILAMENTCHANGE_FINALRETRACT -100 - #endif -#endif - -#ifdef FILAMENTCHANGEENABLE - #ifdef EXTRUDER_RUNOUT_PREVENT - #error EXTRUDER_RUNOUT_PREVENT currently incompatible with FILAMENTCHANGE - #endif -#endif - -//=========================================================================== -//============================= 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 diff --git a/Marlin/example_configurations/K8200/Configuration.h b/Marlin/example_configurations/K8200/Configuration.h index 1bd2d6325..f3e063e34 100644 --- a/Marlin/example_configurations/K8200/Configuration.h +++ b/Marlin/example_configurations/K8200/Configuration.h @@ -325,15 +325,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. @@ -382,10 +373,15 @@ 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. //=========================================================================== //============================= Bed Auto Leveling =========================== @@ -622,112 +618,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 +636,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 +651,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,6 +725,8 @@ const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of #include "Configuration_adv.h" +#include "Conditionals.h" +#include "SanityCheck.h" #include "thermistortables.h" -#endif //__CONFIGURATION_H +#endif //CONFIGURATION_H diff --git a/Marlin/example_configurations/K8200/Configuration_adv.h b/Marlin/example_configurations/K8200/Configuration_adv.h index 0e0d88464..8a8544d8f 100644 --- a/Marlin/example_configurations/K8200/Configuration_adv.h +++ b/Marlin/example_configurations/K8200/Configuration_adv.h @@ -89,54 +89,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 +98,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,11 +156,7 @@ //#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 @@ -237,12 +171,12 @@ // 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} // set the speeds for manual moves (mm/min) #endif //Comment to disable setting feedrate multiplier via encoder #ifdef ULTIPANEL - #define ULTIPANEL_FEEDMULTIPLY + #define ULTIPANEL_FEEDMULTIPLY #endif // minimum time in microseconds that a movement needs to take if the buffer is emptied. @@ -261,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] @@ -313,12 +240,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 +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) @@ -365,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: @@ -385,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 @@ -456,86 +343,4 @@ 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 ============================ -//=========================================================================== - -#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 diff --git a/Marlin/example_configurations/SCARA/Configuration.h b/Marlin/example_configurations/SCARA/Configuration.h index f59283266..5bf60e4fb 100644 --- a/Marlin/example_configurations/SCARA/Configuration.h +++ b/Marlin/example_configurations/SCARA/Configuration.h @@ -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. @@ -406,10 +397,15 @@ 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. //=========================================================================== //============================= Bed Auto Leveling =========================== @@ -648,112 +644,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 // --------------------- @@ -761,51 +662,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. @@ -817,6 +677,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 @@ -886,6 +751,8 @@ const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of #include "Configuration_adv.h" +#include "Conditionals.h" +#include "SanityCheck.h" #include "thermistortables.h" -#endif //__CONFIGURATION_H +#endif //CONFIGURATION_H diff --git a/Marlin/example_configurations/SCARA/Configuration_adv.h b/Marlin/example_configurations/SCARA/Configuration_adv.h index e90728b9c..dfeb082db 100644 --- a/Marlin/example_configurations/SCARA/Configuration_adv.h +++ b/Marlin/example_configurations/SCARA/Configuration_adv.h @@ -89,54 +89,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 +98,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 +154,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} @@ -238,12 +173,12 @@ // 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) + #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 ULTIPANEL_FEEDMULTIPLY #endif // minimum time in microseconds that a movement needs to take if the buffer is emptied. @@ -251,9 +186,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 +197,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 +265,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 +298,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 @@ -456,81 +347,4 @@ 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 ============================ -//=========================================================================== -#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 diff --git a/Marlin/example_configurations/WITBOX/Configuration.h b/Marlin/example_configurations/WITBOX/Configuration.h index afe8ad85a..3d907c250 100644 --- a/Marlin/example_configurations/WITBOX/Configuration.h +++ b/Marlin/example_configurations/WITBOX/Configuration.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 = 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. @@ -376,10 +367,15 @@ 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. //=========================================================================== //============================= Bed Auto Leveling =========================== @@ -615,112 +611,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 +629,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 +644,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 @@ -853,6 +718,8 @@ const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of #include "Configuration_adv.h" +#include "Conditionals.h" +#include "SanityCheck.h" #include "thermistortables.h" -#endif //__CONFIGURATION_H +#endif //CONFIGURATION_H diff --git a/Marlin/example_configurations/WITBOX/Configuration_adv.h b/Marlin/example_configurations/WITBOX/Configuration_adv.h index cf18b9585..4fca69e2b 100644 --- a/Marlin/example_configurations/WITBOX/Configuration_adv.h +++ b/Marlin/example_configurations/WITBOX/Configuration_adv.h @@ -89,54 +89,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 +98,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 @@ -237,12 +175,12 @@ // 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) + #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 ULTIPANEL_FEEDMULTIPLY #endif // minimum time in microseconds that a movement needs to take if the buffer is emptied. @@ -261,13 +199,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 +244,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 +267,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 +280,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 +296,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 @@ -456,86 +347,4 @@ 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 ============================ -//=========================================================================== - -#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 diff --git a/Marlin/example_configurations/delta/generic/Configuration.h b/Marlin/example_configurations/delta/generic/Configuration.h index e7cd86ff7..16d51f32f 100644 --- a/Marlin/example_configurations/delta/generic/Configuration.h +++ b/Marlin/example_configurations/delta/generic/Configuration.h @@ -347,15 +347,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. @@ -406,10 +397,15 @@ 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. //=========================================================================== //============================= Bed Auto Leveling =========================== @@ -632,112 +628,17 @@ 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 // --------------------- @@ -745,51 +646,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. @@ -801,6 +661,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 @@ -870,6 +735,8 @@ const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of #include "Configuration_adv.h" +#include "Conditionals.h" +#include "SanityCheck.h" #include "thermistortables.h" -#endif //__CONFIGURATION_H +#endif //CONFIGURATION_H diff --git a/Marlin/example_configurations/delta/generic/Configuration_adv.h b/Marlin/example_configurations/delta/generic/Configuration_adv.h index 7bb47dd17..2241f8c63 100644 --- a/Marlin/example_configurations/delta/generic/Configuration_adv.h +++ b/Marlin/example_configurations/delta/generic/Configuration_adv.h @@ -89,54 +89,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 +98,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,7 +174,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} // set the speeds for manual moves (mm/min) #endif // minimum time in microseconds that a movement needs to take if the buffer is emptied. @@ -256,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] @@ -331,16 +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 #endif // extruder advance constant (s2/mm3) @@ -354,12 +275,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 +291,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 @@ -445,104 +342,4 @@ 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 ============================ -//=========================================================================== - -#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 diff --git a/Marlin/example_configurations/delta/kossel_mini/Configuration.h b/Marlin/example_configurations/delta/kossel_mini/Configuration.h index 22db0e955..97f1b28d7 100644 --- a/Marlin/example_configurations/delta/kossel_mini/Configuration.h +++ b/Marlin/example_configurations/delta/kossel_mini/Configuration.h @@ -348,15 +348,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. @@ -407,10 +398,15 @@ 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. //=========================================================================== //============================= Bed Auto Leveling =========================== @@ -634,112 +630,17 @@ 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 // --------------------- @@ -747,51 +648,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. @@ -803,6 +663,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 @@ -872,6 +737,8 @@ const bool Z_MAX_ENDSTOP_INVERTING = false; // set to true to invert the logic o #include "Configuration_adv.h" +#include "Conditionals.h" +#include "SanityCheck.h" #include "thermistortables.h" -#endif //__CONFIGURATION_H +#endif //CONFIGURATION_H diff --git a/Marlin/example_configurations/delta/kossel_mini/Configuration_adv.h b/Marlin/example_configurations/delta/kossel_mini/Configuration_adv.h index 76ff18309..29ce19fa1 100644 --- a/Marlin/example_configurations/delta/kossel_mini/Configuration_adv.h +++ b/Marlin/example_configurations/delta/kossel_mini/Configuration_adv.h @@ -89,54 +89,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 +98,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,7 +174,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} // set the speeds for manual moves (mm/min) #endif // minimum time in microseconds that a movement needs to take if the buffer is emptied. @@ -255,13 +193,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 +261,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 +274,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 +290,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,104 +341,4 @@ 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 ============================ -//=========================================================================== - -#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 diff --git a/Marlin/example_configurations/makibox/Configuration.h b/Marlin/example_configurations/makibox/Configuration.h index 187f71b09..ec85772ef 100644 --- a/Marlin/example_configurations/makibox/Configuration.h +++ b/Marlin/example_configurations/makibox/Configuration.h @@ -317,15 +317,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. @@ -374,10 +365,15 @@ 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. //=========================================================================== //============================= Bed Auto Leveling =========================== @@ -613,112 +609,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 // --------------------- @@ -726,51 +627,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. @@ -782,6 +642,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 @@ -851,6 +716,8 @@ const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of #include "Configuration_adv.h" +#include "Conditionals.h" +#include "SanityCheck.h" #include "thermistortables.h" -#endif //__CONFIGURATION_H +#endif //CONFIGURATION_H diff --git a/Marlin/example_configurations/makibox/Configuration_adv.h b/Marlin/example_configurations/makibox/Configuration_adv.h index efb8943aa..4575d4de2 100644 --- a/Marlin/example_configurations/makibox/Configuration_adv.h +++ b/Marlin/example_configurations/makibox/Configuration_adv.h @@ -89,54 +89,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 +98,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 @@ -235,12 +173,12 @@ // 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} // set the speeds for manual moves (mm/min) #endif //Comment to disable setting feedrate multiplier via encoder #ifdef ULTIPANEL - #define ULTIPANEL_FEEDMULTIPLY + #define ULTIPANEL_FEEDMULTIPLY #endif // minimum time in microseconds that a movement needs to take if the buffer is emptied. @@ -259,13 +197,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 +266,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 +279,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 +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 @@ -447,81 +344,4 @@ 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 ============================ -//=========================================================================== -#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 diff --git a/Marlin/example_configurations/tvrrug/Round2/Configuration.h b/Marlin/example_configurations/tvrrug/Round2/Configuration.h index 3b3f2e58b..9aa661645 100644 --- a/Marlin/example_configurations/tvrrug/Round2/Configuration.h +++ b/Marlin/example_configurations/tvrrug/Round2/Configuration.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 = 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. @@ -376,10 +367,15 @@ 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. //=========================================================================== //============================= Bed Auto Leveling =========================== @@ -620,112 +616,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 +634,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 +649,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 @@ -858,6 +723,8 @@ const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of #include "Configuration_adv.h" +#include "Conditionals.h" +#include "SanityCheck.h" #include "thermistortables.h" -#endif //__CONFIGURATION_H +#endif //CONFIGURATION_H diff --git a/Marlin/example_configurations/tvrrug/Round2/Configuration_adv.h b/Marlin/example_configurations/tvrrug/Round2/Configuration_adv.h index cfb2a4983..c08102c97 100644 --- a/Marlin/example_configurations/tvrrug/Round2/Configuration_adv.h +++ b/Marlin/example_configurations/tvrrug/Round2/Configuration_adv.h @@ -89,54 +89,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 +98,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 @@ -237,12 +175,12 @@ // 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} // set the speeds for manual moves (mm/min) #endif -//Comment to disable setting feedrate multiplier via encoder +// Comment to disable setting feedrate multiplier via encoder #ifdef ULTIPANEL - #define ULTIPANEL_FEEDMULTIPLY + #define ULTIPANEL_FEEDMULTIPLY #endif // minimum time in microseconds that a movement needs to take if the buffer is emptied. @@ -261,13 +199,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 +267,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 +300,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 @@ -450,81 +351,4 @@ 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 ============================ -//=========================================================================== -#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 diff --git a/Marlin/language.h b/Marlin/language.h index fe8145aa2..387e1e3ef 100644 --- a/Marlin/language.h +++ b/Marlin/language.h @@ -238,8 +238,6 @@ #define STR_h3 "\263" #define STR_Deg "\337" #define STR_THERMOMETER "\002" - #elif defined(ULTRA_LCD) - #error You must enable either DISPLAY_CHARSET_HD44780_JAPAN or DISPLAY_CHARSET_HD44780_WESTERN for your LCD controller. #endif #endif /* diff --git a/Marlin/stepper.cpp b/Marlin/stepper.cpp index 1c79ea3b4..9f09f727f 100644 --- a/Marlin/stepper.cpp +++ b/Marlin/stepper.cpp @@ -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 }; //=========================================================================== diff --git a/Marlin/temperature.cpp b/Marlin/temperature.cpp index ed5593057..c5ec723d9 100644 --- a/Marlin/temperature.cpp +++ b/Marlin/temperature.cpp @@ -41,50 +41,14 @@ //================================== 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 } +#ifdef K1 // Defined in Configuration.h in the PID settings + #define K2 (1.0-K1) #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)) - int target_temperature[EXTRUDERS] = { 0 }; int target_temperature_bed = 0; int current_temperature_raw[EXTRUDERS] = { 0 }; @@ -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; diff --git a/Marlin/ultralcd.cpp b/Marlin/ultralcd.cpp index 610b21ccb..c32478ced 100644 --- a/Marlin/ultralcd.cpp +++ b/Marlin/ultralcd.cpp @@ -1189,10 +1189,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