diff --git a/Marlin/Conditionals.h b/Marlin/Conditionals.h new file mode 100644 index 000000000..fc6d6573e --- /dev/null +++ b/Marlin/Conditionals.h @@ -0,0 +1,405 @@ +/** + * Conditionals.h + * Defines that depend on configuration but are not editable. + */ +#ifndef CONDITIONALS_H + +#ifndef CONFIGURATION_LCD // Get the LCD defines which are needed first + + #define CONFIGURATION_LCD + + #if defined(MAKRPANEL) + #define DOGLCD + #define SDSUPPORT + #define DEFAULT_LCD_CONTRAST 17 + #define ULTIPANEL + #define NEWPANEL + #endif + + #if defined(miniVIKI) || defined(VIKI2) + #define ULTRA_LCD //general LCD support, also 16x2 + #define DOGLCD // Support for SPI LCD 128x64 (Controller ST7565R graphic Display Family) + #define ULTIMAKERCONTROLLER //as available from the Ultimaker online store. + + #ifdef miniVIKI + #define DEFAULT_LCD_CONTRAST 95 + #else + #define DEFAULT_LCD_CONTRAST 40 + #endif + + #define ENCODER_PULSES_PER_STEP 4 + #define ENCODER_STEPS_PER_MENU_ITEM 1 + #endif + + #ifdef PANEL_ONE + #define SDSUPPORT + #define ULTIMAKERCONTROLLER + #endif + + #ifdef REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER + #define DOGLCD + #define U8GLIB_ST7920 + #define REPRAP_DISCOUNT_SMART_CONTROLLER + #endif + + #if defined(ULTIMAKERCONTROLLER) || defined(REPRAP_DISCOUNT_SMART_CONTROLLER) || defined(G3D_PANEL) + #define ULTIPANEL + #define NEWPANEL + #endif + + #ifdef REPRAPWORLD_KEYPAD + #define ULTIPANEL + #define NEWPANEL + #endif + + #ifdef RA_CONTROL_PANEL + #define LCD_I2C_TYPE_PCA8574 + #define LCD_I2C_ADDRESS 0x27 // I2C Address of the port expander + #define ULTIPANEL + #define NEWPANEL + #endif + + /** + * I2C PANELS + */ + + #ifdef LCD_I2C_SAINSMART_YWROBOT + // This uses the LiquidCrystal_I2C library ( https://bitbucket.org/fmalpartida/new-liquidcrystal/wiki/Home ) + // Make sure it is placed in the Arduino libraries directory. + #define LCD_I2C_TYPE_PCF8575 + #define LCD_I2C_ADDRESS 0x27 // I2C Address of the port expander + #define ULTIPANEL + #define NEWPANEL + #endif + + // PANELOLU2 LCD with status LEDs, separate encoder and click inputs + #ifdef LCD_I2C_PANELOLU2 + // This uses the LiquidTWI2 library v1.2.3 or later ( https://github.com/lincomatic/LiquidTWI2 ) + // Make sure the LiquidTWI2 directory is placed in the Arduino or Sketchbook libraries subdirectory. + // (v1.2.3 no longer requires you to define PANELOLU in the LiquidTWI2.h library header file) + // Note: The PANELOLU2 encoder click input can either be directly connected to a pin + // (if BTN_ENC defined to != -1) or read through I2C (when BTN_ENC == -1). + #define LCD_I2C_TYPE_MCP23017 + #define LCD_I2C_ADDRESS 0x20 // I2C Address of the port expander + #define LCD_USE_I2C_BUZZER //comment out to disable buzzer on LCD + + #ifndef ENCODER_PULSES_PER_STEP + #define ENCODER_PULSES_PER_STEP 4 + #endif + + #ifndef ENCODER_STEPS_PER_MENU_ITEM + #define ENCODER_STEPS_PER_MENU_ITEM 1 + #endif + + #ifdef LCD_USE_I2C_BUZZER + #define LCD_FEEDBACK_FREQUENCY_HZ 1000 + #define LCD_FEEDBACK_FREQUENCY_DURATION_MS 100 + #endif + + #define ULTIPANEL + #define NEWPANEL + #endif + + // Panucatt VIKI LCD with status LEDs, integrated click & L/R/U/P buttons, separate encoder inputs + #ifdef LCD_I2C_VIKI + // This uses the LiquidTWI2 library v1.2.3 or later ( https://github.com/lincomatic/LiquidTWI2 ) + // Make sure the LiquidTWI2 directory is placed in the Arduino or Sketchbook libraries subdirectory. + // Note: The pause/stop/resume LCD button pin should be connected to the Arduino + // BTN_ENC pin (or set BTN_ENC to -1 if not used) + #define LCD_I2C_TYPE_MCP23017 + #define LCD_I2C_ADDRESS 0x20 // I2C Address of the port expander + #define LCD_USE_I2C_BUZZER //comment out to disable buzzer on LCD (requires LiquidTWI2 v1.2.3 or later) + #define ULTIPANEL + #define NEWPANEL + #endif + + // Shift register panels + // --------------------- + // 2 wire Non-latching LCD SR from: + // https://bitbucket.org/fmalpartida/new-liquidcrystal/wiki/schematics#!shiftregister-connection + + #ifdef SAV_3DLCD + #define SR_LCD_2W_NL // Non latching 2 wire shiftregister + #define ULTIPANEL + #define NEWPANEL + #endif + + + #ifdef ULTIPANEL + #define NEWPANEL //enable this if you have a click-encoder panel + #define SDSUPPORT + #define ULTRA_LCD + #ifdef DOGLCD // Change number of lines to match the DOG graphic display + #define LCD_WIDTH 22 + #define LCD_HEIGHT 5 + #else + #define LCD_WIDTH 20 + #define LCD_HEIGHT 4 + #endif + #else //no panel but just LCD + #ifdef ULTRA_LCD + #ifdef DOGLCD // Change number of lines to match the 128x64 graphics display + #define LCD_WIDTH 22 + #define LCD_HEIGHT 5 + #else + #define LCD_WIDTH 16 + #define LCD_HEIGHT 2 + #endif + #endif + #endif + + /** + * Default LCD contrast for dogm-like LCD displays + */ + #if defined(DOGLCD) && !defined(DEFAULT_LCD_CONTRAST) + #define DEFAULT_LCD_CONTRAST 32 + #endif + +#else // CONFIGURATION_LCD + + #define CONDITIONALS_H + + #ifndef AT90USB + #define HardwareSerial_h // trick to disable the standard HWserial + #endif + + #if (ARDUINO >= 100) + #include "Arduino.h" + #else + #include "WProgram.h" + #endif + + #include "pins.h" + + /** + * ENDSTOPPULLUPS + */ + #ifdef ENDSTOPPULLUPS + #ifndef DISABLE_MAX_ENDSTOPS + #define ENDSTOPPULLUP_XMAX + #define ENDSTOPPULLUP_YMAX + #define ENDSTOPPULLUP_ZMAX + #endif + #ifndef DISABLE_MIN_ENDSTOPS + #define ENDSTOPPULLUP_XMIN + #define ENDSTOPPULLUP_YMIN + #define ENDSTOPPULLUP_ZMIN + #endif + #endif + + /** + * Axis lengths + */ + #define X_MAX_LENGTH (X_MAX_POS - X_MIN_POS) + #define Y_MAX_LENGTH (Y_MAX_POS - Y_MIN_POS) + #define Z_MAX_LENGTH (Z_MAX_POS - Z_MIN_POS) + + /** + * SCARA + */ + #ifdef SCARA + #undef SLOWDOWN + #define QUICK_HOME //SCARA needs Quickhome + #endif + + /** + * AUTOSET LOCATIONS OF LIMIT SWITCHES + * Added by ZetaPhoenix 09-15-2012 + */ + #ifdef MANUAL_HOME_POSITIONS // Use manual limit switch locations + #define X_HOME_POS MANUAL_X_HOME_POS + #define Y_HOME_POS MANUAL_Y_HOME_POS + #define Z_HOME_POS MANUAL_Z_HOME_POS + #else //!MANUAL_HOME_POSITIONS – Use home switch positions based on homing direction and travel limits + #ifdef BED_CENTER_AT_0_0 + #define X_HOME_POS X_MAX_LENGTH * X_HOME_DIR * 0.5 + #define Y_HOME_POS Y_MAX_LENGTH * Y_HOME_DIR * 0.5 + #else + #define X_HOME_POS (X_HOME_DIR < 0 ? X_MIN_POS : X_MAX_POS) + #define Y_HOME_POS (Y_HOME_DIR < 0 ? Y_MIN_POS : Y_MAX_POS) + #endif + #define Z_HOME_POS (Z_HOME_DIR < 0 ? Z_MIN_POS : Z_MAX_POS) + #endif //!MANUAL_HOME_POSITIONS + + /** + * Auto Bed Leveling + */ + #ifdef ENABLE_AUTO_BED_LEVELING + // Boundaries for probing based on set limits + #define MIN_PROBE_X (max(X_MIN_POS, X_MIN_POS + X_PROBE_OFFSET_FROM_EXTRUDER)) + #define MAX_PROBE_X (min(X_MAX_POS, X_MAX_POS + X_PROBE_OFFSET_FROM_EXTRUDER)) + #define MIN_PROBE_Y (max(Y_MIN_POS, Y_MIN_POS + Y_PROBE_OFFSET_FROM_EXTRUDER)) + #define MAX_PROBE_Y (min(Y_MAX_POS, Y_MAX_POS + Y_PROBE_OFFSET_FROM_EXTRUDER)) + #endif + + /** + * MAX_STEP_FREQUENCY differs for TOSHIBA + */ + #ifdef CONFIG_STEPPERS_TOSHIBA + #define MAX_STEP_FREQUENCY 10000 // Max step frequency for Toshiba Stepper Controllers + #else + #define MAX_STEP_FREQUENCY 40000 // Max step frequency for Ultimaker (5000 pps / half step) + #endif + + // MS1 MS2 Stepper Driver Microstepping mode table + #define MICROSTEP1 LOW,LOW + #define MICROSTEP2 HIGH,LOW + #define MICROSTEP4 LOW,HIGH + #define MICROSTEP8 HIGH,HIGH + #define MICROSTEP16 HIGH,HIGH + + /** + * Advance calculated values + */ + #ifdef ADVANCE + #define EXTRUSION_AREA (0.25 * D_FILAMENT * D_FILAMENT * 3.14159) + #define STEPS_PER_CUBIC_MM_E (axis_steps_per_unit[E_AXIS] / EXTRUSION_AREA) + #endif + + #ifdef ULTIPANEL + #undef SDCARDDETECTINVERTED + #endif + + // Power Signal Control Definitions + // By default use ATX definition + #ifndef POWER_SUPPLY + #define POWER_SUPPLY 1 + #endif + // 1 = ATX + #if (POWER_SUPPLY == 1) + #define PS_ON_AWAKE LOW + #define PS_ON_ASLEEP HIGH + #endif + // 2 = X-Box 360 203W + #if (POWER_SUPPLY == 2) + #define PS_ON_AWAKE HIGH + #define PS_ON_ASLEEP LOW + #endif + + /** + * Temp Sensor defines + */ + #if TEMP_SENSOR_0 == -2 + #define HEATER_0_USES_MAX6675 + #elif TEMP_SENSOR_0 == -1 + #define HEATER_0_USES_AD595 + #elif TEMP_SENSOR_0 == 0 + #undef HEATER_0_MINTEMP + #undef HEATER_0_MAXTEMP + #elif TEMP_SENSOR_0 > 0 + #define THERMISTORHEATER_0 TEMP_SENSOR_0 + #define HEATER_0_USES_THERMISTOR + #endif + + #if TEMP_SENSOR_1 == -1 + #define HEATER_1_USES_AD595 + #elif TEMP_SENSOR_1 == 0 + #undef HEATER_1_MINTEMP + #undef HEATER_1_MAXTEMP + #elif TEMP_SENSOR_1 > 0 + #define THERMISTORHEATER_1 TEMP_SENSOR_1 + #define HEATER_1_USES_THERMISTOR + #endif + + #if TEMP_SENSOR_2 == -1 + #define HEATER_2_USES_AD595 + #elif TEMP_SENSOR_2 == 0 + #undef HEATER_2_MINTEMP + #undef HEATER_2_MAXTEMP + #elif TEMP_SENSOR_2 > 0 + #define THERMISTORHEATER_2 TEMP_SENSOR_2 + #define HEATER_2_USES_THERMISTOR + #endif + + #if TEMP_SENSOR_3 == -1 + #define HEATER_3_USES_AD595 + #elif TEMP_SENSOR_3 == 0 + #undef HEATER_3_MINTEMP + #undef HEATER_3_MAXTEMP + #elif TEMP_SENSOR_3 > 0 + #define THERMISTORHEATER_3 TEMP_SENSOR_3 + #define HEATER_3_USES_THERMISTOR + #endif + + #if TEMP_SENSOR_BED == -1 + #define BED_USES_AD595 + #elif TEMP_SENSOR_BED == 0 + #undef BED_MINTEMP + #undef BED_MAXTEMP + #elif TEMP_SENSOR_BED > 0 + #define THERMISTORBED TEMP_SENSOR_BED + #define BED_USES_THERMISTOR + #endif + + /** + * ARRAY_BY_EXTRUDERS based on EXTRUDERS + */ + #if EXTRUDERS > 3 + #define ARRAY_BY_EXTRUDERS(v1, v2, v3, v4) { v1, v2, v3, v4 } + #elif EXTRUDERS > 2 + #define ARRAY_BY_EXTRUDERS(v1, v2, v3, v4) { v1, v2, v3 } + #elif EXTRUDERS > 1 + #define ARRAY_BY_EXTRUDERS(v1, v2, v3, v4) { v1, v2 } + #else + #define ARRAY_BY_EXTRUDERS(v1, v2, v3, v4) { v1 } + #endif + + /** + * Shorthand for pin tests, for temperature.cpp + */ + #define HAS_TEMP_0 (defined(TEMP_0_PIN) && TEMP_0_PIN >= 0) + #define HAS_TEMP_1 (defined(TEMP_1_PIN) && TEMP_1_PIN >= 0) + #define HAS_TEMP_2 (defined(TEMP_2_PIN) && TEMP_2_PIN >= 0) + #define HAS_TEMP_3 (defined(TEMP_3_PIN) && TEMP_3_PIN >= 0) + #define HAS_TEMP_BED (defined(TEMP_BED_PIN) && TEMP_BED_PIN >= 0) + #define HAS_FILAMENT_SENSOR (defined(FILAMENT_SENSOR) && defined(FILWIDTH_PIN) && FILWIDTH_PIN >= 0) + #define HAS_HEATER_0 (defined(HEATER_0_PIN) && HEATER_0_PIN >= 0) + #define HAS_HEATER_1 (defined(HEATER_1_PIN) && HEATER_1_PIN >= 0) + #define HAS_HEATER_2 (defined(HEATER_2_PIN) && HEATER_2_PIN >= 0) + #define HAS_HEATER_3 (defined(HEATER_3_PIN) && HEATER_3_PIN >= 0) + #define HAS_HEATER_BED (defined(HEATER_BED_PIN) && HEATER_BED_PIN >= 0) + #define HAS_AUTO_FAN_0 (defined(EXTRUDER_0_AUTO_FAN_PIN) && EXTRUDER_0_AUTO_FAN_PIN >= 0) + #define HAS_AUTO_FAN_1 (defined(EXTRUDER_1_AUTO_FAN_PIN) && EXTRUDER_1_AUTO_FAN_PIN >= 0) + #define HAS_AUTO_FAN_2 (defined(EXTRUDER_2_AUTO_FAN_PIN) && EXTRUDER_2_AUTO_FAN_PIN >= 0) + #define HAS_AUTO_FAN_3 (defined(EXTRUDER_3_AUTO_FAN_PIN) && EXTRUDER_3_AUTO_FAN_PIN >= 0) + #define HAS_AUTO_FAN HAS_AUTO_FAN_0 || HAS_AUTO_FAN_1 || HAS_AUTO_FAN_2 || HAS_AUTO_FAN_3 + #define HAS_FAN (defined(FAN_PIN) && FAN_PIN >= 0) + + /** + * Helper Macros for heaters and extruder fan + */ + #define WRITE_HEATER_0P(v) WRITE(HEATER_0_PIN, v) + #if EXTRUDERS > 1 || defined(HEATERS_PARALLEL) + #define WRITE_HEATER_1(v) WRITE(HEATER_1_PIN, v) + #if EXTRUDERS > 2 + #define WRITE_HEATER_2(v) WRITE(HEATER_2_PIN, v) + #if EXTRUDERS > 3 + #define WRITE_HEATER_3(v) WRITE(HEATER_3_PIN, v) + #endif + #endif + #endif + #ifdef HEATERS_PARALLEL + #define WRITE_HEATER_0(v) { WRITE_HEATER_0P(v); WRITE_HEATER_1(v); } + #else + #define WRITE_HEATER_0(v) WRITE_HEATER_0P(v) + #endif + #if HAS_HEATER_BED + #define WRITE_HEATER_BED(v) WRITE(HEATER_BED_PIN, v) + #endif + #if HAS_FAN + #define WRITE_FAN(v) WRITE(FAN_PIN, v) + #endif + + /** + * Sampling period of the temperature routine + * This override comes originally from temperature.cpp + * The Configuration.h option is basically ignored. + */ + #ifdef PID_dT + #undef PID_dT + #endif + #define PID_dT ((OVERSAMPLENR * 12.0)/(F_CPU / 64.0 / 256.0)) + + +#endif //CONFIGURATION_LCD +#endif //CONDITIONALS_H diff --git a/Marlin/Configuration.h b/Marlin/Configuration.h index 63f906388..f5a36e6b9 100644 --- a/Marlin/Configuration.h +++ b/Marlin/Configuration.h @@ -360,10 +360,6 @@ const bool Z_MAX_ENDSTOP_INVERTING = false; // set to true to invert the logic o #define Y_MAX_POS 200 #define Z_MAX_POS 200 -#define X_MAX_LENGTH (X_MAX_POS - X_MIN_POS) -#define Y_MAX_LENGTH (Y_MAX_POS - Y_MIN_POS) -#define Z_MAX_LENGTH (Z_MAX_POS - Z_MIN_POS) - //=========================================================================== //============================= Filament Runout Sensor ====================== //=========================================================================== @@ -624,112 +620,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 // --------------------- @@ -737,51 +638,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. @@ -793,6 +653,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 @@ -864,4 +729,4 @@ const bool Z_MAX_ENDSTOP_INVERTING = false; // set to true to invert the logic o #include "Configuration_adv.h" #include "thermistortables.h" -#endif //__CONFIGURATION_H +#endif //CONFIGURATION_H diff --git a/Marlin/Configuration_adv.h b/Marlin/Configuration_adv.h index 2c8e5ea48..7d6182bf5 100644 --- a/Marlin/Configuration_adv.h +++ b/Marlin/Configuration_adv.h @@ -1,6 +1,8 @@ #ifndef CONFIGURATION_ADV_H #define CONFIGURATION_ADV_H +#include "Conditionals.h" + //=========================================================================== //=============================Thermal Settings ============================ //=========================================================================== @@ -89,54 +91,6 @@ #define ENDSTOPS_ONLY_FOR_HOMING // If defined the endstops will only be used for homing - -//// AUTOSET LOCATIONS OF LIMIT SWITCHES -//// Added by ZetaPhoenix 09-15-2012 -#ifdef MANUAL_HOME_POSITIONS // Use manual limit switch locations - #define X_HOME_POS MANUAL_X_HOME_POS - #define Y_HOME_POS MANUAL_Y_HOME_POS - #define Z_HOME_POS MANUAL_Z_HOME_POS -#else //Set min/max homing switch positions based upon homing direction and min/max travel limits - //X axis - #if X_HOME_DIR == -1 - #ifdef BED_CENTER_AT_0_0 - #define X_HOME_POS X_MAX_LENGTH * -0.5 - #else - #define X_HOME_POS X_MIN_POS - #endif //BED_CENTER_AT_0_0 - #else - #ifdef BED_CENTER_AT_0_0 - #define X_HOME_POS X_MAX_LENGTH * 0.5 - #else - #define X_HOME_POS X_MAX_POS - #endif //BED_CENTER_AT_0_0 - #endif //X_HOME_DIR == -1 - - //Y axis - #if Y_HOME_DIR == -1 - #ifdef BED_CENTER_AT_0_0 - #define Y_HOME_POS Y_MAX_LENGTH * -0.5 - #else - #define Y_HOME_POS Y_MIN_POS - #endif //BED_CENTER_AT_0_0 - #else - #ifdef BED_CENTER_AT_0_0 - #define Y_HOME_POS Y_MAX_LENGTH * 0.5 - #else - #define Y_HOME_POS Y_MAX_POS - #endif //BED_CENTER_AT_0_0 - #endif //Y_HOME_DIR == -1 - - // Z axis - #if Z_HOME_DIR == -1 //BED_CENTER_AT_0_0 not used - #define Z_HOME_POS Z_MIN_POS - #else - #define Z_HOME_POS Z_MAX_POS - #endif //Z_HOME_DIR == -1 -#endif //End auto min/max positions -//END AUTOSET LOCATIONS OF LIMIT SWITCHES -ZP - - //#define Z_LATE_ENABLE // Enable Z the last moment. Needed if your Z driver overheats. // A single Z stepper driver is usually used to drive 2 stepper motors. @@ -146,67 +100,53 @@ // On a RAMPS (or other 5 driver) motherboard, using this feature will limit you to using 1 extruder. //#define Z_DUAL_STEPPER_DRIVERS -#ifdef Z_DUAL_STEPPER_DRIVERS - #undef EXTRUDERS - #define EXTRUDERS 1 -#endif - // Same again but for Y Axis. //#define Y_DUAL_STEPPER_DRIVERS // Define if the two Y drives need to rotate in opposite directions #define INVERT_Y2_VS_Y_DIR true -#ifdef Y_DUAL_STEPPER_DRIVERS - #undef EXTRUDERS - #define EXTRUDERS 1 -#endif - -#if defined (Z_DUAL_STEPPER_DRIVERS) && defined (Y_DUAL_STEPPER_DRIVERS) - #error "You cannot have dual drivers for both Y and Z" -#endif - // Enable this for dual x-carriage printers. // A dual x-carriage design has the advantage that the inactive extruder can be parked which // prevents hot-end ooze contaminating the print. It also reduces the weight of each x-carriage // allowing faster printing speeds. //#define DUAL_X_CARRIAGE #ifdef DUAL_X_CARRIAGE -// Configuration for second X-carriage -// Note: the first x-carriage is defined as the x-carriage which homes to the minimum endstop; -// the second x-carriage always homes to the maximum endstop. -#define X2_MIN_POS 80 // set minimum to ensure second x-carriage doesn't hit the parked first X-carriage -#define X2_MAX_POS 353 // set maximum to the distance between toolheads when both heads are homed -#define X2_HOME_DIR 1 // the second X-carriage always homes to the maximum endstop position -#define X2_HOME_POS X2_MAX_POS // default home position is the maximum carriage position - // However: In this mode the EXTRUDER_OFFSET_X value for the second extruder provides a software - // override for X2_HOME_POS. This also allow recalibration of the distance between the two endstops - // without modifying the firmware (through the "M218 T1 X???" command). - // Remember: you should set the second extruder x-offset to 0 in your slicer. - -// Pins for second x-carriage stepper driver (defined here to avoid further complicating pins.h) -#define X2_ENABLE_PIN 29 -#define X2_STEP_PIN 25 -#define X2_DIR_PIN 23 - -// There are a few selectable movement modes for dual x-carriages using M605 S -// Mode 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 + // Configuration for second X-carriage + // Note: the first x-carriage is defined as the x-carriage which homes to the minimum endstop; + // the second x-carriage always homes to the maximum endstop. + #define X2_MIN_POS 80 // set minimum to ensure second x-carriage doesn't hit the parked first X-carriage + #define X2_MAX_POS 353 // set maximum to the distance between toolheads when both heads are homed + #define X2_HOME_DIR 1 // the second X-carriage always homes to the maximum endstop position + #define X2_HOME_POS X2_MAX_POS // default home position is the maximum carriage position + // However: In this mode the EXTRUDER_OFFSET_X value for the second extruder provides a software + // override for X2_HOME_POS. This also allow recalibration of the distance between the two endstops + // without modifying the firmware (through the "M218 T1 X???" command). + // Remember: you should set the second extruder x-offset to 0 in your slicer. + + // Pins for second x-carriage stepper driver (defined here to avoid further complicating pins.h) + #define X2_ENABLE_PIN 29 + #define X2_STEP_PIN 25 + #define X2_DIR_PIN 23 + + // There are a few selectable movement modes for dual x-carriages using M605 S + // 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 @@ -218,31 +158,22 @@ //#define QUICK_HOME //if this is defined, if both x and y are to be homed, a diagonal move will be performed initially. #define AXIS_RELATIVE_MODES {false, false, false, false} -#ifdef CONFIG_STEPPERS_TOSHIBA -#define MAX_STEP_FREQUENCY 10000 // Max step frequency for Toshiba Stepper Controllers -#else -#define MAX_STEP_FREQUENCY 40000 // Max step frequency for Ultimaker (5000 pps / half step) -#endif + //By default pololu step drivers require an active high signal. However, some high power drivers require an active low signal as step. #define INVERT_X_STEP_PIN false #define INVERT_Y_STEP_PIN false #define INVERT_Z_STEP_PIN false #define INVERT_E_STEP_PIN false -//default stepper release if idle. Set to 0 to deactivate. +// Default stepper release if idle. Set to 0 to deactivate. #define DEFAULT_STEPPER_DEACTIVE_TIME 60 #define DEFAULT_MINIMUMFEEDRATE 0.0 // minimum feedrate #define DEFAULT_MINTRAVELFEEDRATE 0.0 -// Feedrates for manual moves along X, Y, Z, E from panel -#ifdef ULTIPANEL -#define MANUAL_FEEDRATE {50*60, 50*60, 4*60, 60} // set the speeds for manual moves (mm/min) -#endif - -//Comment to disable setting feedrate multiplier via encoder #ifdef ULTIPANEL - #define ULTIPANEL_FEEDMULTIPLY + #define MANUAL_FEEDRATE {50*60, 50*60, 4*60, 60} // Feedrates for manual moves along X, Y, Z, E from panel + #define ULTIPANEL_FEEDMULTIPLY // Comment to disable setting feedrate multiplier via encoder #endif // minimum time in microseconds that a movement needs to take if the buffer is emptied. @@ -261,13 +192,6 @@ // if unwanted behavior is observed on a user's machine when running at very slow speeds. #define MINIMUM_PLANNER_SPEED 0.05// (mm/sec) -// MS1 MS2 Stepper Driver Microstepping mode table -#define MICROSTEP1 LOW,LOW -#define MICROSTEP2 HIGH,LOW -#define MICROSTEP4 LOW,HIGH -#define MICROSTEP8 HIGH,HIGH -#define MICROSTEP16 HIGH,HIGH - // Microstep setting (Only functional when stepper driver microstep pins are connected to MCU. #define MICROSTEP_MODES {16,16,16,16,16} // [1,2,4,8,16] @@ -313,12 +237,6 @@ #define PROGRESS_MSG_EXPIRE 0 // Enable this to show messages for MSG_TIME then hide them //#define PROGRESS_MSG_ONCE - #ifdef DOGLCD - #warning LCD_PROGRESS_BAR does not apply to graphical displays at this time. - #endif - #ifdef FILAMENT_LCD_DISPLAY - #error LCD_PROGRESS_BAR and FILAMENT_LCD_DISPLAY are not fully compatible. Comment out this line to use both. - #endif #endif // The hardware watchdog should reset the microcontroller disabling all outputs, in case the firmware gets stuck and doesn't do temperature regulation. @@ -342,16 +260,6 @@ #define BABYSTEP_XY //not only z, but also XY in the menu. more clutter, more functions #define BABYSTEP_INVERT_Z false //true for inverse movements in Z #define BABYSTEP_Z_MULTIPLICATOR 2 //faster z movements - - #ifdef COREXY - #error BABYSTEPPING not implemented for COREXY yet. - #endif - - #ifdef DELTA - #ifdef BABYSTEP_XY - #error BABYSTEPPING only implemented for Z axis on deltabots. - #endif - #endif #endif // extruder advance constant (s2/mm3) @@ -365,12 +273,8 @@ #ifdef ADVANCE #define EXTRUDER_ADVANCE_K .0 - #define D_FILAMENT 2.85 #define STEPS_MM_E 836 - #define EXTRUSION_AREA (0.25 * D_FILAMENT * D_FILAMENT * 3.14159) - #define STEPS_PER_CUBIC_MM_E (axis_steps_per_unit[E_AXIS]/ EXTRUSION_AREA) - #endif // ADVANCE // Arc interpretation settings: @@ -385,26 +289,6 @@ const unsigned int dropsegments=5; //everything with less than this number of st // be commented out otherwise #define SDCARDDETECTINVERTED -#ifdef ULTIPANEL - #undef SDCARDDETECTINVERTED -#endif - -// Power Signal Control Definitions -// By default use ATX definition -#ifndef POWER_SUPPLY - #define POWER_SUPPLY 1 -#endif -// 1 = ATX -#if (POWER_SUPPLY == 1) - #define PS_ON_AWAKE LOW - #define PS_ON_ASLEEP HIGH -#endif -// 2 = X-Box 360 203W -#if (POWER_SUPPLY == 2) - #define PS_ON_AWAKE HIGH - #define PS_ON_ASLEEP LOW -#endif - // Control heater 0 and heater 1 in parallel. //#define HEATERS_PARALLEL @@ -414,7 +298,7 @@ const unsigned int dropsegments=5; //everything with less than this number of st // The number of linear motions that can be in the plan at any give time. // THE BLOCK_BUFFER_SIZE NEEDS TO BE A POWER OF 2, i.g. 8,16,32 because shifts and ors are used to do the ring-buffering. -#if defined SDSUPPORT +#ifdef SDSUPPORT #define BLOCK_BUFFER_SIZE 16 // SD,LCD,Buttons take more memory, block buffer needs to be smaller #else #define BLOCK_BUFFER_SIZE 16 // maximize block buffer @@ -444,9 +328,9 @@ const unsigned int dropsegments=5; //everything with less than this number of st #define RETRACT_RECOVER_FEEDRATE 8 //default feedrate for recovering from retraction (mm/s) #endif -//adds support for experimental filament exchange support M600; requires display +// Add support for experimental filament exchange support M600; requires display #ifdef ULTIPANEL - #define FILAMENTCHANGEENABLE + //#define FILAMENTCHANGEENABLE #ifdef FILAMENTCHANGEENABLE #define FILAMENTCHANGE_XPOS 3 #define FILAMENTCHANGE_YPOS 3 @@ -456,13 +340,6 @@ const unsigned int dropsegments=5; //everything with less than this number of st #endif #endif -#ifdef FILAMENTCHANGEENABLE - #ifdef EXTRUDER_RUNOUT_PREVENT - #error EXTRUDER_RUNOUT_PREVENT currently incompatible with FILAMENTCHANGE - #endif -#endif - - /******************************************************************************\ * enable this section if you have TMC26X motor drivers. * you need to import the TMC26XStepper library into the arduino IDE for this @@ -596,81 +473,7 @@ const unsigned int dropsegments=5; //everything with less than this number of st #endif +#include "Conditionals.h" +#include "SanityCheck.h" -//=========================================================================== -//============================= Define Defines ============================ -//=========================================================================== - -#if defined (ENABLE_AUTO_BED_LEVELING) && defined (DELTA) - #error "Bed Auto Leveling is still not compatible with Delta Kinematics." -#endif - -#if EXTRUDERS > 1 && defined TEMP_SENSOR_1_AS_REDUNDANT - #error "You cannot use TEMP_SENSOR_1_AS_REDUNDANT if EXTRUDERS > 1" -#endif - -#if EXTRUDERS > 1 && defined HEATERS_PARALLEL - #error "You cannot use HEATERS_PARALLEL if EXTRUDERS > 1" -#endif - -#if TEMP_SENSOR_0 > 0 - #define THERMISTORHEATER_0 TEMP_SENSOR_0 - #define HEATER_0_USES_THERMISTOR -#endif -#if TEMP_SENSOR_1 > 0 - #define THERMISTORHEATER_1 TEMP_SENSOR_1 - #define HEATER_1_USES_THERMISTOR -#endif -#if TEMP_SENSOR_2 > 0 - #define THERMISTORHEATER_2 TEMP_SENSOR_2 - #define HEATER_2_USES_THERMISTOR -#endif -#if TEMP_SENSOR_3 > 0 - #define THERMISTORHEATER_3 TEMP_SENSOR_3 - #define HEATER_3_USES_THERMISTOR -#endif -#if TEMP_SENSOR_BED > 0 - #define THERMISTORBED TEMP_SENSOR_BED - #define BED_USES_THERMISTOR -#endif -#if TEMP_SENSOR_0 == -1 - #define HEATER_0_USES_AD595 -#endif -#if TEMP_SENSOR_1 == -1 - #define HEATER_1_USES_AD595 -#endif -#if TEMP_SENSOR_2 == -1 - #define HEATER_2_USES_AD595 -#endif -#if TEMP_SENSOR_3 == -1 - #define HEATER_3_USES_AD595 -#endif -#if TEMP_SENSOR_BED == -1 - #define BED_USES_AD595 -#endif -#if TEMP_SENSOR_0 == -2 - #define HEATER_0_USES_MAX6675 -#endif -#if TEMP_SENSOR_0 == 0 - #undef HEATER_0_MINTEMP - #undef HEATER_0_MAXTEMP -#endif -#if TEMP_SENSOR_1 == 0 - #undef HEATER_1_MINTEMP - #undef HEATER_1_MAXTEMP -#endif -#if TEMP_SENSOR_2 == 0 - #undef HEATER_2_MINTEMP - #undef HEATER_2_MAXTEMP -#endif -#if TEMP_SENSOR_3 == 0 - #undef HEATER_3_MINTEMP - #undef HEATER_3_MAXTEMP -#endif -#if TEMP_SENSOR_BED == 0 - #undef BED_MINTEMP - #undef BED_MAXTEMP -#endif - - -#endif //__CONFIGURATION_ADV_H +#endif //CONFIGURATION_ADV_H diff --git a/Marlin/Marlin.h b/Marlin/Marlin.h index bd90c4915..cc1f11118 100644 --- a/Marlin/Marlin.h +++ b/Marlin/Marlin.h @@ -20,11 +20,6 @@ #include "fastio.h" #include "Configuration.h" -#include "pins.h" - -#ifndef AT90USB - #define HardwareSerial_h // trick to disable the standard HWserial -#endif #if (ARDUINO >= 100) #include "Arduino.h" @@ -191,17 +186,17 @@ void ClearToSend(); void get_coordinates(); #ifdef DELTA -void calculate_delta(float cartesian[3]); + void calculate_delta(float cartesian[3]); #ifdef ENABLE_AUTO_BED_LEVELING - extern int delta_grid_spacing[2]; - void adjust_delta(float cartesian[3]); + extern int delta_grid_spacing[2]; + void adjust_delta(float cartesian[3]); #endif -extern float delta[3]; -void prepare_move_raw(); + extern float delta[3]; + void prepare_move_raw(); #endif #ifdef SCARA -void calculate_delta(float cartesian[3]); -void calculate_SCARA_forward_Transform(float f_scara[3]); + void calculate_delta(float cartesian[3]); + void calculate_SCARA_forward_Transform(float f_scara[3]); #endif void reset_bed_level(); void prepare_move(); @@ -209,7 +204,7 @@ void kill(); void Stop(); #ifdef FILAMENT_RUNOUT_SENSOR -void filrunout(); + void filrunout(); #endif bool IsStopped(); @@ -223,7 +218,7 @@ void clamp_to_software_endstops(float target[3]); void refresh_cmd_timeout(void); #ifdef FAST_PWM_FAN -void setPwmFrequency(uint8_t pin, int val); + void setPwmFrequency(uint8_t pin, int val); #endif #ifndef CRITICAL_SECTION_START @@ -242,14 +237,14 @@ extern float volumetric_multiplier[EXTRUDERS]; // reciprocal of cross-sectional extern float current_position[NUM_AXIS] ; extern float home_offset[3]; #ifdef DELTA -extern float endstop_adj[3]; -extern float delta_radius; -extern float delta_diagonal_rod; -extern float delta_segments_per_second; -void recalc_delta_settings(float radius, float diagonal_rod); + extern float endstop_adj[3]; + extern float delta_radius; + extern float delta_diagonal_rod; + extern float delta_segments_per_second; + void recalc_delta_settings(float radius, float diagonal_rod); #endif #ifdef SCARA -extern float axis_scaling[3]; // Build size scaling + extern float axis_scaling[3]; // Build size scaling #endif extern float min_pos[3]; extern float max_pos[3]; @@ -257,12 +252,12 @@ extern bool axis_known_position[3]; extern float zprobe_zoffset; extern int fanSpeed; #ifdef BARICUDA -extern int ValvePressure; -extern int EtoPPressure; + extern int ValvePressure; + extern int EtoPPressure; #endif #ifdef FAN_SOFT_PWM -extern unsigned char fanSpeedSoftPwm; + extern unsigned char fanSpeedSoftPwm; #endif #ifdef FILAMENT_SENSOR @@ -276,10 +271,10 @@ extern unsigned char fanSpeedSoftPwm; #endif #ifdef FWRETRACT -extern bool autoretract_enabled; -extern bool retracted[EXTRUDERS]; -extern float retract_length, retract_length_swap, retract_feedrate, retract_zlift; -extern float retract_recover_length, retract_recover_length_swap, retract_recover_feedrate; + extern bool autoretract_enabled; + extern bool retracted[EXTRUDERS]; + extern float retract_length, retract_length_swap, retract_feedrate, retract_zlift; + extern float retract_recover_length, retract_recover_length_swap, retract_recover_feedrate; #endif extern unsigned long starttime; @@ -289,11 +284,10 @@ extern unsigned long stoptime; extern uint8_t active_extruder; #ifdef DIGIPOT_I2C -extern void digipot_i2c_set_current( int channel, float current ); -extern void digipot_i2c_init(); -#endif - + extern void digipot_i2c_set_current( int channel, float current ); + extern void digipot_i2c_init(); #endif extern void calculate_volumetric_multipliers(); +#endif //MARLIN_H diff --git a/Marlin/Marlin_main.cpp b/Marlin/Marlin_main.cpp index e90fa7cef..510911819 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" @@ -967,43 +964,36 @@ XYZ_CONSTS_FROM_CONFIG(float, home_retract_mm, HOME_RETRACT_MM); XYZ_CONSTS_FROM_CONFIG(signed char, home_dir, HOME_DIR); #ifdef DUAL_X_CARRIAGE - #if EXTRUDERS == 1 || defined(COREXY) \ - || !defined(X2_ENABLE_PIN) || !defined(X2_STEP_PIN) || !defined(X2_DIR_PIN) \ - || !defined(X2_HOME_POS) || !defined(X2_MIN_POS) || !defined(X2_MAX_POS) \ - || !defined(X_MAX_PIN) || X_MAX_PIN < 0 - #error "Missing or invalid definitions for DUAL_X_CARRIAGE mode." - #endif - #if X_HOME_DIR != -1 || X2_HOME_DIR != 1 - #error "Please use canonical x-carriage assignment" // the x-carriages are defined by their homing directions - #endif -#define DXC_FULL_CONTROL_MODE 0 -#define DXC_AUTO_PARK_MODE 1 -#define DXC_DUPLICATION_MODE 2 -static int dual_x_carriage_mode = DEFAULT_DUAL_X_CARRIAGE_MODE; - -static float x_home_pos(int extruder) { - if (extruder == 0) - return base_home_pos(X_AXIS) + home_offset[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) { @@ -2079,44 +2069,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..a8937b44b --- /dev/null +++ b/Marlin/SanityCheck.h @@ -0,0 +1,254 @@ +/** + * SanityCheck.h + * + * Test configuration values for errors at compile-time. + */ +#ifndef SANITYCHECK_H + #define SANITYCHECK_H + + /** + * Dual Stepper Drivers + */ + #if defined(Z_DUAL_STEPPER_DRIVERS) && defined(Y_DUAL_STEPPER_DRIVERS) + #error You cannot have dual stepper drivers for both Y and Z. + #endif + + /** + * Progress Bar + */ + #ifdef LCD_PROGRESS_BAR + #ifdef DOGLCD + #warning LCD_PROGRESS_BAR does not apply to graphical displays. + #endif + #ifdef FILAMENT_LCD_DISPLAY + #error LCD_PROGRESS_BAR and FILAMENT_LCD_DISPLAY are not fully compatible. Comment out this line to use both. + #endif + #endif + + /** + * Babystepping + */ + #ifdef BABYSTEPPING + #ifdef COREXY + #error BABYSTEPPING not implemented for COREXY yet. + #endif + #ifdef SCARA + #error BABYSTEPPING is not implemented for SCARA yet. + #endif + #if defined(DELTA) && defined(BABYSTEP_XY) + #error BABYSTEPPING only implemented for Z axis on deltabots. + #endif + #endif + + /** + * Filament Change with Extruder Runout Prevention + */ + #if defined(FILAMENTCHANGEENABLE) && defined(EXTRUDER_RUNOUT_PREVENT) + #error EXTRUDER_RUNOUT_PREVENT currently incompatible with FILAMENTCHANGE. + #endif + + /** + * Options only for EXTRUDERS == 1 + */ + #if EXTRUDERS > 1 + + #if EXTRUDERS > 4 + #error The maximum number of EXTRUDERS is 4. + #endif + + #ifdef TEMP_SENSOR_1_AS_REDUNDANT + #error EXTRUDERS must be 1 with TEMP_SENSOR_1_AS_REDUNDANT. + #endif + + #ifdef HEATERS_PARALLEL + #error EXTRUDERS must be 1 with HEATERS_PARALLEL. + #endif + + #ifdef Y_DUAL_STEPPER_DRIVERS + #error EXTRUDERS must be 1 with Y_DUAL_STEPPER_DRIVERS. + #endif + + #ifdef Z_DUAL_STEPPER_DRIVERS + #error EXTRUDERS must be 1 with Z_DUAL_STEPPER_DRIVERS. + #endif + + #endif // EXTRUDERS > 1 + + /** + * Required LCD language + */ + #if !defined(DOGLCD) && defined(ULTRA_LCD) && !defined(DISPLAY_CHARSET_HD44780_JAPAN) && !defined(DISPLAY_CHARSET_HD44780_WESTERN) + #error You must enable either DISPLAY_CHARSET_HD44780_JAPAN or DISPLAY_CHARSET_HD44780_WESTERN for your LCD controller. + #endif + + /** + * Auto Bed Leveling + */ + #ifdef ENABLE_AUTO_BED_LEVELING + + /** + * Require a Z Min pin + */ + #if Z_MIN_PIN == -1 + #ifdef Z_PROBE_REPEATABILITY_TEST + #error You must have a Z_MIN endstop to enable Z_PROBE_REPEATABILITY_TEST. + #else + #error ENABLE_AUTO_BED_LEVELING requires a Z_MIN endstop. Z_MIN_PIN must point to a valid hardware pin. + #endif + #endif + + /** + * Check if Probe_Offset * Grid Points is greater than Probing Range + */ + #ifdef AUTO_BED_LEVELING_GRID + + // Make sure probing points are reachable + #if LEFT_PROBE_BED_POSITION < MIN_PROBE_X + #error The given LEFT_PROBE_BED_POSITION can't be reached by the probe. + #elif RIGHT_PROBE_BED_POSITION > MAX_PROBE_X + #error The given RIGHT_PROBE_BED_POSITION can't be reached by the probe. + #elif FRONT_PROBE_BED_POSITION < MIN_PROBE_Y + #error The given FRONT_PROBE_BED_POSITION can't be reached by the probe. + #elif BACK_PROBE_BED_POSITION > MAX_PROBE_Y + #error The given BACK_PROBE_BED_POSITION can't be reached by the probe. + #endif + + #define PROBE_SIZE_X (X_PROBE_OFFSET_FROM_EXTRUDER * (AUTO_BED_LEVELING_GRID_POINTS-1)) + #define PROBE_SIZE_Y (Y_PROBE_OFFSET_FROM_EXTRUDER * (AUTO_BED_LEVELING_GRID_POINTS-1)) + #define PROBE_AREA_WIDTH (RIGHT_PROBE_BED_POSITION - LEFT_PROBE_BED_POSITION) + #define PROBE_AREA_DEPTH (BACK_PROBE_BED_POSITION - FRONT_PROBE_BED_POSITION) + #if X_PROBE_OFFSET_FROM_EXTRUDER < 0 + #if PROBE_SIZE_X <= -PROBE_AREA_WIDTH + #define X_PROBE_ERROR + #endif + #elif PROBE_SIZE_X >= PROBE_AREA_WIDTH + #define X_PROBE_ERROR + #endif + #ifdef X_PROBE_ERROR + #error The X axis probing range is too small to fit all the points defined in AUTO_BED_LEVELING_GRID_POINTS + #endif + #if Y_PROBE_OFFSET_FROM_EXTRUDER < 0 + #if PROBE_SIZE_Y <= -PROBE_AREA_DEPTH + #define Y_PROBE_ERROR + #endif + #elif PROBE_SIZE_Y >= PROBE_AREA_DEPTH + #define Y_PROBE_ERROR + #endif + #ifdef Y_PROBE_ERROR + #error The Y axis probing range is to small to fit all the points defined in AUTO_BED_LEVELING_GRID_POINTS + #endif + + #undef PROBE_SIZE_X + #undef PROBE_SIZE_Y + #undef PROBE_AREA_WIDTH + #undef PROBE_AREA_DEPTH + + #else // !AUTO_BED_LEVELING_GRID + + // Check the triangulation points + #if ABL_PROBE_PT_1_X < MIN_PROBE_X || ABL_PROBE_PT_1_X > MAX_PROBE_X + #error "The given ABL_PROBE_PT_1_X can't be reached by the probe." + #elif ABL_PROBE_PT_2_X < MIN_PROBE_X || ABL_PROBE_PT_2_X > MAX_PROBE_X + #error "The given ABL_PROBE_PT_2_X can't be reached by the probe." + #elif ABL_PROBE_PT_3_X < MIN_PROBE_X || ABL_PROBE_PT_3_X > MAX_PROBE_X + #error "The given ABL_PROBE_PT_3_X can't be reached by the probe." + #elif ABL_PROBE_PT_1_Y < MIN_PROBE_Y || ABL_PROBE_PT_1_Y > MAX_PROBE_Y + #error "The given ABL_PROBE_PT_1_Y can't be reached by the probe." + #elif ABL_PROBE_PT_2_Y < MIN_PROBE_Y || ABL_PROBE_PT_2_Y > MAX_PROBE_Y + #error "The given ABL_PROBE_PT_2_Y can't be reached by the probe." + #elif ABL_PROBE_PT_3_Y < MIN_PROBE_Y || ABL_PROBE_PT_3_Y > MAX_PROBE_Y + #error "The given ABL_PROBE_PT_3_Y can't be reached by the probe." + #endif + + #endif // !AUTO_BED_LEVELING_GRID + + #endif // ENABLE_AUTO_BED_LEVELING + + /** + * ULTIPANEL encoder + */ + #if defined(ULTIPANEL) && !defined(NEWPANEL) && !defined(SR_LCD_2W_NL) && !defined(SHIFT_CLK) + #error ULTIPANEL requires some kind of encoder. + #endif + + /** + * Delta has limited bed leveling options + */ + #ifdef DELTA + + #ifdef ENABLE_AUTO_BED_LEVELING + + #ifndef AUTO_BED_LEVELING_GRID + #error Only AUTO_BED_LEVELING_GRID is supported with DELTA. + #endif + + #ifdef Z_PROBE_SLED + #error You cannot use Z_PROBE_SLED with DELTA. + #endif + + #ifdef Z_PROBE_REPEATABILITY_TEST + #error Z_PROBE_REPEATABILITY_TEST is not supported with DELTA yet. + #endif + + #endif + + #endif + + /** + * Allen Key Z Probe requires Auto Bed Leveling grid and Delta + */ + #if defined(Z_PROBE_ALLEN_KEY) && !(defined(AUTO_BED_LEVELING_GRID) && defined(DELTA)) + #error Invalid use of Z_PROBE_ALLEN_KEY. + #endif + + /** + * Dual X Carriage requirements + */ + #ifdef DUAL_X_CARRIAGE + #if EXTRUDERS == 1 || defined(COREXY) \ + || !defined(X2_ENABLE_PIN) || !defined(X2_STEP_PIN) || !defined(X2_DIR_PIN) \ + || !defined(X2_HOME_POS) || !defined(X2_MIN_POS) || !defined(X2_MAX_POS) \ + || !defined(X_MAX_PIN) || X_MAX_PIN < 0 + #error Missing or invalid definitions for DUAL_X_CARRIAGE mode. + #endif + #if X_HOME_DIR != -1 || X2_HOME_DIR != 1 + #error Please use canonical x-carriage assignment. + #endif + #endif // DUAL_X_CARRIAGE + + /** + * Make sure auto fan pins don't conflict with the fan pin + */ + #if HAS_AUTO_FAN && HAS_FAN + #if EXTRUDER_0_AUTO_FAN_PIN == FAN_PIN + #error You cannot set EXTRUDER_0_AUTO_FAN_PIN equal to FAN_PIN + #elif EXTRUDER_1_AUTO_FAN_PIN == FAN_PIN + #error You cannot set EXTRUDER_1_AUTO_FAN_PIN equal to FAN_PIN + #elif EXTRUDER_2_AUTO_FAN_PIN == FAN_PIN + #error You cannot set EXTRUDER_2_AUTO_FAN_PIN equal to FAN_PIN + #elif EXTRUDER_3_AUTO_FAN_PIN == FAN_PIN + #error You cannot set EXTRUDER_3_AUTO_FAN_PIN equal to FAN_PIN + #endif + #endif + + /** + * Test required HEATER defines + */ + #if EXTRUDERS > 3 + #if !HAS_HEATER_3 + #error HEATER_3_PIN not defined for this board + #endif + #elif EXTRUDERS > 2 + #if !HAS_HEATER_2 + #error HEATER_2_PIN not defined for this board + #endif + #elif EXTRUDERS > 1 || defined(HEATERS_PARALLEL) + #if !HAS_HEATER_1 + #error HEATER_1_PIN not defined for this board + #endif + #endif + #if !HAS_HEATER_0 + #error HEATER_0_PIN not defined for this board + #endif + +#endif //SANITYCHECK_H diff --git a/Marlin/Sd2PinMap.h b/Marlin/Sd2PinMap.h index 0556bd301..a94b9b3dc 100644 --- a/Marlin/Sd2PinMap.h +++ b/Marlin/Sd2PinMap.h @@ -33,9 +33,7 @@ struct pin_map_t { uint8_t bit; }; //------------------------------------------------------------------------------ -#if defined(__AVR_ATmega1280__)\ -|| defined(__AVR_ATmega2560__) -// Mega +#if defined(__AVR_ATmega1280__) || defined(__AVR_ATmega2560__) // Mega // Two Wire (aka I2C) ports uint8_t const SDA_PIN = 20; // D1 @@ -43,6 +41,7 @@ uint8_t const SCL_PIN = 21; // D0 #undef MOSI_PIN #undef MISO_PIN +#undef SCK_PIN // SPI port uint8_t const SS_PIN = 53; // B0 uint8_t const MOSI_PIN = 51; // B2 diff --git a/Marlin/configurator/config/Configuration.h b/Marlin/configurator/config/Configuration.h index ab7a4cd85..71cbdebae 100644 --- a/Marlin/configurator/config/Configuration.h +++ b/Marlin/configurator/config/Configuration.h @@ -330,15 +330,6 @@ your extruder heater takes 2 minutes to hit the target on heating. // #define ENDSTOPPULLUP_ZMIN #endif -#ifdef ENDSTOPPULLUPS - #define ENDSTOPPULLUP_XMAX - #define ENDSTOPPULLUP_YMAX - #define ENDSTOPPULLUP_ZMAX - #define ENDSTOPPULLUP_XMIN - #define ENDSTOPPULLUP_YMIN - #define ENDSTOPPULLUP_ZMIN -#endif - // The pullups are needed if you directly connect a mechanical endswitch between the signal and ground pins. const bool X_MIN_ENDSTOP_INVERTING = true; // set to true to invert the logic of the endstop. const bool Y_MIN_ENDSTOP_INVERTING = true; // set to true to invert the logic of the endstop. @@ -405,12 +396,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. //=========================================================================== //============================ Manual Bed Leveling ========================== @@ -667,114 +661,17 @@ const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of // REMEMBER TO INSTALL LiquidCrystal_I2C.h in your ARDUINO library folder: https://github.com/kiyoshigawa/LiquidCrystal_I2C //#define RA_CONTROL_PANEL -// @section hidden - -//automatic expansion -#if defined (MAKRPANEL) - #define DOGLCD - #define SDSUPPORT - #define ULTIPANEL - #define NEWPANEL - #define DEFAULT_LCD_CONTRAST 17 -#endif - -#if defined(miniVIKI) || defined(VIKI2) - #define ULTRA_LCD //general LCD support, also 16x2 - #define DOGLCD // Support for SPI LCD 128x64 (Controller ST7565R graphic Display Family) - #define ULTIMAKERCONTROLLER //as available from the Ultimaker online store. - - #ifdef miniVIKI - #define DEFAULT_LCD_CONTRAST 95 - #else - #define DEFAULT_LCD_CONTRAST 40 - #endif - - #define ENCODER_PULSES_PER_STEP 4 - #define ENCODER_STEPS_PER_MENU_ITEM 1 -#endif - -#if defined (PANEL_ONE) - #define SDSUPPORT - #define ULTIMAKERCONTROLLER -#endif - -#if defined (REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER) - #define DOGLCD - #define U8GLIB_ST7920 - #define REPRAP_DISCOUNT_SMART_CONTROLLER -#endif - -#if defined(ULTIMAKERCONTROLLER) || defined(REPRAP_DISCOUNT_SMART_CONTROLLER) || defined(G3D_PANEL) - #define ULTIPANEL - #define NEWPANEL -#endif - -#if defined(REPRAPWORLD_KEYPAD) - #define NEWPANEL - #define ULTIPANEL -#endif -#if defined(RA_CONTROL_PANEL) - #define ULTIPANEL - #define NEWPANEL - #define LCD_I2C_TYPE_PCA8574 - #define LCD_I2C_ADDRESS 0x27 // I2C Address of the port expander -#endif - -//I2C PANELS +/** + * I2C Panels + */ //#define LCD_I2C_SAINSMART_YWROBOT -#ifdef LCD_I2C_SAINSMART_YWROBOT - // This uses the LiquidCrystal_I2C library ( https://bitbucket.org/fmalpartida/new-liquidcrystal/wiki/Home ) - // Make sure it is placed in the Arduino libraries directory. - #define LCD_I2C_TYPE_PCF8575 - #define LCD_I2C_ADDRESS 0x27 // I2C Address of the port expander - #define NEWPANEL - #define ULTIPANEL -#endif // PANELOLU2 LCD with status LEDs, separate encoder and click inputs //#define LCD_I2C_PANELOLU2 -#ifdef LCD_I2C_PANELOLU2 - // This uses the LiquidTWI2 library v1.2.3 or later ( https://github.com/lincomatic/LiquidTWI2 ) - // Make sure the LiquidTWI2 directory is placed in the Arduino or Sketchbook libraries subdirectory. - // (v1.2.3 no longer requires you to define PANELOLU in the LiquidTWI2.h library header file) - // Note: The PANELOLU2 encoder click input can either be directly connected to a pin - // (if BTN_ENC defined to != -1) or read through I2C (when BTN_ENC == -1). - #define LCD_I2C_TYPE_MCP23017 - #define LCD_I2C_ADDRESS 0x20 // I2C Address of the port expander - #define LCD_USE_I2C_BUZZER //comment out to disable buzzer on LCD - #define NEWPANEL - #define ULTIPANEL - - #ifndef ENCODER_PULSES_PER_STEP - #define ENCODER_PULSES_PER_STEP 4 - #endif - - #ifndef ENCODER_STEPS_PER_MENU_ITEM - #define ENCODER_STEPS_PER_MENU_ITEM 1 - #endif - - - #ifdef LCD_USE_I2C_BUZZER - #define LCD_FEEDBACK_FREQUENCY_HZ 1000 - #define LCD_FEEDBACK_FREQUENCY_DURATION_MS 100 - #endif - -#endif // Panucatt VIKI LCD with status LEDs, integrated click & L/R/U/P buttons, separate encoder inputs //#define LCD_I2C_VIKI -#ifdef LCD_I2C_VIKI - // This uses the LiquidTWI2 library v1.2.3 or later ( https://github.com/lincomatic/LiquidTWI2 ) - // Make sure the LiquidTWI2 directory is placed in the Arduino or Sketchbook libraries subdirectory. - // Note: The pause/stop/resume LCD button pin should be connected to the Arduino - // BTN_ENC pin (or set BTN_ENC to -1 if not used) - #define LCD_I2C_TYPE_MCP23017 - #define LCD_I2C_ADDRESS 0x20 // I2C Address of the port expander - #define LCD_USE_I2C_BUZZER //comment out to disable buzzer on LCD (requires LiquidTWI2 v1.2.3 or later) - #define NEWPANEL - #define ULTIPANEL -#endif // Shift register panels // --------------------- @@ -782,55 +679,12 @@ const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of // https://bitbucket.org/fmalpartida/new-liquidcrystal/wiki/schematics#!shiftregister-connection //#define SAV_3DLCD -#ifdef SAV_3DLCD - #define SR_LCD_2W_NL // Non latching 2 wire shiftregister - #define NEWPANEL - #define ULTIPANEL -#endif - - -#ifdef ULTIPANEL -// #define NEWPANEL //enable this if you have a click-encoder panel - #define SDSUPPORT - #define ULTRA_LCD - #ifdef DOGLCD // Change number of lines to match the DOG graphic display - #define LCD_WIDTH 22 - #define LCD_HEIGHT 5 - #else - #define LCD_WIDTH 20 - #define LCD_HEIGHT 4 - #endif -#else //no panel but just LCD - #ifdef ULTRA_LCD - #ifdef DOGLCD // Change number of lines to match the 128x64 graphics display - #define LCD_WIDTH 22 - #define LCD_HEIGHT 5 - #else - #define LCD_WIDTH 16 - #define LCD_HEIGHT 2 - #endif - #endif -#endif - -// @section lcd - -// default LCD contrast for dogm-like LCD displays -#ifdef DOGLCD -# ifndef DEFAULT_LCD_CONTRAST -# define DEFAULT_LCD_CONTRAST 32 -# endif -#endif // @section extras // Increase the FAN pwm frequency. Removes the PWM noise but increases heating in the FET/Arduino //#define FAST_PWM_FAN -// Temperature status LEDs that display the hotend and bet temperature. -// If all hotends and bed temperature and temperature setpoint are < 54C then the BLUE led is on. -// Otherwise the RED led is on. There is 1C hysteresis. -//#define TEMP_STAT_LEDS - // Use software PWM to drive the fan, as for the heaters. This uses a very low frequency // which is not ass annoying as with the hardware PWM. On the other hand, if this frequency // is too low, you should also increment SOFT_PWM_SCALE. @@ -842,6 +696,11 @@ const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of // at zero value, there are 128 effective control positions. #define SOFT_PWM_SCALE 0 +// Temperature status LEDs that display the hotend and bet temperature. +// If all hotends and bed temperature and temperature setpoint are < 54C then the BLUE led is on. +// Otherwise the RED led is on. There is 1C hysteresis. +//#define TEMP_STAT_LEDS + // M240 Triggers a camera by emulating a Canon RC-1 Remote // Data from: http://www.doc-diy.net/photo/rc-1_hacked/ // #define PHOTOGRAPH_PIN 23 @@ -913,4 +772,4 @@ const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of #include "Configuration_adv.h" #include "thermistortables.h" -#endif //__CONFIGURATION_H +#endif //CONFIGURATION_H diff --git a/Marlin/configurator/config/Configuration_adv.h b/Marlin/configurator/config/Configuration_adv.h index 00722c142..b03402e79 100644 --- a/Marlin/configurator/config/Configuration_adv.h +++ b/Marlin/configurator/config/Configuration_adv.h @@ -1,6 +1,8 @@ #ifndef CONFIGURATION_ADV_H #define CONFIGURATION_ADV_H +#include "Conditionals.h" + // @section temperature //=========================================================================== @@ -99,56 +101,6 @@ #define ENDSTOPS_ONLY_FOR_HOMING // If defined the endstops will only be used for homing - -// @section hidden - - -//// AUTOSET LOCATIONS OF LIMIT SWITCHES -//// Added by ZetaPhoenix 09-15-2012 -#ifdef MANUAL_HOME_POSITIONS // Use manual limit switch locations - #define X_HOME_POS MANUAL_X_HOME_POS - #define Y_HOME_POS MANUAL_Y_HOME_POS - #define Z_HOME_POS MANUAL_Z_HOME_POS -#else //Set min/max homing switch positions based upon homing direction and min/max travel limits - //X axis - #if X_HOME_DIR == -1 - #ifdef BED_CENTER_AT_0_0 - #define X_HOME_POS X_MAX_LENGTH * -0.5 - #else - #define X_HOME_POS X_MIN_POS - #endif //BED_CENTER_AT_0_0 - #else - #ifdef BED_CENTER_AT_0_0 - #define X_HOME_POS X_MAX_LENGTH * 0.5 - #else - #define X_HOME_POS X_MAX_POS - #endif //BED_CENTER_AT_0_0 - #endif //X_HOME_DIR == -1 - - //Y axis - #if Y_HOME_DIR == -1 - #ifdef BED_CENTER_AT_0_0 - #define Y_HOME_POS Y_MAX_LENGTH * -0.5 - #else - #define Y_HOME_POS Y_MIN_POS - #endif //BED_CENTER_AT_0_0 - #else - #ifdef BED_CENTER_AT_0_0 - #define Y_HOME_POS Y_MAX_LENGTH * 0.5 - #else - #define Y_HOME_POS Y_MAX_POS - #endif //BED_CENTER_AT_0_0 - #endif //Y_HOME_DIR == -1 - - // Z axis - #if Z_HOME_DIR == -1 //BED_CENTER_AT_0_0 not used - #define Z_HOME_POS Z_MIN_POS - #else - #define Z_HOME_POS Z_MAX_POS - #endif //Z_HOME_DIR == -1 -#endif //End auto min/max positions -//END AUTOSET LOCATIONS OF LIMIT SWITCHES -ZP - // @section extras //#define Z_LATE_ENABLE // Enable Z the last moment. Needed if your Z driver overheats. @@ -160,26 +112,12 @@ // On a RAMPS (or other 5 driver) motherboard, using this feature will limit you to using 1 extruder. //#define Z_DUAL_STEPPER_DRIVERS -#ifdef Z_DUAL_STEPPER_DRIVERS - #undef EXTRUDERS - #define EXTRUDERS 1 -#endif - // Same again but for Y Axis. //#define Y_DUAL_STEPPER_DRIVERS // Define if the two Y drives need to rotate in opposite directions #define INVERT_Y2_VS_Y_DIR true -#ifdef Y_DUAL_STEPPER_DRIVERS - #undef EXTRUDERS - #define EXTRUDERS 1 -#endif - -#if defined (Z_DUAL_STEPPER_DRIVERS) && defined (Y_DUAL_STEPPER_DRIVERS) - #error "You cannot have dual drivers for both Y and Z" -#endif - // Enable this for dual x-carriage printers. // A dual x-carriage design has the advantage that the inactive extruder can be parked which // prevents hot-end ooze contaminating the print. It also reduces the weight of each x-carriage @@ -236,14 +174,6 @@ #define AXIS_RELATIVE_MODES {false, false, false, false} -// @section hidden - -#ifdef CONFIG_STEPPERS_TOSHIBA - #define MAX_STEP_FREQUENCY 10000 // Max step frequency for Toshiba Stepper Controllers -#else - #define MAX_STEP_FREQUENCY 40000 // Max step frequency for Ultimaker (5000 pps / half step) -#endif - // @section machine //By default pololu step drivers require an active high signal. However, some high power drivers require an active low signal as step. @@ -252,7 +182,7 @@ #define INVERT_Z_STEP_PIN false #define INVERT_E_STEP_PIN false -//default stepper release if idle. Set to 0 to deactivate. +// Default stepper release if idle. Set to 0 to deactivate. #define DEFAULT_STEPPER_DEACTIVE_TIME 60 #define DEFAULT_MINIMUMFEEDRATE 0.0 // minimum feedrate @@ -260,14 +190,9 @@ // @section lcd -// Feedrates for manual moves along X, Y, Z, E from panel #ifdef ULTIPANEL -#define MANUAL_FEEDRATE {50*60, 50*60, 4*60, 60} // set the speeds for manual moves (mm/min) -#endif - -//Comment to disable setting feedrate multiplier via encoder -#ifdef ULTIPANEL - #define ULTIPANEL_FEEDMULTIPLY + #define MANUAL_FEEDRATE {50*60, 50*60, 4*60, 60} // Feedrates for manual moves along X, Y, Z, E from panel + #define ULTIPANEL_FEEDMULTIPLY // Comment to disable setting feedrate multiplier via encoder #endif // @section extras @@ -288,13 +213,6 @@ // if unwanted behavior is observed on a user's machine when running at very slow speeds. #define MINIMUM_PLANNER_SPEED 0.05// (mm/sec) -// MS1 MS2 Stepper Driver Microstepping mode table -#define MICROSTEP1 LOW,LOW -#define MICROSTEP2 HIGH,LOW -#define MICROSTEP4 LOW,HIGH -#define MICROSTEP8 HIGH,HIGH -#define MICROSTEP16 HIGH,HIGH - // Microstep setting (Only functional when stepper driver microstep pins are connected to MCU. #define MICROSTEP_MODES {16,16,16,16,16} // [1,2,4,8,16] @@ -342,12 +260,6 @@ #define PROGRESS_MSG_EXPIRE 0 // Enable this to show messages for MSG_TIME then hide them //#define PROGRESS_MSG_ONCE - #ifdef DOGLCD - #warning LCD_PROGRESS_BAR does not apply to graphical displays at this time. - #endif - #ifdef FILAMENT_LCD_DISPLAY - #error LCD_PROGRESS_BAR and FILAMENT_LCD_DISPLAY are not fully compatible. Comment out this line to use both. - #endif #endif // @section more @@ -373,16 +285,6 @@ #define BABYSTEP_XY //not only z, but also XY in the menu. more clutter, more functions #define BABYSTEP_INVERT_Z false //true for inverse movements in Z #define BABYSTEP_Z_MULTIPLICATOR 2 //faster z movements - - #ifdef COREXY - #error BABYSTEPPING not implemented for COREXY yet. - #endif - - #ifdef DELTA - #ifdef BABYSTEP_XY - #error BABYSTEPPING only implemented for Z axis on deltabots. - #endif - #endif #endif // extruder advance constant (s2/mm3) @@ -418,28 +320,6 @@ const unsigned int dropsegments=5; //everything with less than this number of st // be commented out otherwise #define SDCARDDETECTINVERTED -// @section hidden - -#ifdef ULTIPANEL - #undef SDCARDDETECTINVERTED -#endif - -// Power Signal Control Definitions -// By default use ATX definition -#ifndef POWER_SUPPLY - #define POWER_SUPPLY 1 -#endif -// 1 = ATX -#if (POWER_SUPPLY == 1) - #define PS_ON_AWAKE LOW - #define PS_ON_ASLEEP HIGH -#endif -// 2 = X-Box 360 203W -#if (POWER_SUPPLY == 2) - #define PS_ON_AWAKE HIGH - #define PS_ON_ASLEEP LOW -#endif - // @section temperature // Control heater 0 and heater 1 in parallel. @@ -485,9 +365,9 @@ const unsigned int dropsegments=5; //everything with less than this number of st #define RETRACT_RECOVER_FEEDRATE 8 //default feedrate for recovering from retraction (mm/s) #endif -//adds support for experimental filament exchange support M600; requires display +// Add support for experimental filament exchange support M600; requires display #ifdef ULTIPANEL - #define FILAMENTCHANGEENABLE + //#define FILAMENTCHANGEENABLE #ifdef FILAMENTCHANGEENABLE #define FILAMENTCHANGE_XPOS 3 #define FILAMENTCHANGE_YPOS 3 @@ -497,88 +377,7 @@ const unsigned int dropsegments=5; //everything with less than this number of st #endif #endif -#ifdef FILAMENTCHANGEENABLE - #ifdef EXTRUDER_RUNOUT_PREVENT - #error EXTRUDER_RUNOUT_PREVENT currently incompatible with FILAMENTCHANGE - #endif -#endif - -//=========================================================================== -//============================= 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 - +#include "Conditionals.h" +#include "SanityCheck.h" -#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 2c45caf6e..e9801813f 100644 --- a/Marlin/example_configurations/Felix/Configuration.h +++ b/Marlin/example_configurations/Felix/Configuration.h @@ -296,15 +296,6 @@ your extruder heater takes 2 minutes to hit the target on heating. // #define ENDSTOPPULLUP_ZMIN #endif -#ifdef ENDSTOPPULLUPS - #define ENDSTOPPULLUP_XMAX - #define ENDSTOPPULLUP_YMAX - #define ENDSTOPPULLUP_ZMAX - #define ENDSTOPPULLUP_XMIN - #define ENDSTOPPULLUP_YMIN - #define ENDSTOPPULLUP_ZMIN -#endif - // The pullups are needed if you directly connect a mechanical endswitch between the signal and ground pins. const bool X_MIN_ENDSTOP_INVERTING = false; // set to true to invert the logic of the endstop. const bool Y_MIN_ENDSTOP_INVERTING = false; // set to true to invert the logic of the endstop. @@ -353,10 +344,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. //=========================================================================== //============================ Manual Bed Leveling ========================== @@ -468,29 +464,6 @@ const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of #endif - #ifdef AUTO_BED_LEVELING_GRID // Check if Probe_Offset * Grid Points is greater than Probing Range - #if X_PROBE_OFFSET_FROM_EXTRUDER < 0 - #if (-(X_PROBE_OFFSET_FROM_EXTRUDER * (AUTO_BED_LEVELING_GRID_POINTS-1)) >= (RIGHT_PROBE_BED_POSITION - LEFT_PROBE_BED_POSITION)) - #error "The X axis probing range is not enough to fit all the points defined in AUTO_BED_LEVELING_GRID_POINTS" - #endif - #else - #if ((X_PROBE_OFFSET_FROM_EXTRUDER * (AUTO_BED_LEVELING_GRID_POINTS-1)) >= (RIGHT_PROBE_BED_POSITION - LEFT_PROBE_BED_POSITION)) - #error "The X axis probing range is not enough to fit all the points defined in AUTO_BED_LEVELING_GRID_POINTS" - #endif - #endif - #if Y_PROBE_OFFSET_FROM_EXTRUDER < 0 - #if (-(Y_PROBE_OFFSET_FROM_EXTRUDER * (AUTO_BED_LEVELING_GRID_POINTS-1)) >= (BACK_PROBE_BED_POSITION - FRONT_PROBE_BED_POSITION)) - #error "The Y axis probing range is not enough to fit all the points defined in AUTO_BED_LEVELING_GRID_POINTS" - #endif - #else - #if ((Y_PROBE_OFFSET_FROM_EXTRUDER * (AUTO_BED_LEVELING_GRID_POINTS-1)) >= (BACK_PROBE_BED_POSITION - FRONT_PROBE_BED_POSITION)) - #error "The Y axis probing range is not enough to fit all the points defined in AUTO_BED_LEVELING_GRID_POINTS" - #endif - #endif - - - #endif - #endif // ENABLE_AUTO_BED_LEVELING @@ -626,112 +599,17 @@ const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of // REMEMBER TO INSTALL LiquidCrystal_I2C.h in your ARDUINO library folder: https://github.com/kiyoshigawa/LiquidCrystal_I2C //#define RA_CONTROL_PANEL -//automatic expansion -#if defined (MAKRPANEL) - #define DOGLCD - #define SDSUPPORT - #define ULTIPANEL - #define NEWPANEL - #define DEFAULT_LCD_CONTRAST 17 -#endif - -#if defined(miniVIKI) || defined(VIKI2) - #define ULTRA_LCD //general LCD support, also 16x2 - #define DOGLCD // Support for SPI LCD 128x64 (Controller ST7565R graphic Display Family) - #define ULTIMAKERCONTROLLER //as available from the Ultimaker online store. - - #ifdef miniVIKI - #define DEFAULT_LCD_CONTRAST 95 - #else - #define DEFAULT_LCD_CONTRAST 40 - #endif - - #define ENCODER_PULSES_PER_STEP 4 - #define ENCODER_STEPS_PER_MENU_ITEM 1 -#endif - -#if defined (PANEL_ONE) - #define SDSUPPORT - #define ULTIMAKERCONTROLLER -#endif - -#if defined (REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER) - #define DOGLCD - #define U8GLIB_ST7920 - #define REPRAP_DISCOUNT_SMART_CONTROLLER -#endif - -#if defined(ULTIMAKERCONTROLLER) || defined(REPRAP_DISCOUNT_SMART_CONTROLLER) || defined(G3D_PANEL) - #define ULTIPANEL - #define NEWPANEL -#endif - -#if defined(REPRAPWORLD_KEYPAD) - #define NEWPANEL - #define ULTIPANEL -#endif -#if defined(RA_CONTROL_PANEL) - #define ULTIPANEL - #define NEWPANEL - #define LCD_I2C_TYPE_PCA8574 - #define LCD_I2C_ADDRESS 0x27 // I2C Address of the port expander -#endif - -//I2C PANELS +/** + * I2C Panels + */ //#define LCD_I2C_SAINSMART_YWROBOT -#ifdef LCD_I2C_SAINSMART_YWROBOT - // This uses the LiquidCrystal_I2C library ( https://bitbucket.org/fmalpartida/new-liquidcrystal/wiki/Home ) - // Make sure it is placed in the Arduino libraries directory. - #define LCD_I2C_TYPE_PCF8575 - #define LCD_I2C_ADDRESS 0x27 // I2C Address of the port expander - #define NEWPANEL - #define ULTIPANEL -#endif // PANELOLU2 LCD with status LEDs, separate encoder and click inputs //#define LCD_I2C_PANELOLU2 -#ifdef LCD_I2C_PANELOLU2 - // This uses the LiquidTWI2 library v1.2.3 or later ( https://github.com/lincomatic/LiquidTWI2 ) - // Make sure the LiquidTWI2 directory is placed in the Arduino or Sketchbook libraries subdirectory. - // (v1.2.3 no longer requires you to define PANELOLU in the LiquidTWI2.h library header file) - // Note: The PANELOLU2 encoder click input can either be directly connected to a pin - // (if BTN_ENC defined to != -1) or read through I2C (when BTN_ENC == -1). - #define LCD_I2C_TYPE_MCP23017 - #define LCD_I2C_ADDRESS 0x20 // I2C Address of the port expander - #define LCD_USE_I2C_BUZZER //comment out to disable buzzer on LCD - #define NEWPANEL - #define ULTIPANEL - - #ifndef ENCODER_PULSES_PER_STEP - #define ENCODER_PULSES_PER_STEP 4 - #endif - - #ifndef ENCODER_STEPS_PER_MENU_ITEM - #define ENCODER_STEPS_PER_MENU_ITEM 1 - #endif - - - #ifdef LCD_USE_I2C_BUZZER - #define LCD_FEEDBACK_FREQUENCY_HZ 1000 - #define LCD_FEEDBACK_FREQUENCY_DURATION_MS 100 - #endif - -#endif // Panucatt VIKI LCD with status LEDs, integrated click & L/R/U/P buttons, separate encoder inputs //#define LCD_I2C_VIKI -#ifdef LCD_I2C_VIKI - // This uses the LiquidTWI2 library v1.2.3 or later ( https://github.com/lincomatic/LiquidTWI2 ) - // Make sure the LiquidTWI2 directory is placed in the Arduino or Sketchbook libraries subdirectory. - // Note: The pause/stop/resume LCD button pin should be connected to the Arduino - // BTN_ENC pin (or set BTN_ENC to -1 if not used) - #define LCD_I2C_TYPE_MCP23017 - #define LCD_I2C_ADDRESS 0x20 // I2C Address of the port expander - #define LCD_USE_I2C_BUZZER //comment out to disable buzzer on LCD (requires LiquidTWI2 v1.2.3 or later) - #define NEWPANEL - #define ULTIPANEL -#endif // Shift register panels // --------------------- @@ -739,42 +617,6 @@ const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of // https://bitbucket.org/fmalpartida/new-liquidcrystal/wiki/schematics#!shiftregister-connection //#define SAV_3DLCD -#ifdef SAV_3DLCD - #define SR_LCD_2W_NL // Non latching 2 wire shiftregister - #define NEWPANEL - #define ULTIPANEL -#endif - - -#ifdef ULTIPANEL - #define NEWPANEL //enable this if you have a click-encoder panel - #define SDSUPPORT - #define ULTRA_LCD - #ifdef DOGLCD // Change number of lines to match the DOG graphic display - #define LCD_WIDTH 22 - #define LCD_HEIGHT 5 - #else - #define LCD_WIDTH 20 - #define LCD_HEIGHT 4 - #endif -#else //no panel but just LCD - #ifdef ULTRA_LCD - #ifdef DOGLCD // Change number of lines to match the 128x64 graphics display - #define LCD_WIDTH 22 - #define LCD_HEIGHT 5 - #else - #define LCD_WIDTH 16 - #define LCD_HEIGHT 2 - #endif - #endif -#endif - -// default LCD contrast for dogm-like LCD displays -#ifdef DOGLCD -# ifndef DEFAULT_LCD_CONTRAST -# define DEFAULT_LCD_CONTRAST 32 -# endif -#endif // Increase the FAN pwm frequency. Removes the PWM noise but increases heating in the FET/Arduino #define FAST_PWM_FAN @@ -859,7 +701,11 @@ const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of //#define FILAMENT_LCD_DISPLAY + + + + #include "Configuration_adv.h" #include "thermistortables.h" -#endif //__CONFIGURATION_H +#endif //CONFIGURATION_H diff --git a/Marlin/example_configurations/Felix/Configuration_DUAL.h b/Marlin/example_configurations/Felix/Configuration_DUAL.h index 446ca85e2..e9e4623ca 100644 --- a/Marlin/example_configurations/Felix/Configuration_DUAL.h +++ b/Marlin/example_configurations/Felix/Configuration_DUAL.h @@ -296,15 +296,6 @@ your extruder heater takes 2 minutes to hit the target on heating. // #define ENDSTOPPULLUP_ZMIN #endif -#ifdef ENDSTOPPULLUPS - #define ENDSTOPPULLUP_XMAX - #define ENDSTOPPULLUP_YMAX - #define ENDSTOPPULLUP_ZMAX - #define ENDSTOPPULLUP_XMIN - #define ENDSTOPPULLUP_YMIN - #define ENDSTOPPULLUP_ZMIN -#endif - // The pullups are needed if you directly connect a mechanical endswitch between the signal and ground pins. const bool X_MIN_ENDSTOP_INVERTING = false; // set to true to invert the logic of the endstop. const bool Y_MIN_ENDSTOP_INVERTING = false; // set to true to invert the logic of the endstop. @@ -353,10 +344,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. //=========================================================================== //============================ Manual Bed Leveling ========================== @@ -468,29 +464,6 @@ const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of #endif - #ifdef AUTO_BED_LEVELING_GRID // Check if Probe_Offset * Grid Points is greater than Probing Range - #if X_PROBE_OFFSET_FROM_EXTRUDER < 0 - #if (-(X_PROBE_OFFSET_FROM_EXTRUDER * (AUTO_BED_LEVELING_GRID_POINTS-1)) >= (RIGHT_PROBE_BED_POSITION - LEFT_PROBE_BED_POSITION)) - #error "The X axis probing range is not enough to fit all the points defined in AUTO_BED_LEVELING_GRID_POINTS" - #endif - #else - #if ((X_PROBE_OFFSET_FROM_EXTRUDER * (AUTO_BED_LEVELING_GRID_POINTS-1)) >= (RIGHT_PROBE_BED_POSITION - LEFT_PROBE_BED_POSITION)) - #error "The X axis probing range is not enough to fit all the points defined in AUTO_BED_LEVELING_GRID_POINTS" - #endif - #endif - #if Y_PROBE_OFFSET_FROM_EXTRUDER < 0 - #if (-(Y_PROBE_OFFSET_FROM_EXTRUDER * (AUTO_BED_LEVELING_GRID_POINTS-1)) >= (BACK_PROBE_BED_POSITION - FRONT_PROBE_BED_POSITION)) - #error "The Y axis probing range is not enough to fit all the points defined in AUTO_BED_LEVELING_GRID_POINTS" - #endif - #else - #if ((Y_PROBE_OFFSET_FROM_EXTRUDER * (AUTO_BED_LEVELING_GRID_POINTS-1)) >= (BACK_PROBE_BED_POSITION - FRONT_PROBE_BED_POSITION)) - #error "The Y axis probing range is not enough to fit all the points defined in AUTO_BED_LEVELING_GRID_POINTS" - #endif - #endif - - - #endif - #endif // ENABLE_AUTO_BED_LEVELING @@ -626,112 +599,17 @@ const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of // REMEMBER TO INSTALL LiquidCrystal_I2C.h in your ARDUINO library folder: https://github.com/kiyoshigawa/LiquidCrystal_I2C //#define RA_CONTROL_PANEL -//automatic expansion -#if defined (MAKRPANEL) - #define DOGLCD - #define SDSUPPORT - #define ULTIPANEL - #define NEWPANEL - #define DEFAULT_LCD_CONTRAST 17 -#endif - -#if defined(miniVIKI) || defined(VIKI2) - #define ULTRA_LCD //general LCD support, also 16x2 - #define DOGLCD // Support for SPI LCD 128x64 (Controller ST7565R graphic Display Family) - #define ULTIMAKERCONTROLLER //as available from the Ultimaker online store. - - #ifdef miniVIKI - #define DEFAULT_LCD_CONTRAST 95 - #else - #define DEFAULT_LCD_CONTRAST 40 - #endif - - #define ENCODER_PULSES_PER_STEP 4 - #define ENCODER_STEPS_PER_MENU_ITEM 1 -#endif - -#if defined (PANEL_ONE) - #define SDSUPPORT - #define ULTIMAKERCONTROLLER -#endif - -#if defined (REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER) - #define DOGLCD - #define U8GLIB_ST7920 - #define REPRAP_DISCOUNT_SMART_CONTROLLER -#endif - -#if defined(ULTIMAKERCONTROLLER) || defined(REPRAP_DISCOUNT_SMART_CONTROLLER) || defined(G3D_PANEL) - #define ULTIPANEL - #define NEWPANEL -#endif - -#if defined(REPRAPWORLD_KEYPAD) - #define NEWPANEL - #define ULTIPANEL -#endif -#if defined(RA_CONTROL_PANEL) - #define ULTIPANEL - #define NEWPANEL - #define LCD_I2C_TYPE_PCA8574 - #define LCD_I2C_ADDRESS 0x27 // I2C Address of the port expander -#endif - -//I2C PANELS +/** + * I2C Panels + */ //#define LCD_I2C_SAINSMART_YWROBOT -#ifdef LCD_I2C_SAINSMART_YWROBOT - // This uses the LiquidCrystal_I2C library ( https://bitbucket.org/fmalpartida/new-liquidcrystal/wiki/Home ) - // Make sure it is placed in the Arduino libraries directory. - #define LCD_I2C_TYPE_PCF8575 - #define LCD_I2C_ADDRESS 0x27 // I2C Address of the port expander - #define NEWPANEL - #define ULTIPANEL -#endif // PANELOLU2 LCD with status LEDs, separate encoder and click inputs //#define LCD_I2C_PANELOLU2 -#ifdef LCD_I2C_PANELOLU2 - // This uses the LiquidTWI2 library v1.2.3 or later ( https://github.com/lincomatic/LiquidTWI2 ) - // Make sure the LiquidTWI2 directory is placed in the Arduino or Sketchbook libraries subdirectory. - // (v1.2.3 no longer requires you to define PANELOLU in the LiquidTWI2.h library header file) - // Note: The PANELOLU2 encoder click input can either be directly connected to a pin - // (if BTN_ENC defined to != -1) or read through I2C (when BTN_ENC == -1). - #define LCD_I2C_TYPE_MCP23017 - #define LCD_I2C_ADDRESS 0x20 // I2C Address of the port expander - #define LCD_USE_I2C_BUZZER //comment out to disable buzzer on LCD - #define NEWPANEL - #define ULTIPANEL - - #ifndef ENCODER_PULSES_PER_STEP - #define ENCODER_PULSES_PER_STEP 4 - #endif - - #ifndef ENCODER_STEPS_PER_MENU_ITEM - #define ENCODER_STEPS_PER_MENU_ITEM 1 - #endif - - - #ifdef LCD_USE_I2C_BUZZER - #define LCD_FEEDBACK_FREQUENCY_HZ 1000 - #define LCD_FEEDBACK_FREQUENCY_DURATION_MS 100 - #endif - -#endif // Panucatt VIKI LCD with status LEDs, integrated click & L/R/U/P buttons, separate encoder inputs //#define LCD_I2C_VIKI -#ifdef LCD_I2C_VIKI - // This uses the LiquidTWI2 library v1.2.3 or later ( https://github.com/lincomatic/LiquidTWI2 ) - // Make sure the LiquidTWI2 directory is placed in the Arduino or Sketchbook libraries subdirectory. - // Note: The pause/stop/resume LCD button pin should be connected to the Arduino - // BTN_ENC pin (or set BTN_ENC to -1 if not used) - #define LCD_I2C_TYPE_MCP23017 - #define LCD_I2C_ADDRESS 0x20 // I2C Address of the port expander - #define LCD_USE_I2C_BUZZER //comment out to disable buzzer on LCD (requires LiquidTWI2 v1.2.3 or later) - #define NEWPANEL - #define ULTIPANEL -#endif // Shift register panels // --------------------- @@ -739,43 +617,8 @@ const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of // https://bitbucket.org/fmalpartida/new-liquidcrystal/wiki/schematics#!shiftregister-connection //#define SAV_3DLCD -#ifdef SAV_3DLCD - #define SR_LCD_2W_NL // Non latching 2 wire shiftregister - #define NEWPANEL - #define ULTIPANEL -#endif -#ifdef ULTIPANEL - #define NEWPANEL //enable this if you have a click-encoder panel - #define SDSUPPORT - #define ULTRA_LCD - #ifdef DOGLCD // Change number of lines to match the DOG graphic display - #define LCD_WIDTH 22 - #define LCD_HEIGHT 5 - #else - #define LCD_WIDTH 20 - #define LCD_HEIGHT 4 - #endif -#else //no panel but just LCD - #ifdef ULTRA_LCD - #ifdef DOGLCD // Change number of lines to match the 128x64 graphics display - #define LCD_WIDTH 22 - #define LCD_HEIGHT 5 - #else - #define LCD_WIDTH 16 - #define LCD_HEIGHT 2 - #endif - #endif -#endif - -// default LCD contrast for dogm-like LCD displays -#ifdef DOGLCD -# ifndef DEFAULT_LCD_CONTRAST -# define DEFAULT_LCD_CONTRAST 32 -# endif -#endif - // Increase the FAN pwm frequency. Removes the PWM noise but increases heating in the FET/Arduino #define FAST_PWM_FAN @@ -859,7 +702,11 @@ const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of //#define FILAMENT_LCD_DISPLAY + + + + #include "Configuration_adv.h" #include "thermistortables.h" -#endif //__CONFIGURATION_H +#endif //CONFIGURATION_H diff --git a/Marlin/example_configurations/Felix/Configuration_adv.h b/Marlin/example_configurations/Felix/Configuration_adv.h index f3d758d49..da2424d64 100644 --- a/Marlin/example_configurations/Felix/Configuration_adv.h +++ b/Marlin/example_configurations/Felix/Configuration_adv.h @@ -1,6 +1,8 @@ #ifndef CONFIGURATION_ADV_H #define CONFIGURATION_ADV_H +#include "Conditionals.h" + //=========================================================================== //=============================Thermal Settings ============================ //=========================================================================== @@ -89,54 +91,6 @@ #define ENDSTOPS_ONLY_FOR_HOMING // If defined the endstops will only be used for homing - -//// AUTOSET LOCATIONS OF LIMIT SWITCHES -//// Added by ZetaPhoenix 09-15-2012 -#ifdef MANUAL_HOME_POSITIONS // Use manual limit switch locations - #define X_HOME_POS MANUAL_X_HOME_POS - #define Y_HOME_POS MANUAL_Y_HOME_POS - #define Z_HOME_POS MANUAL_Z_HOME_POS -#else //Set min/max homing switch positions based upon homing direction and min/max travel limits - //X axis - #if X_HOME_DIR == -1 - #ifdef BED_CENTER_AT_0_0 - #define X_HOME_POS X_MAX_LENGTH * -0.5 - #else - #define X_HOME_POS X_MIN_POS - #endif //BED_CENTER_AT_0_0 - #else - #ifdef BED_CENTER_AT_0_0 - #define X_HOME_POS X_MAX_LENGTH * 0.5 - #else - #define X_HOME_POS X_MAX_POS - #endif //BED_CENTER_AT_0_0 - #endif //X_HOME_DIR == -1 - - //Y axis - #if Y_HOME_DIR == -1 - #ifdef BED_CENTER_AT_0_0 - #define Y_HOME_POS Y_MAX_LENGTH * -0.5 - #else - #define Y_HOME_POS Y_MIN_POS - #endif //BED_CENTER_AT_0_0 - #else - #ifdef BED_CENTER_AT_0_0 - #define Y_HOME_POS Y_MAX_LENGTH * 0.5 - #else - #define Y_HOME_POS Y_MAX_POS - #endif //BED_CENTER_AT_0_0 - #endif //Y_HOME_DIR == -1 - - // Z axis - #if Z_HOME_DIR == -1 //BED_CENTER_AT_0_0 not used - #define Z_HOME_POS Z_MIN_POS - #else - #define Z_HOME_POS Z_MAX_POS - #endif //Z_HOME_DIR == -1 -#endif //End auto min/max positions -//END AUTOSET LOCATIONS OF LIMIT SWITCHES -ZP - - //#define Z_LATE_ENABLE // Enable Z the last moment. Needed if your Z driver overheats. // A single Z stepper driver is usually used to drive 2 stepper motors. @@ -146,26 +100,12 @@ // On a RAMPS (or other 5 driver) motherboard, using this feature will limit you to using 1 extruder. //#define Z_DUAL_STEPPER_DRIVERS -#ifdef Z_DUAL_STEPPER_DRIVERS - #undef EXTRUDERS - #define EXTRUDERS 1 -#endif - // Same again but for Y Axis. //#define Y_DUAL_STEPPER_DRIVERS // Define if the two Y drives need to rotate in opposite directions #define INVERT_Y2_VS_Y_DIR true -#ifdef Y_DUAL_STEPPER_DRIVERS - #undef EXTRUDERS - #define EXTRUDERS 1 -#endif - -#if defined (Z_DUAL_STEPPER_DRIVERS) && defined (Y_DUAL_STEPPER_DRIVERS) - #error "You cannot have dual drivers for both Y and Z" -#endif - // Enable this for dual x-carriage printers. // A dual x-carriage design has the advantage that the inactive extruder can be parked which // prevents hot-end ooze contaminating the print. It also reduces the weight of each x-carriage @@ -218,31 +158,22 @@ //#define QUICK_HOME //if this is defined, if both x and y are to be homed, a diagonal move will be performed initially. #define AXIS_RELATIVE_MODES {false, false, false, false} -#ifdef CONFIG_STEPPERS_TOSHIBA -#define MAX_STEP_FREQUENCY 10000 // Max step frequency for Toshiba Stepper Controllers -#else -#define MAX_STEP_FREQUENCY 40000 // Max step frequency for Ultimaker (5000 pps / half step) -#endif + //By default pololu step drivers require an active high signal. However, some high power drivers require an active low signal as step. #define INVERT_X_STEP_PIN false #define INVERT_Y_STEP_PIN false #define INVERT_Z_STEP_PIN false #define INVERT_E_STEP_PIN false -//default stepper release if idle. Set to 0 to deactivate. +// Default stepper release if idle. Set to 0 to deactivate. #define DEFAULT_STEPPER_DEACTIVE_TIME 60 #define DEFAULT_MINIMUMFEEDRATE 0.0 // minimum feedrate #define DEFAULT_MINTRAVELFEEDRATE 0.0 -// Feedrates for manual moves along X, Y, Z, E from panel #ifdef ULTIPANEL -#define MANUAL_FEEDRATE {50*60, 50*60, 4*60, 60} // set the speeds for manual moves (mm/min) -#endif - -//Comment to disable setting feedrate multiplier via encoder -#ifdef ULTIPANEL - #define ULTIPANEL_FEEDMULTIPLY + #define MANUAL_FEEDRATE {50*60, 50*60, 4*60, 60} // Feedrates for manual moves along X, Y, Z, E from panel + #define ULTIPANEL_FEEDMULTIPLY // Comment to disable setting feedrate multiplier via encoder #endif // minimum time in microseconds that a movement needs to take if the buffer is emptied. @@ -261,13 +192,6 @@ // if unwanted behavior is observed on a user's machine when running at very slow speeds. #define MINIMUM_PLANNER_SPEED 0.05// (mm/sec) -// MS1 MS2 Stepper Driver Microstepping mode table -#define MICROSTEP1 LOW,LOW -#define MICROSTEP2 HIGH,LOW -#define MICROSTEP4 LOW,HIGH -#define MICROSTEP8 HIGH,HIGH -#define MICROSTEP16 HIGH,HIGH - // Microstep setting (Only functional when stepper driver microstep pins are connected to MCU. #define MICROSTEP_MODES {16,16,16,16,16} // [1,2,4,8,16] @@ -313,12 +237,6 @@ #define PROGRESS_MSG_EXPIRE 0 // Enable this to show messages for MSG_TIME then hide them //#define PROGRESS_MSG_ONCE - #ifdef DOGLCD - #warning LCD_PROGRESS_BAR does not apply to graphical displays at this time. - #endif - #ifdef FILAMENT_LCD_DISPLAY - #error LCD_PROGRESS_BAR and FILAMENT_LCD_DISPLAY are not fully compatible. Comment out this line to use both. - #endif #endif // The hardware watchdog should reset the microcontroller disabling all outputs, in case the firmware gets stuck and doesn't do temperature regulation. @@ -342,16 +260,6 @@ #define BABYSTEP_XY //not only z, but also XY in the menu. more clutter, more functions #define BABYSTEP_INVERT_Z false //true for inverse movements in Z #define BABYSTEP_Z_MULTIPLICATOR 2 //faster z movements - - #ifdef COREXY - #error BABYSTEPPING not implemented for COREXY yet. - #endif - - #ifdef DELTA - #ifdef BABYSTEP_XY - #error BABYSTEPPING only implemented for Z axis on deltabots. - #endif - #endif #endif // extruder advance constant (s2/mm3) @@ -365,12 +273,8 @@ #ifdef ADVANCE #define EXTRUDER_ADVANCE_K .0 - #define D_FILAMENT 2.85 #define STEPS_MM_E 836 - #define EXTRUSION_AREA (0.25 * D_FILAMENT * D_FILAMENT * 3.14159) - #define STEPS_PER_CUBIC_MM_E (axis_steps_per_unit[E_AXIS]/ EXTRUSION_AREA) - #endif // ADVANCE // Arc interpretation settings: @@ -444,9 +348,9 @@ const unsigned int dropsegments=5; //everything with less than this number of st #define RETRACT_RECOVER_FEEDRATE 8 //default feedrate for recovering from retraction (mm/s) #endif -//adds support for experimental filament exchange support M600; requires display +// Add support for experimental filament exchange support M600; requires display #ifdef ULTIPANEL - #define FILAMENTCHANGEENABLE + //#define FILAMENTCHANGEENABLE #ifdef FILAMENTCHANGEENABLE #define FILAMENTCHANGE_XPOS 3 #define FILAMENTCHANGE_YPOS 3 @@ -456,86 +360,7 @@ const unsigned int dropsegments=5; //everything with less than this number of st #endif #endif -#ifdef FILAMENTCHANGEENABLE - #ifdef EXTRUDER_RUNOUT_PREVENT - #error EXTRUDER_RUNOUT_PREVENT currently incompatible with FILAMENTCHANGE - #endif -#endif - -//=========================================================================== -//============================= 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 - +#include "Conditionals.h" +#include "SanityCheck.h" -#endif //__CONFIGURATION_ADV_H +#endif //CONFIGURATION_ADV_H diff --git a/Marlin/example_configurations/Hephestos/Configuration.h b/Marlin/example_configurations/Hephestos/Configuration.h index daa957fe2..c5b0243d5 100644 --- a/Marlin/example_configurations/Hephestos/Configuration.h +++ b/Marlin/example_configurations/Hephestos/Configuration.h @@ -322,15 +322,6 @@ your extruder heater takes 2 minutes to hit the target on heating. // #define ENDSTOPPULLUP_ZMIN #endif -#ifdef ENDSTOPPULLUPS - #define ENDSTOPPULLUP_XMAX - #define ENDSTOPPULLUP_YMAX - #define ENDSTOPPULLUP_ZMAX - #define ENDSTOPPULLUP_XMIN - #define ENDSTOPPULLUP_YMIN - #define ENDSTOPPULLUP_ZMIN -#endif - // The pullups are needed if you directly connect a mechanical endswitch between the signal and ground pins. const bool X_MIN_ENDSTOP_INVERTING = true; // set to true to invert the logic of the endstop. const bool Y_MIN_ENDSTOP_INVERTING = true; // set to true to invert the logic of the endstop. @@ -379,10 +370,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. //=========================================================================== //============================ Manual Bed Leveling ========================== @@ -631,112 +627,17 @@ const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of // REMEMBER TO INSTALL LiquidCrystal_I2C.h in your ARDUINO library folder: https://github.com/kiyoshigawa/LiquidCrystal_I2C //#define RA_CONTROL_PANEL -//automatic expansion -#if defined (MAKRPANEL) - #define DOGLCD - #define SDSUPPORT - #define ULTIPANEL - #define NEWPANEL - #define DEFAULT_LCD_CONTRAST 17 -#endif - -#if defined(miniVIKI) || defined(VIKI2) - #define ULTRA_LCD //general LCD support, also 16x2 - #define DOGLCD // Support for SPI LCD 128x64 (Controller ST7565R graphic Display Family) - #define ULTIMAKERCONTROLLER //as available from the Ultimaker online store. - - #ifdef miniVIKI - #define DEFAULT_LCD_CONTRAST 95 - #else - #define DEFAULT_LCD_CONTRAST 40 - #endif - - #define ENCODER_PULSES_PER_STEP 4 - #define ENCODER_STEPS_PER_MENU_ITEM 1 -#endif - -#if defined (PANEL_ONE) - #define SDSUPPORT - #define ULTIMAKERCONTROLLER -#endif - -#if defined (REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER) - #define DOGLCD - #define U8GLIB_ST7920 - #define REPRAP_DISCOUNT_SMART_CONTROLLER -#endif - -#if defined(ULTIMAKERCONTROLLER) || defined(REPRAP_DISCOUNT_SMART_CONTROLLER) || defined(G3D_PANEL) - #define ULTIPANEL - #define NEWPANEL -#endif - -#if defined(REPRAPWORLD_KEYPAD) - #define NEWPANEL - #define ULTIPANEL -#endif -#if defined(RA_CONTROL_PANEL) - #define ULTIPANEL - #define NEWPANEL - #define LCD_I2C_TYPE_PCA8574 - #define LCD_I2C_ADDRESS 0x27 // I2C Address of the port expander -#endif - -//I2C PANELS +/** + * I2C Panels + */ //#define LCD_I2C_SAINSMART_YWROBOT -#ifdef LCD_I2C_SAINSMART_YWROBOT - // This uses the LiquidCrystal_I2C library ( https://bitbucket.org/fmalpartida/new-liquidcrystal/wiki/Home ) - // Make sure it is placed in the Arduino libraries directory. - #define LCD_I2C_TYPE_PCF8575 - #define LCD_I2C_ADDRESS 0x27 // I2C Address of the port expander - #define NEWPANEL - #define ULTIPANEL -#endif // PANELOLU2 LCD with status LEDs, separate encoder and click inputs //#define LCD_I2C_PANELOLU2 -#ifdef LCD_I2C_PANELOLU2 - // This uses the LiquidTWI2 library v1.2.3 or later ( https://github.com/lincomatic/LiquidTWI2 ) - // Make sure the LiquidTWI2 directory is placed in the Arduino or Sketchbook libraries subdirectory. - // (v1.2.3 no longer requires you to define PANELOLU in the LiquidTWI2.h library header file) - // Note: The PANELOLU2 encoder click input can either be directly connected to a pin - // (if BTN_ENC defined to != -1) or read through I2C (when BTN_ENC == -1). - #define LCD_I2C_TYPE_MCP23017 - #define LCD_I2C_ADDRESS 0x20 // I2C Address of the port expander - #define LCD_USE_I2C_BUZZER //comment out to disable buzzer on LCD - #define NEWPANEL - #define ULTIPANEL - - #ifndef ENCODER_PULSES_PER_STEP - #define ENCODER_PULSES_PER_STEP 4 - #endif - - #ifndef ENCODER_STEPS_PER_MENU_ITEM - #define ENCODER_STEPS_PER_MENU_ITEM 1 - #endif - - - #ifdef LCD_USE_I2C_BUZZER - #define LCD_FEEDBACK_FREQUENCY_HZ 1000 - #define LCD_FEEDBACK_FREQUENCY_DURATION_MS 100 - #endif - -#endif // Panucatt VIKI LCD with status LEDs, integrated click & L/R/U/P buttons, separate encoder inputs //#define LCD_I2C_VIKI -#ifdef LCD_I2C_VIKI - // This uses the LiquidTWI2 library v1.2.3 or later ( https://github.com/lincomatic/LiquidTWI2 ) - // Make sure the LiquidTWI2 directory is placed in the Arduino or Sketchbook libraries subdirectory. - // Note: The pause/stop/resume LCD button pin should be connected to the Arduino - // BTN_ENC pin (or set BTN_ENC to -1 if not used) - #define LCD_I2C_TYPE_MCP23017 - #define LCD_I2C_ADDRESS 0x20 // I2C Address of the port expander - #define LCD_USE_I2C_BUZZER //comment out to disable buzzer on LCD (requires LiquidTWI2 v1.2.3 or later) - #define NEWPANEL - #define ULTIPANEL -#endif // Shift register panels // --------------------- @@ -744,51 +645,10 @@ const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of // https://bitbucket.org/fmalpartida/new-liquidcrystal/wiki/schematics#!shiftregister-connection //#define SAV_3DLCD -#ifdef SAV_3DLCD - #define SR_LCD_2W_NL // Non latching 2 wire shiftregister - #define NEWPANEL - #define ULTIPANEL -#endif - - -#ifdef ULTIPANEL -// #define NEWPANEL //enable this if you have a click-encoder panel - #define SDSUPPORT - #define ULTRA_LCD - #ifdef DOGLCD // Change number of lines to match the DOG graphic display - #define LCD_WIDTH 22 - #define LCD_HEIGHT 5 - #else - #define LCD_WIDTH 20 - #define LCD_HEIGHT 4 - #endif -#else //no panel but just LCD - #ifdef ULTRA_LCD - #ifdef DOGLCD // Change number of lines to match the 128x64 graphics display - #define LCD_WIDTH 22 - #define LCD_HEIGHT 5 - #else - #define LCD_WIDTH 16 - #define LCD_HEIGHT 2 - #endif - #endif -#endif - -// default LCD contrast for dogm-like LCD displays -#ifdef DOGLCD -# ifndef DEFAULT_LCD_CONTRAST -# define DEFAULT_LCD_CONTRAST 32 -# endif -#endif // Increase the FAN pwm frequency. Removes the PWM noise but increases heating in the FET/Arduino //#define FAST_PWM_FAN -// Temperature status LEDs that display the hotend and bet temperature. -// If all hotends and bed temperature and temperature setpoint are < 54C then the BLUE led is on. -// Otherwise the RED led is on. There is 1C hysteresis. -//#define TEMP_STAT_LEDS - // Use software PWM to drive the fan, as for the heaters. This uses a very low frequency // which is not ass annoying as with the hardware PWM. On the other hand, if this frequency // is too low, you should also increment SOFT_PWM_SCALE. @@ -800,6 +660,11 @@ const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of // at zero value, there are 128 effective control positions. #define SOFT_PWM_SCALE 0 +// Temperature status LEDs that display the hotend and bet temperature. +// If all hotends and bed temperature and temperature setpoint are < 54C then the BLUE led is on. +// Otherwise the RED led is on. There is 1C hysteresis. +//#define TEMP_STAT_LEDS + // M240 Triggers a camera by emulating a Canon RC-1 Remote // Data from: http://www.doc-diy.net/photo/rc-1_hacked/ // #define PHOTOGRAPH_PIN 23 @@ -871,4 +736,4 @@ const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of #include "Configuration_adv.h" #include "thermistortables.h" -#endif //__CONFIGURATION_H +#endif //CONFIGURATION_H diff --git a/Marlin/example_configurations/Hephestos/Configuration_adv.h b/Marlin/example_configurations/Hephestos/Configuration_adv.h index cf18b9585..fcdf4d161 100644 --- a/Marlin/example_configurations/Hephestos/Configuration_adv.h +++ b/Marlin/example_configurations/Hephestos/Configuration_adv.h @@ -1,6 +1,8 @@ #ifndef CONFIGURATION_ADV_H #define CONFIGURATION_ADV_H +#include "Conditionals.h" + //=========================================================================== //=============================Thermal Settings ============================ //=========================================================================== @@ -89,54 +91,6 @@ //#define ENDSTOPS_ONLY_FOR_HOMING // If defined the endstops will only be used for homing - -//// AUTOSET LOCATIONS OF LIMIT SWITCHES -//// Added by ZetaPhoenix 09-15-2012 -#ifdef MANUAL_HOME_POSITIONS // Use manual limit switch locations - #define X_HOME_POS MANUAL_X_HOME_POS - #define Y_HOME_POS MANUAL_Y_HOME_POS - #define Z_HOME_POS MANUAL_Z_HOME_POS -#else //Set min/max homing switch positions based upon homing direction and min/max travel limits - //X axis - #if X_HOME_DIR == -1 - #ifdef BED_CENTER_AT_0_0 - #define X_HOME_POS X_MAX_LENGTH * -0.5 - #else - #define X_HOME_POS X_MIN_POS - #endif //BED_CENTER_AT_0_0 - #else - #ifdef BED_CENTER_AT_0_0 - #define X_HOME_POS X_MAX_LENGTH * 0.5 - #else - #define X_HOME_POS X_MAX_POS - #endif //BED_CENTER_AT_0_0 - #endif //X_HOME_DIR == -1 - - //Y axis - #if Y_HOME_DIR == -1 - #ifdef BED_CENTER_AT_0_0 - #define Y_HOME_POS Y_MAX_LENGTH * -0.5 - #else - #define Y_HOME_POS Y_MIN_POS - #endif //BED_CENTER_AT_0_0 - #else - #ifdef BED_CENTER_AT_0_0 - #define Y_HOME_POS Y_MAX_LENGTH * 0.5 - #else - #define Y_HOME_POS Y_MAX_POS - #endif //BED_CENTER_AT_0_0 - #endif //Y_HOME_DIR == -1 - - // Z axis - #if Z_HOME_DIR == -1 //BED_CENTER_AT_0_0 not used - #define Z_HOME_POS Z_MIN_POS - #else - #define Z_HOME_POS Z_MAX_POS - #endif //Z_HOME_DIR == -1 -#endif //End auto min/max positions -//END AUTOSET LOCATIONS OF LIMIT SWITCHES -ZP - - //#define Z_LATE_ENABLE // Enable Z the last moment. Needed if your Z driver overheats. // A single Z stepper driver is usually used to drive 2 stepper motors. @@ -146,26 +100,12 @@ // On a RAMPS (or other 5 driver) motherboard, using this feature will limit you to using 1 extruder. //#define Z_DUAL_STEPPER_DRIVERS -#ifdef Z_DUAL_STEPPER_DRIVERS - #undef EXTRUDERS - #define EXTRUDERS 1 -#endif - // Same again but for Y Axis. //#define Y_DUAL_STEPPER_DRIVERS // Define if the two Y drives need to rotate in opposite directions #define INVERT_Y2_VS_Y_DIR true -#ifdef Y_DUAL_STEPPER_DRIVERS - #undef EXTRUDERS - #define EXTRUDERS 1 -#endif - -#if defined (Z_DUAL_STEPPER_DRIVERS) && defined (Y_DUAL_STEPPER_DRIVERS) - #error "You cannot have dual drivers for both Y and Z" -#endif - // Enable this for dual x-carriage printers. // A dual x-carriage design has the advantage that the inactive extruder can be parked which // prevents hot-end ooze contaminating the print. It also reduces the weight of each x-carriage @@ -229,20 +169,15 @@ #define INVERT_Z_STEP_PIN false #define INVERT_E_STEP_PIN false -//default stepper release if idle. Set to 0 to deactivate. +// Default stepper release if idle. Set to 0 to deactivate. #define DEFAULT_STEPPER_DEACTIVE_TIME 60 #define DEFAULT_MINIMUMFEEDRATE 0.0 // minimum feedrate #define DEFAULT_MINTRAVELFEEDRATE 0.0 -// Feedrates for manual moves along X, Y, Z, E from panel #ifdef ULTIPANEL -#define MANUAL_FEEDRATE {120*60, 120*60, 18*60, 60} // set the speeds for manual moves (mm/min) -#endif - -//Comment to disable setting feedrate multiplier via encoder -#ifdef ULTIPANEL - #define ULTIPANEL_FEEDMULTIPLY + #define MANUAL_FEEDRATE {120*60, 120*60, 18*60, 60} // Feedrates for manual moves along X, Y, Z, E from panel + #define ULTIPANEL_FEEDMULTIPLY // Comment to disable setting feedrate multiplier via encoder #endif // minimum time in microseconds that a movement needs to take if the buffer is emptied. @@ -261,13 +196,6 @@ // if unwanted behavior is observed on a user's machine when running at very slow speeds. #define MINIMUM_PLANNER_SPEED 0.05// (mm/sec) -// MS1 MS2 Stepper Driver Microstepping mode table -#define MICROSTEP1 LOW,LOW -#define MICROSTEP2 HIGH,LOW -#define MICROSTEP4 LOW,HIGH -#define MICROSTEP8 HIGH,HIGH -#define MICROSTEP16 HIGH,HIGH - // Microstep setting (Only functional when stepper driver microstep pins are connected to MCU. #define MICROSTEP_MODES {16,16,16,16,16} // [1,2,4,8,16] @@ -313,12 +241,6 @@ #define PROGRESS_MSG_EXPIRE 0 // Enable this to show messages for MSG_TIME then hide them //#define PROGRESS_MSG_ONCE - #ifdef DOGLCD - #warning LCD_PROGRESS_BAR does not apply to graphical displays at this time. - #endif - #ifdef FILAMENT_LCD_DISPLAY - #error LCD_PROGRESS_BAR and FILAMENT_LCD_DISPLAY are not fully compatible. Comment out this line to use both. - #endif #endif // The hardware watchdog should reset the microcontroller disabling all outputs, in case the firmware gets stuck and doesn't do temperature regulation. @@ -342,16 +264,6 @@ #define BABYSTEP_XY //not only z, but also XY in the menu. more clutter, more functions #define BABYSTEP_INVERT_Z false //true for inverse movements in Z #define BABYSTEP_Z_MULTIPLICATOR 2 //faster z movements - - #ifdef COREXY - #error BABYSTEPPING not implemented for COREXY yet. - #endif - - #ifdef DELTA - #ifdef BABYSTEP_XY - #error BABYSTEPPING only implemented for Z axis on deltabots. - #endif - #endif #endif // extruder advance constant (s2/mm3) @@ -365,12 +277,8 @@ #ifdef ADVANCE #define EXTRUDER_ADVANCE_K .0 - #define D_FILAMENT 1.75 #define STEPS_MM_E 100.47095761381482 - #define EXTRUSION_AREA (0.25 * D_FILAMENT * D_FILAMENT * 3.14159) - #define STEPS_PER_CUBIC_MM_E (axis_steps_per_unit[E_AXIS]/ EXTRUSION_AREA) - #endif // ADVANCE // Arc interpretation settings: @@ -385,26 +293,6 @@ const unsigned int dropsegments=5; //everything with less than this number of st // be commented out otherwise #define SDCARDDETECTINVERTED -#ifdef ULTIPANEL - #undef SDCARDDETECTINVERTED -#endif - -// Power Signal Control Definitions -// By default use ATX definition -#ifndef POWER_SUPPLY - #define POWER_SUPPLY 1 -#endif -// 1 = ATX -#if (POWER_SUPPLY == 1) - #define PS_ON_AWAKE LOW - #define PS_ON_ASLEEP HIGH -#endif -// 2 = X-Box 360 203W -#if (POWER_SUPPLY == 2) - #define PS_ON_AWAKE HIGH - #define PS_ON_ASLEEP LOW -#endif - // Control heater 0 and heater 1 in parallel. //#define HEATERS_PARALLEL @@ -444,9 +332,9 @@ const unsigned int dropsegments=5; //everything with less than this number of st #define RETRACT_RECOVER_FEEDRATE 8*60 //default feedrate for recovering from retraction (mm/s) #endif -//adds support for experimental filament exchange support M600; requires display +// Add support for experimental filament exchange support M600; requires display #ifdef ULTIPANEL - #define FILAMENTCHANGEENABLE + //#define FILAMENTCHANGEENABLE #ifdef FILAMENTCHANGEENABLE #define FILAMENTCHANGE_XPOS 3 #define FILAMENTCHANGE_YPOS 3 @@ -456,86 +344,7 @@ const unsigned int dropsegments=5; //everything with less than this number of st #endif #endif -#ifdef FILAMENTCHANGEENABLE - #ifdef EXTRUDER_RUNOUT_PREVENT - #error EXTRUDER_RUNOUT_PREVENT currently incompatible with FILAMENTCHANGE - #endif -#endif - -//=========================================================================== -//============================= 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 - +#include "Conditionals.h" +#include "SanityCheck.h" -#endif //__CONFIGURATION_ADV_H +#endif //CONFIGURATION_ADV_H diff --git a/Marlin/example_configurations/K8200/Configuration.h b/Marlin/example_configurations/K8200/Configuration.h index 3a0ac2cf2..bc0f3e5df 100644 --- a/Marlin/example_configurations/K8200/Configuration.h +++ b/Marlin/example_configurations/K8200/Configuration.h @@ -327,15 +327,6 @@ your extruder heater takes 2 minutes to hit the target on heating. #define ENDSTOPPULLUP_ZMIN #endif -#ifdef ENDSTOPPULLUPS - // #define ENDSTOPPULLUP_XMAX - // #define ENDSTOPPULLUP_YMAX - // #define ENDSTOPPULLUP_ZMAX - #define ENDSTOPPULLUP_XMIN - #define ENDSTOPPULLUP_YMIN - #define ENDSTOPPULLUP_ZMIN -#endif - // The pullups are needed if you directly connect a mechanical endswitch between the signal and ground pins. const bool X_MIN_ENDSTOP_INVERTING = false; // set to true to invert the logic of the endstop. const bool Y_MIN_ENDSTOP_INVERTING = false; // set to true to invert the logic of the endstop. @@ -384,10 +375,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. //=========================================================================== //============================ Manual Bed Leveling ========================== @@ -635,112 +631,17 @@ const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of // REMEMBER TO INSTALL LiquidCrystal_I2C.h in your ARDUINO library folder: https://github.com/kiyoshigawa/LiquidCrystal_I2C //#define RA_CONTROL_PANEL -//automatic expansion -#if defined (MAKRPANEL) - #define DOGLCD - #define SDSUPPORT - #define ULTIPANEL - #define NEWPANEL - #define DEFAULT_LCD_CONTRAST 17 -#endif - -#if defined(miniVIKI) || defined(VIKI2) - #define ULTRA_LCD //general LCD support, also 16x2 - #define DOGLCD // Support for SPI LCD 128x64 (Controller ST7565R graphic Display Family) - #define ULTIMAKERCONTROLLER //as available from the Ultimaker online store. - - #ifdef miniVIKI - #define DEFAULT_LCD_CONTRAST 95 - #else - #define DEFAULT_LCD_CONTRAST 40 - #endif - - #define ENCODER_PULSES_PER_STEP 4 - #define ENCODER_STEPS_PER_MENU_ITEM 1 -#endif - -#if defined (PANEL_ONE) - #define SDSUPPORT - #define ULTIMAKERCONTROLLER -#endif - -#if defined (REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER) - #define DOGLCD - #define U8GLIB_ST7920 - #define REPRAP_DISCOUNT_SMART_CONTROLLER -#endif - -#if defined(ULTIMAKERCONTROLLER) || defined(REPRAP_DISCOUNT_SMART_CONTROLLER) || defined(G3D_PANEL) - #define ULTIPANEL - #define NEWPANEL -#endif - -#if defined(REPRAPWORLD_KEYPAD) - #define NEWPANEL - #define ULTIPANEL -#endif -#if defined(RA_CONTROL_PANEL) - #define ULTIPANEL - #define NEWPANEL - #define LCD_I2C_TYPE_PCA8574 - #define LCD_I2C_ADDRESS 0x27 // I2C Address of the port expander -#endif - -//I2C PANELS +/** + * I2C Panels + */ //#define LCD_I2C_SAINSMART_YWROBOT -#ifdef LCD_I2C_SAINSMART_YWROBOT - // This uses the LiquidCrystal_I2C library ( https://bitbucket.org/fmalpartida/new-liquidcrystal/wiki/Home ) - // Make sure it is placed in the Arduino libraries directory. - #define LCD_I2C_TYPE_PCF8575 - #define LCD_I2C_ADDRESS 0x27 // I2C Address of the port expander - #define NEWPANEL - #define ULTIPANEL -#endif // PANELOLU2 LCD with status LEDs, separate encoder and click inputs //#define LCD_I2C_PANELOLU2 -#ifdef LCD_I2C_PANELOLU2 - // This uses the LiquidTWI2 library v1.2.3 or later ( https://github.com/lincomatic/LiquidTWI2 ) - // Make sure the LiquidTWI2 directory is placed in the Arduino or Sketchbook libraries subdirectory. - // (v1.2.3 no longer requires you to define PANELOLU in the LiquidTWI2.h library header file) - // Note: The PANELOLU2 encoder click input can either be directly connected to a pin - // (if BTN_ENC defined to != -1) or read through I2C (when BTN_ENC == -1). - #define LCD_I2C_TYPE_MCP23017 - #define LCD_I2C_ADDRESS 0x20 // I2C Address of the port expander - #define LCD_USE_I2C_BUZZER //comment out to disable buzzer on LCD - #define NEWPANEL - #define ULTIPANEL - - #ifndef ENCODER_PULSES_PER_STEP - #define ENCODER_PULSES_PER_STEP 4 - #endif - - #ifndef ENCODER_STEPS_PER_MENU_ITEM - #define ENCODER_STEPS_PER_MENU_ITEM 1 - #endif - - - #ifdef LCD_USE_I2C_BUZZER - #define LCD_FEEDBACK_FREQUENCY_HZ 1000 - #define LCD_FEEDBACK_FREQUENCY_DURATION_MS 100 - #endif - -#endif // Panucatt VIKI LCD with status LEDs, integrated click & L/R/U/P buttons, separate encoder inputs //#define LCD_I2C_VIKI -#ifdef LCD_I2C_VIKI - // This uses the LiquidTWI2 library v1.2.3 or later ( https://github.com/lincomatic/LiquidTWI2 ) - // Make sure the LiquidTWI2 directory is placed in the Arduino or Sketchbook libraries subdirectory. - // Note: The pause/stop/resume LCD button pin should be connected to the Arduino - // BTN_ENC pin (or set BTN_ENC to -1 if not used) - #define LCD_I2C_TYPE_MCP23017 - #define LCD_I2C_ADDRESS 0x20 // I2C Address of the port expander - #define LCD_USE_I2C_BUZZER //comment out to disable buzzer on LCD (requires LiquidTWI2 v1.2.3 or later) - #define NEWPANEL - #define ULTIPANEL -#endif // Shift register panels // --------------------- @@ -748,51 +649,10 @@ const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of // https://bitbucket.org/fmalpartida/new-liquidcrystal/wiki/schematics#!shiftregister-connection //#define SAV_3DLCD -#ifdef SAV_3DLCD - #define SR_LCD_2W_NL // Non latching 2 wire shiftregister - #define NEWPANEL - #define ULTIPANEL -#endif - - -#ifdef ULTIPANEL -// #define NEWPANEL //enable this if you have a click-encoder panel - #define SDSUPPORT - #define ULTRA_LCD - #ifdef DOGLCD // Change number of lines to match the DOG graphic display - #define LCD_WIDTH 22 - #define LCD_HEIGHT 5 - #else - #define LCD_WIDTH 20 - #define LCD_HEIGHT 4 - #endif -#else //no panel but just LCD - #ifdef ULTRA_LCD - #ifdef DOGLCD // Change number of lines to match the 128x64 graphics display - #define LCD_WIDTH 22 - #define LCD_HEIGHT 5 - #else - #define LCD_WIDTH 16 - #define LCD_HEIGHT 2 - #endif - #endif -#endif - -// default LCD contrast for dogm-like LCD displays -#ifdef DOGLCD -# ifndef DEFAULT_LCD_CONTRAST -# define DEFAULT_LCD_CONTRAST 32 -# endif -#endif // Increase the FAN pwm frequency. Removes the PWM noise but increases heating in the FET/Arduino //#define FAST_PWM_FAN -// Temperature status LEDs that display the hotend and bet temperature. -// If all hotends and bed temperature and temperature setpoint are < 54C then the BLUE led is on. -// Otherwise the RED led is on. There is 1C hysteresis. -//#define TEMP_STAT_LEDS - // Use software PWM to drive the fan, as for the heaters. This uses a very low frequency // which is not ass annoying as with the hardware PWM. On the other hand, if this frequency // is too low, you should also increment SOFT_PWM_SCALE. @@ -804,6 +664,11 @@ const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of // at zero value, there are 128 effective control positions. #define SOFT_PWM_SCALE 0 +// Temperature status LEDs that display the hotend and bet temperature. +// If all hotends and bed temperature and temperature setpoint are < 54C then the BLUE led is on. +// Otherwise the RED led is on. There is 1C hysteresis. +//#define TEMP_STAT_LEDS + // M240 Triggers a camera by emulating a Canon RC-1 Remote // Data from: http://www.doc-diy.net/photo/rc-1_hacked/ // #define PHOTOGRAPH_PIN 23 @@ -875,4 +740,4 @@ const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of #include "Configuration_adv.h" #include "thermistortables.h" -#endif //__CONFIGURATION_H +#endif //CONFIGURATION_H diff --git a/Marlin/example_configurations/K8200/Configuration_adv.h b/Marlin/example_configurations/K8200/Configuration_adv.h index 0e0d88464..e802338b8 100644 --- a/Marlin/example_configurations/K8200/Configuration_adv.h +++ b/Marlin/example_configurations/K8200/Configuration_adv.h @@ -1,6 +1,8 @@ #ifndef CONFIGURATION_ADV_H #define CONFIGURATION_ADV_H +#include "Conditionals.h" + //=========================================================================== //=============================Thermal Settings ============================ //=========================================================================== @@ -89,54 +91,6 @@ #define ENDSTOPS_ONLY_FOR_HOMING // If defined the endstops will only be used for homing - -//// AUTOSET LOCATIONS OF LIMIT SWITCHES -//// Added by ZetaPhoenix 09-15-2012 -#ifdef MANUAL_HOME_POSITIONS // Use manual limit switch locations - #define X_HOME_POS MANUAL_X_HOME_POS - #define Y_HOME_POS MANUAL_Y_HOME_POS - #define Z_HOME_POS MANUAL_Z_HOME_POS -#else //Set min/max homing switch positions based upon homing direction and min/max travel limits - //X axis - #if X_HOME_DIR == -1 - #ifdef BED_CENTER_AT_0_0 - #define X_HOME_POS X_MAX_LENGTH * -0.5 - #else - #define X_HOME_POS X_MIN_POS - #endif //BED_CENTER_AT_0_0 - #else - #ifdef BED_CENTER_AT_0_0 - #define X_HOME_POS X_MAX_LENGTH * 0.5 - #else - #define X_HOME_POS X_MAX_POS - #endif //BED_CENTER_AT_0_0 - #endif //X_HOME_DIR == -1 - - //Y axis - #if Y_HOME_DIR == -1 - #ifdef BED_CENTER_AT_0_0 - #define Y_HOME_POS Y_MAX_LENGTH * -0.5 - #else - #define Y_HOME_POS Y_MIN_POS - #endif //BED_CENTER_AT_0_0 - #else - #ifdef BED_CENTER_AT_0_0 - #define Y_HOME_POS Y_MAX_LENGTH * 0.5 - #else - #define Y_HOME_POS Y_MAX_POS - #endif //BED_CENTER_AT_0_0 - #endif //Y_HOME_DIR == -1 - - // Z axis - #if Z_HOME_DIR == -1 //BED_CENTER_AT_0_0 not used - #define Z_HOME_POS Z_MIN_POS - #else - #define Z_HOME_POS Z_MAX_POS - #endif //Z_HOME_DIR == -1 -#endif //End auto min/max positions -//END AUTOSET LOCATIONS OF LIMIT SWITCHES -ZP - - //#define Z_LATE_ENABLE // Enable Z the last moment. Needed if your Z driver overheats. // A single Z stepper driver is usually used to drive 2 stepper motors. @@ -146,26 +100,12 @@ // On a RAMPS (or other 5 driver) motherboard, using this feature will limit you to using 1 extruder. //#define Z_DUAL_STEPPER_DRIVERS -#ifdef Z_DUAL_STEPPER_DRIVERS - #undef EXTRUDERS - #define EXTRUDERS 1 -#endif - // Same again but for Y Axis. //#define Y_DUAL_STEPPER_DRIVERS // Define if the two Y drives need to rotate in opposite directions #define INVERT_Y2_VS_Y_DIR true -#ifdef Y_DUAL_STEPPER_DRIVERS - #undef EXTRUDERS - #define EXTRUDERS 1 -#endif - -#if defined (Z_DUAL_STEPPER_DRIVERS) && defined (Y_DUAL_STEPPER_DRIVERS) - #error "You cannot have dual drivers for both Y and Z" -#endif - // Enable this for dual x-carriage printers. // A dual x-carriage design has the advantage that the inactive extruder can be parked which // prevents hot-end ooze contaminating the print. It also reduces the weight of each x-carriage @@ -218,31 +158,22 @@ //#define QUICK_HOME //if this is defined, if both x and y are to be homed, a diagonal move will be performed initially. #define AXIS_RELATIVE_MODES {false, false, false, false} -#ifdef CONFIG_STEPPERS_TOSHIBA -#define MAX_STEP_FREQUENCY 10000 // Max step frequency for Toshiba Stepper Controllers -#else -#define MAX_STEP_FREQUENCY 40000 // Max step frequency for Ultimaker (5000 pps / half step) -#endif + //By default pololu step drivers require an active high signal. However, some high power drivers require an active low signal as step. #define INVERT_X_STEP_PIN false #define INVERT_Y_STEP_PIN false #define INVERT_Z_STEP_PIN false #define INVERT_E_STEP_PIN false -//default stepper release if idle. Set to 0 to deactivate. +// Default stepper release if idle. Set to 0 to deactivate. #define DEFAULT_STEPPER_DEACTIVE_TIME 60 #define DEFAULT_MINIMUMFEEDRATE 0.0 // minimum feedrate #define DEFAULT_MINTRAVELFEEDRATE 0.0 -// Feedrates for manual moves along X, Y, Z, E from panel -#ifdef ULTIPANEL -#define MANUAL_FEEDRATE {50*60, 50*60, 4*60, 60} // set the speeds for manual moves (mm/min) -#endif - -//Comment to disable setting feedrate multiplier via encoder #ifdef ULTIPANEL - #define ULTIPANEL_FEEDMULTIPLY + #define MANUAL_FEEDRATE {50*60, 50*60, 4*60, 60} // Feedrates for manual moves along X, Y, Z, E from panel + #define ULTIPANEL_FEEDMULTIPLY // Comment to disable setting feedrate multiplier via encoder #endif // minimum time in microseconds that a movement needs to take if the buffer is emptied. @@ -261,13 +192,6 @@ // if unwanted behavior is observed on a user's machine when running at very slow speeds. #define MINIMUM_PLANNER_SPEED 0.05// (mm/sec) -// MS1 MS2 Stepper Driver Microstepping mode table -#define MICROSTEP1 LOW,LOW -#define MICROSTEP2 HIGH,LOW -#define MICROSTEP4 LOW,HIGH -#define MICROSTEP8 HIGH,HIGH -#define MICROSTEP16 HIGH,HIGH - // Microstep setting (Only functional when stepper driver microstep pins are connected to MCU. #define MICROSTEP_MODES {16,16,16,16,16} // [1,2,4,8,16] @@ -313,12 +237,6 @@ #define PROGRESS_MSG_EXPIRE 0 // Enable this to show messages for MSG_TIME then hide them //#define PROGRESS_MSG_ONCE - #ifdef DOGLCD - #warning LCD_PROGRESS_BAR does not apply to graphical displays at this time. - #endif - #ifdef FILAMENT_LCD_DISPLAY - #error LCD_PROGRESS_BAR and FILAMENT_LCD_DISPLAY are not fully compatible. Comment out this line to use both. - #endif #endif // The hardware watchdog should reset the microcontroller disabling all outputs, in case the firmware gets stuck and doesn't do temperature regulation. @@ -342,16 +260,6 @@ #define BABYSTEP_XY //not only z, but also XY in the menu. more clutter, more functions #define BABYSTEP_INVERT_Z false //true for inverse movements in Z #define BABYSTEP_Z_MULTIPLICATOR 2 //faster z movements - - #ifdef COREXY - #error BABYSTEPPING not implemented for COREXY yet. - #endif - - #ifdef DELTA - #ifdef BABYSTEP_XY - #error BABYSTEPPING only implemented for Z axis on deltabots. - #endif - #endif #endif // extruder advance constant (s2/mm3) @@ -365,12 +273,8 @@ #ifdef ADVANCE #define EXTRUDER_ADVANCE_K .0 - #define D_FILAMENT 2.85 #define STEPS_MM_E 836 - #define EXTRUSION_AREA (0.25 * D_FILAMENT * D_FILAMENT * 3.14159) - #define STEPS_PER_CUBIC_MM_E (axis_steps_per_unit[E_AXIS]/ EXTRUSION_AREA) - #endif // ADVANCE // Arc interpretation settings: @@ -385,26 +289,6 @@ const unsigned int dropsegments=5; //everything with less than this number of st // be commented out otherwise #define SDCARDDETECTINVERTED -#ifdef ULTIPANEL - #undef SDCARDDETECTINVERTED -#endif - -// Power Signal Control Definitions -// By default use ATX definition -#ifndef POWER_SUPPLY - #define POWER_SUPPLY 1 -#endif -// 1 = ATX -#if (POWER_SUPPLY == 1) - #define PS_ON_AWAKE LOW - #define PS_ON_ASLEEP HIGH -#endif -// 2 = X-Box 360 203W -#if (POWER_SUPPLY == 2) - #define PS_ON_AWAKE HIGH - #define PS_ON_ASLEEP LOW -#endif - // Control heater 0 and heater 1 in parallel. //#define HEATERS_PARALLEL @@ -444,9 +328,9 @@ const unsigned int dropsegments=5; //everything with less than this number of st #define RETRACT_RECOVER_FEEDRATE 8 //default feedrate for recovering from retraction (mm/s) #endif -//adds support for experimental filament exchange support M600; requires display +// Add support for experimental filament exchange support M600; requires display #ifdef ULTIPANEL - #define FILAMENTCHANGEENABLE + //#define FILAMENTCHANGEENABLE #ifdef FILAMENTCHANGEENABLE #define FILAMENTCHANGE_XPOS 3 #define FILAMENTCHANGE_YPOS 3 @@ -456,86 +340,7 @@ const unsigned int dropsegments=5; //everything with less than this number of st #endif #endif -#ifdef FILAMENTCHANGEENABLE - #ifdef EXTRUDER_RUNOUT_PREVENT - #error EXTRUDER_RUNOUT_PREVENT currently incompatible with FILAMENTCHANGE - #endif -#endif - -//=========================================================================== -//============================= 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 - +#include "Conditionals.h" +#include "SanityCheck.h" -#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 83f68260e..d42bebe3a 100644 --- a/Marlin/example_configurations/SCARA/Configuration.h +++ b/Marlin/example_configurations/SCARA/Configuration.h @@ -351,15 +351,6 @@ your extruder heater takes 2 minutes to hit the target on heating. // #define ENDSTOPPULLUP_ZMIN #endif -#ifdef ENDSTOPPULLUPS - #define ENDSTOPPULLUP_XMAX - #define ENDSTOPPULLUP_YMAX - #define ENDSTOPPULLUP_ZMAX - #define ENDSTOPPULLUP_XMIN - #define ENDSTOPPULLUP_YMIN - #define ENDSTOPPULLUP_ZMIN -#endif - // The pullups are needed if you directly connect a mechanical endswitch between the signal and ground pins. const bool X_MIN_ENDSTOP_INVERTING = true; // set to true to invert the logic of the endstop. const bool Y_MIN_ENDSTOP_INVERTING = true; // set to true to invert the logic of the endstop. @@ -408,10 +399,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. //=========================================================================== //============================ Manual Bed Leveling ========================== @@ -661,112 +657,17 @@ const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of // REMEMBER TO INSTALL LiquidCrystal_I2C.h in your ARDUINO library folder: https://github.com/kiyoshigawa/LiquidCrystal_I2C //#define RA_CONTROL_PANEL -//automatic expansion -#if defined (MAKRPANEL) - #define DOGLCD - #define SDSUPPORT - #define ULTIPANEL - #define NEWPANEL - #define DEFAULT_LCD_CONTRAST 17 -#endif - -#if defined(miniVIKI) || defined(VIKI2) - #define ULTRA_LCD //general LCD support, also 16x2 - #define DOGLCD // Support for SPI LCD 128x64 (Controller ST7565R graphic Display Family) - #define ULTIMAKERCONTROLLER //as available from the Ultimaker online store. - - #ifdef miniVIKI - #define DEFAULT_LCD_CONTRAST 95 - #else - #define DEFAULT_LCD_CONTRAST 40 - #endif - - #define ENCODER_PULSES_PER_STEP 4 - #define ENCODER_STEPS_PER_MENU_ITEM 1 -#endif - -#if defined (PANEL_ONE) - #define SDSUPPORT - #define ULTIMAKERCONTROLLER -#endif - -#if defined (REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER) - #define DOGLCD - #define U8GLIB_ST7920 - #define REPRAP_DISCOUNT_SMART_CONTROLLER -#endif - -#if defined(ULTIMAKERCONTROLLER) || defined(REPRAP_DISCOUNT_SMART_CONTROLLER) || defined(G3D_PANEL) - #define ULTIPANEL - #define NEWPANEL -#endif - -#if defined(REPRAPWORLD_KEYPAD) - #define NEWPANEL - #define ULTIPANEL -#endif -#if defined(RA_CONTROL_PANEL) - #define ULTIPANEL - #define NEWPANEL - #define LCD_I2C_TYPE_PCA8574 - #define LCD_I2C_ADDRESS 0x27 // I2C Address of the port expander -#endif - -//I2C PANELS +/** + * I2C Panels + */ //#define LCD_I2C_SAINSMART_YWROBOT -#ifdef LCD_I2C_SAINSMART_YWROBOT - // This uses the LiquidCrystal_I2C library ( https://bitbucket.org/fmalpartida/new-liquidcrystal/wiki/Home ) - // Make sure it is placed in the Arduino libraries directory. - #define LCD_I2C_TYPE_PCF8575 - #define LCD_I2C_ADDRESS 0x27 // I2C Address of the port expander - #define NEWPANEL - #define ULTIPANEL -#endif // PANELOLU2 LCD with status LEDs, separate encoder and click inputs //#define LCD_I2C_PANELOLU2 -#ifdef LCD_I2C_PANELOLU2 - // This uses the LiquidTWI2 library v1.2.3 or later ( https://github.com/lincomatic/LiquidTWI2 ) - // Make sure the LiquidTWI2 directory is placed in the Arduino or Sketchbook libraries subdirectory. - // (v1.2.3 no longer requires you to define PANELOLU in the LiquidTWI2.h library header file) - // Note: The PANELOLU2 encoder click input can either be directly connected to a pin - // (if BTN_ENC defined to != -1) or read through I2C (when BTN_ENC == -1). - #define LCD_I2C_TYPE_MCP23017 - #define LCD_I2C_ADDRESS 0x20 // I2C Address of the port expander - #define LCD_USE_I2C_BUZZER //comment out to disable buzzer on LCD - #define NEWPANEL - #define ULTIPANEL - - #ifndef ENCODER_PULSES_PER_STEP - #define ENCODER_PULSES_PER_STEP 4 - #endif - - #ifndef ENCODER_STEPS_PER_MENU_ITEM - #define ENCODER_STEPS_PER_MENU_ITEM 1 - #endif - - - #ifdef LCD_USE_I2C_BUZZER - #define LCD_FEEDBACK_FREQUENCY_HZ 1000 - #define LCD_FEEDBACK_FREQUENCY_DURATION_MS 100 - #endif - -#endif // Panucatt VIKI LCD with status LEDs, integrated click & L/R/U/P buttons, separate encoder inputs //#define LCD_I2C_VIKI -#ifdef LCD_I2C_VIKI - // This uses the LiquidTWI2 library v1.2.3 or later ( https://github.com/lincomatic/LiquidTWI2 ) - // Make sure the LiquidTWI2 directory is placed in the Arduino or Sketchbook libraries subdirectory. - // Note: The pause/stop/resume LCD button pin should be connected to the Arduino - // BTN_ENC pin (or set BTN_ENC to -1 if not used) - #define LCD_I2C_TYPE_MCP23017 - #define LCD_I2C_ADDRESS 0x20 // I2C Address of the port expander - #define LCD_USE_I2C_BUZZER //comment out to disable buzzer on LCD (requires LiquidTWI2 v1.2.3 or later) - #define NEWPANEL - #define ULTIPANEL -#endif // Shift register panels // --------------------- @@ -774,51 +675,10 @@ const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of // https://bitbucket.org/fmalpartida/new-liquidcrystal/wiki/schematics#!shiftregister-connection //#define SAV_3DLCD -#ifdef SAV_3DLCD - #define SR_LCD_2W_NL // Non latching 2 wire shiftregister - #define NEWPANEL - #define ULTIPANEL -#endif - - -#ifdef ULTIPANEL -// #define NEWPANEL //enable this if you have a click-encoder panel - #define SDSUPPORT - #define ULTRA_LCD - #ifdef DOGLCD // Change number of lines to match the DOG graphic display - #define LCD_WIDTH 22 - #define LCD_HEIGHT 5 - #else - #define LCD_WIDTH 20 - #define LCD_HEIGHT 4 - #endif -#else //no panel but just LCD - #ifdef ULTRA_LCD - #ifdef DOGLCD // Change number of lines to match the 128x64 graphics display - #define LCD_WIDTH 22 - #define LCD_HEIGHT 5 - #else - #define LCD_WIDTH 16 - #define LCD_HEIGHT 2 - #endif - #endif -#endif - -// default LCD contrast for dogm-like LCD displays -#ifdef DOGLCD -# ifndef DEFAULT_LCD_CONTRAST -# define DEFAULT_LCD_CONTRAST 32 -# endif -#endif // Increase the FAN pwm frequency. Removes the PWM noise but increases heating in the FET/Arduino //#define FAST_PWM_FAN -// Temperature status LEDs that display the hotend and bet temperature. -// If all hotends and bed temperature and temperature setpoint are < 54C then the BLUE led is on. -// Otherwise the RED led is on. There is 1C hysteresis. -//#define TEMP_STAT_LEDS - // Use software PWM to drive the fan, as for the heaters. This uses a very low frequency // which is not ass annoying as with the hardware PWM. On the other hand, if this frequency // is too low, you should also increment SOFT_PWM_SCALE. @@ -830,6 +690,11 @@ const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of // at zero value, there are 128 effective control positions. #define SOFT_PWM_SCALE 0 +// Temperature status LEDs that display the hotend and bet temperature. +// If all hotends and bed temperature and temperature setpoint are < 54C then the BLUE led is on. +// Otherwise the RED led is on. There is 1C hysteresis. +//#define TEMP_STAT_LEDS + // M240 Triggers a camera by emulating a Canon RC-1 Remote // Data from: http://www.doc-diy.net/photo/rc-1_hacked/ // #define PHOTOGRAPH_PIN 23 @@ -901,4 +766,4 @@ const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of #include "Configuration_adv.h" #include "thermistortables.h" -#endif //__CONFIGURATION_H +#endif //CONFIGURATION_H diff --git a/Marlin/example_configurations/SCARA/Configuration_adv.h b/Marlin/example_configurations/SCARA/Configuration_adv.h index e90728b9c..452f8edeb 100644 --- a/Marlin/example_configurations/SCARA/Configuration_adv.h +++ b/Marlin/example_configurations/SCARA/Configuration_adv.h @@ -1,6 +1,8 @@ #ifndef CONFIGURATION_ADV_H #define CONFIGURATION_ADV_H +#include "Conditionals.h" + //=========================================================================== //=============================Thermal Settings ============================ //=========================================================================== @@ -89,54 +91,6 @@ #define ENDSTOPS_ONLY_FOR_HOMING // If defined the endstops will only be used for homing - -//// AUTOSET LOCATIONS OF LIMIT SWITCHES -//// Added by ZetaPhoenix 09-15-2012 -#ifdef MANUAL_HOME_POSITIONS // Use manual limit switch locations - #define X_HOME_POS MANUAL_X_HOME_POS - #define Y_HOME_POS MANUAL_Y_HOME_POS - #define Z_HOME_POS MANUAL_Z_HOME_POS -#else //Set min/max homing switch positions based upon homing direction and min/max travel limits - //X axis - #if X_HOME_DIR == -1 - #ifdef BED_CENTER_AT_0_0 - #define X_HOME_POS X_MAX_LENGTH * -0.5 - #else - #define X_HOME_POS X_MIN_POS - #endif //BED_CENTER_AT_0_0 - #else - #ifdef BED_CENTER_AT_0_0 - #define X_HOME_POS X_MAX_LENGTH * 0.5 - #else - #define X_HOME_POS X_MAX_POS - #endif //BED_CENTER_AT_0_0 - #endif //X_HOME_DIR == -1 - - //Y axis - #if Y_HOME_DIR == -1 - #ifdef BED_CENTER_AT_0_0 - #define Y_HOME_POS Y_MAX_LENGTH * -0.5 - #else - #define Y_HOME_POS Y_MIN_POS - #endif //BED_CENTER_AT_0_0 - #else - #ifdef BED_CENTER_AT_0_0 - #define Y_HOME_POS Y_MAX_LENGTH * 0.5 - #else - #define Y_HOME_POS Y_MAX_POS - #endif //BED_CENTER_AT_0_0 - #endif //Y_HOME_DIR == -1 - - // Z axis - #if Z_HOME_DIR == -1 //BED_CENTER_AT_0_0 not used - #define Z_HOME_POS Z_MIN_POS - #else - #define Z_HOME_POS Z_MAX_POS - #endif //Z_HOME_DIR == -1 -#endif //End auto min/max positions -//END AUTOSET LOCATIONS OF LIMIT SWITCHES -ZP - - //#define Z_LATE_ENABLE // Enable Z the last moment. Needed if your Z driver overheats. // A single Z stepper driver is usually used to drive 2 stepper motors. @@ -146,26 +100,12 @@ // On a RAMPS (or other 5 driver) motherboard, using this feature will limit you to using 1 extruder. //#define Z_DUAL_STEPPER_DRIVERS -#ifdef Z_DUAL_STEPPER_DRIVERS - #undef EXTRUDERS - #define EXTRUDERS 1 -#endif - // Same again but for Y Axis. //#define Y_DUAL_STEPPER_DRIVERS // Define if the two Y drives need to rotate in opposite directions #define INVERT_Y2_VS_Y_DIR true -#ifdef Y_DUAL_STEPPER_DRIVERS - #undef EXTRUDERS - #define EXTRUDERS 1 -#endif - -#if defined (Z_DUAL_STEPPER_DRIVERS) && defined (Y_DUAL_STEPPER_DRIVERS) - #error "You cannot have dual drivers for both Y and Z" -#endif - // Enable this for dual x-carriage printers. // A dual x-carriage design has the advantage that the inactive extruder can be parked which // prevents hot-end ooze contaminating the print. It also reduces the weight of each x-carriage @@ -216,9 +156,6 @@ #define Z_HOME_RETRACT_MM 3 #define HOMING_BUMP_DIVISOR {10, 10, 20} // Re-Bump Speed Divisor (Divides the Homing Feedrate) //#define QUICK_HOME //if this is defined, if both x and y are to be homed, a diagonal move will be performed initially. -#ifdef SCARA - #define QUICK_HOME //SCARA needs Quickhome -#endif #define AXIS_RELATIVE_MODES {false, false, false, false} @@ -230,20 +167,15 @@ #define INVERT_Z_STEP_PIN false #define INVERT_E_STEP_PIN false -//default stepper release if idle. Set to 0 to deactivate. +// Default stepper release if idle. Set to 0 to deactivate. #define DEFAULT_STEPPER_DEACTIVE_TIME 240 #define DEFAULT_MINIMUMFEEDRATE 0.0 // minimum feedrate #define DEFAULT_MINTRAVELFEEDRATE 0.0 -// Feedrates for manual moves along X, Y, Z, E from panel -#ifdef ULTIPANEL -#define MANUAL_FEEDRATE {50*60, 50*60, 10*60, 60} // set the speeds for manual moves (mm/min) -#endif - -//Comment to disable setting feedrate multiplier via encoder #ifdef ULTIPANEL - #define ULTIPANEL_FEEDMULTIPLY + #define MANUAL_FEEDRATE {50*60, 50*60, 10*60, 60} // Feedrates for manual moves along X, Y, Z, E from panel + #define ULTIPANEL_FEEDMULTIPLY // Comment to disable setting feedrate multiplier via encoder #endif // minimum time in microseconds that a movement needs to take if the buffer is emptied. @@ -251,9 +183,7 @@ // If defined the movements slow down when the look ahead buffer is only half full //#define SLOWDOWN -#ifdef SCARA - #undef SLOWDOWN -#endif + // Frequency limit // See nophead's blog for more info // Not working O @@ -264,13 +194,6 @@ // if unwanted behavior is observed on a user's machine when running at very slow speeds. #define MINIMUM_PLANNER_SPEED 0.05// (mm/sec) -// MS1 MS2 Stepper Driver Microstepping mode table -#define MICROSTEP1 LOW,LOW -#define MICROSTEP2 HIGH,LOW -#define MICROSTEP4 LOW,HIGH -#define MICROSTEP8 HIGH,HIGH -#define MICROSTEP16 HIGH,HIGH - // Microstep setting (Only functional when stepper driver microstep pins are connected to MCU. #define MICROSTEP_MODES {16,16,16,16,16} // [1,2,4,8,16] @@ -339,21 +262,6 @@ #define BABYSTEP_XY //not only z, but also XY in the menu. more clutter, more functions #define BABYSTEP_INVERT_Z false //true for inverse movements in Z #define BABYSTEP_Z_MULTIPLICATOR 2 //faster z movements - - #ifdef COREXY - #error BABYSTEPPING not implemented for COREXY yet. - #endif - - #ifdef DELTA - #ifdef BABYSTEP_XY - #error BABYSTEPPING only implemented for Z axis on deltabots. - #endif - #endif - - #ifdef SCARA - #error BABYSTEPPING not implemented for SCARA yet. - #endif - #endif // extruder advance constant (s2/mm3) @@ -387,26 +295,6 @@ const unsigned int dropsegments=5; //everything with less than this number of st // be commented out otherwise #define SDCARDDETECTINVERTED -#ifdef ULTIPANEL - #undef SDCARDDETECTINVERTED -#endif - -// Power Signal Control Definitions -// By default use ATX definition -#ifndef POWER_SUPPLY - #define POWER_SUPPLY 1 -#endif -// 1 = ATX -#if (POWER_SUPPLY == 1) - #define PS_ON_AWAKE LOW - #define PS_ON_ASLEEP HIGH -#endif -// 2 = X-Box 360 203W -#if (POWER_SUPPLY == 2) - #define PS_ON_AWAKE HIGH - #define PS_ON_ASLEEP LOW -#endif - // Control heater 0 and heater 1 in parallel. //#define HEATERS_PARALLEL @@ -444,9 +332,9 @@ const unsigned int dropsegments=5; //everything with less than this number of st #define RETRACT_RECOVER_FEEDRATE 8 //default feedrate for recovering from retraction (mm/s) #endif -//adds support for experimental filament exchange support M600; requires display +// Add support for experimental filament exchange support M600; requires display #ifdef ULTIPANEL - #define FILAMENTCHANGEENABLE + //#define FILAMENTCHANGEENABLE #ifdef FILAMENTCHANGEENABLE #define FILAMENTCHANGE_XPOS 3 #define FILAMENTCHANGE_YPOS 3 @@ -456,81 +344,7 @@ const unsigned int dropsegments=5; //everything with less than this number of st #endif #endif -#ifdef FILAMENTCHANGEENABLE - #ifdef EXTRUDER_RUNOUT_PREVENT - #error EXTRUDER_RUNOUT_PREVENT currently incompatible with FILAMENTCHANGE - #endif -#endif - -//=========================================================================== -//============================= 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 - +#include "Conditionals.h" +#include "SanityCheck.h" -#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 41d12d761..481b59125 100644 --- a/Marlin/example_configurations/WITBOX/Configuration.h +++ b/Marlin/example_configurations/WITBOX/Configuration.h @@ -321,15 +321,6 @@ your extruder heater takes 2 minutes to hit the target on heating. // #define ENDSTOPPULLUP_ZMIN #endif -#ifdef ENDSTOPPULLUPS - #define ENDSTOPPULLUP_XMAX - #define ENDSTOPPULLUP_YMAX - #define ENDSTOPPULLUP_ZMAX - #define ENDSTOPPULLUP_XMIN - #define ENDSTOPPULLUP_YMIN - #define ENDSTOPPULLUP_ZMIN -#endif - // The pullups are needed if you directly connect a mechanical endswitch between the signal and ground pins. const bool X_MIN_ENDSTOP_INVERTING = true; // set to true to invert the logic of the endstop. const bool Y_MIN_ENDSTOP_INVERTING = true; // set to true to invert the logic of the endstop. @@ -378,10 +369,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. //=========================================================================== //============================ Manual Bed Leveling ========================== @@ -628,112 +624,17 @@ const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of // REMEMBER TO INSTALL LiquidCrystal_I2C.h in your ARDUINO library folder: https://github.com/kiyoshigawa/LiquidCrystal_I2C //#define RA_CONTROL_PANEL -//automatic expansion -#if defined (MAKRPANEL) - #define DOGLCD - #define SDSUPPORT - #define ULTIPANEL - #define NEWPANEL - #define DEFAULT_LCD_CONTRAST 17 -#endif - -#if defined(miniVIKI) || defined(VIKI2) - #define ULTRA_LCD //general LCD support, also 16x2 - #define DOGLCD // Support for SPI LCD 128x64 (Controller ST7565R graphic Display Family) - #define ULTIMAKERCONTROLLER //as available from the Ultimaker online store. - - #ifdef miniVIKI - #define DEFAULT_LCD_CONTRAST 95 - #else - #define DEFAULT_LCD_CONTRAST 40 - #endif - - #define ENCODER_PULSES_PER_STEP 4 - #define ENCODER_STEPS_PER_MENU_ITEM 1 -#endif - -#if defined (PANEL_ONE) - #define SDSUPPORT - #define ULTIMAKERCONTROLLER -#endif - -#if defined (REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER) - #define DOGLCD - #define U8GLIB_ST7920 - #define REPRAP_DISCOUNT_SMART_CONTROLLER -#endif - -#if defined(ULTIMAKERCONTROLLER) || defined(REPRAP_DISCOUNT_SMART_CONTROLLER) || defined(G3D_PANEL) - #define ULTIPANEL - #define NEWPANEL -#endif - -#if defined(REPRAPWORLD_KEYPAD) - #define NEWPANEL - #define ULTIPANEL -#endif -#if defined(RA_CONTROL_PANEL) - #define ULTIPANEL - #define NEWPANEL - #define LCD_I2C_TYPE_PCA8574 - #define LCD_I2C_ADDRESS 0x27 // I2C Address of the port expander -#endif - -//I2C PANELS +/** + * I2C Panels + */ //#define LCD_I2C_SAINSMART_YWROBOT -#ifdef LCD_I2C_SAINSMART_YWROBOT - // This uses the LiquidCrystal_I2C library ( https://bitbucket.org/fmalpartida/new-liquidcrystal/wiki/Home ) - // Make sure it is placed in the Arduino libraries directory. - #define LCD_I2C_TYPE_PCF8575 - #define LCD_I2C_ADDRESS 0x27 // I2C Address of the port expander - #define NEWPANEL - #define ULTIPANEL -#endif // PANELOLU2 LCD with status LEDs, separate encoder and click inputs //#define LCD_I2C_PANELOLU2 -#ifdef LCD_I2C_PANELOLU2 - // This uses the LiquidTWI2 library v1.2.3 or later ( https://github.com/lincomatic/LiquidTWI2 ) - // Make sure the LiquidTWI2 directory is placed in the Arduino or Sketchbook libraries subdirectory. - // (v1.2.3 no longer requires you to define PANELOLU in the LiquidTWI2.h library header file) - // Note: The PANELOLU2 encoder click input can either be directly connected to a pin - // (if BTN_ENC defined to != -1) or read through I2C (when BTN_ENC == -1). - #define LCD_I2C_TYPE_MCP23017 - #define LCD_I2C_ADDRESS 0x20 // I2C Address of the port expander - #define LCD_USE_I2C_BUZZER //comment out to disable buzzer on LCD - #define NEWPANEL - #define ULTIPANEL - - #ifndef ENCODER_PULSES_PER_STEP - #define ENCODER_PULSES_PER_STEP 4 - #endif - - #ifndef ENCODER_STEPS_PER_MENU_ITEM - #define ENCODER_STEPS_PER_MENU_ITEM 1 - #endif - - - #ifdef LCD_USE_I2C_BUZZER - #define LCD_FEEDBACK_FREQUENCY_HZ 1000 - #define LCD_FEEDBACK_FREQUENCY_DURATION_MS 100 - #endif - -#endif // Panucatt VIKI LCD with status LEDs, integrated click & L/R/U/P buttons, separate encoder inputs //#define LCD_I2C_VIKI -#ifdef LCD_I2C_VIKI - // This uses the LiquidTWI2 library v1.2.3 or later ( https://github.com/lincomatic/LiquidTWI2 ) - // Make sure the LiquidTWI2 directory is placed in the Arduino or Sketchbook libraries subdirectory. - // Note: The pause/stop/resume LCD button pin should be connected to the Arduino - // BTN_ENC pin (or set BTN_ENC to -1 if not used) - #define LCD_I2C_TYPE_MCP23017 - #define LCD_I2C_ADDRESS 0x20 // I2C Address of the port expander - #define LCD_USE_I2C_BUZZER //comment out to disable buzzer on LCD (requires LiquidTWI2 v1.2.3 or later) - #define NEWPANEL - #define ULTIPANEL -#endif // Shift register panels // --------------------- @@ -741,51 +642,10 @@ const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of // https://bitbucket.org/fmalpartida/new-liquidcrystal/wiki/schematics#!shiftregister-connection //#define SAV_3DLCD -#ifdef SAV_3DLCD - #define SR_LCD_2W_NL // Non latching 2 wire shiftregister - #define NEWPANEL - #define ULTIPANEL -#endif - - -#ifdef ULTIPANEL -// #define NEWPANEL //enable this if you have a click-encoder panel - #define SDSUPPORT - #define ULTRA_LCD - #ifdef DOGLCD // Change number of lines to match the DOG graphic display - #define LCD_WIDTH 22 - #define LCD_HEIGHT 5 - #else - #define LCD_WIDTH 20 - #define LCD_HEIGHT 4 - #endif -#else //no panel but just LCD - #ifdef ULTRA_LCD - #ifdef DOGLCD // Change number of lines to match the 128x64 graphics display - #define LCD_WIDTH 22 - #define LCD_HEIGHT 5 - #else - #define LCD_WIDTH 16 - #define LCD_HEIGHT 2 - #endif - #endif -#endif - -// default LCD contrast for dogm-like LCD displays -#ifdef DOGLCD -# ifndef DEFAULT_LCD_CONTRAST -# define DEFAULT_LCD_CONTRAST 32 -# endif -#endif // Increase the FAN pwm frequency. Removes the PWM noise but increases heating in the FET/Arduino //#define FAST_PWM_FAN -// Temperature status LEDs that display the hotend and bet temperature. -// If all hotends and bed temperature and temperature setpoint are < 54C then the BLUE led is on. -// Otherwise the RED led is on. There is 1C hysteresis. -//#define TEMP_STAT_LEDS - // Use software PWM to drive the fan, as for the heaters. This uses a very low frequency // which is not ass annoying as with the hardware PWM. On the other hand, if this frequency // is too low, you should also increment SOFT_PWM_SCALE. @@ -797,6 +657,11 @@ const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of // at zero value, there are 128 effective control positions. #define SOFT_PWM_SCALE 0 +// Temperature status LEDs that display the hotend and bet temperature. +// If all hotends and bed temperature and temperature setpoint are < 54C then the BLUE led is on. +// Otherwise the RED led is on. There is 1C hysteresis. +//#define TEMP_STAT_LEDS + // M240 Triggers a camera by emulating a Canon RC-1 Remote // Data from: http://www.doc-diy.net/photo/rc-1_hacked/ // #define PHOTOGRAPH_PIN 23 @@ -868,4 +733,4 @@ const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of #include "Configuration_adv.h" #include "thermistortables.h" -#endif //__CONFIGURATION_H +#endif //CONFIGURATION_H diff --git a/Marlin/example_configurations/WITBOX/Configuration_adv.h b/Marlin/example_configurations/WITBOX/Configuration_adv.h index cf18b9585..fcdf4d161 100644 --- a/Marlin/example_configurations/WITBOX/Configuration_adv.h +++ b/Marlin/example_configurations/WITBOX/Configuration_adv.h @@ -1,6 +1,8 @@ #ifndef CONFIGURATION_ADV_H #define CONFIGURATION_ADV_H +#include "Conditionals.h" + //=========================================================================== //=============================Thermal Settings ============================ //=========================================================================== @@ -89,54 +91,6 @@ //#define ENDSTOPS_ONLY_FOR_HOMING // If defined the endstops will only be used for homing - -//// AUTOSET LOCATIONS OF LIMIT SWITCHES -//// Added by ZetaPhoenix 09-15-2012 -#ifdef MANUAL_HOME_POSITIONS // Use manual limit switch locations - #define X_HOME_POS MANUAL_X_HOME_POS - #define Y_HOME_POS MANUAL_Y_HOME_POS - #define Z_HOME_POS MANUAL_Z_HOME_POS -#else //Set min/max homing switch positions based upon homing direction and min/max travel limits - //X axis - #if X_HOME_DIR == -1 - #ifdef BED_CENTER_AT_0_0 - #define X_HOME_POS X_MAX_LENGTH * -0.5 - #else - #define X_HOME_POS X_MIN_POS - #endif //BED_CENTER_AT_0_0 - #else - #ifdef BED_CENTER_AT_0_0 - #define X_HOME_POS X_MAX_LENGTH * 0.5 - #else - #define X_HOME_POS X_MAX_POS - #endif //BED_CENTER_AT_0_0 - #endif //X_HOME_DIR == -1 - - //Y axis - #if Y_HOME_DIR == -1 - #ifdef BED_CENTER_AT_0_0 - #define Y_HOME_POS Y_MAX_LENGTH * -0.5 - #else - #define Y_HOME_POS Y_MIN_POS - #endif //BED_CENTER_AT_0_0 - #else - #ifdef BED_CENTER_AT_0_0 - #define Y_HOME_POS Y_MAX_LENGTH * 0.5 - #else - #define Y_HOME_POS Y_MAX_POS - #endif //BED_CENTER_AT_0_0 - #endif //Y_HOME_DIR == -1 - - // Z axis - #if Z_HOME_DIR == -1 //BED_CENTER_AT_0_0 not used - #define Z_HOME_POS Z_MIN_POS - #else - #define Z_HOME_POS Z_MAX_POS - #endif //Z_HOME_DIR == -1 -#endif //End auto min/max positions -//END AUTOSET LOCATIONS OF LIMIT SWITCHES -ZP - - //#define Z_LATE_ENABLE // Enable Z the last moment. Needed if your Z driver overheats. // A single Z stepper driver is usually used to drive 2 stepper motors. @@ -146,26 +100,12 @@ // On a RAMPS (or other 5 driver) motherboard, using this feature will limit you to using 1 extruder. //#define Z_DUAL_STEPPER_DRIVERS -#ifdef Z_DUAL_STEPPER_DRIVERS - #undef EXTRUDERS - #define EXTRUDERS 1 -#endif - // Same again but for Y Axis. //#define Y_DUAL_STEPPER_DRIVERS // Define if the two Y drives need to rotate in opposite directions #define INVERT_Y2_VS_Y_DIR true -#ifdef Y_DUAL_STEPPER_DRIVERS - #undef EXTRUDERS - #define EXTRUDERS 1 -#endif - -#if defined (Z_DUAL_STEPPER_DRIVERS) && defined (Y_DUAL_STEPPER_DRIVERS) - #error "You cannot have dual drivers for both Y and Z" -#endif - // Enable this for dual x-carriage printers. // A dual x-carriage design has the advantage that the inactive extruder can be parked which // prevents hot-end ooze contaminating the print. It also reduces the weight of each x-carriage @@ -229,20 +169,15 @@ #define INVERT_Z_STEP_PIN false #define INVERT_E_STEP_PIN false -//default stepper release if idle. Set to 0 to deactivate. +// Default stepper release if idle. Set to 0 to deactivate. #define DEFAULT_STEPPER_DEACTIVE_TIME 60 #define DEFAULT_MINIMUMFEEDRATE 0.0 // minimum feedrate #define DEFAULT_MINTRAVELFEEDRATE 0.0 -// Feedrates for manual moves along X, Y, Z, E from panel #ifdef ULTIPANEL -#define MANUAL_FEEDRATE {120*60, 120*60, 18*60, 60} // set the speeds for manual moves (mm/min) -#endif - -//Comment to disable setting feedrate multiplier via encoder -#ifdef ULTIPANEL - #define ULTIPANEL_FEEDMULTIPLY + #define MANUAL_FEEDRATE {120*60, 120*60, 18*60, 60} // Feedrates for manual moves along X, Y, Z, E from panel + #define ULTIPANEL_FEEDMULTIPLY // Comment to disable setting feedrate multiplier via encoder #endif // minimum time in microseconds that a movement needs to take if the buffer is emptied. @@ -261,13 +196,6 @@ // if unwanted behavior is observed on a user's machine when running at very slow speeds. #define MINIMUM_PLANNER_SPEED 0.05// (mm/sec) -// MS1 MS2 Stepper Driver Microstepping mode table -#define MICROSTEP1 LOW,LOW -#define MICROSTEP2 HIGH,LOW -#define MICROSTEP4 LOW,HIGH -#define MICROSTEP8 HIGH,HIGH -#define MICROSTEP16 HIGH,HIGH - // Microstep setting (Only functional when stepper driver microstep pins are connected to MCU. #define MICROSTEP_MODES {16,16,16,16,16} // [1,2,4,8,16] @@ -313,12 +241,6 @@ #define PROGRESS_MSG_EXPIRE 0 // Enable this to show messages for MSG_TIME then hide them //#define PROGRESS_MSG_ONCE - #ifdef DOGLCD - #warning LCD_PROGRESS_BAR does not apply to graphical displays at this time. - #endif - #ifdef FILAMENT_LCD_DISPLAY - #error LCD_PROGRESS_BAR and FILAMENT_LCD_DISPLAY are not fully compatible. Comment out this line to use both. - #endif #endif // The hardware watchdog should reset the microcontroller disabling all outputs, in case the firmware gets stuck and doesn't do temperature regulation. @@ -342,16 +264,6 @@ #define BABYSTEP_XY //not only z, but also XY in the menu. more clutter, more functions #define BABYSTEP_INVERT_Z false //true for inverse movements in Z #define BABYSTEP_Z_MULTIPLICATOR 2 //faster z movements - - #ifdef COREXY - #error BABYSTEPPING not implemented for COREXY yet. - #endif - - #ifdef DELTA - #ifdef BABYSTEP_XY - #error BABYSTEPPING only implemented for Z axis on deltabots. - #endif - #endif #endif // extruder advance constant (s2/mm3) @@ -365,12 +277,8 @@ #ifdef ADVANCE #define EXTRUDER_ADVANCE_K .0 - #define D_FILAMENT 1.75 #define STEPS_MM_E 100.47095761381482 - #define EXTRUSION_AREA (0.25 * D_FILAMENT * D_FILAMENT * 3.14159) - #define STEPS_PER_CUBIC_MM_E (axis_steps_per_unit[E_AXIS]/ EXTRUSION_AREA) - #endif // ADVANCE // Arc interpretation settings: @@ -385,26 +293,6 @@ const unsigned int dropsegments=5; //everything with less than this number of st // be commented out otherwise #define SDCARDDETECTINVERTED -#ifdef ULTIPANEL - #undef SDCARDDETECTINVERTED -#endif - -// Power Signal Control Definitions -// By default use ATX definition -#ifndef POWER_SUPPLY - #define POWER_SUPPLY 1 -#endif -// 1 = ATX -#if (POWER_SUPPLY == 1) - #define PS_ON_AWAKE LOW - #define PS_ON_ASLEEP HIGH -#endif -// 2 = X-Box 360 203W -#if (POWER_SUPPLY == 2) - #define PS_ON_AWAKE HIGH - #define PS_ON_ASLEEP LOW -#endif - // Control heater 0 and heater 1 in parallel. //#define HEATERS_PARALLEL @@ -444,9 +332,9 @@ const unsigned int dropsegments=5; //everything with less than this number of st #define RETRACT_RECOVER_FEEDRATE 8*60 //default feedrate for recovering from retraction (mm/s) #endif -//adds support for experimental filament exchange support M600; requires display +// Add support for experimental filament exchange support M600; requires display #ifdef ULTIPANEL - #define FILAMENTCHANGEENABLE + //#define FILAMENTCHANGEENABLE #ifdef FILAMENTCHANGEENABLE #define FILAMENTCHANGE_XPOS 3 #define FILAMENTCHANGE_YPOS 3 @@ -456,86 +344,7 @@ const unsigned int dropsegments=5; //everything with less than this number of st #endif #endif -#ifdef FILAMENTCHANGEENABLE - #ifdef EXTRUDER_RUNOUT_PREVENT - #error EXTRUDER_RUNOUT_PREVENT currently incompatible with FILAMENTCHANGE - #endif -#endif - -//=========================================================================== -//============================= 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 - +#include "Conditionals.h" +#include "SanityCheck.h" -#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 3b703f4ed..0baf7de1c 100644 --- a/Marlin/example_configurations/delta/generic/Configuration.h +++ b/Marlin/example_configurations/delta/generic/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. @@ -408,10 +399,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. //=========================================================================== //============================ Manual Bed Leveling ========================== @@ -651,112 +647,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 // --------------------- @@ -764,51 +665,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. @@ -820,6 +680,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 @@ -891,4 +756,4 @@ const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of #include "Configuration_adv.h" #include "thermistortables.h" -#endif //__CONFIGURATION_H +#endif //CONFIGURATION_H diff --git a/Marlin/example_configurations/delta/generic/Configuration_adv.h b/Marlin/example_configurations/delta/generic/Configuration_adv.h index 7bb47dd17..a622d4781 100644 --- a/Marlin/example_configurations/delta/generic/Configuration_adv.h +++ b/Marlin/example_configurations/delta/generic/Configuration_adv.h @@ -1,6 +1,8 @@ #ifndef CONFIGURATION_ADV_H #define CONFIGURATION_ADV_H +#include "Conditionals.h" + //=========================================================================== //=============================Thermal Settings ============================ //=========================================================================== @@ -89,54 +91,6 @@ #define ENDSTOPS_ONLY_FOR_HOMING // If defined the endstops will only be used for homing - -//// AUTOSET LOCATIONS OF LIMIT SWITCHES -//// Added by ZetaPhoenix 09-15-2012 -#ifdef MANUAL_HOME_POSITIONS // Use manual limit switch locations - #define X_HOME_POS MANUAL_X_HOME_POS - #define Y_HOME_POS MANUAL_Y_HOME_POS - #define Z_HOME_POS MANUAL_Z_HOME_POS -#else //Set min/max homing switch positions based upon homing direction and min/max travel limits - //X axis - #if X_HOME_DIR == -1 - #ifdef BED_CENTER_AT_0_0 - #define X_HOME_POS X_MAX_LENGTH * -0.5 - #else - #define X_HOME_POS X_MIN_POS - #endif //BED_CENTER_AT_0_0 - #else - #ifdef BED_CENTER_AT_0_0 - #define X_HOME_POS X_MAX_LENGTH * 0.5 - #else - #define X_HOME_POS X_MAX_POS - #endif //BED_CENTER_AT_0_0 - #endif //X_HOME_DIR == -1 - - //Y axis - #if Y_HOME_DIR == -1 - #ifdef BED_CENTER_AT_0_0 - #define Y_HOME_POS Y_MAX_LENGTH * -0.5 - #else - #define Y_HOME_POS Y_MIN_POS - #endif //BED_CENTER_AT_0_0 - #else - #ifdef BED_CENTER_AT_0_0 - #define Y_HOME_POS Y_MAX_LENGTH * 0.5 - #else - #define Y_HOME_POS Y_MAX_POS - #endif //BED_CENTER_AT_0_0 - #endif //Y_HOME_DIR == -1 - - // Z axis - #if Z_HOME_DIR == -1 //BED_CENTER_AT_0_0 not used - #define Z_HOME_POS Z_MIN_POS - #else - #define Z_HOME_POS Z_MAX_POS - #endif //Z_HOME_DIR == -1 -#endif //End auto min/max positions -//END AUTOSET LOCATIONS OF LIMIT SWITCHES -ZP - - //#define Z_LATE_ENABLE // Enable Z the last moment. Needed if your Z driver overheats. // A single Z stepper driver is usually used to drive 2 stepper motors. @@ -146,26 +100,12 @@ // On a RAMPS (or other 5 driver) motherboard, using this feature will limit you to using 1 extruder. //#define Z_DUAL_STEPPER_DRIVERS -#ifdef Z_DUAL_STEPPER_DRIVERS - #undef EXTRUDERS - #define EXTRUDERS 1 -#endif - // Same again but for Y Axis. //#define Y_DUAL_STEPPER_DRIVERS // Define if the two Y drives need to rotate in opposite directions #define INVERT_Y2_VS_Y_DIR true -#ifdef Y_DUAL_STEPPER_DRIVERS - #undef EXTRUDERS - #define EXTRUDERS 1 -#endif - -#if defined (Z_DUAL_STEPPER_DRIVERS) && defined (Y_DUAL_STEPPER_DRIVERS) - #error "You cannot have dual drivers for both Y and Z" -#endif - // Enable this for dual x-carriage printers. // A dual x-carriage design has the advantage that the inactive extruder can be parked which // prevents hot-end ooze contaminating the print. It also reduces the weight of each x-carriage @@ -228,7 +168,7 @@ #define INVERT_Z_STEP_PIN false #define INVERT_E_STEP_PIN false -//default stepper release if idle. Set to 0 to deactivate. +// Default stepper release if idle. Set to 0 to deactivate. #define DEFAULT_STEPPER_DEACTIVE_TIME 60 #define DEFAULT_MINIMUMFEEDRATE 0.0 // minimum feedrate @@ -236,7 +176,7 @@ // Feedrates for manual moves along X, Y, Z, E from panel #ifdef ULTIPANEL -#define MANUAL_FEEDRATE {50*60, 50*60, 4*60, 60} // set the speeds for manual moves (mm/min) + #define MANUAL_FEEDRATE {50*60, 50*60, 4*60, 60} // Feedrates for manual moves along X, Y, Z, E from panel #endif // minimum time in microseconds that a movement needs to take if the buffer is emptied. @@ -256,13 +196,6 @@ // if unwanted behavior is observed on a user's machine when running at very slow speeds. #define MINIMUM_PLANNER_SPEED 0.05// (mm/sec) -// MS1 MS2 Stepper Driver Microstepping mode table -#define MICROSTEP1 LOW,LOW -#define MICROSTEP2 HIGH,LOW -#define MICROSTEP4 LOW,HIGH -#define MICROSTEP8 HIGH,HIGH -#define MICROSTEP16 HIGH,HIGH - // Microstep setting (Only functional when stepper driver microstep pins are connected to MCU. #define MICROSTEP_MODES {16,16,16,16,16} // [1,2,4,8,16] @@ -331,16 +264,6 @@ #define BABYSTEP_XY //not only z, but also XY in the menu. more clutter, more functions #define BABYSTEP_INVERT_Z false //true for inverse movements in Z #define BABYSTEP_Z_MULTIPLICATOR 2 //faster z movements - - #ifdef COREXY - #error BABYSTEPPING not implemented for COREXY yet. - #endif - - #ifdef DELTA - #ifdef BABYSTEP_XY - #error BABYSTEPPING only implemented for Z axis on deltabots. - #endif - #endif #endif // extruder advance constant (s2/mm3) @@ -354,12 +277,8 @@ #ifdef ADVANCE #define EXTRUDER_ADVANCE_K .0 - #define D_FILAMENT 2.85 #define STEPS_MM_E 836 - #define EXTRUSION_AREA (0.25 * D_FILAMENT * D_FILAMENT * 3.14159) - #define STEPS_PER_CUBIC_MM_E (axis_steps_per_unit[E_AXIS]/ EXTRUSION_AREA) - #endif // ADVANCE // Arc interpretation settings: @@ -374,26 +293,6 @@ const unsigned int dropsegments=5; //everything with less than this number of st // be commented out otherwise #define SDCARDDETECTINVERTED -#ifdef ULTIPANEL - #undef SDCARDDETECTINVERTED -#endif - -// Power Signal Control Definitions -// By default use ATX definition -#ifndef POWER_SUPPLY - #define POWER_SUPPLY 1 -#endif -// 1 = ATX -#if (POWER_SUPPLY == 1) - #define PS_ON_AWAKE LOW - #define PS_ON_ASLEEP HIGH -#endif -// 2 = X-Box 360 203W -#if (POWER_SUPPLY == 2) - #define PS_ON_AWAKE HIGH - #define PS_ON_ASLEEP LOW -#endif - // Control heater 0 and heater 1 in parallel. //#define HEATERS_PARALLEL @@ -433,9 +332,9 @@ const unsigned int dropsegments=5; //everything with less than this number of st #define RETRACT_RECOVER_FEEDRATE 8 //default feedrate for recovering from retraction (mm/s) #endif -//adds support for experimental filament exchange support M600; requires display +// Add support for experimental filament exchange support M600; requires display #ifdef ULTIPANEL - #define FILAMENTCHANGEENABLE + //#define FILAMENTCHANGEENABLE #ifdef FILAMENTCHANGEENABLE #define FILAMENTCHANGE_XPOS 3 #define FILAMENTCHANGE_YPOS 3 @@ -445,104 +344,7 @@ const unsigned int dropsegments=5; //everything with less than this number of st #endif #endif -#ifdef FILAMENTCHANGEENABLE - #ifdef EXTRUDER_RUNOUT_PREVENT - #error EXTRUDER_RUNOUT_PREVENT currently incompatible with FILAMENTCHANGE - #endif -#endif - -//=========================================================================== -//============================= Define Defines ============================ -//=========================================================================== - -#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 - +#include "Conditionals.h" +#include "SanityCheck.h" -#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 451aae2c8..9f5f89ca5 100644 --- a/Marlin/example_configurations/delta/kossel_mini/Configuration.h +++ b/Marlin/example_configurations/delta/kossel_mini/Configuration.h @@ -350,15 +350,6 @@ your extruder heater takes 2 minutes to hit the target on heating. // #define ENDSTOPPULLUP_ZMIN #endif -#ifdef ENDSTOPPULLUPS - #define ENDSTOPPULLUP_XMAX - #define ENDSTOPPULLUP_YMAX - #define ENDSTOPPULLUP_ZMAX - #define ENDSTOPPULLUP_XMIN - #define ENDSTOPPULLUP_YMIN - #define ENDSTOPPULLUP_ZMIN -#endif - // The pullups are needed if you directly connect a mechanical endswitch between the signal and ground pins. const bool X_MIN_ENDSTOP_INVERTING = false; // set to true to invert the logic of the endstop. const bool Y_MIN_ENDSTOP_INVERTING = false; // set to true to invert the logic of the endstop. @@ -409,10 +400,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. //=========================================================================== //============================ Manual Bed Leveling ========================== @@ -653,112 +649,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 // --------------------- @@ -766,51 +667,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. @@ -822,6 +682,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 @@ -893,4 +758,4 @@ const bool Z_MAX_ENDSTOP_INVERTING = false; // set to true to invert the logic o #include "Configuration_adv.h" #include "thermistortables.h" -#endif //__CONFIGURATION_H +#endif //CONFIGURATION_H diff --git a/Marlin/example_configurations/delta/kossel_mini/Configuration_adv.h b/Marlin/example_configurations/delta/kossel_mini/Configuration_adv.h index 76ff18309..a940e3f3e 100644 --- a/Marlin/example_configurations/delta/kossel_mini/Configuration_adv.h +++ b/Marlin/example_configurations/delta/kossel_mini/Configuration_adv.h @@ -1,6 +1,8 @@ #ifndef CONFIGURATION_ADV_H #define CONFIGURATION_ADV_H +#include "Conditionals.h" + //=========================================================================== //=============================Thermal Settings ============================ //=========================================================================== @@ -89,54 +91,6 @@ #define ENDSTOPS_ONLY_FOR_HOMING // If defined the endstops will only be used for homing - -//// AUTOSET LOCATIONS OF LIMIT SWITCHES -//// Added by ZetaPhoenix 09-15-2012 -#ifdef MANUAL_HOME_POSITIONS // Use manual limit switch locations - #define X_HOME_POS MANUAL_X_HOME_POS - #define Y_HOME_POS MANUAL_Y_HOME_POS - #define Z_HOME_POS MANUAL_Z_HOME_POS -#else //Set min/max homing switch positions based upon homing direction and min/max travel limits - //X axis - #if X_HOME_DIR == -1 - #ifdef BED_CENTER_AT_0_0 - #define X_HOME_POS X_MAX_LENGTH * -0.5 - #else - #define X_HOME_POS X_MIN_POS - #endif //BED_CENTER_AT_0_0 - #else - #ifdef BED_CENTER_AT_0_0 - #define X_HOME_POS X_MAX_LENGTH * 0.5 - #else - #define X_HOME_POS X_MAX_POS - #endif //BED_CENTER_AT_0_0 - #endif //X_HOME_DIR == -1 - - //Y axis - #if Y_HOME_DIR == -1 - #ifdef BED_CENTER_AT_0_0 - #define Y_HOME_POS Y_MAX_LENGTH * -0.5 - #else - #define Y_HOME_POS Y_MIN_POS - #endif //BED_CENTER_AT_0_0 - #else - #ifdef BED_CENTER_AT_0_0 - #define Y_HOME_POS Y_MAX_LENGTH * 0.5 - #else - #define Y_HOME_POS Y_MAX_POS - #endif //BED_CENTER_AT_0_0 - #endif //Y_HOME_DIR == -1 - - // Z axis - #if Z_HOME_DIR == -1 //BED_CENTER_AT_0_0 not used - #define Z_HOME_POS Z_MIN_POS - #else - #define Z_HOME_POS Z_MAX_POS - #endif //Z_HOME_DIR == -1 -#endif //End auto min/max positions -//END AUTOSET LOCATIONS OF LIMIT SWITCHES -ZP - - //#define Z_LATE_ENABLE // Enable Z the last moment. Needed if your Z driver overheats. // A single Z stepper driver is usually used to drive 2 stepper motors. @@ -146,26 +100,12 @@ // On a RAMPS (or other 5 driver) motherboard, using this feature will limit you to using 1 extruder. //#define Z_DUAL_STEPPER_DRIVERS -#ifdef Z_DUAL_STEPPER_DRIVERS - #undef EXTRUDERS - #define EXTRUDERS 1 -#endif - // Same again but for Y Axis. //#define Y_DUAL_STEPPER_DRIVERS // Define if the two Y drives need to rotate in opposite directions #define INVERT_Y2_VS_Y_DIR true -#ifdef Y_DUAL_STEPPER_DRIVERS - #undef EXTRUDERS - #define EXTRUDERS 1 -#endif - -#if defined (Z_DUAL_STEPPER_DRIVERS) && defined (Y_DUAL_STEPPER_DRIVERS) - #error "You cannot have dual drivers for both Y and Z" -#endif - // Enable this for dual x-carriage printers. // A dual x-carriage design has the advantage that the inactive extruder can be parked which // prevents hot-end ooze contaminating the print. It also reduces the weight of each x-carriage @@ -228,7 +168,7 @@ #define INVERT_Z_STEP_PIN false #define INVERT_E_STEP_PIN false -//default stepper release if idle. Set to 0 to deactivate. +// Default stepper release if idle. Set to 0 to deactivate. #define DEFAULT_STEPPER_DEACTIVE_TIME 60 #define DEFAULT_MINIMUMFEEDRATE 0.0 // minimum feedrate @@ -236,7 +176,7 @@ // Feedrates for manual moves along X, Y, Z, E from panel #ifdef ULTIPANEL -#define MANUAL_FEEDRATE {50*60, 50*60, 4*60, 60} // set the speeds for manual moves (mm/min) + #define MANUAL_FEEDRATE {50*60, 50*60, 4*60, 60} // Feedrates for manual moves along X, Y, Z, E from panel #endif // minimum time in microseconds that a movement needs to take if the buffer is emptied. @@ -255,13 +195,6 @@ // if unwanted behavior is observed on a user's machine when running at very slow speeds. #define MINIMUM_PLANNER_SPEED 0.05// (mm/sec) -// MS1 MS2 Stepper Driver Microstepping mode table -#define MICROSTEP1 LOW,LOW -#define MICROSTEP2 HIGH,LOW -#define MICROSTEP4 LOW,HIGH -#define MICROSTEP8 HIGH,HIGH -#define MICROSTEP16 HIGH,HIGH - // Microstep setting (Only functional when stepper driver microstep pins are connected to MCU. #define MICROSTEP_MODES {16,16,16,16,16} // [1,2,4,8,16] @@ -330,16 +263,6 @@ #define BABYSTEP_XY //not only z, but also XY in the menu. more clutter, more functions #define BABYSTEP_INVERT_Z false //true for inverse movements in Z #define BABYSTEP_Z_MULTIPLICATOR 2 //faster z movements - - #ifdef COREXY - #error BABYSTEPPING not implemented for COREXY yet. - #endif - - #ifdef DELTA - #ifdef BABYSTEP_XY - #error BABYSTEPPING only implemented for Z axis on deltabots. - #endif - #endif #endif // extruder advance constant (s2/mm3) @@ -353,12 +276,8 @@ #ifdef ADVANCE #define EXTRUDER_ADVANCE_K .0 - #define D_FILAMENT 2.85 #define STEPS_MM_E 836 - #define EXTRUSION_AREA (0.25 * D_FILAMENT * D_FILAMENT * 3.14159) - #define STEPS_PER_CUBIC_MM_E (axis_steps_per_unit[E_AXIS]/ EXTRUSION_AREA) - #endif // ADVANCE // Arc interpretation settings: @@ -373,26 +292,6 @@ const unsigned int dropsegments=5; //everything with less than this number of st // be commented out otherwise #define SDCARDDETECTINVERTED -#ifdef ULTIPANEL - #undef SDCARDDETECTINVERTED -#endif - -// Power Signal Control Definitions -// By default use ATX definition -#ifndef POWER_SUPPLY - #define POWER_SUPPLY 1 -#endif -// 1 = ATX -#if (POWER_SUPPLY == 1) - #define PS_ON_AWAKE LOW - #define PS_ON_ASLEEP HIGH -#endif -// 2 = X-Box 360 203W -#if (POWER_SUPPLY == 2) - #define PS_ON_AWAKE HIGH - #define PS_ON_ASLEEP LOW -#endif - // Control heater 0 and heater 1 in parallel. //#define HEATERS_PARALLEL @@ -432,9 +331,9 @@ const unsigned int dropsegments=5; //everything with less than this number of st #define RETRACT_RECOVER_FEEDRATE 8 //default feedrate for recovering from retraction (mm/s) #endif -//adds support for experimental filament exchange support M600; requires display +// Add support for experimental filament exchange support M600; requires display #ifdef ULTIPANEL - #define FILAMENTCHANGEENABLE + //#define FILAMENTCHANGEENABLE #ifdef FILAMENTCHANGEENABLE #define FILAMENTCHANGE_XPOS 3 #define FILAMENTCHANGE_YPOS 3 @@ -444,104 +343,7 @@ const unsigned int dropsegments=5; //everything with less than this number of st #endif #endif -#ifdef FILAMENTCHANGEENABLE - #ifdef EXTRUDER_RUNOUT_PREVENT - #error EXTRUDER_RUNOUT_PREVENT currently incompatible with FILAMENTCHANGE - #endif -#endif - -//=========================================================================== -//============================= Define Defines ============================ -//=========================================================================== - -#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 - +#include "Conditionals.h" +#include "SanityCheck.h" -#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 97d2740b5..f6561b3af 100644 --- a/Marlin/example_configurations/makibox/Configuration.h +++ b/Marlin/example_configurations/makibox/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 = false; // set to true to invert the logic of the endstop. const bool Y_MIN_ENDSTOP_INVERTING = false; // set to true to invert the logic of the endstop. @@ -376,10 +367,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. //=========================================================================== //============================ Manual Bed Leveling ========================== @@ -626,112 +622,17 @@ const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of // REMEMBER TO INSTALL LiquidCrystal_I2C.h in your ARDUINO library folder: https://github.com/kiyoshigawa/LiquidCrystal_I2C //#define RA_CONTROL_PANEL -//automatic expansion -#if defined (MAKRPANEL) - #define DOGLCD - #define SDSUPPORT - #define ULTIPANEL - #define NEWPANEL - #define DEFAULT_LCD_CONTRAST 17 -#endif - -#if defined(miniVIKI) || defined(VIKI2) - #define ULTRA_LCD //general LCD support, also 16x2 - #define DOGLCD // Support for SPI LCD 128x64 (Controller ST7565R graphic Display Family) - #define ULTIMAKERCONTROLLER //as available from the Ultimaker online store. - - #ifdef miniVIKI - #define DEFAULT_LCD_CONTRAST 95 - #else - #define DEFAULT_LCD_CONTRAST 40 - #endif - - #define ENCODER_PULSES_PER_STEP 4 - #define ENCODER_STEPS_PER_MENU_ITEM 1 -#endif - -#if defined (PANEL_ONE) - #define SDSUPPORT - #define ULTIMAKERCONTROLLER -#endif - -#if defined (REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER) - #define DOGLCD - #define U8GLIB_ST7920 - #define REPRAP_DISCOUNT_SMART_CONTROLLER -#endif - -#if defined(ULTIMAKERCONTROLLER) || defined(REPRAP_DISCOUNT_SMART_CONTROLLER) || defined(G3D_PANEL) - #define ULTIPANEL - #define NEWPANEL -#endif - -#if defined(REPRAPWORLD_KEYPAD) - #define NEWPANEL - #define ULTIPANEL -#endif -#if defined(RA_CONTROL_PANEL) - #define ULTIPANEL - #define NEWPANEL - #define LCD_I2C_TYPE_PCA8574 - #define LCD_I2C_ADDRESS 0x27 // I2C Address of the port expander -#endif - -//I2C PANELS +/** + * I2C Panels + */ //#define LCD_I2C_SAINSMART_YWROBOT -#ifdef LCD_I2C_SAINSMART_YWROBOT - // This uses the LiquidCrystal_I2C library ( https://bitbucket.org/fmalpartida/new-liquidcrystal/wiki/Home ) - // Make sure it is placed in the Arduino libraries directory. - #define LCD_I2C_TYPE_PCF8575 - #define LCD_I2C_ADDRESS 0x27 // I2C Address of the port expander - #define NEWPANEL - #define ULTIPANEL -#endif // PANELOLU2 LCD with status LEDs, separate encoder and click inputs //#define LCD_I2C_PANELOLU2 -#ifdef LCD_I2C_PANELOLU2 - // This uses the LiquidTWI2 library v1.2.3 or later ( https://github.com/lincomatic/LiquidTWI2 ) - // Make sure the LiquidTWI2 directory is placed in the Arduino or Sketchbook libraries subdirectory. - // (v1.2.3 no longer requires you to define PANELOLU in the LiquidTWI2.h library header file) - // Note: The PANELOLU2 encoder click input can either be directly connected to a pin - // (if BTN_ENC defined to != -1) or read through I2C (when BTN_ENC == -1). - #define LCD_I2C_TYPE_MCP23017 - #define LCD_I2C_ADDRESS 0x20 // I2C Address of the port expander - #define LCD_USE_I2C_BUZZER //comment out to disable buzzer on LCD - #define NEWPANEL - #define ULTIPANEL - - #ifndef ENCODER_PULSES_PER_STEP - #define ENCODER_PULSES_PER_STEP 4 - #endif - - #ifndef ENCODER_STEPS_PER_MENU_ITEM - #define ENCODER_STEPS_PER_MENU_ITEM 1 - #endif - - - #ifdef LCD_USE_I2C_BUZZER - #define LCD_FEEDBACK_FREQUENCY_HZ 1000 - #define LCD_FEEDBACK_FREQUENCY_DURATION_MS 100 - #endif - -#endif // Panucatt VIKI LCD with status LEDs, integrated click & L/R/U/P buttons, separate encoder inputs //#define LCD_I2C_VIKI -#ifdef LCD_I2C_VIKI - // This uses the LiquidTWI2 library v1.2.3 or later ( https://github.com/lincomatic/LiquidTWI2 ) - // Make sure the LiquidTWI2 directory is placed in the Arduino or Sketchbook libraries subdirectory. - // Note: The pause/stop/resume LCD button pin should be connected to the Arduino - // BTN_ENC pin (or set BTN_ENC to -1 if not used) - #define LCD_I2C_TYPE_MCP23017 - #define LCD_I2C_ADDRESS 0x20 // I2C Address of the port expander - #define LCD_USE_I2C_BUZZER //comment out to disable buzzer on LCD (requires LiquidTWI2 v1.2.3 or later) - #define NEWPANEL - #define ULTIPANEL -#endif // Shift register panels // --------------------- @@ -739,51 +640,10 @@ const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of // https://bitbucket.org/fmalpartida/new-liquidcrystal/wiki/schematics#!shiftregister-connection //#define SAV_3DLCD -#ifdef SAV_3DLCD - #define SR_LCD_2W_NL // Non latching 2 wire shiftregister - #define NEWPANEL - #define ULTIPANEL -#endif - - -#ifdef ULTIPANEL -// #define NEWPANEL //enable this if you have a click-encoder panel - #define SDSUPPORT - #define ULTRA_LCD - #ifdef DOGLCD // Change number of lines to match the DOG graphic display - #define LCD_WIDTH 22 - #define LCD_HEIGHT 5 - #else - #define LCD_WIDTH 20 - #define LCD_HEIGHT 4 - #endif -#else //no panel but just LCD - #ifdef ULTRA_LCD - #ifdef DOGLCD // Change number of lines to match the 128x64 graphics display - #define LCD_WIDTH 22 - #define LCD_HEIGHT 5 - #else - #define LCD_WIDTH 16 - #define LCD_HEIGHT 2 - #endif - #endif -#endif - -// default LCD contrast for dogm-like LCD displays -#ifdef DOGLCD -# ifndef DEFAULT_LCD_CONTRAST -# define DEFAULT_LCD_CONTRAST 32 -# endif -#endif // Increase the FAN pwm frequency. Removes the PWM noise but increases heating in the FET/Arduino //#define FAST_PWM_FAN -// Temperature status LEDs that display the hotend and bet temperature. -// If all hotends and bed temperature and temperature setpoint are < 54C then the BLUE led is on. -// Otherwise the RED led is on. There is 1C hysteresis. -//#define TEMP_STAT_LEDS - // Use software PWM to drive the fan, as for the heaters. This uses a very low frequency // which is not ass annoying as with the hardware PWM. On the other hand, if this frequency // is too low, you should also increment SOFT_PWM_SCALE. @@ -795,6 +655,11 @@ const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of // at zero value, there are 128 effective control positions. #define SOFT_PWM_SCALE 0 +// Temperature status LEDs that display the hotend and bet temperature. +// If all hotends and bed temperature and temperature setpoint are < 54C then the BLUE led is on. +// Otherwise the RED led is on. There is 1C hysteresis. +//#define TEMP_STAT_LEDS + // M240 Triggers a camera by emulating a Canon RC-1 Remote // Data from: http://www.doc-diy.net/photo/rc-1_hacked/ // #define PHOTOGRAPH_PIN 23 @@ -866,4 +731,4 @@ const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of #include "Configuration_adv.h" #include "thermistortables.h" -#endif //__CONFIGURATION_H +#endif //CONFIGURATION_H diff --git a/Marlin/example_configurations/makibox/Configuration_adv.h b/Marlin/example_configurations/makibox/Configuration_adv.h index efb8943aa..12c3d71d4 100644 --- a/Marlin/example_configurations/makibox/Configuration_adv.h +++ b/Marlin/example_configurations/makibox/Configuration_adv.h @@ -1,6 +1,8 @@ #ifndef CONFIGURATION_ADV_H #define CONFIGURATION_ADV_H +#include "Conditionals.h" + //=========================================================================== //=============================Thermal Settings ============================ //=========================================================================== @@ -89,54 +91,6 @@ #define ENDSTOPS_ONLY_FOR_HOMING // If defined the endstops will only be used for homing - -//// AUTOSET LOCATIONS OF LIMIT SWITCHES -//// Added by ZetaPhoenix 09-15-2012 -#ifdef MANUAL_HOME_POSITIONS // Use manual limit switch locations - #define X_HOME_POS MANUAL_X_HOME_POS - #define Y_HOME_POS MANUAL_Y_HOME_POS - #define Z_HOME_POS MANUAL_Z_HOME_POS -#else //Set min/max homing switch positions based upon homing direction and min/max travel limits - //X axis - #if X_HOME_DIR == -1 - #ifdef BED_CENTER_AT_0_0 - #define X_HOME_POS X_MAX_LENGTH * -0.5 - #else - #define X_HOME_POS X_MIN_POS - #endif //BED_CENTER_AT_0_0 - #else - #ifdef BED_CENTER_AT_0_0 - #define X_HOME_POS X_MAX_LENGTH * 0.5 - #else - #define X_HOME_POS X_MAX_POS - #endif //BED_CENTER_AT_0_0 - #endif //X_HOME_DIR == -1 - - //Y axis - #if Y_HOME_DIR == -1 - #ifdef BED_CENTER_AT_0_0 - #define Y_HOME_POS Y_MAX_LENGTH * -0.5 - #else - #define Y_HOME_POS Y_MIN_POS - #endif //BED_CENTER_AT_0_0 - #else - #ifdef BED_CENTER_AT_0_0 - #define Y_HOME_POS Y_MAX_LENGTH * 0.5 - #else - #define Y_HOME_POS Y_MAX_POS - #endif //BED_CENTER_AT_0_0 - #endif //Y_HOME_DIR == -1 - - // Z axis - #if Z_HOME_DIR == -1 //BED_CENTER_AT_0_0 not used - #define Z_HOME_POS Z_MIN_POS - #else - #define Z_HOME_POS Z_MAX_POS - #endif //Z_HOME_DIR == -1 -#endif //End auto min/max positions -//END AUTOSET LOCATIONS OF LIMIT SWITCHES -ZP - - //#define Z_LATE_ENABLE // Enable Z the last moment. Needed if your Z driver overheats. // A single Z stepper driver is usually used to drive 2 stepper motors. @@ -146,26 +100,12 @@ // On a RAMPS (or other 5 driver) motherboard, using this feature will limit you to using 1 extruder. //#define Z_DUAL_STEPPER_DRIVERS -#ifdef Z_DUAL_STEPPER_DRIVERS - #undef EXTRUDERS - #define EXTRUDERS 1 -#endif - // Same again but for Y Axis. //#define Y_DUAL_STEPPER_DRIVERS // Define if the two Y drives need to rotate in opposite directions #define INVERT_Y2_VS_Y_DIR true -#ifdef Y_DUAL_STEPPER_DRIVERS - #undef EXTRUDERS - #define EXTRUDERS 1 -#endif - -#if defined (Z_DUAL_STEPPER_DRIVERS) && defined (Y_DUAL_STEPPER_DRIVERS) - #error "You cannot have dual drivers for both Y and Z" -#endif - // Enable this for dual x-carriage printers. // A dual x-carriage design has the advantage that the inactive extruder can be parked which // prevents hot-end ooze contaminating the print. It also reduces the weight of each x-carriage @@ -227,20 +167,15 @@ #define INVERT_Z_STEP_PIN false #define INVERT_E_STEP_PIN false -//default stepper release if idle. Set to 0 to deactivate. +// Default stepper release if idle. Set to 0 to deactivate. #define DEFAULT_STEPPER_DEACTIVE_TIME 60 #define DEFAULT_MINIMUMFEEDRATE 0.0 // minimum feedrate #define DEFAULT_MINTRAVELFEEDRATE 0.0 -// Feedrates for manual moves along X, Y, Z, E from panel #ifdef ULTIPANEL -#define MANUAL_FEEDRATE {50*60, 50*60, 4*60, 60} // set the speeds for manual moves (mm/min) -#endif - -//Comment to disable setting feedrate multiplier via encoder -#ifdef ULTIPANEL - #define ULTIPANEL_FEEDMULTIPLY + #define MANUAL_FEEDRATE {50*60, 50*60, 4*60, 60} // Feedrates for manual moves along X, Y, Z, E from panel + #define ULTIPANEL_FEEDMULTIPLY // Comment to disable setting feedrate multiplier via encoder #endif // minimum time in microseconds that a movement needs to take if the buffer is emptied. @@ -259,13 +194,6 @@ // if unwanted behavior is observed on a user's machine when running at very slow speeds. #define MINIMUM_PLANNER_SPEED 0.05// (mm/sec) -// MS1 MS2 Stepper Driver Microstepping mode table -#define MICROSTEP1 LOW,LOW -#define MICROSTEP2 HIGH,LOW -#define MICROSTEP4 LOW,HIGH -#define MICROSTEP8 HIGH,HIGH -#define MICROSTEP16 HIGH,HIGH - // Microstep setting (Only functional when stepper driver microstep pins are connected to MCU. #define MICROSTEP_MODES {16,16,16,16,16} // [1,2,4,8,16] @@ -335,16 +263,6 @@ #define BABYSTEP_XY //not only z, but also XY in the menu. more clutter, more functions #define BABYSTEP_INVERT_Z false //true for inverse movements in Z #define BABYSTEP_Z_MULTIPLICATOR 2 //faster z movements - - #ifdef COREXY - #error BABYSTEPPING not implemented for COREXY yet. - #endif - - #ifdef DELTA - #ifdef BABYSTEP_XY - #error BABYSTEPPING only implemented for Z axis on deltabots. - #endif - #endif #endif // extruder advance constant (s2/mm3) @@ -358,12 +276,8 @@ #ifdef ADVANCE #define EXTRUDER_ADVANCE_K .0 - #define D_FILAMENT 2.85 #define STEPS_MM_E 836 - #define EXTRUSION_AREA (0.25 * D_FILAMENT * D_FILAMENT * 3.14159) - #define STEPS_PER_CUBIC_MM_E (axis_steps_per_unit[E_AXIS]/ EXTRUSION_AREA) - #endif // ADVANCE // Arc interpretation settings: @@ -378,26 +292,6 @@ const unsigned int dropsegments=5; //everything with less than this number of st // be commented out otherwise //#define SDCARDDETECTINVERTED -#ifdef ULTIPANEL - #undef SDCARDDETECTINVERTED -#endif - -// Power Signal Control Definitions -// By default use ATX definition -#ifndef POWER_SUPPLY - #define POWER_SUPPLY 1 -#endif -// 1 = ATX -#if (POWER_SUPPLY == 1) - #define PS_ON_AWAKE LOW - #define PS_ON_ASLEEP HIGH -#endif -// 2 = X-Box 360 203W -#if (POWER_SUPPLY == 2) - #define PS_ON_AWAKE HIGH - #define PS_ON_ASLEEP LOW -#endif - // Control heater 0 and heater 1 in parallel. //#define HEATERS_PARALLEL @@ -435,9 +329,9 @@ const unsigned int dropsegments=5; //everything with less than this number of st #define RETRACT_RECOVER_FEEDRATE 8 //default feedrate for recovering from retraction (mm/s) #endif -//adds support for experimental filament exchange support M600; requires display +// Add support for experimental filament exchange support M600; requires display #ifdef ULTIPANEL - #define FILAMENTCHANGEENABLE + //#define FILAMENTCHANGEENABLE #ifdef FILAMENTCHANGEENABLE #define FILAMENTCHANGE_XPOS 3 #define FILAMENTCHANGE_YPOS 3 @@ -447,81 +341,7 @@ const unsigned int dropsegments=5; //everything with less than this number of st #endif #endif -#ifdef FILAMENTCHANGEENABLE - #ifdef EXTRUDER_RUNOUT_PREVENT - #error EXTRUDER_RUNOUT_PREVENT currently incompatible with FILAMENTCHANGE - #endif -#endif - -//=========================================================================== -//============================= 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 - +#include "Conditionals.h" +#include "SanityCheck.h" -#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 98fae14d5..17928b536 100644 --- a/Marlin/example_configurations/tvrrug/Round2/Configuration.h +++ b/Marlin/example_configurations/tvrrug/Round2/Configuration.h @@ -321,15 +321,6 @@ your extruder heater takes 2 minutes to hit the target on heating. // #define ENDSTOPPULLUP_ZMIN #endif -#ifdef ENDSTOPPULLUPS - #define ENDSTOPPULLUP_XMAX - #define ENDSTOPPULLUP_YMAX - #define ENDSTOPPULLUP_ZMAX - #define ENDSTOPPULLUP_XMIN - #define ENDSTOPPULLUP_YMIN - #define ENDSTOPPULLUP_ZMIN -#endif - // The pullups are needed if you directly connect a mechanical endswitch between the signal and ground pins. const bool X_MIN_ENDSTOP_INVERTING = true; // set to true to invert the logic of the endstop. const bool Y_MIN_ENDSTOP_INVERTING = true; // set to true to invert the logic of the endstop. @@ -378,10 +369,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. //=========================================================================== //============================ Manual Bed Leveling ========================== @@ -633,112 +629,17 @@ const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of // REMEMBER TO INSTALL LiquidCrystal_I2C.h in your ARDUINO library folder: https://github.com/kiyoshigawa/LiquidCrystal_I2C //#define RA_CONTROL_PANEL -//automatic expansion -#if defined (MAKRPANEL) - #define DOGLCD - #define SDSUPPORT - #define ULTIPANEL - #define NEWPANEL - #define DEFAULT_LCD_CONTRAST 17 -#endif - -#if defined(miniVIKI) || defined(VIKI2) - #define ULTRA_LCD //general LCD support, also 16x2 - #define DOGLCD // Support for SPI LCD 128x64 (Controller ST7565R graphic Display Family) - #define ULTIMAKERCONTROLLER //as available from the Ultimaker online store. - - #ifdef miniVIKI - #define DEFAULT_LCD_CONTRAST 95 - #else - #define DEFAULT_LCD_CONTRAST 40 - #endif - - #define ENCODER_PULSES_PER_STEP 4 - #define ENCODER_STEPS_PER_MENU_ITEM 1 -#endif - -#if defined (PANEL_ONE) - #define SDSUPPORT - #define ULTIMAKERCONTROLLER -#endif - -#if defined (REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER) - #define DOGLCD - #define U8GLIB_ST7920 - #define REPRAP_DISCOUNT_SMART_CONTROLLER -#endif - -#if defined(ULTIMAKERCONTROLLER) || defined(REPRAP_DISCOUNT_SMART_CONTROLLER) || defined(G3D_PANEL) - #define ULTIPANEL - #define NEWPANEL -#endif - -#if defined(REPRAPWORLD_KEYPAD) - #define NEWPANEL - #define ULTIPANEL -#endif -#if defined(RA_CONTROL_PANEL) - #define ULTIPANEL - #define NEWPANEL - #define LCD_I2C_TYPE_PCA8574 - #define LCD_I2C_ADDRESS 0x27 // I2C Address of the port expander -#endif - -//I2C PANELS +/** + * I2C Panels + */ //#define LCD_I2C_SAINSMART_YWROBOT -#ifdef LCD_I2C_SAINSMART_YWROBOT - // This uses the LiquidCrystal_I2C library ( https://bitbucket.org/fmalpartida/new-liquidcrystal/wiki/Home ) - // Make sure it is placed in the Arduino libraries directory. - #define LCD_I2C_TYPE_PCF8575 - #define LCD_I2C_ADDRESS 0x27 // I2C Address of the port expander - #define NEWPANEL - #define ULTIPANEL -#endif // PANELOLU2 LCD with status LEDs, separate encoder and click inputs //#define LCD_I2C_PANELOLU2 -#ifdef LCD_I2C_PANELOLU2 - // This uses the LiquidTWI2 library v1.2.3 or later ( https://github.com/lincomatic/LiquidTWI2 ) - // Make sure the LiquidTWI2 directory is placed in the Arduino or Sketchbook libraries subdirectory. - // (v1.2.3 no longer requires you to define PANELOLU in the LiquidTWI2.h library header file) - // Note: The PANELOLU2 encoder click input can either be directly connected to a pin - // (if BTN_ENC defined to != -1) or read through I2C (when BTN_ENC == -1). - #define LCD_I2C_TYPE_MCP23017 - #define LCD_I2C_ADDRESS 0x20 // I2C Address of the port expander - #define LCD_USE_I2C_BUZZER //comment out to disable buzzer on LCD - #define NEWPANEL - #define ULTIPANEL - - #ifndef ENCODER_PULSES_PER_STEP - #define ENCODER_PULSES_PER_STEP 4 - #endif - - #ifndef ENCODER_STEPS_PER_MENU_ITEM - #define ENCODER_STEPS_PER_MENU_ITEM 1 - #endif - - - #ifdef LCD_USE_I2C_BUZZER - #define LCD_FEEDBACK_FREQUENCY_HZ 1000 - #define LCD_FEEDBACK_FREQUENCY_DURATION_MS 100 - #endif - -#endif // Panucatt VIKI LCD with status LEDs, integrated click & L/R/U/P buttons, separate encoder inputs //#define LCD_I2C_VIKI -#ifdef LCD_I2C_VIKI - // This uses the LiquidTWI2 library v1.2.3 or later ( https://github.com/lincomatic/LiquidTWI2 ) - // Make sure the LiquidTWI2 directory is placed in the Arduino or Sketchbook libraries subdirectory. - // Note: The pause/stop/resume LCD button pin should be connected to the Arduino - // BTN_ENC pin (or set BTN_ENC to -1 if not used) - #define LCD_I2C_TYPE_MCP23017 - #define LCD_I2C_ADDRESS 0x20 // I2C Address of the port expander - #define LCD_USE_I2C_BUZZER //comment out to disable buzzer on LCD (requires LiquidTWI2 v1.2.3 or later) - #define NEWPANEL - #define ULTIPANEL -#endif // Shift register panels // --------------------- @@ -746,51 +647,10 @@ const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of // https://bitbucket.org/fmalpartida/new-liquidcrystal/wiki/schematics#!shiftregister-connection //#define SAV_3DLCD -#ifdef SAV_3DLCD - #define SR_LCD_2W_NL // Non latching 2 wire shiftregister - #define NEWPANEL - #define ULTIPANEL -#endif - - -#ifdef ULTIPANEL -// #define NEWPANEL //enable this if you have a click-encoder panel - #define SDSUPPORT - #define ULTRA_LCD - #ifdef DOGLCD // Change number of lines to match the DOG graphic display - #define LCD_WIDTH 22 - #define LCD_HEIGHT 5 - #else - #define LCD_WIDTH 20 - #define LCD_HEIGHT 4 - #endif -#else //no panel but just LCD - #ifdef ULTRA_LCD - #ifdef DOGLCD // Change number of lines to match the 128x64 graphics display - #define LCD_WIDTH 22 - #define LCD_HEIGHT 5 - #else - #define LCD_WIDTH 16 - #define LCD_HEIGHT 2 - #endif - #endif -#endif - -// default LCD contrast for dogm-like LCD displays -#ifdef DOGLCD -# ifndef DEFAULT_LCD_CONTRAST -# define DEFAULT_LCD_CONTRAST 32 -# endif -#endif // Increase the FAN pwm frequency. Removes the PWM noise but increases heating in the FET/Arduino //#define FAST_PWM_FAN -// Temperature status LEDs that display the hotend and bet temperature. -// If all hotends and bed temperature and temperature setpoint are < 54C then the BLUE led is on. -// Otherwise the RED led is on. There is 1C hysteresis. -//#define TEMP_STAT_LEDS - // Use software PWM to drive the fan, as for the heaters. This uses a very low frequency // which is not ass annoying as with the hardware PWM. On the other hand, if this frequency // is too low, you should also increment SOFT_PWM_SCALE. @@ -802,6 +662,11 @@ const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of // at zero value, there are 128 effective control positions. #define SOFT_PWM_SCALE 0 +// Temperature status LEDs that display the hotend and bet temperature. +// If all hotends and bed temperature and temperature setpoint are < 54C then the BLUE led is on. +// Otherwise the RED led is on. There is 1C hysteresis. +//#define TEMP_STAT_LEDS + // M240 Triggers a camera by emulating a Canon RC-1 Remote // Data from: http://www.doc-diy.net/photo/rc-1_hacked/ // #define PHOTOGRAPH_PIN 23 @@ -873,4 +738,4 @@ const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of #include "Configuration_adv.h" #include "thermistortables.h" -#endif //__CONFIGURATION_H +#endif //CONFIGURATION_H diff --git a/Marlin/example_configurations/tvrrug/Round2/Configuration_adv.h b/Marlin/example_configurations/tvrrug/Round2/Configuration_adv.h index cfb2a4983..14d2019cc 100644 --- a/Marlin/example_configurations/tvrrug/Round2/Configuration_adv.h +++ b/Marlin/example_configurations/tvrrug/Round2/Configuration_adv.h @@ -1,6 +1,8 @@ #ifndef CONFIGURATION_ADV_H #define CONFIGURATION_ADV_H +#include "Conditionals.h" + //=========================================================================== //=============================Thermal Settings ============================ //=========================================================================== @@ -89,54 +91,6 @@ #define ENDSTOPS_ONLY_FOR_HOMING // If defined the endstops will only be used for homing - -//// AUTOSET LOCATIONS OF LIMIT SWITCHES -//// Added by ZetaPhoenix 09-15-2012 -#ifdef MANUAL_HOME_POSITIONS // Use manual limit switch locations - #define X_HOME_POS MANUAL_X_HOME_POS - #define Y_HOME_POS MANUAL_Y_HOME_POS - #define Z_HOME_POS MANUAL_Z_HOME_POS -#else //Set min/max homing switch positions based upon homing direction and min/max travel limits - //X axis - #if X_HOME_DIR == -1 - #ifdef BED_CENTER_AT_0_0 - #define X_HOME_POS X_MAX_LENGTH * -0.5 - #else - #define X_HOME_POS X_MIN_POS - #endif //BED_CENTER_AT_0_0 - #else - #ifdef BED_CENTER_AT_0_0 - #define X_HOME_POS X_MAX_LENGTH * 0.5 - #else - #define X_HOME_POS X_MAX_POS - #endif //BED_CENTER_AT_0_0 - #endif //X_HOME_DIR == -1 - - //Y axis - #if Y_HOME_DIR == -1 - #ifdef BED_CENTER_AT_0_0 - #define Y_HOME_POS Y_MAX_LENGTH * -0.5 - #else - #define Y_HOME_POS Y_MIN_POS - #endif //BED_CENTER_AT_0_0 - #else - #ifdef BED_CENTER_AT_0_0 - #define Y_HOME_POS Y_MAX_LENGTH * 0.5 - #else - #define Y_HOME_POS Y_MAX_POS - #endif //BED_CENTER_AT_0_0 - #endif //Y_HOME_DIR == -1 - - // Z axis - #if Z_HOME_DIR == -1 //BED_CENTER_AT_0_0 not used - #define Z_HOME_POS Z_MIN_POS - #else - #define Z_HOME_POS Z_MAX_POS - #endif //Z_HOME_DIR == -1 -#endif //End auto min/max positions -//END AUTOSET LOCATIONS OF LIMIT SWITCHES -ZP - - //#define Z_LATE_ENABLE // Enable Z the last moment. Needed if your Z driver overheats. // A single Z stepper driver is usually used to drive 2 stepper motors. @@ -146,26 +100,12 @@ // On a RAMPS (or other 5 driver) motherboard, using this feature will limit you to using 1 extruder. //#define Z_DUAL_STEPPER_DRIVERS -#ifdef Z_DUAL_STEPPER_DRIVERS - #undef EXTRUDERS - #define EXTRUDERS 1 -#endif - // Same again but for Y Axis. //#define Y_DUAL_STEPPER_DRIVERS // Define if the two Y drives need to rotate in opposite directions #define INVERT_Y2_VS_Y_DIR true -#ifdef Y_DUAL_STEPPER_DRIVERS - #undef EXTRUDERS - #define EXTRUDERS 1 -#endif - -#if defined (Z_DUAL_STEPPER_DRIVERS) && defined (Y_DUAL_STEPPER_DRIVERS) - #error "You cannot have dual drivers for both Y and Z" -#endif - // Enable this for dual x-carriage printers. // A dual x-carriage design has the advantage that the inactive extruder can be parked which // prevents hot-end ooze contaminating the print. It also reduces the weight of each x-carriage @@ -229,20 +169,15 @@ #define INVERT_Z_STEP_PIN false #define INVERT_E_STEP_PIN false -//default stepper release if idle. Set to 0 to deactivate. +// Default stepper release if idle. Set to 0 to deactivate. #define DEFAULT_STEPPER_DEACTIVE_TIME 60 #define DEFAULT_MINIMUMFEEDRATE 0.0 // minimum feedrate #define DEFAULT_MINTRAVELFEEDRATE 0.0 -// Feedrates for manual moves along X, Y, Z, E from panel -#ifdef ULTIPANEL -#define MANUAL_FEEDRATE {50*60, 50*60, 4*60, 60} // set the speeds for manual moves (mm/min) -#endif - -//Comment to disable setting feedrate multiplier via encoder #ifdef ULTIPANEL - #define ULTIPANEL_FEEDMULTIPLY + #define MANUAL_FEEDRATE {50*60, 50*60, 4*60, 60} // Feedrates for manual moves along X, Y, Z, E from panel + #define ULTIPANEL_FEEDMULTIPLY // Comment to disable setting feedrate multiplier via encoder #endif // minimum time in microseconds that a movement needs to take if the buffer is emptied. @@ -261,13 +196,6 @@ // if unwanted behavior is observed on a user's machine when running at very slow speeds. #define MINIMUM_PLANNER_SPEED 0.05// (mm/sec) -// MS1 MS2 Stepper Driver Microstepping mode table -#define MICROSTEP1 LOW,LOW -#define MICROSTEP2 HIGH,LOW -#define MICROSTEP4 LOW,HIGH -#define MICROSTEP8 HIGH,HIGH -#define MICROSTEP16 HIGH,HIGH - // Microstep setting (Only functional when stepper driver microstep pins are connected to MCU. #define MICROSTEP_MODES {16,16,16,16,16} // [1,2,4,8,16] @@ -336,16 +264,6 @@ #define BABYSTEP_XY //not only z, but also XY in the menu. more clutter, more functions #define BABYSTEP_INVERT_Z false //true for inverse movements in Z #define BABYSTEP_Z_MULTIPLICATOR 2 //faster z movements - - #ifdef COREXY - #error BABYSTEPPING not implemented for COREXY yet. - #endif - - #ifdef DELTA - #ifdef BABYSTEP_XY - #error BABYSTEPPING only implemented for Z axis on deltabots. - #endif - #endif #endif // extruder advance constant (s2/mm3) @@ -379,26 +297,6 @@ const unsigned int dropsegments=5; //everything with less than this number of st // be commented out otherwise #define SDCARDDETECTINVERTED -#ifdef ULTIPANEL - #undef SDCARDDETECTINVERTED -#endif - -// Power Signal Control Definitions -// By default use ATX definition -#ifndef POWER_SUPPLY - #define POWER_SUPPLY 1 -#endif -// 1 = ATX -#if (POWER_SUPPLY == 1) - #define PS_ON_AWAKE LOW - #define PS_ON_ASLEEP HIGH -#endif -// 2 = X-Box 360 203W -#if (POWER_SUPPLY == 2) - #define PS_ON_AWAKE HIGH - #define PS_ON_ASLEEP LOW -#endif - // Control heater 0 and heater 1 in parallel. //#define HEATERS_PARALLEL @@ -438,9 +336,9 @@ const unsigned int dropsegments=5; //everything with less than this number of st #define RETRACT_RECOVER_FEEDRATE 8 //default feedrate for recovering from retraction (mm/s) #endif -//adds support for experimental filament exchange support M600; requires display +// Add support for experimental filament exchange support M600; requires display #ifdef ULTIPANEL - #define FILAMENTCHANGEENABLE + //#define FILAMENTCHANGEENABLE #ifdef FILAMENTCHANGEENABLE #define FILAMENTCHANGE_XPOS 3 #define FILAMENTCHANGE_YPOS 3 @@ -450,81 +348,7 @@ const unsigned int dropsegments=5; //everything with less than this number of st #endif #endif -#ifdef FILAMENTCHANGEENABLE - #ifdef EXTRUDER_RUNOUT_PREVENT - #error EXTRUDER_RUNOUT_PREVENT currently incompatible with FILAMENTCHANGE - #endif -#endif - -//=========================================================================== -//============================= 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 - +#include "Conditionals.h" +#include "SanityCheck.h" -#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/pins.h b/Marlin/pins.h index 38b1274f7..88c5cc78c 100644 --- a/Marlin/pins.h +++ b/Marlin/pins.h @@ -5,8 +5,6 @@ #ifndef PINS_H #define PINS_H -#include "boards.h" - // Preset optional pins #define X_MS1_PIN -1 #define X_MS2_PIN -1 diff --git a/Marlin/temperature.cpp b/Marlin/temperature.cpp index cf431cc6f..713d0312f 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 19e3d0c50..0c27e7d50 100644 --- a/Marlin/ultralcd.cpp +++ b/Marlin/ultralcd.cpp @@ -1,4 +1,3 @@ -#include "temperature.h" #include "ultralcd.h" #ifdef ULTRA_LCD #include "Marlin.h" @@ -1200,10 +1199,6 @@ void lcd_init() { WRITE(SHIFT_OUT,HIGH); WRITE(SHIFT_LD,HIGH); WRITE(SHIFT_EN,LOW); - #else - #ifdef ULTIPANEL - #error ULTIPANEL requires an encoder - #endif #endif // SR_LCD_2W_NL #endif//!NEWPANEL diff --git a/Marlin/ultralcd.h b/Marlin/ultralcd.h index 9d89f514d..befe8fd1e 100644 --- a/Marlin/ultralcd.h +++ b/Marlin/ultralcd.h @@ -14,10 +14,10 @@ void lcd_reset_alert_level(); bool lcd_detected(void); -#ifdef DOGLCD - extern int lcd_contrast; - void lcd_setcontrast(uint8_t value); -#endif + #ifdef DOGLCD + extern int lcd_contrast; + void lcd_setcontrast(uint8_t value); + #endif static unsigned char blink = 0; // Variable for visualization of fan rotation in GLCD @@ -28,27 +28,26 @@ #define LCD_TIMEOUT_TO_STATUS 15000 #ifdef ULTIPANEL - void lcd_buttons_update(); - extern volatile uint8_t buttons; //the last checked buttons in a bit array. - #ifdef REPRAPWORLD_KEYPAD - extern volatile uint8_t buttons_reprapworld_keypad; // to store the keypad shift register values - #endif + void lcd_buttons_update(); + extern volatile uint8_t buttons; //the last checked buttons in a bit array. + #ifdef REPRAPWORLD_KEYPAD + extern volatile uint8_t buttons_reprapworld_keypad; // to store the keypad shift register values + #endif #else - FORCE_INLINE void lcd_buttons_update() {} + FORCE_INLINE void lcd_buttons_update() {} #endif extern int plaPreheatHotendTemp; extern int plaPreheatHPBTemp; extern int plaPreheatFanSpeed; - extern int absPreheatHotendTemp; extern int absPreheatHPBTemp; extern int absPreheatFanSpeed; - + extern bool cancel_heatup; #ifdef FILAMENT_LCD_DISPLAY - extern unsigned long message_millis; + extern unsigned long message_millis; #endif void lcd_buzz(long duration,uint16_t freq);