diff --git a/.travis.yml b/.travis.yml
index 75dc169261..23d673f4b2 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -56,11 +56,11 @@ before_script:
#
script:
#
- # Backup Configuration.h, Configuration_adv.h, and pins_RAMPS_14.h
+ # Backup Configuration.h, Configuration_adv.h, and pins_RAMPS.h
#
- cp Marlin/Configuration.h Marlin/Configuration.h.backup
- cp Marlin/Configuration_adv.h Marlin/Configuration_adv.h.backup
- - cp Marlin/pins_RAMPS_14.h Marlin/pins_RAMPS_14.h.backup
+ - cp Marlin/pins_RAMPS.h Marlin/pins_RAMPS.h.backup
#
# Build with the default configurations
#
@@ -221,7 +221,7 @@ script:
#
- restore_configs
- opt_enable_adv Z_DUAL_STEPPER_DRIVERS Z_DUAL_ENDSTOPS
- - pins_set RAMPS_14 X_MAX_PIN -1
+ - pins_set RAMPS X_MAX_PIN -1
- opt_set_adv Z2_MAX_PIN 2
- build_marlin
#
diff --git a/Marlin/Marlin_main.cpp b/Marlin/Marlin_main.cpp
index 6c0b2fe0d9..d15854ca2b 100644
--- a/Marlin/Marlin_main.cpp
+++ b/Marlin/Marlin_main.cpp
@@ -939,7 +939,7 @@ void setup() {
dac_init();
#endif
- #if ENABLED(Z_PROBE_SLED)
+ #if ENABLED(Z_PROBE_SLED) && PIN_EXISTS(SLED)
pinMode(SLED_PIN, OUTPUT);
digitalWrite(SLED_PIN, LOW); // turn it off
#endif // Z_PROBE_SLED
@@ -1856,8 +1856,10 @@ static void clean_up_after_endstop_or_probe_move() {
// Dock sled a bit closer to ensure proper capturing
do_blocking_move_to_x(X_MAX_POS + SLED_DOCKING_OFFSET - ((stow) ? 1 : 0));
- digitalWrite(SLED_PIN, !stow); // switch solenoid
+ #if PIN_EXISTS(SLED)
+ digitalWrite(SLED_PIN, !stow); // switch solenoid
+ #endif
}
#endif // Z_PROBE_SLED
diff --git a/Marlin/pins.h b/Marlin/pins.h
index 8133f4db5b..3657675db5 100644
--- a/Marlin/pins.h
+++ b/Marlin/pins.h
@@ -42,13 +42,35 @@
#elif MB(RAMPS_OLD)
#include "pins_RAMPS_OLD.h"
#elif MB(RAMPS_13_EFB)
- #include "pins_RAMPS_13_EFB.h"
-#elif MB(RAMPS_13_EEB) || MB(RAMPS_13_EFF) || MB(RAMPS_13_EEF) || MB(RAMPS_13_SF)
+ #define IS_RAMPS_EFB
+ #include "pins_RAMPS_13.h"
+#elif MB(RAMPS_13_EEB)
+ #define IS_RAMPS_EEB
+ #include "pins_RAMPS_13.h"
+#elif MB(RAMPS_13_EFF)
+ #define IS_RAMPS_EFF
+ #include "pins_RAMPS_13.h"
+#elif MB(RAMPS_13_EEF)
+ #define IS_RAMPS_EEF
+ #include "pins_RAMPS_13.h"
+#elif MB(RAMPS_13_SF)
+ #define IS_RAMPS_SF
#include "pins_RAMPS_13.h"
#elif MB(RAMPS_14_EFB)
- #include "pins_RAMPS_14_EFB.h"
-#elif MB(RAMPS_14_EEB) || MB(RAMPS_14_EFF) || MB(RAMPS_14_EEF) || MB(RAMPS_14_SF)
- #include "pins_RAMPS_14.h"
+ #define IS_RAMPS_EFB
+ #include "pins_RAMPS.h"
+#elif MB(RAMPS_14_EEB)
+ #define IS_RAMPS_EEB
+ #include "pins_RAMPS.h"
+#elif MB(RAMPS_14_EFF)
+ #define IS_RAMPS_EFF
+ #include "pins_RAMPS.h"
+#elif MB(RAMPS_14_EEF)
+ #define IS_RAMPS_EEF
+ #include "pins_RAMPS.h"
+#elif MB(RAMPS_14_SF)
+ #define IS_RAMPS_SF
+ #include "pins_RAMPS.h"
#elif MB(GEN6)
#include "pins_GEN6.h"
#elif MB(GEN6_DELUXE)
@@ -124,7 +146,7 @@
#elif MB(LEAPFROG)
#include "pins_LEAPFROG.h"
#elif MB(BAM_DICE)
- #include "pins_RAMPS_14.h"
+ #include "pins_RAMPS.h"
#elif MB(BAM_DICE_DUE)
#include "pins_BAM_DICE_DUE.h"
#elif MB(FELIX2)
diff --git a/Marlin/pins_3DRAG.h b/Marlin/pins_3DRAG.h
index db19e5df2c..a3a6169028 100644
--- a/Marlin/pins_3DRAG.h
+++ b/Marlin/pins_3DRAG.h
@@ -36,7 +36,7 @@
#define DEFAULT_SOURCE_CODE_URL "http://3dprint.elettronicain.it/"
#endif
-#include "pins_RAMPS_14.h"
+#include "pins_RAMPS.h"
#undef Z_ENABLE_PIN
#define Z_ENABLE_PIN 63
diff --git a/Marlin/pins_AZTEEG_X3.h b/Marlin/pins_AZTEEG_X3.h
index f16eee3103..05a5a269fd 100644
--- a/Marlin/pins_AZTEEG_X3.h
+++ b/Marlin/pins_AZTEEG_X3.h
@@ -24,9 +24,13 @@
* AZTEEG_X3 Arduino Mega with RAMPS v1.4 pin assignments
*/
+#if HOTENDS > 2
+ #error "Azteeg X3 supports up to 2 hotends. Comment this line to keep going."
+#endif
+
#define BOARD_NAME "Azteeg X3"
-#include "pins_RAMPS_14_EFB.h"
+#include "pins_RAMPS.h"
#if ENABLED(VIKI2) || ENABLED(miniVIKI)
diff --git a/Marlin/pins_AZTEEG_X3_PRO.h b/Marlin/pins_AZTEEG_X3_PRO.h
index 3331a299a0..b531ec30d0 100644
--- a/Marlin/pins_AZTEEG_X3_PRO.h
+++ b/Marlin/pins_AZTEEG_X3_PRO.h
@@ -26,7 +26,7 @@
#define BOARD_NAME "Azteeg X3 Pro"
-#include "pins_RAMPS_14.h"
+#include "pins_RAMPS.h"
#undef FAN_PIN
#define FAN_PIN 6 //Part Cooling System
diff --git a/Marlin/pins_BAM_DICE_DUE.h b/Marlin/pins_BAM_DICE_DUE.h
index a8e76a7eff..0c5914f2b9 100644
--- a/Marlin/pins_BAM_DICE_DUE.h
+++ b/Marlin/pins_BAM_DICE_DUE.h
@@ -24,9 +24,13 @@
* BAM&DICE Due (Arduino Mega) pin assignments
*/
+#if HOTENDS > 2
+ #error "2PrintBeta Due supports up to 2 hotends. Comment this line to keep going."
+#endif
+
#define BOARD_NAME "2PrintBeta Due"
-#include "pins_RAMPS_14_EFB.h"
+#include "pins_RAMPS.h"
#undef TEMP_0_PIN
#undef TEMP_1_PIN
diff --git a/Marlin/pins_FELIX2.h b/Marlin/pins_FELIX2.h
index 7bb724bf53..83ce47bf5b 100644
--- a/Marlin/pins_FELIX2.h
+++ b/Marlin/pins_FELIX2.h
@@ -24,12 +24,15 @@
* FELIXprinters v2.0/3.0 (RAMPS v1.4) pin assignments
*/
+#if HOTENDS > 2
+ #error "Felix 2.0+ supports up to 2 hotends. Comment this line to keep going."
+#endif
+
#define BOARD_NAME "Felix 2.0+"
-#include "pins_RAMPS_14_EFB.h"
+#define MOSFET_D_PIN 7
-#undef HEATER_1_PIN
-#define HEATER_1_PIN 7 // EXTRUDER 2
+#include "pins_RAMPS.h"
#undef SDPOWER
#define SDPOWER 1
diff --git a/Marlin/pins_MKS_13.h b/Marlin/pins_MKS_13.h
index 00da206445..36fc0f7b8e 100644
--- a/Marlin/pins_MKS_13.h
+++ b/Marlin/pins_MKS_13.h
@@ -29,12 +29,15 @@
* MKS v1.4 (Extruder, Extruder, Fan, Bed)
*/
+#if HOTENDS > 2
+ #error "MKS 1.3/1.4 supports up to 2 hotends. Comment this line to keep going."
+#endif
+
#define BOARD_NAME "MKS > v1.3"
-#include "pins_RAMPS_14_EFB.h"
+#define MOSFET_D_PIN 7
-#undef HEATER_1_PIN
-#define HEATER_1_PIN 7 // EXTRUDER 2 (-1 on RAMPS 1.4)
+#include "pins_RAMPS.h"
#if ENABLED(VIKI2) || ENABLED(miniVIKI)
/**
diff --git a/Marlin/pins_MKS_BASE.h b/Marlin/pins_MKS_BASE.h
index 3c721f5ff8..fdaff06891 100644
--- a/Marlin/pins_MKS_BASE.h
+++ b/Marlin/pins_MKS_BASE.h
@@ -24,9 +24,12 @@
* MKS BASE 1.0 – Arduino Mega2560 with RAMPS v1.4 pin assignments
*/
+#if HOTENDS > 2
+ #error "MKS BASE 1.0 supports up to 2 hotends. Comment this line to keep going."
+#endif
+
#define BOARD_NAME "MKS BASE 1.0"
-#include "pins_RAMPS_14_EFB.h"
+#define MOSFET_D_PIN 7
-#undef HEATER_1_PIN
-#define HEATER_1_PIN 7
+#include "pins_RAMPS.h"
\ No newline at end of file
diff --git a/Marlin/pins_RAMPS_14.h b/Marlin/pins_RAMPS.h
similarity index 82%
rename from Marlin/pins_RAMPS_14.h
rename to Marlin/pins_RAMPS.h
index 9f10dd65cf..fb378e07fc 100644
--- a/Marlin/pins_RAMPS_14.h
+++ b/Marlin/pins_RAMPS.h
@@ -105,32 +105,7 @@
// define digital pin 4 for the filament runout sensor. Use the RAMPS 1.4 digital input 4 on the servos connector
#define FIL_RUNOUT_PIN 4
-#if MB(RAMPS_14_EFF) || MB(RAMPS_13_EFF) || ENABLED(IS_RAMPS_EFB)
- #define FAN_PIN 9 // (Sprinter config)
- #if MB(RAMPS_14_EFF) || MB(RAMPS_13_EFF)
- #define CONTROLLERFAN_PIN -1 // Pin used for the fan to cool controller
- #endif
-#elif MB(RAMPS_14_EEF) || MB(RAMPS_14_SF) || MB(RAMPS_13_EEF) || MB(RAMPS_13_SF)
- #define FAN_PIN 8
-#else
- #define FAN_PIN 4 // IO pin. Buffer needed
-#endif
-
#define PS_ON_PIN 12
-
-#if MB(RAMPS_14_EFF) || MB(RAMPS_13_EFF)
- #define HEATER_0_PIN 8
-#else
- #define HEATER_0_PIN 10 // EXTRUDER 1
- #if !MB(RAMPS_14_EEF) && !MB(RAMPS_13_EEF) && !MB(RAMPS_14_SF) && !MB(RAMPS_13_SF)
- #define HEATER_BED_PIN 8 // BED
- #endif
-#endif
-
-#if !MB(RAMPS_14_SF) && !MB(RAMPS_13_SF) && !ENABLED(IS_RAMPS_EFB)
- #define HEATER_1_PIN 9 // EXTRUDER 2 (FAN On Sprinter)
-#endif
-
#define TEMP_0_PIN 13 // ANALOG NUMBERING
#define TEMP_1_PIN 15 // ANALOG NUMBERING
#define TEMP_BED_PIN 14 // ANALOG NUMBERING
@@ -139,6 +114,78 @@
#define SLED_PIN -1
#endif
+/*
+
+// Augmentation for auto-assigning RAMPS plugs
+
+#if DISABLED(IS_RAMPS_EEB) && DISABLED(IS_RAMPS_EEF) && DISABLED(IS_RAMPS_EFB) && DISABLED(IS_RAMPS_EFF) && DISABLED(IS_RAMPS_SF)
+ #if HOTENDS > 1
+ #if TEMP_SENSOR_BED
+ #define IS_RAMPS_EEB
+ #else
+ #define IS_RAMPS_EEF
+ #endif
+ #elif TEMP_SENSOR_BED
+ #define IS_RAMPS_EFB
+ #else
+ #define IS_RAMPS_EFF
+ #endif
+#endif
+
+*/
+
+/**
+ * Hi Voltage PWM Pin Assignments
+ */
+
+#ifndef MOSFET_D_PIN
+ #define MOSFET_D_PIN -1
+#endif
+#ifndef RAMPS_D8_PIN
+ #define RAMPS_D8_PIN 8
+#endif
+#ifndef RAMPS_D9_PIN
+ #define RAMPS_D9_PIN 9
+#endif
+#ifndef RAMPS_D10_PIN
+ #define RAMPS_D10_PIN 10
+#endif
+
+#define HEATER_0_PIN RAMPS_D10_PIN
+
+#if ENABLED(IS_RAMPS_EFB) // Hotend, Fan, Bed
+ #define FAN_PIN RAMPS_D9_PIN
+ #define HEATER_BED_PIN RAMPS_D8_PIN
+#elif ENABLED(IS_RAMPS_EEF) // Hotend, Hotend, Fan
+ #define HEATER_1_PIN RAMPS_D9_PIN
+ #define FAN_PIN RAMPS_D8_PIN
+#elif ENABLED(IS_RAMPS_EEB) // Hotend, Hotend, Bed
+ #define HEATER_1_PIN RAMPS_D9_PIN
+ #define HEATER_BED_PIN RAMPS_D8_PIN
+#elif ENABLED(IS_RAMPS_EFF) // Hotend, Fan, Fan
+ #define FAN_PIN RAMPS_D9_PIN
+ #define FAN1_PIN RAMPS_D8_PIN
+ #define CONTROLLERFAN_PIN -1
+#elif ENABLED(IS_RAMPS_SF) // Spindle, Fan
+ #define FAN_PIN RAMPS_D8_PIN
+#else // Non-specific are "EFB" by legacy
+ #define FAN_PIN RAMPS_D9_PIN
+ #define HEATER_BED_PIN RAMPS_D8_PIN
+ #if HOTENDS == 1
+ #define FAN1_PIN MOSFET_D_PIN
+ #else
+ #define HEATER_1_PIN MOSFET_D_PIN
+ #endif
+#endif
+
+#ifndef FAN_PIN
+ #define FAN_PIN 4 // IO pin. Buffer needed
+#endif
+
+/**
+ * LCD Controller Pin Assignments
+ */
+
#if ENABLED(ULTRA_LCD)
#if ENABLED(REPRAPWORLD_GRAPHICAL_LCD)
@@ -301,4 +348,3 @@
#else
#define MAX6675_SS 66 // Do not use pin 49 as this is tied to the switch inside the SD card socket to detect if there is an SD card present
#endif
-
diff --git a/Marlin/pins_RAMPS_13.h b/Marlin/pins_RAMPS_13.h
index e3a854b117..effce90706 100644
--- a/Marlin/pins_RAMPS_13.h
+++ b/Marlin/pins_RAMPS_13.h
@@ -38,4 +38,4 @@
#endif
#define IS_RAMPS_13
-#include "pins_RAMPS_14.h"
+#include "pins_RAMPS.h"
diff --git a/Marlin/pins_RAMPS_13_EFB.h b/Marlin/pins_RAMPS_13_EFB.h
deleted file mode 100644
index 80e2927293..0000000000
--- a/Marlin/pins_RAMPS_13_EFB.h
+++ /dev/null
@@ -1,32 +0,0 @@
-/**
- * Marlin 3D Printer Firmware
- * Copyright (C) 2016 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
- *
- * Based on Sprinter and grbl.
- * Copyright (C) 2011 Camiel Gubbels / Erik van der Zalm
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- *
- */
-
-/**
- * Arduino Mega with RAMPS v1.3 pin assignments
- *
- * RAMPS_13_EFB (Extruder, Fan, Bed)
- */
-
-#define BOARD_NAME "RAMPS 1.3 EFB"
-
-#define IS_RAMPS_13
-#include "pins_RAMPS_14_EFB.h"
diff --git a/Marlin/pins_RAMPS_14_EFB.h b/Marlin/pins_RAMPS_14_EFB.h
deleted file mode 100644
index b7282ea561..0000000000
--- a/Marlin/pins_RAMPS_14_EFB.h
+++ /dev/null
@@ -1,34 +0,0 @@
-/**
- * Marlin 3D Printer Firmware
- * Copyright (C) 2016 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
- *
- * Based on Sprinter and grbl.
- * Copyright (C) 2011 Camiel Gubbels / Erik van der Zalm
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- *
- */
-
-/**
- * Arduino Mega with RAMPS v1.4 pin assignments
- *
- * RAMPS_14_EFB (Extruder, Fan, Bed)
- */
-
-#ifndef BOARD_NAME
- #define BOARD_NAME "RAMPS 1.4 EFB"
-#endif
-
-#define IS_RAMPS_EFB
-#include "pins_RAMPS_14.h"
diff --git a/Marlin/pins_RIGIDBOARD.h b/Marlin/pins_RIGIDBOARD.h
index 7fdc1ae304..6b7645205d 100644
--- a/Marlin/pins_RIGIDBOARD.h
+++ b/Marlin/pins_RIGIDBOARD.h
@@ -24,7 +24,7 @@
* RIGIDBOARD Arduino Mega with RAMPS v1.4 pin assignments
*/
-#include "pins_RAMPS_14.h"
+#include "pins_RAMPS.h"
#undef BOARD_NAME
#define BOARD_NAME "RigidBoard"
diff --git a/Marlin/pins_SAINSMART_2IN1.h b/Marlin/pins_SAINSMART_2IN1.h
index 3664fbd3a4..8d272ada4a 100644
--- a/Marlin/pins_SAINSMART_2IN1.h
+++ b/Marlin/pins_SAINSMART_2IN1.h
@@ -24,16 +24,15 @@
* Sainsmart 2-in-1 pin assignments
*/
-#include "pins_RAMPS_14_EFB.h"
+#if HOTENDS > 2
+ #error "Sainsmart 2-in-1 supports up to 2 hotends. Comment this line to keep going."
+#endif
-#undef BOARD_NAME
-#define BOARD_NAME "Sainsmart"
+#define BOARD_NAME "Sainsmart"
-#undef FAN_PIN
-#define FAN_PIN 7 // PART FAN in front of board next to Extruder heat
+#define RAMPS_D10_PIN 9 // E
+#define RAMPS_D9_PIN 7 // F PART FAN in front of board next to Extruder heat
+ // RAMPS_D8_PIN 8 // B
+#define MOSFET_D_PIN 10 // F / E
-#undef HEATER_0_PIN
-#define HEATER_0_PIN 9 // EXTRUDER 1
-
-#undef HEATER_1_PIN
-#define HEATER_1_PIN 10 // EXTRUDER 2
+#include "pins_RAMPS.h"