diff --git a/Marlin/Configuration.h b/Marlin/Configuration.h
index 34aa432eda..92710e193b 100644
--- a/Marlin/Configuration.h
+++ b/Marlin/Configuration.h
@@ -963,16 +963,6 @@
* The BLTouch probe uses a Hall effect sensor and emulates a servo.
*/
#define BLTOUCH
-#if ENABLED(BLTOUCH)
- //#define BLTOUCH_DELAY 500 // Minimum Command delay (ms). Enable and increase if needed
-
- /**
- * BLTouch V3.0 and newer smart series
- * For genuine BLTouch 3.0 sensors. Clones may be confused by 3.0 command angles. YMMV.
- * If the pin trigger is not detected, first try swapping the black and white wires then toggle this.
- */
- //#define BLTOUCH_FORCE_5V_MODE
-#endif
// A probe that is deployed and stowed with a solenoid pin (SOL1_PIN)
//#define SOLENOID_PROBE
diff --git a/Marlin/Configuration_adv.h b/Marlin/Configuration_adv.h
index fce5d52dfc..f0869e19bb 100644
--- a/Marlin/Configuration_adv.h
+++ b/Marlin/Configuration_adv.h
@@ -537,6 +537,73 @@
// Enable this if X or Y can't home without homing the other axis first.
//#define CODEPENDENT_XY_HOMING
+#if ENABLED(BLTOUCH)
+ /**
+ * Either: Use the defaults (recommended) or: For special purposes, use the following DEFINES
+ * Do not activate settings that the probe might not understand. Clones might misunderstand
+ * advanced commands.
+ *
+ * Note: If the probe is not deploying, check a "Cmd: Reset" and "Cmd: Self-Test" and then
+ * check the wiring of the BROWN, RED and ORANGE wires.
+ *
+ * Note: If the trigger signal of your probe is not being recognized, it has been very often
+ * because the BLACK and WHITE wires needed to be swapped. They are not "interchangeable"
+ * like they would be with a real switch. So please check the wiring first.
+ *
+ * Settings for all BLTouch and clone probes:
+ */
+
+ // Safety: The probe needs time to recognize the command.
+ // Minimum command delay (ms). Enable and increase if needed.
+ //#define BLTOUCH_DELAY 500
+
+ /**
+ * Settings for BLTOUCH Classic 1.2, 1.3 or BLTouch Smart 1.0, 2.0, 2.2, 3.0, 3.1, and most clones:
+ */
+
+ // Feature: Switch into SW mode after a deploy. It makes the output pulse longer. Can be useful
+ // in special cases, like noisy or filtered input configurations.
+ //#define BLTOUCH_FORCE_SW_MODE
+
+ /**
+ * Settings for BLTouch Smart 3.0 and 3.1
+ * Summary:
+ * - Voltage modes: 5V and OD (open drain - "logic voltage free") output modes
+ * - High-Speed mode
+ * - Disable LCD voltage options
+ */
+
+ /**
+ * Danger: Don't activate 5V mode unless attached to a 5V-tolerant controller!
+ * V3.0 or 3.1: Set default mode to 5V mode at Marlin startup.
+ * If disabled, OD mode is the hard-coded default on 3.0
+ * On startup, Marlin will compare its eeprom to this vale. If the selected mode
+ * differs, a mode set eeprom write will be completed at initialization.
+ * Use the option below to force an eeprom write to a V3.1 probe regardless.
+ */
+ //#define BLTOUCH_SET_5V_MODE
+
+ /**
+ * Safety: Activate if connecting a probe with an unknown voltage mode.
+ * V3.0: Set a probe into mode selected above at Marlin startup. Required for 5V mode on 3.0
+ * V3.1: Force a probe with unknown mode into selected mode at Marlin startup ( = Probe EEPROM write )
+ * To preserve the life of the probe, use this once then turn it off and re-flash.
+ */
+ //#define BLTOUCH_FORCE_MODE_SET
+
+ /**
+ * Use "HIGH SPEED" mode for probing.
+ * Danger: Disable if your probe sometimes fails. Only suitable for stable well-adjusted systems.
+ * This feature was designed for Delta's with very fast Z moves however higher speed cartesians may function
+ * If the machine cannot raise the probe fast enough after a trigger, it may enter a fault state.
+ */
+ //#define BLTOUCH_HS_MODE
+
+ // Safety: Enable voltage mode settings in the LCD menu.
+ #define BLTOUCH_LCD_VOLTAGE_MENU
+
+#endif // BLTOUCH
+
/**
* Z Steppers Auto-Alignment
* Add the G34 command to align multiple Z steppers using a bed probe.
@@ -1365,7 +1432,7 @@
* Note that M207 / M208 / M209 settings are saved to EEPROM.
*
*/
-#define FWRETRACT
+//#define FWRETRACT
#if ENABLED(FWRETRACT)
#define FWRETRACT_AUTORETRACT // costs ~500 bytes of PROGMEM
#if ENABLED(FWRETRACT_AUTORETRACT)
@@ -1392,6 +1459,7 @@
#if EXTRUDERS > 1
// Z raise distance for tool-change, as needed for some extruders
#define TOOLCHANGE_ZRAISE 1 // (mm)
+ #define TOOLCHANGE_RETURN_NEXT_MOVE // Instead of returning to old position, wait for next move command
// Retract and prime filament on tool-change
#define TOOLCHANGE_FILAMENT_SWAP
diff --git a/Marlin/src/HAL/HAL_AVR/HAL.cpp b/Marlin/src/HAL/HAL_AVR/HAL.cpp
index 2bfbccdf2d..c240c787ac 100644
--- a/Marlin/src/HAL/HAL_AVR/HAL.cpp
+++ b/Marlin/src/HAL/HAL_AVR/HAL.cpp
@@ -1,24 +1,24 @@
-/* **************************************************************************
-
- Marlin 3D Printer Firmware
- Copyright (C) 2019 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
-
- Copyright (c) 2016 Bob Cousins bobcousins42@googlemail.com
-
- 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 .
-
-****************************************************************************/
+/**
+ * Marlin 3D Printer Firmware
+ * Copyright (C) 2019 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 .
+ *
+ */
#ifdef __AVR__
diff --git a/Marlin/src/HAL/HAL_AVR/ServoTimers.h b/Marlin/src/HAL/HAL_AVR/ServoTimers.h
index b63b69c82e..17b1e1fbb0 100644
--- a/Marlin/src/HAL/HAL_AVR/ServoTimers.h
+++ b/Marlin/src/HAL/HAL_AVR/ServoTimers.h
@@ -75,16 +75,16 @@
#endif
typedef enum {
- #if ENABLED(_useTimer1)
+ #ifdef _useTimer1
_timer1,
#endif
- #if ENABLED(_useTimer3)
+ #ifdef _useTimer3
_timer3,
#endif
- #if ENABLED(_useTimer4)
+ #ifdef _useTimer4
_timer4,
#endif
- #if ENABLED(_useTimer5)
+ #ifdef _useTimer5
_timer5,
#endif
_Nbr_16timers
diff --git a/Marlin/src/HAL/HAL_AVR/fast_pwm.cpp b/Marlin/src/HAL/HAL_AVR/fast_pwm.cpp
index 0f17ed1ac7..f8005f2423 100644
--- a/Marlin/src/HAL/HAL_AVR/fast_pwm.cpp
+++ b/Marlin/src/HAL/HAL_AVR/fast_pwm.cpp
@@ -1,250 +1,271 @@
+/**
+ * Marlin 3D Printer Firmware
+ * Copyright (C) 2019 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 .
+ *
+ */
#ifdef __AVR__
#include "../../inc/MarlinConfigPre.h"
-/**
- * get_pwm_timer
- * Grabs timer information and registers of the provided pin
- * returns Timer struct containing this information
- * Used by set_pwm_frequency, set_pwm_duty
- *
- */
#if ENABLED(FAST_PWM_FAN)
+
#include "HAL.h"
- struct Timer {
- volatile uint8_t* TCCRnQ[3]; // max 3 TCCR registers per timer
- volatile uint16_t* OCRnQ[3]; // max 3 OCR registers per timer
- volatile uint16_t* ICRn; // max 1 ICR register per timer
- uint8_t n; // the timer number [0->5]
- uint8_t q; // the timer output [0->2] (A->C)
- };
+struct Timer {
+ volatile uint8_t* TCCRnQ[3]; // max 3 TCCR registers per timer
+ volatile uint16_t* OCRnQ[3]; // max 3 OCR registers per timer
+ volatile uint16_t* ICRn; // max 1 ICR register per timer
+ uint8_t n; // the timer number [0->5]
+ uint8_t q; // the timer output [0->2] (A->C)
+};
- Timer get_pwm_timer(pin_t pin) {
- uint8_t q = 0;
- switch (digitalPinToTimer(pin)) {
- // Protect reserved timers (TIMER0 & TIMER1)
- #ifdef TCCR0A
- #if !AVR_AT90USB1286_FAMILY
- case TIMER0A:
- #endif
- case TIMER0B:
+/**
+ * get_pwm_timer
+ * Get the timer information and register of the provided pin.
+ * Return a Timer struct containing this information.
+ * Used by set_pwm_frequency, set_pwm_duty
+ */
+Timer get_pwm_timer(const pin_t pin) {
+ uint8_t q = 0;
+ switch (digitalPinToTimer(pin)) {
+ // Protect reserved timers (TIMER0 & TIMER1)
+ #ifdef TCCR0A
+ #if !AVR_AT90USB1286_FAMILY
+ case TIMER0A:
#endif
- #ifdef TCCR1A
- case TIMER1A: case TIMER1B:
- #endif
- break;
- #if defined(TCCR2) || defined(TCCR2A)
- #ifdef TCCR2
- case TIMER2: {
+ case TIMER0B:
+ #endif
+ #ifdef TCCR1A
+ case TIMER1A: case TIMER1B:
+ #endif
+ break;
+ #if defined(TCCR2) || defined(TCCR2A)
+ #ifdef TCCR2
+ case TIMER2: {
+ Timer timer = {
+ /*TCCRnQ*/ { &TCCR2, nullptr, nullptr},
+ /*OCRnQ*/ { (uint16_t*)&OCR2, nullptr, nullptr},
+ /*ICRn*/ nullptr,
+ /*n, q*/ 2, 0
+ };
+ }
+ #elif defined TCCR2A
+ #if ENABLED(USE_OCR2A_AS_TOP)
+ case TIMER2A: break; // protect TIMER2A
+ case TIMER2B: {
Timer timer = {
- /*TCCRnQ*/ { &TCCR2, nullptr, nullptr},
- /*OCRnQ*/ { (uint16_t*)&OCR2, nullptr, nullptr},
+ /*TCCRnQ*/ { &TCCR2A, &TCCR2B, nullptr},
+ /*OCRnQ*/ { (uint16_t*)&OCR2A, (uint16_t*)&OCR2B, nullptr},
/*ICRn*/ nullptr,
- /*n, q*/ 2, 0
+ /*n, q*/ 2, 1
};
+ return timer;
+ }
+ #else
+ case TIMER2B: ++q;
+ case TIMER2A: {
+ Timer timer = {
+ /*TCCRnQ*/ { &TCCR2A, &TCCR2B, nullptr},
+ /*OCRnQ*/ { (uint16_t*)&OCR2A, (uint16_t*)&OCR2B, nullptr},
+ /*ICRn*/ nullptr,
+ 2, q
+ };
+ return timer;
}
- #elif defined TCCR2A
- #if ENABLED(USE_OCR2A_AS_TOP)
- case TIMER2A: break; // protect TIMER2A
- case TIMER2B: {
- Timer timer = {
- /*TCCRnQ*/ { &TCCR2A, &TCCR2B, nullptr},
- /*OCRnQ*/ { (uint16_t*)&OCR2A, (uint16_t*)&OCR2B, nullptr},
- /*ICRn*/ nullptr,
- /*n, q*/ 2, 1
- };
- return timer;
- }
- #else
- case TIMER2B: ++q;
- case TIMER2A: {
- Timer timer = {
- /*TCCRnQ*/ { &TCCR2A, &TCCR2B, nullptr},
- /*OCRnQ*/ { (uint16_t*)&OCR2A, (uint16_t*)&OCR2B, nullptr},
- /*ICRn*/ nullptr,
- 2, q
- };
- return timer;
- }
- #endif
#endif
#endif
- #ifdef TCCR3A
- case TIMER3C: ++q;
- case TIMER3B: ++q;
- case TIMER3A: {
- Timer timer = {
- /*TCCRnQ*/ { &TCCR3A, &TCCR3B, &TCCR3C},
- /*OCRnQ*/ { &OCR3A, &OCR3B, &OCR3C},
- /*ICRn*/ &ICR3,
- /*n, q*/ 3, q
- };
- return timer;
- }
- #endif
- #ifdef TCCR4A
- case TIMER4C: ++q;
- case TIMER4B: ++q;
- case TIMER4A: {
- Timer timer = {
- /*TCCRnQ*/ { &TCCR4A, &TCCR4B, &TCCR4C},
- /*OCRnQ*/ { &OCR4A, &OCR4B, &OCR4C},
- /*ICRn*/ &ICR4,
- /*n, q*/ 4, q
- };
- return timer;
- }
- #endif
- #ifdef TCCR5A
- case TIMER5C: ++q;
- case TIMER5B: ++q;
- case TIMER5A: {
- Timer timer = {
- /*TCCRnQ*/ { &TCCR5A, &TCCR5B, &TCCR5C},
- /*OCRnQ*/ { &OCR5A, &OCR5B, &OCR5C },
- /*ICRn*/ &ICR5,
- /*n, q*/ 5, q
- };
- return timer;
- }
- #endif
- }
- Timer timer = {
- /*TCCRnQ*/ { nullptr, nullptr, nullptr},
- /*OCRnQ*/ { nullptr, nullptr, nullptr},
- /*ICRn*/ nullptr,
- 0, 0
- };
- return timer;
+ #endif
+ #ifdef TCCR3A
+ case TIMER3C: ++q;
+ case TIMER3B: ++q;
+ case TIMER3A: {
+ Timer timer = {
+ /*TCCRnQ*/ { &TCCR3A, &TCCR3B, &TCCR3C},
+ /*OCRnQ*/ { &OCR3A, &OCR3B, &OCR3C},
+ /*ICRn*/ &ICR3,
+ /*n, q*/ 3, q
+ };
+ return timer;
+ }
+ #endif
+ #ifdef TCCR4A
+ case TIMER4C: ++q;
+ case TIMER4B: ++q;
+ case TIMER4A: {
+ Timer timer = {
+ /*TCCRnQ*/ { &TCCR4A, &TCCR4B, &TCCR4C},
+ /*OCRnQ*/ { &OCR4A, &OCR4B, &OCR4C},
+ /*ICRn*/ &ICR4,
+ /*n, q*/ 4, q
+ };
+ return timer;
+ }
+ #endif
+ #ifdef TCCR5A
+ case TIMER5C: ++q;
+ case TIMER5B: ++q;
+ case TIMER5A: {
+ Timer timer = {
+ /*TCCRnQ*/ { &TCCR5A, &TCCR5B, &TCCR5C},
+ /*OCRnQ*/ { &OCR5A, &OCR5B, &OCR5C },
+ /*ICRn*/ &ICR5,
+ /*n, q*/ 5, q
+ };
+ return timer;
+ }
+ #endif
}
+ Timer timer = {
+ /*TCCRnQ*/ { nullptr, nullptr, nullptr},
+ /*OCRnQ*/ { nullptr, nullptr, nullptr},
+ /*ICRn*/ nullptr,
+ 0, 0
+ };
+ return timer;
+}
- void set_pwm_frequency(const pin_t pin, int f_desired) {
- Timer timer = get_pwm_timer(pin);
- if (timer.n == 0) return; // Don't proceed if protected timer or not recognised
- uint16_t size;
- if (timer.n == 2) size = 255; else size = 65535;
+void set_pwm_frequency(const pin_t pin, int f_desired) {
+ Timer timer = get_pwm_timer(pin);
+ if (timer.n == 0) return; // Don't proceed if protected timer or not recognised
+ uint16_t size;
+ if (timer.n == 2) size = 255; else size = 65535;
- uint16_t res = 255; // resolution (TOP value)
- uint8_t j = 0; // prescaler index
- uint8_t wgm = 1; // waveform generation mode
+ uint16_t res = 255; // resolution (TOP value)
+ uint8_t j = 0; // prescaler index
+ uint8_t wgm = 1; // waveform generation mode
- // Calculating the prescaler and resolution to use to achieve closest frequency
- if (f_desired != 0) {
- int f = (F_CPU) / (2 * 1024 * size) + 1; // Initialize frequency as lowest (non-zero) achievable
- uint16_t prescaler[] = { 0, 1, 8, /*TIMER2 ONLY*/32, 64, /*TIMER2 ONLY*/128, 256, 1024 };
+ // Calculating the prescaler and resolution to use to achieve closest frequency
+ if (f_desired != 0) {
+ int f = (F_CPU) / (2 * 1024 * size) + 1; // Initialize frequency as lowest (non-zero) achievable
+ uint16_t prescaler[] = { 0, 1, 8, /*TIMER2 ONLY*/32, 64, /*TIMER2 ONLY*/128, 256, 1024 };
- // loop over prescaler values
- for (uint8_t i = 1; i < 8; i++) {
- uint16_t res_temp_fast = 255, res_temp_phase_correct = 255;
- if (timer.n == 2) {
- // No resolution calculation for TIMER2 unless enabled USE_OCR2A_AS_TOP
- #if ENABLED(USE_OCR2A_AS_TOP)
- const uint16_t rtf = (F_CPU) / (prescaler[i] * f_desired);
- res_temp_fast = rtf - 1;
- res_temp_phase_correct = rtf / 2;
- #endif
- }
- else {
- // Skip TIMER2 specific prescalers when not TIMER2
- if (i == 3 || i == 5) continue;
+ // loop over prescaler values
+ for (uint8_t i = 1; i < 8; i++) {
+ uint16_t res_temp_fast = 255, res_temp_phase_correct = 255;
+ if (timer.n == 2) {
+ // No resolution calculation for TIMER2 unless enabled USE_OCR2A_AS_TOP
+ #if ENABLED(USE_OCR2A_AS_TOP)
const uint16_t rtf = (F_CPU) / (prescaler[i] * f_desired);
res_temp_fast = rtf - 1;
res_temp_phase_correct = rtf / 2;
- }
+ #endif
+ }
+ else {
+ // Skip TIMER2 specific prescalers when not TIMER2
+ if (i == 3 || i == 5) continue;
+ const uint16_t rtf = (F_CPU) / (prescaler[i] * f_desired);
+ res_temp_fast = rtf - 1;
+ res_temp_phase_correct = rtf / 2;
+ }
- LIMIT(res_temp_fast, 1u, size);
- LIMIT(res_temp_phase_correct, 1u, size);
- // Calculate frequencies of test prescaler and resolution values
- const int f_temp_fast = (F_CPU) / (prescaler[i] * (1 + res_temp_fast)),
- f_temp_phase_correct = (F_CPU) / (2 * prescaler[i] * res_temp_phase_correct),
- f_diff = ABS(f - f_desired),
- f_fast_diff = ABS(f_temp_fast - f_desired),
- f_phase_diff = ABS(f_temp_phase_correct - f_desired);
+ LIMIT(res_temp_fast, 1u, size);
+ LIMIT(res_temp_phase_correct, 1u, size);
+ // Calculate frequencies of test prescaler and resolution values
+ const int f_temp_fast = (F_CPU) / (prescaler[i] * (1 + res_temp_fast)),
+ f_temp_phase_correct = (F_CPU) / (2 * prescaler[i] * res_temp_phase_correct),
+ f_diff = ABS(f - f_desired),
+ f_fast_diff = ABS(f_temp_fast - f_desired),
+ f_phase_diff = ABS(f_temp_phase_correct - f_desired);
- // If FAST values are closest to desired f
- if (f_fast_diff < f_diff && f_fast_diff <= f_phase_diff) {
- // Remember this combination
- f = f_temp_fast;
- res = res_temp_fast;
- j = i;
- // Set the Wave Generation Mode to FAST PWM
- if (timer.n == 2) {
- wgm = (
- #if ENABLED(USE_OCR2A_AS_TOP)
- WGM2_FAST_PWM_OCR2A
- #else
- WGM2_FAST_PWM
- #endif
- );
- }
- else wgm = WGM_FAST_PWM_ICRn;
+ // If FAST values are closest to desired f
+ if (f_fast_diff < f_diff && f_fast_diff <= f_phase_diff) {
+ // Remember this combination
+ f = f_temp_fast;
+ res = res_temp_fast;
+ j = i;
+ // Set the Wave Generation Mode to FAST PWM
+ if (timer.n == 2) {
+ wgm = (
+ #if ENABLED(USE_OCR2A_AS_TOP)
+ WGM2_FAST_PWM_OCR2A
+ #else
+ WGM2_FAST_PWM
+ #endif
+ );
}
- // If PHASE CORRECT values are closes to desired f
- else if (f_phase_diff < f_diff) {
- f = f_temp_phase_correct;
- res = res_temp_phase_correct;
- j = i;
- // Set the Wave Generation Mode to PWM PHASE CORRECT
- if (timer.n == 2) {
- wgm = (
- #if ENABLED(USE_OCR2A_AS_TOP)
- WGM2_PWM_PC_OCR2A
- #else
- WGM2_PWM_PC
- #endif
- );
- }
- else wgm = WGM_PWM_PC_ICRn;
+ else wgm = WGM_FAST_PWM_ICRn;
+ }
+ // If PHASE CORRECT values are closes to desired f
+ else if (f_phase_diff < f_diff) {
+ f = f_temp_phase_correct;
+ res = res_temp_phase_correct;
+ j = i;
+ // Set the Wave Generation Mode to PWM PHASE CORRECT
+ if (timer.n == 2) {
+ wgm = (
+ #if ENABLED(USE_OCR2A_AS_TOP)
+ WGM2_PWM_PC_OCR2A
+ #else
+ WGM2_PWM_PC
+ #endif
+ );
}
+ else wgm = WGM_PWM_PC_ICRn;
}
}
- _SET_WGMnQ(timer.TCCRnQ, wgm);
- _SET_CSn(timer.TCCRnQ, j);
+ }
+ _SET_WGMnQ(timer.TCCRnQ, wgm);
+ _SET_CSn(timer.TCCRnQ, j);
- if (timer.n == 2) {
- #if ENABLED(USE_OCR2A_AS_TOP)
- _SET_OCRnQ(timer.OCRnQ, 0, res); // Set OCR2A value (TOP) = res
- #endif
+ if (timer.n == 2) {
+ #if ENABLED(USE_OCR2A_AS_TOP)
+ _SET_OCRnQ(timer.OCRnQ, 0, res); // Set OCR2A value (TOP) = res
+ #endif
+ }
+ else
+ _SET_ICRn(timer.ICRn, res); // Set ICRn value (TOP) = res
+}
+
+void set_pwm_duty(const pin_t pin, const uint16_t v, const uint16_t v_size/*=255*/, const bool invert/*=false*/) {
+ // If v is 0 or v_size (max), digitalWrite to LOW or HIGH.
+ // Note that digitalWrite also disables pwm output for us (sets COM bit to 0)
+ if (v == 0)
+ digitalWrite(pin, invert);
+ else if (v == v_size)
+ digitalWrite(pin, !invert);
+ else {
+ Timer timer = get_pwm_timer(pin);
+ if (timer.n == 0) return; // Don't proceed if protected timer or not recognised
+ // Set compare output mode to CLEAR -> SET or SET -> CLEAR (if inverted)
+ _SET_COMnQ(timer.TCCRnQ, (timer.q
+ #ifdef TCCR2
+ + (timer.q == 2) // COM20 is on bit 4 of TCCR2, thus requires q + 1 in the macro
+ #endif
+ ), COM_CLEAR_SET + invert
+ );
+
+ uint16_t top;
+ if (timer.n == 2) { // if TIMER2
+ top = (
+ #if ENABLED(USE_OCR2A_AS_TOP)
+ *timer.OCRnQ[0] // top = OCR2A
+ #else
+ 255 // top = 0xFF (max)
+ #endif
+ );
}
else
- _SET_ICRn(timer.ICRn, res); // Set ICRn value (TOP) = res
- }
-
- void set_pwm_duty(const pin_t pin, const uint16_t v, const uint16_t v_size/*=255*/, const bool invert/*=false*/) {
- // If v is 0 or v_size (max), digitalWrite to LOW or HIGH.
- // Note that digitalWrite also disables pwm output for us (sets COM bit to 0)
- if (v == 0)
- digitalWrite(pin, invert);
- else if (v == v_size)
- digitalWrite(pin, !invert);
- else {
- Timer timer = get_pwm_timer(pin);
- if (timer.n == 0) return; // Don't proceed if protected timer or not recognised
- // Set compare output mode to CLEAR -> SET or SET -> CLEAR (if inverted)
- _SET_COMnQ(timer.TCCRnQ, (timer.q
- #ifdef TCCR2
- + (timer.q == 2) // COM20 is on bit 4 of TCCR2, thus requires q + 1 in the macro
- #endif
- ), COM_CLEAR_SET + invert
- );
-
- uint16_t top;
- if (timer.n == 2) { // if TIMER2
- top = (
- #if ENABLED(USE_OCR2A_AS_TOP)
- *timer.OCRnQ[0] // top = OCR2A
- #else
- 255 // top = 0xFF (max)
- #endif
- );
- }
- else
- top = *timer.ICRn; // top = ICRn
-
- _SET_OCRnQ(timer.OCRnQ, timer.q, v * float(top / v_size)); // Scale 8/16-bit v to top value
- }
+ top = *timer.ICRn; // top = ICRn
+
+ _SET_OCRnQ(timer.OCRnQ, timer.q, v * float(top / v_size)); // Scale 8/16-bit v to top value
}
+}
#endif // FAST_PWM_FAN
#endif // __AVR__
diff --git a/Marlin/src/HAL/HAL_AVR/fastio_AVR.h b/Marlin/src/HAL/HAL_AVR/fastio_AVR.h
index 8c1850e8a4..f0ef7af1c8 100644
--- a/Marlin/src/HAL/HAL_AVR/fastio_AVR.h
+++ b/Marlin/src/HAL/HAL_AVR/fastio_AVR.h
@@ -81,9 +81,8 @@
#define _SET_INPUT(IO) CBI(DIO ## IO ## _DDR, DIO ## IO ## _PIN)
#define _SET_OUTPUT(IO) SBI(DIO ## IO ## _DDR, DIO ## IO ## _PIN)
-#define _IS_INPUT(IO) !TEST(DIO ## IO ## _DDR, DIO ## IO ## _PIN)
+#define _IS_INPUT(IO) !TEST(DIO ## IO ## _DDR, DIO ## IO ## _PIN)
#define _IS_OUTPUT(IO) TEST(DIO ## IO ## _DDR, DIO ## IO ## _PIN)
-#define _HAS_TIMER(IO) bool(DIO ## IO ## _PWM)
// digitalRead/Write wrappers
#ifdef FASTIO_EXT_START
@@ -106,7 +105,6 @@
#define IS_INPUT(IO) _IS_INPUT(IO)
#define IS_OUTPUT(IO) _IS_OUTPUT(IO)
-#define HAS_TIMER(IO) _HAS_TIMER(IO)
#define OUT_WRITE(IO,V) do{ SET_OUTPUT(IO); WRITE(IO,V); }while(0)
@@ -353,5 +351,3 @@ enum ClockSource2 : char {
#else
#error "unknown CPU"
#endif
-
-#define USEABLE_HARDWARE_PWM(P) (PWM_PIN(P) && !PWM_CHK(P))
diff --git a/Marlin/src/HAL/HAL_AVR/servo_AVR.cpp b/Marlin/src/HAL/HAL_AVR/servo_AVR.cpp
index 7e8357ed57..3d9251acbd 100644
--- a/Marlin/src/HAL/HAL_AVR/servo_AVR.cpp
+++ b/Marlin/src/HAL/HAL_AVR/servo_AVR.cpp
@@ -95,29 +95,29 @@ static inline void handle_interrupts(timer16_Sequence_t timer, volatile uint16_t
#ifndef WIRING // Wiring pre-defines signal handlers so don't define any if compiling for the Wiring platform
// Interrupt handlers for Arduino
- #if ENABLED(_useTimer1)
+ #ifdef _useTimer1
SIGNAL(TIMER1_COMPA_vect) { handle_interrupts(_timer1, &TCNT1, &OCR1A); }
#endif
- #if ENABLED(_useTimer3)
+ #ifdef _useTimer3
SIGNAL(TIMER3_COMPA_vect) { handle_interrupts(_timer3, &TCNT3, &OCR3A); }
#endif
- #if ENABLED(_useTimer4)
+ #ifdef _useTimer4
SIGNAL(TIMER4_COMPA_vect) { handle_interrupts(_timer4, &TCNT4, &OCR4A); }
#endif
- #if ENABLED(_useTimer5)
+ #ifdef _useTimer5
SIGNAL(TIMER5_COMPA_vect) { handle_interrupts(_timer5, &TCNT5, &OCR5A); }
#endif
#else // WIRING
// Interrupt handlers for Wiring
- #if ENABLED(_useTimer1)
+ #ifdef _useTimer1
void Timer1Service() { handle_interrupts(_timer1, &TCNT1, &OCR1A); }
#endif
- #if ENABLED(_useTimer3)
+ #ifdef _useTimer3
void Timer3Service() { handle_interrupts(_timer3, &TCNT3, &OCR3A); }
#endif
@@ -126,7 +126,7 @@ static inline void handle_interrupts(timer16_Sequence_t timer, volatile uint16_t
/****************** end of static functions ******************************/
void initISR(timer16_Sequence_t timer) {
- #if ENABLED(_useTimer1)
+ #ifdef _useTimer1
if (timer == _timer1) {
TCCR1A = 0; // normal counting mode
TCCR1B = _BV(CS11); // set prescaler of 8
@@ -145,7 +145,7 @@ void initISR(timer16_Sequence_t timer) {
}
#endif
- #if ENABLED(_useTimer3)
+ #ifdef _useTimer3
if (timer == _timer3) {
TCCR3A = 0; // normal counting mode
TCCR3B = _BV(CS31); // set prescaler of 8
@@ -163,7 +163,7 @@ void initISR(timer16_Sequence_t timer) {
}
#endif
- #if ENABLED(_useTimer4)
+ #ifdef _useTimer4
if (timer == _timer4) {
TCCR4A = 0; // normal counting mode
TCCR4B = _BV(CS41); // set prescaler of 8
@@ -173,7 +173,7 @@ void initISR(timer16_Sequence_t timer) {
}
#endif
- #if ENABLED(_useTimer5)
+ #ifdef _useTimer5
if (timer == _timer5) {
TCCR5A = 0; // normal counting mode
TCCR5B = _BV(CS51); // set prescaler of 8
diff --git a/Marlin/src/HAL/HAL_DUE/HAL.h b/Marlin/src/HAL/HAL_DUE/HAL.h
index 2fd9a0b0dd..af22119f17 100644
--- a/Marlin/src/HAL/HAL_DUE/HAL.h
+++ b/Marlin/src/HAL/HAL_DUE/HAL.h
@@ -78,14 +78,6 @@
#undef pgm_read_word
#define pgm_read_word(addr) (*((uint16_t*)(addr)))
-#define RST_POWER_ON 1
-#define RST_EXTERNAL 2
-#define RST_BROWN_OUT 4
-#define RST_WATCHDOG 8
-#define RST_JTAG 16
-#define RST_SOFTWARE 32
-#define RST_BACKUP 64
-
typedef int8_t pin_t;
#define HAL_SERVO_LIB Servo
@@ -143,13 +135,6 @@ inline void HAL_adc_init(void) {}//todo
void HAL_adc_start_conversion(const uint8_t adc_pin);
uint16_t HAL_adc_get_result(void);
-uint16_t HAL_getAdcReading(uint8_t chan);
-void HAL_startAdcConversion(uint8_t chan);
-uint8_t HAL_pinToAdcChannel(int pin);
-uint16_t HAL_getAdcFreerun(uint8_t chan, bool wait_for_conversion = false);
-//uint16_t HAL_getAdcSuperSample(uint8_t chan);
-void HAL_enable_AdcFreerun(void);
-//void HAL_disable_AdcFreerun(uint8_t chan);
//
// Pin Map
diff --git a/Marlin/src/HAL/HAL_DUE/fastio_Due.h b/Marlin/src/HAL/HAL_DUE/fastio_Due.h
index 542469f65e..fd89a248e2 100644
--- a/Marlin/src/HAL/HAL_DUE/fastio_Due.h
+++ b/Marlin/src/HAL/HAL_DUE/fastio_Due.h
@@ -46,7 +46,6 @@
// Due has 12 PWMs assigned to logical pins 2-13.
// 6, 7, 8 & 9 come from the PWM controller. The others come from the timers.
#define PWM_PIN(P) WITHIN(P, 2, 13)
-#define USEABLE_HARDWARE_PWM(P) PWM_PIN(P)
#ifndef MASK
#define MASK(PIN) (1 << PIN)
@@ -180,8 +179,6 @@
#define IS_INPUT(IO) ((digitalPinToPort(IO)->PIO_OSR & digitalPinToBitMask(IO)) == 0)
// Check if pin is an output
#define IS_OUTPUT(IO) ((digitalPinToPort(IO)->PIO_OSR & digitalPinToBitMask(IO)) != 0)
-// Check if pin is a timer - Must be a constexpr
-#define HAS_TIMER(IO) ((IO) >= 2 && (IO) <= 13)
// Shorthand
#define OUT_WRITE(IO,V) { SET_OUTPUT(IO); WRITE(IO,V); }
diff --git a/Marlin/src/HAL/HAL_DUE/u8g_com_HAL_DUE_st7920_sw_spi.cpp b/Marlin/src/HAL/HAL_DUE/u8g_com_HAL_DUE_st7920_sw_spi.cpp
index 45cb08ce32..74beb6a243 100644
--- a/Marlin/src/HAL/HAL_DUE/u8g_com_HAL_DUE_st7920_sw_spi.cpp
+++ b/Marlin/src/HAL/HAL_DUE/u8g_com_HAL_DUE_st7920_sw_spi.cpp
@@ -59,12 +59,12 @@
#if ENABLED(U8GLIB_ST7920)
-#include "u8g_com_HAL_DUE_sw_spi_shared.h"
-
#include "../shared/Delay.h"
#include
+#include "u8g_com_HAL_DUE_sw_spi_shared.h"
+
#define SPISEND_SW_DUE u8g_spiSend_sw_DUE_mode_0
static uint8_t rs_last_state = 255;
diff --git a/Marlin/src/HAL/HAL_DUE/u8g_com_HAL_DUE_sw_spi_shared.cpp b/Marlin/src/HAL/HAL_DUE/u8g_com_HAL_DUE_sw_spi_shared.cpp
index cbd08c7499..b7f52d58e0 100644
--- a/Marlin/src/HAL/HAL_DUE/u8g_com_HAL_DUE_sw_spi_shared.cpp
+++ b/Marlin/src/HAL/HAL_DUE/u8g_com_HAL_DUE_sw_spi_shared.cpp
@@ -59,12 +59,12 @@
#if HAS_GRAPHICAL_LCD
-#include "u8g_com_HAL_DUE_sw_spi_shared.h"
-
#include "../shared/Delay.h"
#include
+#include "u8g_com_HAL_DUE_sw_spi_shared.h"
+
void u8g_SetPIOutput_DUE(u8g_t *u8g, uint8_t pin_index) {
PIO_Configure(g_APinDescription[u8g->pin_list[pin_index]].pPort, PIO_OUTPUT_1,
g_APinDescription[u8g->pin_list[pin_index]].ulPin, g_APinDescription[u8g->pin_list[pin_index]].ulPinConfiguration); // OUTPUT
diff --git a/Marlin/src/HAL/HAL_ESP32/HAL.cpp b/Marlin/src/HAL/HAL_ESP32/HAL.cpp
index 53966de55e..d7b763f041 100644
--- a/Marlin/src/HAL/HAL_ESP32/HAL.cpp
+++ b/Marlin/src/HAL/HAL_ESP32/HAL.cpp
@@ -33,6 +33,10 @@
#include "../../inc/MarlinConfigPre.h"
+#if EITHER(EEPROM_SETTINGS, WEBSUPPORT)
+ #include "spiffs.h"
+#endif
+
#if ENABLED(WIFISUPPORT)
#include
#include "wifi.h"
@@ -41,10 +45,7 @@
#endif
#if ENABLED(WEBSUPPORT)
#include "web.h"
- #include "spiffs.h"
#endif
-#elif ENABLED(EEPROM_SETTINGS)
- #include "spiffs.h"
#endif
// --------------------------------------------------------------------------
@@ -92,21 +93,24 @@ esp_adc_cal_characteristics_t characteristics;
// --------------------------------------------------------------------------
void HAL_init(void) {
+ i2s_init();
+}
+
+void HAL_init_board(void) {
+ #if EITHER(EEPROM_SETTINGS, WEBSUPPORT)
+ spiffs_init();
+ #endif
+
#if ENABLED(WIFISUPPORT)
wifi_init();
#if ENABLED(OTASUPPORT)
OTA_init();
#endif
#if ENABLED(WEBSUPPORT)
- spiffs_init();
web_init();
#endif
server.begin();
- #elif ENABLED(EEPROM_SETTINGS)
- spiffs_init();
#endif
-
- i2s_init();
}
void HAL_idletask(void) {
@@ -117,18 +121,12 @@ void HAL_idletask(void) {
void HAL_clear_reset_source(void) { }
-uint8_t HAL_get_reset_source(void) {
- return rtc_get_reset_reason(1);
-}
+uint8_t HAL_get_reset_source(void) { return rtc_get_reset_reason(1); }
-void _delay_ms(int delay_ms) {
- delay(delay_ms);
-}
+void _delay_ms(int delay_ms) { delay(delay_ms); }
// return free memory between end of heap (or end bss) and whatever is current
-int freeMemory() {
- return ESP.getFreeHeap();
-}
+int freeMemory() { return ESP.getFreeHeap(); }
// --------------------------------------------------------------------------
// ADC
@@ -144,19 +142,41 @@ adc1_channel_t get_channel(int pin) {
case 33: return ADC1_CHANNEL(33);
case 32: return ADC1_CHANNEL(32);
}
-
return ADC1_CHANNEL_MAX;
}
void HAL_adc_init() {
// Configure ADC
adc1_config_width(ADC_WIDTH_12Bit);
- adc1_config_channel_atten(get_channel(39), ADC_ATTEN_11db);
- adc1_config_channel_atten(get_channel(36), ADC_ATTEN_11db);
- adc1_config_channel_atten(get_channel(35), ADC_ATTEN_11db);
- adc1_config_channel_atten(get_channel(34), ADC_ATTEN_11db);
- adc1_config_channel_atten(get_channel(33), ADC_ATTEN_11db);
- adc1_config_channel_atten(get_channel(32), ADC_ATTEN_11db);
+
+ // Configure channels only if used as (re-)configuring a pin for ADC that is used elsewhere might have adverse effects
+ #if HAS_TEMP_ADC_0
+ adc1_config_channel_atten(get_channel(TEMP_0_PIN), ADC_ATTEN_11db);
+ #endif
+ #if HAS_TEMP_ADC_1
+ adc1_config_channel_atten(get_channel(TEMP_1_PIN), ADC_ATTEN_11db);
+ #endif
+ #if HAS_TEMP_ADC_2
+ adc1_config_channel_atten(get_channel(TEMP_2_PIN), ADC_ATTEN_11db);
+ #endif
+ #if HAS_TEMP_ADC_3
+ adc1_config_channel_atten(get_channel(TEMP_3_PIN), ADC_ATTEN_11db);
+ #endif
+ #if HAS_TEMP_ADC_4
+ adc1_config_channel_atten(get_channel(TEMP_4_PIN), ADC_ATTEN_11db);
+ #endif
+ #if HAS_TEMP_ADC_5
+ adc1_config_channel_atten(get_channel(TEMP_5_PIN), ADC_ATTEN_11db);
+ #endif
+ #if HAS_HEATED_BED
+ adc1_config_channel_atten(get_channel(TEMP_BED_PIN), ADC_ATTEN_11db);
+ #endif
+ #if HAS_TEMP_CHAMBER
+ adc1_config_channel_atten(get_channel(TEMP_CHAMBER_PIN), ADC_ATTEN_11db);
+ #endif
+ #if ENABLED(FILAMENT_WIDTH_SENSOR)
+ adc1_config_channel_atten(get_channel(FILWIDTH_PIN), ADC_ATTEN_11db);
+ #endif
// Note that adc2 is shared with the WiFi module, which has higher priority, so the conversion may fail.
// That's why we're not setting it up here.
@@ -172,9 +192,9 @@ void HAL_adc_start_conversion(uint8_t adc_pin) {
HAL_adc_result = mv*1023.0/3300.0;
}
-int pin_to_channel[40] = {};
-int cnt_channel = 1;
void analogWrite(int pin, int value) {
+ static int cnt_channel = 1,
+ pin_to_channel[40] = {};
if (pin_to_channel[pin] == 0) {
ledcAttachPin(pin, cnt_channel);
ledcSetup(cnt_channel, 490, 8);
@@ -185,4 +205,5 @@ void analogWrite(int pin, int value) {
ledcWrite(pin_to_channel[pin], value);
}
+
#endif // ARDUINO_ARCH_ESP32
diff --git a/Marlin/src/HAL/HAL_ESP32/HAL.h b/Marlin/src/HAL/HAL_ESP32/HAL.h
index 556a484677..9e4ab78a9a 100644
--- a/Marlin/src/HAL/HAL_ESP32/HAL.h
+++ b/Marlin/src/HAL/HAL_ESP32/HAL.h
@@ -75,6 +75,8 @@ extern portMUX_TYPE spinlock;
typedef int16_t pin_t;
+#define HAL_SERVO_LIB Servo
+
// --------------------------------------------------------------------------
// Public Variables
// --------------------------------------------------------------------------
@@ -122,5 +124,7 @@ void HAL_adc_start_conversion(uint8_t adc_pin);
// Enable hooks into idle and setup for HAL
#define HAL_IDLETASK 1
#define HAL_INIT 1
+#define BOARD_INIT() HAL_init_board();
void HAL_idletask(void);
void HAL_init(void);
+void HAL_init_board(void);
diff --git a/Marlin/src/HAL/HAL_ESP32/HAL_Servo_ESP32.cpp b/Marlin/src/HAL/HAL_ESP32/HAL_Servo_ESP32.cpp
new file mode 100644
index 0000000000..bf3d228a6a
--- /dev/null
+++ b/Marlin/src/HAL/HAL_ESP32/HAL_Servo_ESP32.cpp
@@ -0,0 +1,69 @@
+/**
+ * Marlin 3D Printer Firmware
+ * Copyright (C) 2019 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 .
+ *
+ */
+#ifdef ARDUINO_ARCH_ESP32
+
+#include "../../inc/MarlinConfig.h"
+
+#if HAS_SERVOS
+
+#include "HAL_Servo_ESP32.h"
+
+int Servo::channel_next_free = 0;
+
+Servo::Servo() {
+ this->channel = channel_next_free++;
+}
+
+int8_t Servo::attach(const int pin) {
+ if (this->channel >= CHANNEL_MAX_NUM) return -1;
+ if (pin > 0) this->pin = pin;
+
+ ledcSetup(this->channel, 50, 16); // channel X, 50 Hz, 16-bit depth
+ ledcAttachPin(this->pin, this->channel);
+ return true;
+}
+
+void Servo::detach() { ledcDetachPin(this->pin) }
+
+int Servo::read() { return this->degrees; }
+
+void Servo::write(int degrees) {
+ this->degrees = constrain(degrees, MIN_ANGLE, MAX_ANGLE);
+ int us = map(this->degrees, MIN_ANGLE, MAX_ANGLE, MIN_PULSE_WIDTH, MAX_PULSE_WIDTH);
+ int duty = map(us, 0, TAU_USEC, 0, MAX_COMPARE);
+ ledcWrite(channel, duty);
+}
+
+void Servo::move(const int value) {
+ constexpr uint16_t servo_delay[] = SERVO_DELAY;
+ static_assert(COUNT(servo_delay) == NUM_SERVOS, "SERVO_DELAY must be an array NUM_SERVOS long.");
+ if (this->attach(0) >= 0) {
+ this->write(value);
+ safe_delay(servo_delay[this->channel]);
+ #if ENABLED(DEACTIVATE_SERVOS_AFTER_MOVE)
+ this->detach();
+ #endif
+ }
+}
+#endif // HAS_SERVOS
+
+#endif // ARDUINO_ARCH_ESP32
diff --git a/Marlin/src/HAL/HAL_ESP32/HAL_Servo_ESP32.h b/Marlin/src/HAL/HAL_ESP32/HAL_Servo_ESP32.h
new file mode 100644
index 0000000000..b6c250038e
--- /dev/null
+++ b/Marlin/src/HAL/HAL_ESP32/HAL_Servo_ESP32.h
@@ -0,0 +1,49 @@
+/**
+ * Marlin 3D Printer Firmware
+ * Copyright (C) 2019 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 .
+ *
+ */
+#pragma once
+
+#include
+
+class Servo {
+ static const int MIN_ANGLE = 0,
+ MAX_ANGLE = 180,
+ MIN_PULSE_WIDTH = 544, // Shortest pulse sent to a servo
+ MAX_PULSE_WIDTH = 2400, // Longest pulse sent to a servo
+ TAU_MSEC = 20,
+ TAU_USEC = (TAU_MSEC * 1000),
+ MAX_COMPARE = ((1 << 16) - 1), // 65535
+ CHANNEL_MAX_NUM = 16;
+
+public:
+ Servo();
+ int8_t attach(const int pin); // attach the given pin to the next free channel, set pinMode, return channel number (-1 on fail)
+ void detach();
+ void write(int degrees); // set angle
+ void move(const int degrees); // attach the servo, then move to value
+ int read(); // returns current pulse width as an angle between 0 and 180 degrees
+
+private:
+ static int channel_next_free;
+ int channel;
+ int pin;
+ int degrees;
+};
diff --git a/Marlin/src/HAL/HAL_ESP32/HAL_timers_ESP32.cpp b/Marlin/src/HAL/HAL_ESP32/HAL_timers_ESP32.cpp
index 1568cc5081..41d17df78a 100644
--- a/Marlin/src/HAL/HAL_ESP32/HAL_timers_ESP32.cpp
+++ b/Marlin/src/HAL/HAL_ESP32/HAL_timers_ESP32.cpp
@@ -132,7 +132,7 @@ void HAL_timer_start(const uint8_t timer_num, uint32_t frequency) {
timer_enable_intr(timer.group, timer.idx);
// TODO need to deal with timer_group1_isr
- timer_isr_register(timer.group, timer.idx, timer_group0_isr, (void*)timer.idx, ESP_INTR_FLAG_INTRDISABLED, nullptr);
+ timer_isr_register(timer.group, timer.idx, timer_group0_isr, (void*)timer.idx, 0, nullptr);
timer_start(timer.group, timer.idx);
}
@@ -169,10 +169,8 @@ hal_timer_t HAL_timer_get_compare(const uint8_t timer_num) {
*/
hal_timer_t HAL_timer_get_count(const uint8_t timer_num) {
const tTimerConfig timer = TimerConfig[timer_num];
-
uint64_t counter_value;
timer_get_counter_value(timer.group, timer.idx, &counter_value);
-
return counter_value;
}
@@ -181,7 +179,7 @@ hal_timer_t HAL_timer_get_count(const uint8_t timer_num) {
* @param timer_num timer number to enable interrupts on
*/
void HAL_timer_enable_interrupt(const uint8_t timer_num) {
- const tTimerConfig timer = TimerConfig[timer_num];
+ //const tTimerConfig timer = TimerConfig[timer_num];
//timer_enable_intr(timer.group, timer.idx);
}
@@ -190,8 +188,8 @@ void HAL_timer_enable_interrupt(const uint8_t timer_num) {
* @param timer_num timer number to disable interrupts on
*/
void HAL_timer_disable_interrupt(const uint8_t timer_num) {
- const tTimerConfig timer = TimerConfig[timer_num];
- // timer_disable_intr(timer.group, timer.idx);
+ //const tTimerConfig timer = TimerConfig[timer_num];
+ //timer_disable_intr(timer.group, timer.idx);
}
bool HAL_timer_interrupt_enabled(const uint8_t timer_num) {
diff --git a/Marlin/src/HAL/HAL_ESP32/HAL_timers_ESP32.h b/Marlin/src/HAL/HAL_ESP32/HAL_timers_ESP32.h
index 7fbaa5222d..d2baddce20 100644
--- a/Marlin/src/HAL/HAL_ESP32/HAL_timers_ESP32.h
+++ b/Marlin/src/HAL/HAL_ESP32/HAL_timers_ESP32.h
@@ -28,6 +28,11 @@
#include
#include "driver/timer.h"
+// Includes needed to get I2S_STEPPER_STREAM. Note that pins.h
+// is included in case this header is being included early.
+#include "../../inc/MarlinConfig.h"
+#include "../../pins/pins.h"
+
// --------------------------------------------------------------------------
// Defines
// --------------------------------------------------------------------------
diff --git a/Marlin/src/HAL/HAL_ESP32/WebSocketSerial.cpp b/Marlin/src/HAL/HAL_ESP32/WebSocketSerial.cpp
index bdc804dacf..f997ca9d98 100644
--- a/Marlin/src/HAL/HAL_ESP32/WebSocketSerial.cpp
+++ b/Marlin/src/HAL/HAL_ESP32/WebSocketSerial.cpp
@@ -38,9 +38,9 @@ AsyncWebSocket ws("/ws"); // TODO Move inside the class.
RingBuffer::RingBuffer(ring_buffer_pos_t size)
: data(new uint8_t[size]),
+ size(size),
read_index(0),
- write_index(0),
- size(size)
+ write_index(0)
{}
RingBuffer::~RingBuffer() { delete[] data; }
diff --git a/Marlin/src/HAL/HAL_ESP32/fastio_ESP32.h b/Marlin/src/HAL/HAL_ESP32/fastio_ESP32.h
index b71ca78418..c996d643a6 100644
--- a/Marlin/src/HAL/HAL_ESP32/fastio_ESP32.h
+++ b/Marlin/src/HAL/HAL_ESP32/fastio_ESP32.h
@@ -67,7 +67,6 @@
// PWM outputs
#define PWM_PIN(P) (P < 34) // NOTE Pins >= 34 are input only on ESP32, so they can't be used for output.
-#define USEABLE_HARDWARE_PWM(P) (!IS_I2S_EXPANDER_PIN(P) && PWM_PIN(P))
// Toggle pin value
#define TOGGLE(IO) WRITE(IO, !READ(IO))
diff --git a/Marlin/src/HAL/HAL_ESP32/persistent_store_spiffs.cpp b/Marlin/src/HAL/HAL_ESP32/persistent_store_spiffs.cpp
index 795edf6781..1894697cb2 100644
--- a/Marlin/src/HAL/HAL_ESP32/persistent_store_spiffs.cpp
+++ b/Marlin/src/HAL/HAL_ESP32/persistent_store_spiffs.cpp
@@ -28,25 +28,38 @@
#include "../shared/persistent_store_api.h"
-#include "SPIFFS.h"
-#include "FS.h"
+#include
+#include
#include "spiffs.h"
#define HAL_ESP32_EEPROM_SIZE 4096
+#define HAL_ESP32_EEPROM_FILE_PATH "/eeprom.dat"
File eeprom_file;
bool PersistentStore::access_start() {
if (spiffs_initialized) {
- eeprom_file = SPIFFS.open("/eeprom.dat", "r+");
+ eeprom_file = SPIFFS.open(HAL_ESP32_EEPROM_FILE_PATH, "r+");
size_t file_size = eeprom_file.size();
if (file_size < HAL_ESP32_EEPROM_SIZE) {
- bool write_ok = eeprom_file.seek(file_size);
+ SERIAL_ECHO_MSG("SPIFFS EEPROM settings file " HAL_ESP32_EEPROM_FILE_PATH " is too small or did not exist, expanding.");
+ SERIAL_ECHO_START(); SERIAL_ECHOLNPAIR(" file size: ", file_size, ", required size: ", HAL_ESP32_EEPROM_SIZE);
- while (write_ok && file_size < HAL_ESP32_EEPROM_SIZE) {
- write_ok = eeprom_file.write(0xFF) == 1;
- file_size++;
+ // mode r+ does not allow to expand the file (at least on ESP32 SPIFFS9, so we close, reopen "a", append, close, reopen "r+"
+ eeprom_file.close();
+
+ eeprom_file = SPIFFS.open(HAL_ESP32_EEPROM_FILE_PATH, "a");
+ for (size_t i = eeprom_file.size(); i < HAL_ESP32_EEPROM_SIZE; i++)
+ eeprom_file.write(0xFF);
+ eeprom_file.close();
+
+ eeprom_file = SPIFFS.open(HAL_ESP32_EEPROM_FILE_PATH, "r+");
+ file_size = eeprom_file.size();
+ if (file_size < HAL_ESP32_EEPROM_SIZE) {
+ SERIAL_ERROR_MSG("Failed to expand " HAL_ESP32_EEPROM_FILE_PATH " to required size. SPIFFS partition full?");
+ SERIAL_ERROR_START(); SERIAL_ECHOLNPAIR(" file size: ", file_size, ", required size: ", HAL_ESP32_EEPROM_SIZE);
+ SERIAL_ERROR_START(); SERIAL_ECHOLNPAIR(" SPIFFS used bytes: ", SPIFFS.usedBytes(), ", total bytes: ", SPIFFS.totalBytes());
}
}
return true;
diff --git a/Marlin/src/HAL/HAL_ESP32/spiffs.cpp b/Marlin/src/HAL/HAL_ESP32/spiffs.cpp
index c960f386d4..b49ee9d4a8 100644
--- a/Marlin/src/HAL/HAL_ESP32/spiffs.cpp
+++ b/Marlin/src/HAL/HAL_ESP32/spiffs.cpp
@@ -28,16 +28,16 @@
#include "../../core/serial.h"
-#include "FS.h"
-#include "SPIFFS.h"
+#include
+#include
bool spiffs_initialized;
void spiffs_init() {
- if (SPIFFS.begin())
+ if (SPIFFS.begin(true)) // formatOnFail = true
spiffs_initialized = true;
else
- SERIAL_ECHO_MSG("SPIFFS mount failed");
+ SERIAL_ERROR_MSG("SPIFFS mount failed");
}
#endif // WEBSUPPORT
diff --git a/Marlin/src/HAL/HAL_ESP32/web.cpp b/Marlin/src/HAL/HAL_ESP32/web.cpp
index cb06cfc7e4..65d72ab088 100644
--- a/Marlin/src/HAL/HAL_ESP32/web.cpp
+++ b/Marlin/src/HAL/HAL_ESP32/web.cpp
@@ -26,7 +26,7 @@
#if ENABLED(WEBSUPPORT)
-#include "SPIFFS.h"
+#include
#include "wifi.h"
AsyncEventSource events("/events"); // event source (Server-Sent events)
diff --git a/Marlin/src/HAL/HAL_ESP32/wifi.cpp b/Marlin/src/HAL/HAL_ESP32/wifi.cpp
index 9fb5459ae0..ba81cd948c 100644
--- a/Marlin/src/HAL/HAL_ESP32/wifi.cpp
+++ b/Marlin/src/HAL/HAL_ESP32/wifi.cpp
@@ -22,6 +22,7 @@
#ifdef ARDUINO_ARCH_ESP32
+#include "../../core/serial.h"
#include "../../inc/MarlinConfigPre.h"
#if ENABLED(WIFISUPPORT)
@@ -38,20 +39,28 @@ AsyncWebServer server(80);
#endif
void wifi_init() {
+
+ SERIAL_ECHO_MSG("Starting WiFi...");
+
WiFi.mode(WIFI_STA);
WiFi.begin(WIFI_SSID, WIFI_PWD);
while (WiFi.waitForConnectResult() != WL_CONNECTED) {
+ SERIAL_ERROR_MSG("Unable to connect to WiFi with SSID '" WIFI_SSID "', restarting.");
delay(5000);
ESP.restart();
}
delay(10);
-
- // Loop forever (watchdog kill) on failure
- if (!MDNS.begin(WIFI_HOSTNAME)) for(;;) delay(5000);
+ if (!MDNS.begin(WIFI_HOSTNAME)) {
+ SERIAL_ERROR_MSG("Unable to start mDNS with hostname '" WIFI_HOSTNAME "', restarting.");
+ delay(5000);
+ ESP.restart();
+ }
MDNS.addService("http", "tcp", 80);
+
+ SERIAL_ECHOLNPAIR("Successfully connected to WiFi with SSID '" WIFI_SSID "', hostname: '" WIFI_HOSTNAME "', IP address: ", WiFi.localIP().toString().c_str());
}
#endif // WIFISUPPORT
diff --git a/Marlin/src/HAL/HAL_LINUX/fastio.h b/Marlin/src/HAL/HAL_LINUX/fastio.h
index d304c4b2a2..dcf9136f78 100644
--- a/Marlin/src/HAL/HAL_LINUX/fastio.h
+++ b/Marlin/src/HAL/HAL_LINUX/fastio.h
@@ -80,16 +80,6 @@
/// check if pin is an output
#define _IS_OUTPUT(IO) (LPC1768_PIN_PIN(IO) >= 0)
-// hg42: HAS_TIMER is used only to check if it's a PWM pin
-// hg42: we cannot use USEABLE_HARDWARE_PWM because it uses a function that cannot be used statically
-// hg42: instead use PWM bit from the #define
-
-/// check if pin is a timer
-#define _HAS_TIMER(IO) true // could be LPC1768_PIN_PWM(IO), but there
-// hg42: could be this:
-// #define _HAS_TIMER(IO) LPC1768_PIN_PWM(IO)
-// but this is an incomplete check (12 pins are PWMable, but only 6 can be used at the same time)
-
/// Read a pin wrapper
#define READ(IO) _READ(IO)
@@ -116,14 +106,9 @@
/// check if pin is an output wrapper
#define IS_OUTPUT(IO) _IS_OUTPUT(IO)
-/// check if pin is a timer (wrapper)
-#define HAS_TIMER(IO) _HAS_TIMER(IO)
-
// Shorthand
#define OUT_WRITE(IO,V) do{ SET_OUTPUT(IO); WRITE(IO,V); }while(0)
// digitalRead/Write wrappers
#define extDigitalRead(IO) digitalRead(IO)
#define extDigitalWrite(IO,V) digitalWrite(IO,V)
-
-#define USEABLE_HARDWARE_PWM(P) PWM_PIN(P)
diff --git a/Marlin/src/HAL/HAL_LINUX/watchdog.h b/Marlin/src/HAL/HAL_LINUX/watchdog.h
index 26a9f499fd..1355ea77ec 100644
--- a/Marlin/src/HAL/HAL_LINUX/watchdog.h
+++ b/Marlin/src/HAL/HAL_LINUX/watchdog.h
@@ -21,11 +21,6 @@
*/
#pragma once
-#define RST_POWER_ON 1
-#define RST_EXTERNAL 2
-#define RST_BROWN_OUT 4
-#define RST_WATCHDOG 8
-
#define WDT_TIMEOUT 4000000 // 4 second timeout
void watchdog_init(void);
diff --git a/Marlin/src/HAL/HAL_LPC1768/MarlinServo.h b/Marlin/src/HAL/HAL_LPC1768/HAL_Servo_LPC1768.h
similarity index 97%
rename from Marlin/src/HAL/HAL_LPC1768/MarlinServo.h
rename to Marlin/src/HAL/HAL_LPC1768/HAL_Servo_LPC1768.h
index 925e5a7e45..83ac8f0eab 100644
--- a/Marlin/src/HAL/HAL_LPC1768/MarlinServo.h
+++ b/Marlin/src/HAL/HAL_LPC1768/HAL_Servo_LPC1768.h
@@ -50,7 +50,7 @@
#include
-class MarlinServo: public Servo {
+class libServo: public Servo {
public:
void move(const int value) {
constexpr uint16_t servo_delay[] = SERVO_DELAY;
@@ -67,4 +67,4 @@ class MarlinServo: public Servo {
}
};
-#define HAL_SERVO_LIB MarlinServo
+#define HAL_SERVO_LIB libServo
diff --git a/Marlin/src/HAL/HAL_LPC1768/fastio.h b/Marlin/src/HAL/HAL_LPC1768/fastio.h
index 22bda795d0..3a47c3cadb 100644
--- a/Marlin/src/HAL/HAL_LPC1768/fastio.h
+++ b/Marlin/src/HAL/HAL_LPC1768/fastio.h
@@ -35,8 +35,7 @@
#include "../shared/Marduino.h"
-#define PWM_PIN(P) true // all pins are PWM capable
-#define USEABLE_HARDWARE_PWM(P) PWM_PIN(P)
+#define PWM_PIN(P) true // all pins are PWM capable
#define LPC_PIN(pin) gpio_pin(pin)
#define LPC_GPIO(port) gpio_port(port)
@@ -89,10 +88,6 @@
/// check if pin is an output
#define _IS_OUTPUT(IO) (gpio_get_dir(IO))
-/// check if pin is a timer
-/// all gpio pins are pwm capable, either interrupt or hardware pwm controlled
-#define _HAS_TIMER(IO) true
-
/// Read a pin wrapper
#define READ(IO) _READ(IO)
@@ -119,9 +114,6 @@
/// check if pin is an output wrapper
#define IS_OUTPUT(IO) _IS_OUTPUT(IO)
-/// check if pin is a timer (wrapper)
-#define HAS_TIMER(IO) _HAS_TIMER(IO)
-
// Shorthand
#define OUT_WRITE(IO,V) do{ SET_OUTPUT(IO); WRITE(IO,V); }while(0)
diff --git a/Marlin/src/HAL/HAL_LPC1768/watchdog.h b/Marlin/src/HAL/HAL_LPC1768/watchdog.h
index 26a9f499fd..1355ea77ec 100644
--- a/Marlin/src/HAL/HAL_LPC1768/watchdog.h
+++ b/Marlin/src/HAL/HAL_LPC1768/watchdog.h
@@ -21,11 +21,6 @@
*/
#pragma once
-#define RST_POWER_ON 1
-#define RST_EXTERNAL 2
-#define RST_BROWN_OUT 4
-#define RST_WATCHDOG 8
-
#define WDT_TIMEOUT 4000000 // 4 second timeout
void watchdog_init(void);
diff --git a/Marlin/src/HAL/HAL_STM32/HAL.h b/Marlin/src/HAL/HAL_STM32/HAL.h
index 44cc96957b..c84fe325a2 100644
--- a/Marlin/src/HAL/HAL_STM32/HAL.h
+++ b/Marlin/src/HAL/HAL_STM32/HAL.h
@@ -127,14 +127,6 @@
#undef pgm_read_ptr
#define pgm_read_ptr(addr) (*(addr))
-#define RST_POWER_ON 1
-#define RST_EXTERNAL 2
-#define RST_BROWN_OUT 4
-#define RST_WATCHDOG 8
-#define RST_JTAG 16
-#define RST_SOFTWARE 32
-#define RST_BACKUP 64
-
// --------------------------------------------------------------------------
// Types
// --------------------------------------------------------------------------
diff --git a/Marlin/src/HAL/HAL_STM32/fastio_STM32.h b/Marlin/src/HAL/HAL_STM32/fastio_STM32.h
index bd2edb4495..77c2eaf4fe 100644
--- a/Marlin/src/HAL/HAL_STM32/fastio_STM32.h
+++ b/Marlin/src/HAL/HAL_STM32/fastio_STM32.h
@@ -80,10 +80,8 @@ void FastIO_init(); // Must be called before using fast io macros
#define IS_INPUT(IO)
#define IS_OUTPUT(IO)
-#define HAS_TIMER(IO) digitalPinHasPWM(IO)
-#define PWM_PIN(P) HAS_TIMER(P)
-#define USEABLE_HARDWARE_PWM(P) PWM_PIN(P)
+#define PWM_PIN(P) digitalPinHasPWM(P)
// digitalRead/Write wrappers
#define extDigitalRead(IO) digitalRead(IO)
diff --git a/Marlin/src/HAL/HAL_STM32/pinsDebug.h b/Marlin/src/HAL/HAL_STM32/pinsDebug.h
index ac8b005754..3759c2d6c3 100644
--- a/Marlin/src/HAL/HAL_STM32/pinsDebug.h
+++ b/Marlin/src/HAL/HAL_STM32/pinsDebug.h
@@ -1 +1 @@
-#error "Debug pins is not yet supported for STM32!"
+#error "PINS_DEBUGGING is not yet supported for STM32!"
diff --git a/Marlin/src/HAL/HAL_STM32F1/HAL.h b/Marlin/src/HAL/HAL_STM32F1/HAL.h
index 137d213d97..f47c38a163 100644
--- a/Marlin/src/HAL/HAL_STM32F1/HAL.h
+++ b/Marlin/src/HAL/HAL_STM32F1/HAL.h
@@ -253,23 +253,8 @@ void HAL_adc_init(void);
#define HAL_ADC_READY() true
void HAL_adc_start_conversion(const uint8_t adc_pin);
-
uint16_t HAL_adc_get_result(void);
-/* Todo: Confirm none of this is needed.
-uint16_t HAL_getAdcReading(uint8_t chan);
-
-void HAL_startAdcConversion(uint8_t chan);
-uint8_t HAL_pinToAdcChannel(int pin);
-
-uint16_t HAL_getAdcFreerun(uint8_t chan, bool wait_for_conversion = false);
-//uint16_t HAL_getAdcSuperSample(uint8_t chan);
-
-void HAL_enable_AdcFreerun(void);
-//void HAL_disable_AdcFreerun(uint8_t chan);
-
-*/
-
#define GET_PIN_MAP_PIN(index) index
#define GET_PIN_MAP_INDEX(pin) pin
#define PARSED_PIN_INDEX(code, dval) parser.intval(code, dval)
diff --git a/Marlin/src/HAL/HAL_STM32F1/HAL_Servo_Stm32f1.cpp b/Marlin/src/HAL/HAL_STM32F1/HAL_Servo_Stm32f1.cpp
index f8fc315ba0..ef81db69f3 100644
--- a/Marlin/src/HAL/HAL_STM32F1/HAL_Servo_Stm32f1.cpp
+++ b/Marlin/src/HAL/HAL_STM32F1/HAL_Servo_Stm32f1.cpp
@@ -27,7 +27,7 @@
#if HAS_SERVOS
-uint8_t ServoCount; //=0
+uint8_t ServoCount = 0;
#include "HAL_Servo_STM32F1.h"
@@ -68,16 +68,16 @@ libServo::libServo() {
bool libServo::attach(const int32_t pin, const int32_t minAngle, const int32_t maxAngle) {
if (this->servoIndex >= MAX_SERVOS) return false;
+ if (!PWM_PIN(pin)) return false;
- this->pin = pin;
this->minAngle = minAngle;
this->maxAngle = maxAngle;
- timer_dev *tdev = PIN_MAP[this->pin].timer_device;
- uint8_t tchan = PIN_MAP[this->pin].timer_channel;
+ timer_dev *tdev = PIN_MAP[pin].timer_device;
+ uint8_t tchan = PIN_MAP[pin].timer_channel;
- pinMode(this->pin, PWM);
- pwmWrite(this->pin, 0);
+ pinMode(pin, PWM);
+ pwmWrite(pin, 0);
timer_pause(tdev);
timer_set_prescaler(tdev, SERVO_PRESCALER - 1); // prescaler is 1-based
@@ -85,6 +85,8 @@ bool libServo::attach(const int32_t pin, const int32_t minAngle, const int32_t m
timer_generate_update(tdev);
timer_resume(tdev);
+ this->pin = pin; // set attached()
+
return true;
}
diff --git a/Marlin/src/HAL/HAL_STM32F1/HAL_sdio_STM32F1.cpp b/Marlin/src/HAL/HAL_STM32F1/HAL_sdio_STM32F1.cpp
index d7aa3ccd20..a6627f0e61 100644
--- a/Marlin/src/HAL/HAL_STM32F1/HAL_sdio_STM32F1.cpp
+++ b/Marlin/src/HAL/HAL_STM32F1/HAL_sdio_STM32F1.cpp
@@ -21,7 +21,11 @@
*
*/
-#if defined(ARDUINO_ARCH_STM32F1) && (defined(STM32_HIGH_DENSITY) || defined(STM32_XL_DENSITY))
+#ifdef ARDUINO_ARCH_STM32F1
+
+#include
+
+#if defined(STM32_HIGH_DENSITY) || defined(STM32_XL_DENSITY)
#include "HAL_sdio_STM32F1.h"
@@ -276,4 +280,5 @@ bool SDIO_GetCmdResp7(void) {
return true;
}
-#endif // ARDUINO_ARCH_STM32F1 && (STM32_HIGH_DENSITY || STM32_XL_DENSITY)
+#endif // STM32_HIGH_DENSITY || STM32_XL_DENSITY
+#endif // ARDUINO_ARCH_STM32F1
diff --git a/Marlin/src/HAL/HAL_STM32F1/fastio_Stm32f1.h b/Marlin/src/HAL/HAL_STM32F1/fastio_Stm32f1.h
index 3be152d375..ad225a8f9a 100644
--- a/Marlin/src/HAL/HAL_STM32F1/fastio_Stm32f1.h
+++ b/Marlin/src/HAL/HAL_STM32F1/fastio_Stm32f1.h
@@ -37,20 +37,21 @@
#define _GET_MODE(IO) gpio_get_mode(PIN_MAP[IO].gpio_device, PIN_MAP[IO].gpio_bit)
#define _SET_MODE(IO,M) gpio_set_mode(PIN_MAP[IO].gpio_device, PIN_MAP[IO].gpio_bit, M)
#define _SET_OUTPUT(IO) _SET_MODE(IO, GPIO_OUTPUT_PP)
+#define _SET_OUTPUT_OD(IO) _SET_MODE(IO, GPIO_OUTPUT_OD)
-#define OUT_WRITE(IO,V) do{ _SET_OUTPUT(IO); WRITE(IO,V); }while(0)
+#define OUT_WRITE(IO,V) do{ _SET_OUTPUT(IO); WRITE(IO,V); } while(0)
+#define OUT_WRITE_OD(IO,V) do{ _SET_OUTPUT_OD(IO); WRITE(IO,V); } while(0)
#define SET_INPUT(IO) _SET_MODE(IO, GPIO_INPUT_FLOATING)
#define SET_INPUT_PULLUP(IO) _SET_MODE(IO, GPIO_INPUT_PU)
#define SET_OUTPUT(IO) OUT_WRITE(IO, LOW)
#define SET_PWM(IO) pinMode(IO, PWM) // do{ gpio_set_mode(PIN_MAP[pin].gpio_device, PIN_MAP[pin].gpio_bit, GPIO_AF_OUTPUT_PP); timer_set_mode(PIN_MAP[pin].timer_device, PIN_MAP[pin].timer_channel, TIMER_PWM); }while(0)
+#define SET_PWM_OD(IO) pinMode(IO, PWM_OPEN_DRAIN)
#define IS_INPUT(IO) (_GET_MODE(IO) == GPIO_INPUT_FLOATING || _GET_MODE(IO) == GPIO_INPUT_ANALOG || _GET_MODE(IO) == GPIO_INPUT_PU || _GET_MODE(IO) == GPIO_INPUT_PD)
#define IS_OUTPUT(IO) (_GET_MODE(IO) == GPIO_OUTPUT_PP)
-#define HAS_TIMER(IO) (PIN_MAP[IO].timer_device != nullptr)
-#define PWM_PIN(P) HAS_TIMER(P)
-#define USEABLE_HARDWARE_PWM(P) PWM_PIN(P)
+#define PWM_PIN(IO) (PIN_MAP[IO].timer_device != nullptr)
// digitalRead/Write wrappers
#define extDigitalRead(IO) digitalRead(IO)
diff --git a/Marlin/src/HAL/HAL_STM32F1/persistent_store_sdcard.cpp b/Marlin/src/HAL/HAL_STM32F1/persistent_store_sdcard.cpp
index 9c9197bac7..5ef638263b 100644
--- a/Marlin/src/HAL/HAL_STM32F1/persistent_store_sdcard.cpp
+++ b/Marlin/src/HAL/HAL_STM32F1/persistent_store_sdcard.cpp
@@ -64,11 +64,11 @@ static char HAL_STM32F1_eeprom_content[HAL_STM32F1_EEPROM_SIZE];
if (!card.isDetected()) return false;
SdFile file, root = card.getroot();
- if (file.open(&root, EEPROM_FILENAME, O_CREAT | O_WRITE | O_TRUNC))
- return false;
-
- int16_t bytes_written = file.write(HAL_STM32F1_eeprom_content, HAL_STM32F1_EEPROM_SIZE);
- file.close();
+ int16_t bytes_written = 0;
+ if (file.open(&root, EEPROM_FILENAME, O_CREAT | O_WRITE | O_TRUNC)) {
+ bytes_written = file.write(HAL_STM32F1_eeprom_content, HAL_STM32F1_EEPROM_SIZE);
+ file.close();
+ }
return (bytes_written == HAL_STM32F1_EEPROM_SIZE);
}
diff --git a/Marlin/src/HAL/HAL_STM32F1/u8g_com_stm32duino_fsmc.cpp b/Marlin/src/HAL/HAL_STM32F1/u8g_com_stm32duino_fsmc.cpp
index 5cbf5a2243..49aced9102 100644
--- a/Marlin/src/HAL/HAL_STM32F1/u8g_com_stm32duino_fsmc.cpp
+++ b/Marlin/src/HAL/HAL_STM32F1/u8g_com_stm32duino_fsmc.cpp
@@ -26,10 +26,10 @@
* Communication interface for FSMC
*/
-#if defined(ARDUINO_ARCH_STM32F1) && (defined(STM32_HIGH_DENSITY) || defined(STM32_XL_DENSITY))
-
#include "../../inc/MarlinConfig.h"
+#if defined(ARDUINO_ARCH_STM32F1) && (defined(STM32_HIGH_DENSITY) || defined(STM32_XL_DENSITY))
+
#if HAS_GRAPHICAL_LCD
#include "U8glib.h"
@@ -226,14 +226,19 @@ void LCD_IO_Init(uint8_t cs, uint8_t rs) {
gpio_set_mode(GPIOD, 9, GPIO_AF_OUTPUT_PP); // FSMC_D14
gpio_set_mode(GPIOD, 10, GPIO_AF_OUTPUT_PP); // FSMC_D15
- gpio_set_mode(GPIOD, 4, GPIO_AF_OUTPUT_PP); // FSMC_NOE
- gpio_set_mode(GPIOD, 5, GPIO_AF_OUTPUT_PP); // FSMC_NWE
+ gpio_set_mode(GPIOD, 4, GPIO_AF_OUTPUT_PP); // FSMC_NOE
+ gpio_set_mode(GPIOD, 5, GPIO_AF_OUTPUT_PP); // FSMC_NWE
gpio_set_mode(PIN_MAP[cs].gpio_device, PIN_MAP[cs].gpio_bit, GPIO_AF_OUTPUT_PP); //FSMC_CS_NEx
gpio_set_mode(PIN_MAP[rs].gpio_device, PIN_MAP[rs].gpio_bit, GPIO_AF_OUTPUT_PP); //FSMC_RS_Ax
- FSMC_NOR_PSRAM4_BASE->BCR = FSMC_BCR_WREN | FSMC_BCR_MTYP_SRAM | FSMC_BCR_MWID_16BITS | FSMC_BCR_MBKEN;
- FSMC_NOR_PSRAM4_BASE->BTR = (FSMC_DATA_SETUP_TIME << 8) | FSMC_ADDRESS_SETUP_TIME;
+ #ifdef STM32_XL_DENSITY
+ FSMC_NOR_PSRAM4_BASE->BCR = FSMC_BCR_WREN | FSMC_BCR_MTYP_SRAM | FSMC_BCR_MWID_16BITS | FSMC_BCR_MBKEN;
+ FSMC_NOR_PSRAM4_BASE->BTR = (FSMC_DATA_SETUP_TIME << 8) | FSMC_ADDRESS_SETUP_TIME;
+ #else // PSRAM1 for STM32F103V (high density)
+ FSMC_NOR_PSRAM1_BASE->BCR = FSMC_BCR_WREN | FSMC_BCR_MTYP_SRAM | FSMC_BCR_MWID_16BITS | FSMC_BCR_MBKEN;
+ FSMC_NOR_PSRAM1_BASE->BTR = (FSMC_DATA_SETUP_TIME << 8) | FSMC_ADDRESS_SETUP_TIME;
+ #endif
afio_remap(AFIO_REMAP_FSMC_NADV);
diff --git a/Marlin/src/HAL/HAL_STM32F4/HAL.h b/Marlin/src/HAL/HAL_STM32F4/HAL.h
index 6f2d22b8dd..4f621e348a 100644
--- a/Marlin/src/HAL/HAL_STM32F4/HAL.h
+++ b/Marlin/src/HAL/HAL_STM32F4/HAL.h
@@ -136,14 +136,6 @@
#undef pgm_read_ptr
#define pgm_read_ptr(addr) (*(addr))
-#define RST_POWER_ON 1
-#define RST_EXTERNAL 2
-#define RST_BROWN_OUT 4
-#define RST_WATCHDOG 8
-#define RST_JTAG 16
-#define RST_SOFTWARE 32
-#define RST_BACKUP 64
-
// --------------------------------------------------------------------------
// Types
// --------------------------------------------------------------------------
@@ -232,23 +224,8 @@ inline void HAL_adc_init(void) {}
#define HAL_ADC_READY() true
void HAL_adc_start_conversion(const uint8_t adc_pin);
-
uint16_t HAL_adc_get_result(void);
-/* Todo: Confirm none of this is needed.
-uint16_t HAL_getAdcReading(uint8_t chan);
-
-void HAL_startAdcConversion(uint8_t chan);
-uint8_t HAL_pinToAdcChannel(int pin);
-
-uint16_t HAL_getAdcFreerun(uint8_t chan, bool wait_for_conversion = false);
-//uint16_t HAL_getAdcSuperSample(uint8_t chan);
-
-void HAL_enable_AdcFreerun(void);
-//void HAL_disable_AdcFreerun(uint8_t chan);
-
-*/
-
#define GET_PIN_MAP_PIN(index) index
#define GET_PIN_MAP_INDEX(pin) pin
#define PARSED_PIN_INDEX(code, dval) parser.intval(code, dval)
diff --git a/Marlin/src/HAL/HAL_STM32F4/fastio_STM32F4.h b/Marlin/src/HAL/HAL_STM32F4/fastio_STM32F4.h
index bac5bdabca..1d548ca29e 100644
--- a/Marlin/src/HAL/HAL_STM32F4/fastio_STM32F4.h
+++ b/Marlin/src/HAL/HAL_STM32F4/fastio_STM32F4.h
@@ -50,10 +50,8 @@
#define IS_INPUT(IO)
#define IS_OUTPUT(IO)
-#define HAS_TIMER(IO) true
-#define PWM_PIN(P) HAS_TIMER(P)
-#define USEABLE_HARDWARE_PWM(P) PWM_PIN(P)
+#define PWM_PIN(P) true
// digitalRead/Write wrappers
#define extDigitalRead(IO) digitalRead(IO)
diff --git a/Marlin/src/HAL/HAL_STM32F7/HAL.h b/Marlin/src/HAL/HAL_STM32F7/HAL.h
index 878d933653..729547e94e 100644
--- a/Marlin/src/HAL/HAL_STM32F7/HAL.h
+++ b/Marlin/src/HAL/HAL_STM32F7/HAL.h
@@ -125,14 +125,6 @@
#undef pgm_read_ptr
#define pgm_read_ptr(addr) (*(addr))
-#define RST_POWER_ON 1
-#define RST_EXTERNAL 2
-#define RST_BROWN_OUT 4
-#define RST_WATCHDOG 8
-#define RST_JTAG 16
-#define RST_SOFTWARE 32
-#define RST_BACKUP 64
-
// --------------------------------------------------------------------------
// Types
// --------------------------------------------------------------------------
@@ -211,23 +203,8 @@ inline void HAL_adc_init(void) {}
#define HAL_ADC_READY() true
void HAL_adc_start_conversion(const uint8_t adc_pin);
-
uint16_t HAL_adc_get_result(void);
-/* Todo: Confirm none of this is needed.
-uint16_t HAL_getAdcReading(uint8_t chan);
-
-void HAL_startAdcConversion(uint8_t chan);
-uint8_t HAL_pinToAdcChannel(int pin);
-
-uint16_t HAL_getAdcFreerun(uint8_t chan, bool wait_for_conversion = false);
-//uint16_t HAL_getAdcSuperSample(uint8_t chan);
-
-void HAL_enable_AdcFreerun(void);
-//void HAL_disable_AdcFreerun(uint8_t chan);
-
-*/
-
#define GET_PIN_MAP_PIN(index) index
#define GET_PIN_MAP_INDEX(pin) pin
#define PARSED_PIN_INDEX(code, dval) parser.intval(code, dval)
diff --git a/Marlin/src/HAL/HAL_STM32F7/TMC2660.cpp b/Marlin/src/HAL/HAL_STM32F7/TMC2660.cpp
index 0d641cf1d3..99cadbde16 100644
--- a/Marlin/src/HAL/HAL_STM32F7/TMC2660.cpp
+++ b/Marlin/src/HAL/HAL_STM32F7/TMC2660.cpp
@@ -25,7 +25,7 @@
*
*/
-//#include "Arduino.h"
+//#include
#ifdef STM32F7
@@ -33,7 +33,7 @@
#include
#include "TMC2660.h"
-#include "../../HAL/HAL_STM32F7/HAL.h"
+#include "HAL.h"
#include "../../core/serial.h"
#include "../../inc/MarlinConfig.h"
#include "../../Marlin.h"
@@ -42,7 +42,6 @@
#include "../../libs/duration_t.h"
#include "../../libs/hex_print_routines.h"
-
//some default values used in initialization
#define DEFAULT_MICROSTEPPING_VALUE 32
diff --git a/Marlin/src/HAL/HAL_STM32F7/fastio_STM32F7.h b/Marlin/src/HAL/HAL_STM32F7/fastio_STM32F7.h
index 50b071ff30..a1b3056d80 100644
--- a/Marlin/src/HAL/HAL_STM32F7/fastio_STM32F7.h
+++ b/Marlin/src/HAL/HAL_STM32F7/fastio_STM32F7.h
@@ -49,10 +49,8 @@
#define IS_INPUT(IO)
#define IS_OUTPUT(IO)
-#define HAS_TIMER(IO) true
-#define PWM_PIN(P) HAS_TIMER(P)
-#define USEABLE_HARDWARE_PWM(P) PWM_PIN(P)
+#define PWM_PIN(P) true
// digitalRead/Write wrappers
#define extDigitalRead(IO) digitalRead(IO)
diff --git a/Marlin/src/HAL/HAL_TEENSY31_32/HAL.h b/Marlin/src/HAL/HAL_TEENSY31_32/HAL.h
index 0fb1b551fc..dbc75540b3 100644
--- a/Marlin/src/HAL/HAL_TEENSY31_32/HAL.h
+++ b/Marlin/src/HAL/HAL_TEENSY31_32/HAL.h
@@ -89,14 +89,6 @@ typedef int8_t pin_t;
#undef pgm_read_word
#define pgm_read_word(addr) (*((uint16_t*)(addr)))
-#define RST_POWER_ON 1
-#define RST_EXTERNAL 2
-#define RST_BROWN_OUT 4
-#define RST_WATCHDOG 8
-#define RST_JTAG 16
-#define RST_SOFTWARE 32
-#define RST_BACKUP 64
-
// Clear the reset reason
void HAL_clear_reset_source(void);
@@ -128,25 +120,11 @@ void HAL_adc_init();
#define HAL_READ_ADC() HAL_adc_get_result()
#define HAL_ADC_READY() true
-#define HAL_ANALOG_SELECT(pin) NOOP;
+#define HAL_ANALOG_SELECT(pin)
void HAL_adc_start_conversion(const uint8_t adc_pin);
-
uint16_t HAL_adc_get_result(void);
-/*
-uint16_t HAL_getAdcReading(uint8_t chan);
-
-void HAL_startAdcConversion(uint8_t chan);
-uint8_t HAL_pinToAdcChannel(int pin);
-
-uint16_t HAL_getAdcFreerun(uint8_t chan, bool wait_for_conversion = false);
-//uint16_t HAL_getAdcSuperSample(uint8_t chan);
-
-void HAL_enable_AdcFreerun(void);
-//void HAL_disable_AdcFreerun(uint8_t chan);
-*/
-
#define GET_PIN_MAP_PIN(index) index
#define GET_PIN_MAP_INDEX(pin) pin
#define PARSED_PIN_INDEX(code, dval) parser.intval(code, dval)
diff --git a/Marlin/src/HAL/HAL_TEENSY31_32/HAL_Servo_Teensy.cpp b/Marlin/src/HAL/HAL_TEENSY31_32/HAL_Servo_Teensy.cpp
index 7864ee715f..24e84bb0d2 100644
--- a/Marlin/src/HAL/HAL_TEENSY31_32/HAL_Servo_Teensy.cpp
+++ b/Marlin/src/HAL/HAL_TEENSY31_32/HAL_Servo_Teensy.cpp
@@ -1,3 +1,24 @@
+/**
+ * Marlin 3D Printer Firmware
+ * Copyright (C) 2019 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 .
+ *
+ */
#ifdef __MK20DX256__
#include "../../inc/MarlinConfig.h"
diff --git a/Marlin/src/HAL/HAL_TEENSY31_32/HAL_timers_Teensy.cpp b/Marlin/src/HAL/HAL_TEENSY31_32/HAL_timers_Teensy.cpp
index fccba9e6ac..3a7870da6e 100644
--- a/Marlin/src/HAL/HAL_TEENSY31_32/HAL_timers_Teensy.cpp
+++ b/Marlin/src/HAL/HAL_TEENSY31_32/HAL_timers_Teensy.cpp
@@ -20,7 +20,6 @@
*
*/
-
/**
* Teensy3.2 __MK20DX256__
*/
diff --git a/Marlin/src/HAL/HAL_TEENSY31_32/HAL_timers_Teensy.h b/Marlin/src/HAL/HAL_TEENSY31_32/HAL_timers_Teensy.h
index 79a854126e..04048798eb 100644
--- a/Marlin/src/HAL/HAL_TEENSY31_32/HAL_timers_Teensy.h
+++ b/Marlin/src/HAL/HAL_TEENSY31_32/HAL_timers_Teensy.h
@@ -1,23 +1,24 @@
-/* **************************************************************************
-
- Marlin 3D Printer Firmware
- Copyright (C) 2019 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
- Copyright (c) 2016 Bob Cousins bobcousins42@googlemail.com
- Copyright (c) 2015-2016 Nico Tonnhofer wurstnase.reprap@gmail.com
-
- 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 .
-****************************************************************************/
+/**
+ * Marlin 3D Printer Firmware
+ * Copyright (C) 2019 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 .
+ *
+ */
/**
* Description: HAL for
diff --git a/Marlin/src/HAL/HAL_TEENSY31_32/fastio_Teensy.h b/Marlin/src/HAL/HAL_TEENSY31_32/fastio_Teensy.h
index 928cd758e7..96bbc93112 100644
--- a/Marlin/src/HAL/HAL_TEENSY31_32/fastio_Teensy.h
+++ b/Marlin/src/HAL/HAL_TEENSY31_32/fastio_Teensy.h
@@ -91,7 +91,6 @@
#define extDigitalWrite(IO,V) digitalWrite(IO,V)
#define PWM_PIN(P) digitalPinHasPWM(P)
-#define USEABLE_HARDWARE_PWM(P) PWM_PIN(P)
/**
* Ports, functions, and pins
diff --git a/Marlin/src/HAL/HAL_TEENSY31_32/pinsDebug.h b/Marlin/src/HAL/HAL_TEENSY31_32/pinsDebug.h
index 47b99ae317..d4a91ce801 100644
--- a/Marlin/src/HAL/HAL_TEENSY31_32/pinsDebug.h
+++ b/Marlin/src/HAL/HAL_TEENSY31_32/pinsDebug.h
@@ -1 +1 @@
-#error "Debug pins is not supported on the Teensy 3.1 / 3.2 Platform!"
+#error "PINS_DEBUGGING is not yet supported for Teensy 3.1 / 3.2!"
diff --git a/Marlin/src/HAL/HAL_TEENSY35_36/HAL.h b/Marlin/src/HAL/HAL_TEENSY35_36/HAL.h
index 0cd3ed8de5..9ead7405a7 100644
--- a/Marlin/src/HAL/HAL_TEENSY35_36/HAL.h
+++ b/Marlin/src/HAL/HAL_TEENSY35_36/HAL.h
@@ -97,14 +97,6 @@ typedef int8_t pin_t;
#undef pgm_read_word
#define pgm_read_word(addr) (*((uint16_t*)(addr)))
-#define RST_POWER_ON 1
-#define RST_EXTERNAL 2
-#define RST_BROWN_OUT 4
-#define RST_WATCHDOG 8
-#define RST_JTAG 16
-#define RST_SOFTWARE 32
-#define RST_BACKUP 64
-
/** clear reset reason */
void HAL_clear_reset_source(void);
@@ -133,25 +125,11 @@ void HAL_adc_init();
#define HAL_READ_ADC() HAL_adc_get_result()
#define HAL_ADC_READY() true
-#define HAL_ANALOG_SELECT(pin) NOOP;
+#define HAL_ANALOG_SELECT(pin)
void HAL_adc_start_conversion(const uint8_t adc_pin);
-
uint16_t HAL_adc_get_result(void);
-/*
- uint16_t HAL_getAdcReading(uint8_t chan);
-
- void HAL_startAdcConversion(uint8_t chan);
- uint8_t HAL_pinToAdcChannel(int pin);
-
- uint16_t HAL_getAdcFreerun(uint8_t chan, bool wait_for_conversion = false);
- //uint16_t HAL_getAdcSuperSample(uint8_t chan);
-
- void HAL_enable_AdcFreerun(void);
- //void HAL_disable_AdcFreerun(uint8_t chan);
-*/
-
#define GET_PIN_MAP_PIN(index) index
#define GET_PIN_MAP_INDEX(pin) pin
#define PARSED_PIN_INDEX(code, dval) parser.intval(code, dval)
diff --git a/Marlin/src/HAL/HAL_TEENSY35_36/fastio_Teensy.h b/Marlin/src/HAL/HAL_TEENSY35_36/fastio_Teensy.h
index b9ddd957c1..5df7faffb9 100644
--- a/Marlin/src/HAL/HAL_TEENSY35_36/fastio_Teensy.h
+++ b/Marlin/src/HAL/HAL_TEENSY35_36/fastio_Teensy.h
@@ -90,7 +90,6 @@
#define extDigitalWrite(IO,V) digitalWrite(IO,V)
#define PWM_PIN(P) digitalPinHasPWM(P)
-#define USEABLE_HARDWARE_PWM(P) PWM_PIN(P)
/**
* Ports, functions, and pins
diff --git a/Marlin/src/HAL/shared/Marduino.h b/Marlin/src/HAL/shared/Marduino.h
index 8c840cd02d..78bddecd40 100644
--- a/Marlin/src/HAL/shared/Marduino.h
+++ b/Marlin/src/HAL/shared/Marduino.h
@@ -55,3 +55,12 @@
//#define strchr_P(s,c) strchr(s,c)
#endif
#endif
+
+// Restart causes
+#define RST_POWER_ON 1
+#define RST_EXTERNAL 2
+#define RST_BROWN_OUT 4
+#define RST_WATCHDOG 8
+#define RST_JTAG 16
+#define RST_SOFTWARE 32
+#define RST_BACKUP 64
diff --git a/Marlin/src/HAL/shared/servo.cpp b/Marlin/src/HAL/shared/servo.cpp
index ec25569f9d..684fc320a8 100644
--- a/Marlin/src/HAL/shared/servo.cpp
+++ b/Marlin/src/HAL/shared/servo.cpp
@@ -53,7 +53,7 @@
#include "../../inc/MarlinConfig.h"
-#if HAS_SERVOS && !(IS_32BIT_TEENSY || defined(TARGET_LPC1768) || defined(STM32F1) || defined(STM32F1xx) || defined(STM32F4) || defined(STM32F4xx) || defined(STM32F7xx))
+#if HAS_SERVOS && !(IS_32BIT_TEENSY || defined(TARGET_LPC1768) || defined(STM32F1) || defined(STM32F1xx) || defined(STM32F4) || defined(STM32F4xx) || defined(STM32F7xx) || defined(ARDUINO_ARCH_ESP32))
#include "servo.h"
#include "servo_private.h"
diff --git a/Marlin/src/HAL/shared/servo.h b/Marlin/src/HAL/shared/servo.h
index 042c5d83cc..dea3e20d51 100644
--- a/Marlin/src/HAL/shared/servo.h
+++ b/Marlin/src/HAL/shared/servo.h
@@ -73,13 +73,15 @@
#elif IS_TEENSY35 || IS_TEENSY36
#include "../HAL_TEENSY35_36/HAL_Servo_Teensy.h"
#elif defined(TARGET_LPC1768)
- #include "../HAL_LPC1768/MarlinServo.h"
+ #include "../HAL_LPC1768/HAL_Servo_LPC1768.h"
#elif defined(__STM32F1__) || defined(TARGET_STM32F1)
#include "../HAL_STM32F1/HAL_Servo_STM32F1.h"
#elif defined(STM32GENERIC) && defined(STM32F4)
#include "../HAL_STM32F4/HAL_Servo_STM32F4.h"
#elif defined(ARDUINO_ARCH_STM32)
#include "../HAL_STM32/HAL_Servo_STM32.h"
+#elif defined(ARDUINO_ARCH_ESP32)
+ #include "../HAL_ESP32/HAL_Servo_ESP32.h"
#else
#include
diff --git a/Marlin/src/HAL/shared/servo_private.h b/Marlin/src/HAL/shared/servo_private.h
index d2d96ce000..158759c455 100644
--- a/Marlin/src/HAL/shared/servo_private.h
+++ b/Marlin/src/HAL/shared/servo_private.h
@@ -63,9 +63,9 @@
#define INVALID_SERVO 255 // flag indicating an invalid servo index
-//
-#define usToTicks(_us) (( clockCyclesPerMicrosecond()* _us) / PRESCALER) // converts microseconds to tick (PRESCALER depends on architecture)
-#define ticksToUs(_ticks) (( (unsigned)_ticks * PRESCALER)/ clockCyclesPerMicrosecond() ) // converts from ticks back to microseconds
+// Convert microseconds to ticks and back (PRESCALER depends on architecture)
+#define usToTicks(_us) (clockCyclesPerMicrosecond() * (_us) / (PRESCALER))
+#define ticksToUs(_ticks) (unsigned(_ticks) * (PRESCALER) / clockCyclesPerMicrosecond())
//#define NBR_TIMERS ((MAX_SERVOS) / (SERVOS_PER_TIMER))
diff --git a/Marlin/src/Marlin.cpp b/Marlin/src/Marlin.cpp
index 6f9e527832..c1f87f55dc 100644
--- a/Marlin/src/Marlin.cpp
+++ b/Marlin/src/Marlin.cpp
@@ -1058,7 +1058,7 @@ void setup() {
#endif
#if ENABLED(BLTOUCH)
- bltouch.init();
+ bltouch.init(/*set_voltage=*/true);
#endif
#if ENABLED(I2C_POSITION_ENCODERS)
diff --git a/Marlin/src/core/utility.cpp b/Marlin/src/core/utility.cpp
index cc7d0065e9..0bc029cece 100644
--- a/Marlin/src/core/utility.cpp
+++ b/Marlin/src/core/utility.cpp
@@ -161,6 +161,18 @@ void safe_delay(millis_t ms) {
return &conv[3];
}
+ // Convert signed float to fixed-length string with 12.34 / -2.34 format or 123.45 / -23.45 format
+ char* ftostr42_52(const float &f) {
+ if (f <= -10 || f >= 100) return ftostr52(f); // need more digits
+ long i = (f * 1000 + (f < 0 ? -5: 5)) / 10;
+ conv[2] = (f >= 0 && f < 10) ? ' ' : MINUSOR(i, DIGIMOD(i, 1000));
+ conv[3] = DIGIMOD(i, 100);
+ conv[4] = '.';
+ conv[5] = DIGIMOD(i, 10);
+ conv[6] = DIGIMOD(i, 1);
+ return &conv[2];
+ }
+
// Convert signed float to fixed-length string with 023.45 / -23.45 format
char* ftostr52(const float &f) {
long i = (f * 1000 + (f < 0 ? -5: 5)) / 10;
diff --git a/Marlin/src/core/utility.h b/Marlin/src/core/utility.h
index c04524f672..8cfb43109f 100644
--- a/Marlin/src/core/utility.h
+++ b/Marlin/src/core/utility.h
@@ -82,6 +82,9 @@ inline void serial_delay(const millis_t ms) {
// Convert unsigned float to string with 1.23 format
char* ftostr12ns(const float &x);
+ // Convert signed float to fixed-length string with 12.34 / -2.34 or 023.45 / -23.45 format
+ char* ftostr42_52(const float &x);
+
// Convert signed float to fixed-length string with 023.45 / -23.45 format
char* ftostr52(const float &x);
diff --git a/Marlin/src/feature/babystep.cpp b/Marlin/src/feature/babystep.cpp
index 0f0b64295d..bcf4e4bbb9 100644
--- a/Marlin/src/feature/babystep.cpp
+++ b/Marlin/src/feature/babystep.cpp
@@ -83,7 +83,7 @@ void Babystep::add_steps(const AxisEnum axis, const int16_t distance) {
#endif
#if ENABLED(BABYSTEP_ALWAYS_AVAILABLE)
- #define BSA_ENABLE(AXIS) do{ switch (AXIS) { case X_AXIS: enable_X(); break; case Y_AXIS: enable_Y(); break; case Z_AXIS: enable_Z(); } }while(0)
+ #define BSA_ENABLE(AXIS) do{ switch (AXIS) { case X_AXIS: enable_X(); break; case Y_AXIS: enable_Y(); break; case Z_AXIS: enable_Z(); break; default: break; } }while(0)
#else
#define BSA_ENABLE(AXIS) NOOP
#endif
diff --git a/Marlin/src/feature/backlash.cpp b/Marlin/src/feature/backlash.cpp
index 3254fb3f3c..56701991e0 100644
--- a/Marlin/src/feature/backlash.cpp
+++ b/Marlin/src/feature/backlash.cpp
@@ -20,18 +20,25 @@
*
*/
-#include "../Marlin.h"
+#include "../inc/MarlinConfigPre.h"
#if ENABLED(BACKLASH_COMPENSATION)
#include "backlash.h"
+
+#include "../module/motion.h"
#include "../module/planner.h"
+#ifdef BACKLASH_DISTANCE_MM
+ #if ENABLED(BACKLASH_GCODE)
+ float Backlash::distance_mm[XYZ] = BACKLASH_DISTANCE_MM;
+ #else
+ const float Backlash::distance_mm[XYZ] = BACKLASH_DISTANCE_MM;
+ #endif
+#endif
+
#if ENABLED(BACKLASH_GCODE)
uint8_t Backlash::correction = (BACKLASH_CORRECTION) * 0xFF;
- #ifdef BACKLASH_DISTANCE_MM
- float Backlash::distance_mm[XYZ] = BACKLASH_DISTANCE_MM;
- #endif
#ifdef BACKLASH_SMOOTHING_MM
float Backlash::smoothing_mm = BACKLASH_SMOOTHING_MM;
#endif
@@ -75,10 +82,10 @@ void Backlash::add_correction_steps(const int32_t &da, const int32_t &db, const
// to segments where there is no direction change.
static int32_t residual_error[XYZ] = { 0 };
#else
- // No leftover residual error from segment to segment
- int32_t residual_error[XYZ] = { 0 };
// No direction change, no correction.
if (!changed_dir) return;
+ // No leftover residual error from segment to segment
+ int32_t residual_error[XYZ] = { 0 };
#endif
const float f_corr = float(correction) / 255.0f;
@@ -100,7 +107,7 @@ void Backlash::add_correction_steps(const int32_t &da, const int32_t &db, const
if (reversing == (error_correction < 0)) {
if (segment_proportion == 0)
segment_proportion = MIN(1.0f, block->millimeters / smoothing_mm);
- error_correction = ceil(segment_proportion * error_correction);
+ error_correction = CEIL(segment_proportion * error_correction);
}
else
error_correction = 0; // Don't take up any backlash in this segment, as it would subtract steps
diff --git a/Marlin/src/feature/backlash.h b/Marlin/src/feature/backlash.h
index c35675f1b1..f2dffe1311 100644
--- a/Marlin/src/feature/backlash.h
+++ b/Marlin/src/feature/backlash.h
@@ -26,30 +26,28 @@
class Backlash {
public:
+ #ifdef BACKLASH_DISTANCE_MM
+ #if ENABLED(BACKLASH_GCODE)
+ static float distance_mm[XYZ];
+ #else
+ static const float distance_mm[XYZ];
+ //static constexpr float distance_mm[XYZ] = BACKLASH_DISTANCE_MM; // compiler barks at this
+ #endif
+ #endif
#if ENABLED(BACKLASH_GCODE)
static uint8_t correction;
- #ifdef BACKLASH_DISTANCE_MM
- static float distance_mm[XYZ];
- #endif
#ifdef BACKLASH_SMOOTHING_MM
static float smoothing_mm;
#endif
static inline void set_correction(const float &v) { correction = MAX(0, MIN(1.0, v)) * all_on; }
static inline float get_correction() { return float(ui8_to_percent(correction)) / 100.0f; }
- #elif ENABLED(BACKLASH_COMPENSATION)
+ #else
static constexpr uint8_t correction = (BACKLASH_CORRECTION) * 0xFF;
- #ifdef BACKLASH_DISTANCE_MM
- static constexpr float distance_mm[XYZ] = BACKLASH_DISTANCE_MM;
- #endif
#ifdef BACKLASH_SMOOTHING_MM
static constexpr float smoothing_mm = BACKLASH_SMOOTHING_MM;
#endif
static inline void set_correction(float) { }
static inline float get_correction() { return float(ui8_to_percent(correction)) / 100.0f; }
- #else
- static constexpr uint8_t correction = 0;
- static inline void set_correction(float) { }
- static inline float get_correction() { return 0; }
#endif
#if ENABLED(MEASURE_BACKLASH_WHEN_PROBING)
diff --git a/Marlin/src/feature/bedlevel/ubl/ubl_G29.cpp b/Marlin/src/feature/bedlevel/ubl/ubl_G29.cpp
index dfd16014be..09bb7a23e1 100644
--- a/Marlin/src/feature/bedlevel/ubl/ubl_G29.cpp
+++ b/Marlin/src/feature/bedlevel/ubl/ubl_G29.cpp
@@ -411,7 +411,6 @@
restore_ubl_active_state_and_leave();
}
else { // grid_size == 0 : A 3-Point leveling has been requested
-
save_ubl_active_state_and_disable();
tilt_mesh_based_on_probed_grid(true /* true says to do 3-Point leveling */ );
restore_ubl_active_state_and_leave();
@@ -738,12 +737,17 @@
save_ubl_active_state_and_disable(); // No bed level correction so only raw data is obtained
DEPLOY_PROBE();
- uint16_t count = GRID_MAX_POINTS;
+ uint16_t count = GRID_MAX_POINTS, current = 1;
do {
+ current = (GRID_MAX_POINTS) - count + 1;
+
if (do_ubl_mesh_map) display_map(g29_map_type);
+ SERIAL_ECHOLNPAIR("\nProbing mesh point ", current, "/", GRID_MAX_POINTS, ".\n");
#if HAS_LCD_MENU
+ ui.status_printf_P(0, PSTR(MSG_LCD_PROBING_MESH " %i/%i"), current, int(GRID_MAX_POINTS));
+
if (ui.button_pressed()) {
ui.quick_feedback(false); // Preserve button state for click-and-hold
SERIAL_ECHOLNPGM("\nMesh only partially populated.\n");
@@ -771,6 +775,7 @@
#endif
}
SERIAL_FLUSH(); // Prevent host M105 buffer overrun.
+
} while (location.x_index >= 0 && --count);
STOW_PROBE();
@@ -1401,6 +1406,11 @@
incremental_LSF_reset(&lsf_results);
if (do_3_pt_leveling) {
+ SERIAL_ECHOLNPGM("Tilting mesh (1/3)");
+ #if HAS_LCD_MENU
+ ui.status_printf_P(0, PSTR(MSG_LCD_TILTING_MESH " 1/3"));
+ #endif
+
measured_z = probe_pt(PROBE_PT_1_X, PROBE_PT_1_Y, PROBE_PT_RAISE, g29_verbose_level);
if (isnan(measured_z))
abort_flag = true;
@@ -1415,6 +1425,11 @@
}
if (!abort_flag) {
+ SERIAL_ECHOLNPGM("Tilting mesh (2/3)");
+ #if HAS_LCD_MENU
+ ui.status_printf_P(0, PSTR(MSG_LCD_TILTING_MESH " 2/3"));
+ #endif
+
measured_z = probe_pt(PROBE_PT_2_X, PROBE_PT_2_Y, PROBE_PT_RAISE, g29_verbose_level);
//z2 = measured_z;
if (isnan(measured_z))
@@ -1430,6 +1445,11 @@
}
if (!abort_flag) {
+ SERIAL_ECHOLNPGM("Tilting mesh (3/3)");
+ #if HAS_LCD_MENU
+ ui.status_printf_P(0, PSTR(MSG_LCD_TILTING_MESH " 3/3"));
+ #endif
+
measured_z = probe_pt(PROBE_PT_3_X, PROBE_PT_3_Y, PROBE_PT_STOW, g29_verbose_level);
//z3 = measured_z;
if (isnan(measured_z))
@@ -1450,19 +1470,27 @@
#endif
if (abort_flag) {
- SERIAL_ECHOLNPGM("?Error probing point. Aborting operation.");
+ SERIAL_ECHOLNPGM("?Error probing point. Aborting operation.");
return;
}
}
else { // !do_3_pt_leveling
bool zig_zag = false;
+
+ uint16_t total_points = g29_grid_size * g29_grid_size, current = 1;
+
for (uint8_t ix = 0; ix < g29_grid_size; ix++) {
const float rx = float(x_min) + ix * dx;
for (int8_t iy = 0; iy < g29_grid_size; iy++) {
const float ry = float(y_min) + dy * (zig_zag ? g29_grid_size - 1 - iy : iy);
if (!abort_flag) {
+ SERIAL_ECHOLNPAIR("Tilting mesh point ", current, "/", total_points, "\n");
+ #if HAS_LCD_MENU
+ ui.status_printf_P(0, PSTR(MSG_LCD_TILTING_MESH " %i/%i"), current, total_points);
+ #endif
+
measured_z = probe_pt(rx, ry, parser.seen('E') ? PROBE_PT_STOW : PROBE_PT_RAISE, g29_verbose_level); // TODO: Needs error handling
abort_flag = isnan(measured_z);
@@ -1491,6 +1519,8 @@
}
incremental_LSF(&lsf_results, rx, ry, measured_z);
}
+
+ current++;
}
zig_zag ^= true;
diff --git a/Marlin/src/feature/bltouch.cpp b/Marlin/src/feature/bltouch.cpp
index 6166b7d195..abaeb153ee 100644
--- a/Marlin/src/feature/bltouch.cpp
+++ b/Marlin/src/feature/bltouch.cpp
@@ -28,6 +28,8 @@
BLTouch bltouch;
+bool BLTouch::last_written_mode; // Initialized by settings.load, 0 = Open Drain; 1 = 5V Drain
+
#include "../module/servo.h"
void stop();
@@ -38,21 +40,53 @@ void stop();
bool BLTouch::command(const BLTCommand cmd, const millis_t &ms) {
if (DEBUGGING(LEVELING)) SERIAL_ECHOLNPAIR("BLTouch Command :", cmd);
MOVE_SERVO(Z_PROBE_SERVO_NR, cmd);
- safe_delay(MAX(ms, BLTOUCH_DELAY)); // BLTOUCH_DELAY is also the *minimum* delay
+ safe_delay(MAX(ms, (uint32_t)BLTOUCH_DELAY)); // BLTOUCH_DELAY is also the *minimum* delay
return triggered();
}
-void BLTouch::init() {
- // This is called by marlin.cpp on initialization
- // SET_5V_MODE (if enabled). OD_MODE is the default on power on.
- // This mode will stay active until manual SET_OD_MODE or power cycle
- #if ENABLED(BLTOUCH_FORCE_5V_MODE)
- _set_5V_mode(); // Set 5V mode if explicitely demanded (V3 upwards)
+// Init the class and device. Call from setup().
+void BLTouch::init(const bool set_voltage/*=false*/) {
+ // Voltage Setting (if enabled). At every Marlin initialization:
+ // BLTOUCH < V3.0 and clones: This will be ignored by the probe
+ // BLTOUCH V3.0: SET_5V_MODE or SET_OD_MODE (if enabled).
+ // OD_MODE is the default on power on, but setting it does not hurt
+ // This mode will stay active until manual SET_OD_MODE or power cycle
+ // BLTOUCH V3.1: SET_5V_MODE or SET_OD_MODE (if enabled).
+ // At power on, the probe will default to the eeprom settings configured by the user
+ #if ENABLED(BLTOUCH_FORCE_MODE_SET)
+
+ constexpr bool should_set = true;
+
+ #else
+
+ if (DEBUGGING(LEVELING)) {
+ DEBUG_ECHOLNPAIR("last_written_mode - ", (int)last_written_mode);
+ DEBUG_ECHOLNPGM("config mode - "
+ #if ENABLED(BLTOUCH_SET_5V_MODE)
+ "BLTOUCH_SET_5V_MODE"
+ #else
+ "OD"
+ #endif
+ );
+ }
+
+ const bool should_set = last_written_mode != (false
+ #if ENABLED(BLTOUCH_SET_5V_MODE)
+ || true
+ #endif
+ );
+
#endif
+
+ if (should_set && set_voltage)
+ mode_conv_proc((false
+ #if ENABLED(BLTOUCH_SET_5V_MODE)
+ || true
+ #endif
+ ));
+
_reset();
_stow();
- // There really should be no alarm outstanding now, and no triggered condition. But if there is,
- // there is no need to worry people here on init right at the start of the printer.
}
void BLTouch::clear() {
@@ -97,6 +131,11 @@ bool BLTouch::deploy_proc() {
}
}
+ // One of the recommended ANTClabs ways to probe, using SW MODE
+ #if ENABLED(BLTOUCH_FORCE_SW_MODE)
+ _set_SW_mode();
+ #endif
+
// Now the probe is ready to issue a 10ms pulse when the pin goes up.
// The trigger STOW (see motion.cpp for example) will pull up the probes pin as soon as the pulse
// is registered.
@@ -146,20 +185,32 @@ bool BLTouch::status_proc() {
/**
* Return a TRUE for "YES, it is DEPLOYED"
* This function will ensure switch state is reset after execution
- * This may change pin position in some scenarios, specifically
- * if the pin has been triggered but not yet stowed.
*/
if (DEBUGGING(LEVELING)) DEBUG_ECHOLN("BLTouch STATUS requested");
- _set_SW_mode();
+ _set_SW_mode(); // Incidentally, _set_SW_mode() will also RESET any active alarm
const bool tr = triggered(); // If triggered in SW mode, the pin is up, it is STOWED
if (DEBUGGING(LEVELING)) DEBUG_ECHOLNPAIR("BLTouch is ", (int)tr);
- _reset(); // turn off the SW Mode
- if (tr) _stow(); else _deploy(); // and reset any triggered signal, restore state
+ if (tr) _stow(); else _deploy(); // Turn off SW mode, reset any trigger, honor pin state
return !tr;
}
+void BLTouch::mode_conv_proc(const bool M5V) {
+ /**
+ * BLTOUCH pre V3.0 and clones: No reaction at all to this sequence apart from a DEPLOY -> STOW
+ * BLTOUCH V3.0: This will set the mode (twice) and sadly, a STOW is needed at the end, because of the deploy
+ * BLTOUCH V3.1: This will set the mode and store it in the eeprom. The STOW is not needed but does not hurt
+ */
+ if (DEBUGGING(LEVELING)) DEBUG_ECHOLNPAIR("BLTouch Set Mode - ", (int)M5V);
+ _deploy();
+ if (M5V) _set_5V_mode(); else _set_OD_mode();
+ _mode_store();
+ if (M5V) _set_5V_mode(); else _set_OD_mode();
+ _stow();
+ last_written_mode = M5V;
+}
+
#endif // BLTOUCH
diff --git a/Marlin/src/feature/bltouch.h b/Marlin/src/feature/bltouch.h
index 70fb22f717..b349c61804 100644
--- a/Marlin/src/feature/bltouch.h
+++ b/Marlin/src/feature/bltouch.h
@@ -30,6 +30,7 @@ typedef unsigned char BLTCommand;
#define BLTOUCH_SW_MODE 60
#define BLTOUCH_STOW 90
#define BLTOUCH_SELFTEST 120
+#define BLTOUCH_MODE_STORE 130
#define BLTOUCH_5V_MODE 140
#define BLTOUCH_OD_MODE 150
#define BLTOUCH_RESET 160
@@ -51,6 +52,9 @@ typedef unsigned char BLTCommand;
#ifndef BLTOUCH_SETOD_DELAY
#define BLTOUCH_SETOD_DELAY BLTOUCH_DELAY
#endif
+#ifndef BLTOUCH_MODE_STORE_DELAY
+ #define BLTOUCH_MODE_STORE_DELAY BLTOUCH_DELAY
+#endif
#ifndef BLTOUCH_DEPLOY_DELAY
#define BLTOUCH_DEPLOY_DELAY 750
#endif
@@ -63,8 +67,8 @@ typedef unsigned char BLTCommand;
class BLTouch {
public:
- static bool triggered(); // used by menu_advanced.cpp
- static void init(); // used by main.cpp
+ static void init(const bool set_voltage=false);
+ static bool last_written_mode; // Initialized by settings.load, 0 = Open Drain; 1 = 5V Drain
// DEPLOY and STOW are wrapped for error handling - these are used by homing and by probing
FORCE_INLINE static bool deploy() { return deploy_proc(); }
@@ -77,21 +81,29 @@ public:
FORCE_INLINE static void _selftest() { command(BLTOUCH_SELFTEST, BLTOUCH_DELAY); }
FORCE_INLINE static void _set_SW_mode() { command(BLTOUCH_SW_MODE, BLTOUCH_DELAY); }
+ FORCE_INLINE static void _reset_SW_mode() { if (triggered()) _stow(); else _deploy(); }
+
FORCE_INLINE static void _set_5V_mode() { command(BLTOUCH_5V_MODE, BLTOUCH_SET5V_DELAY); }
FORCE_INLINE static void _set_OD_mode() { command(BLTOUCH_OD_MODE, BLTOUCH_SETOD_DELAY); }
+ FORCE_INLINE static void _mode_store() { command(BLTOUCH_MODE_STORE, BLTOUCH_MODE_STORE_DELAY); }
FORCE_INLINE static void _deploy() { command(BLTOUCH_DEPLOY, BLTOUCH_DEPLOY_DELAY); }
FORCE_INLINE static void _stow() { command(BLTOUCH_STOW, BLTOUCH_STOW_DELAY); }
+ FORCE_INLINE static void mode_conv_5V() { mode_conv_proc(true); }
+ FORCE_INLINE static void mode_conv_OD() { mode_conv_proc(false); }
+
private:
FORCE_INLINE static bool _deploy_query_alarm() { return command(BLTOUCH_DEPLOY, BLTOUCH_DEPLOY_DELAY); }
FORCE_INLINE static bool _stow_query_alarm() { return command(BLTOUCH_STOW, BLTOUCH_STOW_DELAY); }
static void clear();
static bool command(const BLTCommand cmd, const millis_t &ms);
+ static bool triggered();
static bool deploy_proc();
static bool stow_proc();
static bool status_proc();
+ static void mode_conv_proc(const bool M5V);
};
// Deploy/stow angles for use by servo.cpp / servo.h
diff --git a/Marlin/src/feature/dac/stepper_dac.cpp b/Marlin/src/feature/dac/stepper_dac.cpp
index 821fcab1ab..b6eeba4a5e 100644
--- a/Marlin/src/feature/dac/stepper_dac.cpp
+++ b/Marlin/src/feature/dac/stepper_dac.cpp
@@ -25,7 +25,7 @@
*
* Part of Marlin
*
- * Copyright (c) 2016 MarlinFirmware
+ * Copyright (c) 2019 MarlinFirmware
*
* Marlin is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/Marlin/src/feature/leds/leds.cpp b/Marlin/src/feature/leds/leds.cpp
index d490b86e6b..d54bd9486e 100644
--- a/Marlin/src/feature/leds/leds.cpp
+++ b/Marlin/src/feature/leds/leds.cpp
@@ -89,6 +89,9 @@ void LEDLights::set_color(const LEDColor &incol
: pixels.Color(incol.r, incol.g, incol.b, incol.w);
static uint16_t nextLed = 0;
+ #ifdef NEOPIXEL_BKGD_LED_INDEX
+ if (NEOPIXEL_BKGD_LED_INDEX == nextLed) { nextLed++; return; }
+ #endif
pixels.setBrightness(incol.i);
if (!isSequence)
set_neopixel_color(neocolor);
diff --git a/Marlin/src/feature/leds/neopixel.cpp b/Marlin/src/feature/leds/neopixel.cpp
index 816398c6fb..ee2854c27a 100644
--- a/Marlin/src/feature/leds/neopixel.cpp
+++ b/Marlin/src/feature/leds/neopixel.cpp
@@ -37,11 +37,29 @@
Adafruit_NeoPixel pixels(NEOPIXEL_PIXELS, NEOPIXEL_PIN, NEOPIXEL_TYPE + NEO_KHZ800);
void set_neopixel_color(const uint32_t color) {
+ for (uint16_t i = 0; i < pixels.numPixels(); ++i) {
+ #ifdef NEOPIXEL_BKGD_LED_INDEX
+ if (NEOPIXEL_BKGD_LED_INDEX == i) i++;
+ #endif
+ pixels.setPixelColor(i, color);
+ }
+ pixels.show();
+}
+
+void set_neopixel_color_startup(const uint32_t color) {
for (uint16_t i = 0; i < pixels.numPixels(); ++i)
pixels.setPixelColor(i, color);
pixels.show();
}
+#ifdef NEOPIXEL_BKGD_LED_INDEX
+ void set_neopixel_color_background() {
+ uint8_t background_color[4] = NEOPIXEL_BKGD_COLOR;
+ pixels.setPixelColor(NEOPIXEL_BKGD_LED_INDEX, pixels.Color(background_color[0], background_color[1], background_color[2], background_color[3]));
+ pixels.show();
+ }
+#endif
+
void setup_neopixel() {
SET_OUTPUT(NEOPIXEL_PIN);
pixels.setBrightness(NEOPIXEL_BRIGHTNESS); // 0 - 255 range
@@ -50,14 +68,18 @@ void setup_neopixel() {
#if ENABLED(NEOPIXEL_STARTUP_TEST)
safe_delay(1000);
- set_neopixel_color(pixels.Color(255, 0, 0, 0)); // red
+ set_neopixel_color_startup(pixels.Color(255, 0, 0, 0)); // red
safe_delay(1000);
- set_neopixel_color(pixels.Color(0, 255, 0, 0)); // green
+ set_neopixel_color_startup(pixels.Color(0, 255, 0, 0)); // green
safe_delay(1000);
- set_neopixel_color(pixels.Color(0, 0, 255, 0)); // blue
+ set_neopixel_color_startup(pixels.Color(0, 0, 255, 0)); // blue
safe_delay(1000);
#endif
+ #ifdef NEOPIXEL_BKGD_LED_INDEX
+ set_neopixel_color_background();
+ #endif
+
#if ENABLED(LED_USER_PRESET_STARTUP)
set_neopixel_color(pixels.Color(LED_USER_PRESET_RED, LED_USER_PRESET_GREEN, LED_USER_PRESET_BLUE, LED_USER_PRESET_WHITE));
#else
diff --git a/Marlin/src/feature/power_loss_recovery.cpp b/Marlin/src/feature/power_loss_recovery.cpp
index 9ef681c639..906315d284 100644
--- a/Marlin/src/feature/power_loss_recovery.cpp
+++ b/Marlin/src/feature/power_loss_recovery.cpp
@@ -170,8 +170,8 @@ void PrintJobRecovery::save(const bool force/*=false*/, const bool save_queue/*=
#endif
info.feedrate = uint16_t(feedrate_mm_s * 60.0f);
- #if HOTENDS > 1
- info.active_hotend = active_extruder;
+ #if EXTRUDERS > 1
+ info.active_extruder = active_extruder;
#endif
HOTEND_LOOP() info.target_temperature[e] = thermalManager.temp_hotend[e].target;
@@ -282,7 +282,7 @@ void PrintJobRecovery::resume() {
// Select the previously active tool (with no_move)
#if EXTRUDERS > 1
- sprintf_P(cmd, PSTR("T%i S"), info.active_hotend);
+ sprintf_P(cmd, PSTR("T%i S"), info.active_extruder);
gcode.process_subcommands_now(cmd);
#endif
@@ -443,8 +443,8 @@ void PrintJobRecovery::resume() {
DEBUG_ECHOLNPAIR("feedrate: ", info.feedrate);
- #if HOTENDS > 1
- DEBUG_ECHOLNPAIR("active_hotend: ", int(info.active_hotend));
+ #if EXTRUDERS > 1
+ DEBUG_ECHOLNPAIR("active_extruder: ", int(info.active_extruder));
#endif
DEBUG_ECHOPGM("target_temperature: ");
diff --git a/Marlin/src/feature/power_loss_recovery.h b/Marlin/src/feature/power_loss_recovery.h
index 5e6c7e572b..e7f8c09124 100644
--- a/Marlin/src/feature/power_loss_recovery.h
+++ b/Marlin/src/feature/power_loss_recovery.h
@@ -51,8 +51,8 @@ typedef struct {
uint16_t feedrate;
- #if HOTENDS > 1
- uint8_t active_hotend;
+ #if EXTRUDERS > 1
+ uint8_t active_extruder;
#endif
int16_t target_temperature[HOTENDS];
diff --git a/Marlin/src/feature/tmc_util.cpp b/Marlin/src/feature/tmc_util.cpp
index 86f9222c58..50ed030a19 100644
--- a/Marlin/src/feature/tmc_util.cpp
+++ b/Marlin/src/feature/tmc_util.cpp
@@ -313,8 +313,6 @@
#endif
}
- #define HAS_HW_COMMS(ST) AXIS_DRIVER_TYPE(ST, TMC2130) || AXIS_DRIVER_TYPE(ST, TMC2160) || AXIS_DRIVER_TYPE(ST, TMC2660) || AXIS_DRIVER_TYPE(ST, TMC5130) || AXIS_DRIVER_TYPE(ST, TMC5160) || (AXIS_DRIVER_TYPE(ST, TMC2208) && defined(ST##_HARDWARE_SERIAL))
-
void monitor_tmc_driver() {
static millis_t next_poll = 0;
const millis_t ms = millis();
@@ -330,43 +328,43 @@
}
#endif
if (need_update_error_counters || need_debug_reporting) {
- #if HAS_HW_COMMS(X)
+ #if AXIS_IS_TMC(X)
monitor_tmc_driver(stepperX, need_update_error_counters, need_debug_reporting);
#endif
- #if HAS_HW_COMMS(Y)
+ #if AXIS_IS_TMC(Y)
monitor_tmc_driver(stepperY, need_update_error_counters, need_debug_reporting);
#endif
- #if HAS_HW_COMMS(Z)
+ #if AXIS_IS_TMC(Z)
monitor_tmc_driver(stepperZ, need_update_error_counters, need_debug_reporting);
#endif
- #if HAS_HW_COMMS(X2)
+ #if AXIS_IS_TMC(X2)
monitor_tmc_driver(stepperX2, need_update_error_counters, need_debug_reporting);
#endif
- #if HAS_HW_COMMS(Y2)
+ #if AXIS_IS_TMC(Y2)
monitor_tmc_driver(stepperY2, need_update_error_counters, need_debug_reporting);
#endif
- #if HAS_HW_COMMS(Z2)
+ #if AXIS_IS_TMC(Z2)
monitor_tmc_driver(stepperZ2, need_update_error_counters, need_debug_reporting);
#endif
- #if HAS_HW_COMMS(Z3)
+ #if AXIS_IS_TMC(Z3)
monitor_tmc_driver(stepperZ3, need_update_error_counters, need_debug_reporting);
#endif
- #if HAS_HW_COMMS(E0)
+ #if AXIS_IS_TMC(E0)
monitor_tmc_driver(stepperE0, need_update_error_counters, need_debug_reporting);
#endif
- #if HAS_HW_COMMS(E1)
+ #if AXIS_IS_TMC(E1)
monitor_tmc_driver(stepperE1, need_update_error_counters, need_debug_reporting);
#endif
- #if HAS_HW_COMMS(E2)
+ #if AXIS_IS_TMC(E2)
monitor_tmc_driver(stepperE2, need_update_error_counters, need_debug_reporting);
#endif
- #if HAS_HW_COMMS(E3)
+ #if AXIS_IS_TMC(E3)
monitor_tmc_driver(stepperE3, need_update_error_counters, need_debug_reporting);
#endif
- #if HAS_HW_COMMS(E4)
+ #if AXIS_IS_TMC(E4)
monitor_tmc_driver(stepperE4, need_update_error_counters, need_debug_reporting);
#endif
- #if HAS_HW_COMMS(E5)
+ #if AXIS_IS_TMC(E5)
monitor_tmc_driver(stepperE5, need_update_error_counters, need_debug_reporting);
#endif
@@ -471,8 +469,8 @@
template
static void print_vsense(TMC &st) { serialprintPGM(st.vsense() ? PSTR("1=.18") : PSTR("0=.325")); }
- #if HAS_TMCX1X0
- static void tmc_status(TMC2130Stepper &st, const TMC_debug_enum i) {
+ #if HAS_DRIVER(TMC2130) || HAS_DRIVER(TMC5130)
+ static void _tmc_status(TMC2130Stepper &st, const TMC_debug_enum i) {
switch (i) {
case TMC_PWM_SCALE: SERIAL_PRINT(st.PWM_SCALE(), DEC); break;
case TMC_SGT: SERIAL_PRINT(st.sgt(), DEC); break;
@@ -480,6 +478,8 @@
default: break;
}
}
+ #endif
+ #if HAS_TMCX1X0
static void _tmc_parse_drv_status(TMC2130Stepper &st, const TMC_drv_status_enum i) {
switch (i) {
case TMC_STALLGUARD: if (st.stallguard()) SERIAL_CHAR('X'); break;
@@ -492,10 +492,13 @@
#endif
#if HAS_DRIVER(TMC2160) || HAS_DRIVER(TMC5160)
- template void print_vsense(TMCMarlin &st) { UNUSED(st); }
- template void print_vsense(TMCMarlin &st) { UNUSED(st); }
+ template
+ void print_vsense(TMCMarlin &) { }
- static void tmc_status(TMC2160Stepper &st, const TMC_debug_enum i) {
+ template
+ void print_vsense(TMCMarlin &) { }
+
+ static void _tmc_status(TMC2160Stepper &st, const TMC_debug_enum i) {
switch (i) {
case TMC_PWM_SCALE: SERIAL_PRINT(st.PWM_SCALE(), DEC); break;
case TMC_SGT: SERIAL_PRINT(st.sgt(), DEC); break;
@@ -513,7 +516,7 @@
#endif
#if HAS_DRIVER(TMC2208)
- static void tmc_status(TMC2208Stepper &st, const TMC_debug_enum i) {
+ static void _tmc_status(TMC2208Stepper &st, const TMC_debug_enum i) {
switch (i) {
case TMC_PWM_SCALE: SERIAL_PRINT(st.pwm_scale_sum(), DEC); break;
case TMC_STEALTHCHOP: serialprint_truefalse(st.stealth()); break;
@@ -539,7 +542,7 @@
#endif
template
- static void tmc_status(TMC &st, const TMC_debug_enum i, const float spmm) {
+ static void tmc_status(TMC &st, const TMC_debug_enum i) {
SERIAL_CHAR('\t');
switch (i) {
case TMC_CODES: st.printLabel(); break;
@@ -573,9 +576,9 @@
}
break;
case TMC_TPWMTHRS_MMS: {
- uint32_t tpwmthrs_val = st.TPWMTHRS();
+ uint32_t tpwmthrs_val = st.get_pwm_thrs();
if (tpwmthrs_val)
- SERIAL_ECHO(12650000UL * st.microsteps() / (256 * tpwmthrs_val * spmm));
+ SERIAL_ECHO(tpwmthrs_val);
else
SERIAL_CHAR('-');
}
@@ -588,13 +591,13 @@
case TMC_TBL: SERIAL_PRINT(st.blank_time(), DEC); break;
case TMC_HEND: SERIAL_PRINT(st.hysteresis_end(), DEC); break;
case TMC_HSTRT: SERIAL_PRINT(st.hysteresis_start(), DEC); break;
- default: tmc_status(st, i); break;
+ default: _tmc_status(st, i); break;
}
}
#if HAS_DRIVER(TMC2660)
- template
- void tmc_status(TMCMarlin &st, const TMC_debug_enum i, const float) {
+ template
+ void tmc_status(TMCMarlin &st, const TMC_debug_enum i) {
SERIAL_CHAR('\t');
switch (i) {
case TMC_CODES: st.printLabel(); break;
@@ -649,72 +652,52 @@
static void tmc_debug_loop(const TMC_debug_enum i, const bool print_x, const bool print_y, const bool print_z, const bool print_e) {
if (print_x) {
#if AXIS_IS_TMC(X)
- tmc_status(stepperX, i, planner.settings.axis_steps_per_mm[X_AXIS]);
+ tmc_status(stepperX, i);
#endif
#if AXIS_IS_TMC(X2)
- tmc_status(stepperX2, i, planner.settings.axis_steps_per_mm[X_AXIS]);
+ tmc_status(stepperX2, i);
#endif
}
if (print_y) {
#if AXIS_IS_TMC(Y)
- tmc_status(stepperY, i, planner.settings.axis_steps_per_mm[Y_AXIS]);
+ tmc_status(stepperY, i);
#endif
#if AXIS_IS_TMC(Y2)
- tmc_status(stepperY2, i, planner.settings.axis_steps_per_mm[Y_AXIS]);
+ tmc_status(stepperY2, i);
#endif
}
if (print_z) {
#if AXIS_IS_TMC(Z)
- tmc_status(stepperZ, i, planner.settings.axis_steps_per_mm[Z_AXIS]);
+ tmc_status(stepperZ, i);
#endif
#if AXIS_IS_TMC(Z2)
- tmc_status(stepperZ2, i, planner.settings.axis_steps_per_mm[Z_AXIS]);
+ tmc_status(stepperZ2, i);
#endif
#if AXIS_IS_TMC(Z3)
- tmc_status(stepperZ3, i, planner.settings.axis_steps_per_mm[Z_AXIS]);
+ tmc_status(stepperZ3, i);
#endif
}
if (print_e) {
#if AXIS_IS_TMC(E0)
- tmc_status(stepperE0, i, planner.settings.axis_steps_per_mm[E_AXIS]);
+ tmc_status(stepperE0, i);
#endif
#if AXIS_IS_TMC(E1)
- tmc_status(stepperE1, i, planner.settings.axis_steps_per_mm[E_AXIS
- #if ENABLED(DISTINCT_E_FACTORS)
- + 1
- #endif
- ]);
+ tmc_status(stepperE1, i);
#endif
#if AXIS_IS_TMC(E2)
- tmc_status(stepperE2, i, planner.settings.axis_steps_per_mm[E_AXIS
- #if ENABLED(DISTINCT_E_FACTORS)
- + 2
- #endif
- ]);
+ tmc_status(stepperE2, i);
#endif
#if AXIS_IS_TMC(E3)
- tmc_status(stepperE3, i, planner.settings.axis_steps_per_mm[E_AXIS
- #if ENABLED(DISTINCT_E_FACTORS)
- + 3
- #endif
- ]);
+ tmc_status(stepperE3, i);
#endif
#if AXIS_IS_TMC(E4)
- tmc_status(stepperE4, i, planner.settings.axis_steps_per_mm[E_AXIS
- #if ENABLED(DISTINCT_E_FACTORS)
- + 4
- #endif
- ]);
+ tmc_status(stepperE4, i);
#endif
#if AXIS_IS_TMC(E5)
- tmc_status(stepperE5, i, planner.settings.axis_steps_per_mm[E_AXIS
- #if ENABLED(DISTINCT_E_FACTORS)
- + 5
- #endif
- ]);
+ tmc_status(stepperE5, i);
#endif
}
@@ -877,8 +860,8 @@
}
#endif
#if HAS_DRIVER(TMC2660)
- template
- static void tmc_get_registers(TMCMarlin &st, const TMC_get_registers_enum i) {
+ template
+ static void tmc_get_registers(TMCMarlin &st, const TMC_get_registers_enum i) {
switch (i) {
case TMC_AXIS_CODES: SERIAL_CHAR('\t'); st.printLabel(); break;
PRINT_TMC_REGISTER(DRVCONF);
@@ -1118,49 +1101,4 @@ void test_tmc_connection(const bool test_x, const bool test_y, const bool test_z
if (axis_connection) ui.set_status_P(PSTR("TMC CONNECTION ERROR"));
}
-#if HAS_LCD_MENU
-
- void init_tmc_section() {
- #if AXIS_IS_TMC(X)
- stepperX.init_lcd_variables(X_AXIS);
- #endif
- #if AXIS_IS_TMC(Y)
- stepperY.init_lcd_variables(Y_AXIS);
- #endif
- #if AXIS_IS_TMC(Z)
- stepperZ.init_lcd_variables(Z_AXIS);
- #endif
- #if AXIS_IS_TMC(X2)
- stepperX2.init_lcd_variables(X_AXIS);
- #endif
- #if AXIS_IS_TMC(Y2)
- stepperY2.init_lcd_variables(Y_AXIS);
- #endif
- #if AXIS_IS_TMC(Z2)
- stepperZ2.init_lcd_variables(Z_AXIS);
- #endif
- #if AXIS_IS_TMC(Z3)
- stepperZ3.init_lcd_variables(Z_AXIS);
- #endif
- #if AXIS_IS_TMC(E0)
- stepperE0.init_lcd_variables(E_AXIS);
- #endif
- #if AXIS_IS_TMC(E1)
- stepperE1.init_lcd_variables(E_AXIS_N(1));
- #endif
- #if AXIS_IS_TMC(E2)
- stepperE2.init_lcd_variables(E_AXIS_N(2));
- #endif
- #if AXIS_IS_TMC(E3)
- stepperE3.init_lcd_variables(E_AXIS_N(3));
- #endif
- #if AXIS_IS_TMC(E4)
- stepperE4.init_lcd_variables(E_AXIS_N(4));
- #endif
- #if AXIS_IS_TMC(E5)
- stepperE5.init_lcd_variables(E_AXIS_N(5));
- #endif
- }
-#endif
-
#endif // HAS_TRINAMIC
diff --git a/Marlin/src/feature/tmc_util.h b/Marlin/src/feature/tmc_util.h
index 132efbb79e..1e73a02c20 100644
--- a/Marlin/src/feature/tmc_util.h
+++ b/Marlin/src/feature/tmc_util.h
@@ -23,12 +23,11 @@
#include "../inc/MarlinConfig.h"
#include "../lcd/ultralcd.h"
+
#if HAS_TRINAMIC
- #include
-#endif
-#if HAS_LCD_MENU
- #include "../module/planner.h"
-#endif
+
+#include
+#include "../module/planner.h"
#define TMC_X_LABEL 'X', '0'
#define TMC_Y_LABEL 'Y', '0'
@@ -57,7 +56,7 @@
#define MONITOR_DRIVER_STATUS_INTERVAL_MS 500u
#endif
-constexpr uint16_t _tmc_thrs(const uint16_t msteps, const int32_t thrs, const uint32_t spmm) {
+constexpr uint16_t _tmc_thrs(const uint16_t msteps, const uint32_t thrs, const uint32_t spmm) {
return 12650000UL * msteps / (256 * thrs * spmm);
}
@@ -92,13 +91,13 @@ class TMCStorage {
#if ENABLED(HYBRID_THRESHOLD)
uint8_t hybrid_thrs = 0;
#endif
- #if ENABLED(SENSORLESS_HOMING)
+ #if USE_SENSORLESS
int8_t homing_thrs = 0;
#endif
} stored;
};
-template
+template
class TMCMarlin : public TMC, public TMCStorage {
public:
TMCMarlin(uint16_t cs_pin, float RS) :
@@ -121,30 +120,40 @@ class TMCMarlin : public TMC, public TMCStorage {
inline void refresh_stepping_mode() { this->en_pwm_mode(this->stored.stealthChop_enabled); }
inline bool get_stealthChop_status() { return this->en_pwm_mode(); }
#endif
-
- #if HAS_LCD_MENU
-
- inline void init_lcd_variables(const AxisEnum spmm_id) {
- #if ENABLED(HYBRID_THRESHOLD)
- this->stored.hybrid_thrs = _tmc_thrs(this->microsteps(), this->TPWMTHRS(), planner.settings.axis_steps_per_mm[spmm_id]);
- #endif
- #if ENABLED(SENSORLESS_HOMING)
- this->stored.homing_thrs = this->sgt();
+ #if ENABLED(HYBRID_THRESHOLD)
+ uint32_t get_pwm_thrs() {
+ return _tmc_thrs(this->microsteps(), this->TPWMTHRS(), planner.settings.axis_steps_per_mm[AXIS_ID]);
+ }
+ void set_pwm_thrs(const uint32_t thrs) {
+ TMC::TPWMTHRS(_tmc_thrs(this->microsteps(), thrs, planner.settings.axis_steps_per_mm[AXIS_ID]));
+ #if HAS_LCD_MENU
+ this->stored.hybrid_thrs = thrs;
#endif
}
+ #endif
+ #if USE_SENSORLESS
+ inline int8_t sgt() { return TMC::sgt(); }
+ void sgt(const int8_t sgt_val) {
+ TMC::sgt(sgt_val);
+ #if HAS_LCD_MENU
+ this->stored.homing_thrs = sgt_val;
+ #endif
+ }
+ #endif
+ #if HAS_LCD_MENU
inline void refresh_stepper_current() { rms_current(this->val_mA); }
#if ENABLED(HYBRID_THRESHOLD)
- inline void refresh_hybrid_thrs(float spmm) { this->TPWMTHRS(_tmc_thrs(this->microsteps(), this->stored.hybrid_thrs, spmm)); }
+ inline void refresh_hybrid_thrs() { set_pwm_thrs(this->stored.hybrid_thrs); }
#endif
- #if ENABLED(SENSORLESS_HOMING)
- inline void refresh_homing_thrs() { this->sgt(this->stored.homing_thrs); }
+ #if USE_SENSORLESS
+ inline void refresh_homing_thrs() { sgt(this->stored.homing_thrs); }
#endif
#endif
};
-template
-class TMCMarlin : public TMC2208Stepper, public TMCStorage {
+template
+class TMCMarlin : public TMC2208Stepper, public TMCStorage {
public:
TMCMarlin(Stream * SerialPort, float RS, bool has_rx=true) :
TMC2208Stepper(SerialPort, RS, has_rx=true)
@@ -166,24 +175,28 @@ class TMCMarlin : public TMC2208Stepper,
inline void refresh_stepping_mode() { en_spreadCycle(!this->stored.stealthChop_enabled); }
inline bool get_stealthChop_status() { return !this->en_spreadCycle(); }
#endif
-
- #if HAS_LCD_MENU
-
- inline void init_lcd_variables(const AxisEnum spmm_id) {
- #if ENABLED(HYBRID_THRESHOLD)
- this->stored.hybrid_thrs = _tmc_thrs(this->microsteps(), this->TPWMTHRS(), planner.settings.axis_steps_per_mm[spmm_id]);
+ #if ENABLED(HYBRID_THRESHOLD)
+ uint32_t get_pwm_thrs() {
+ return _tmc_thrs(this->microsteps(), this->TPWMTHRS(), planner.settings.axis_steps_per_mm[AXIS_ID]);
+ }
+ void set_pwm_thrs(const uint32_t thrs) {
+ TMC2208Stepper::TPWMTHRS(_tmc_thrs(this->microsteps(), thrs, planner.settings.axis_steps_per_mm[AXIS_ID]));
+ #if HAS_LCD_MENU
+ this->stored.hybrid_thrs = thrs;
#endif
}
+ #endif
+ #if HAS_LCD_MENU
inline void refresh_stepper_current() { rms_current(this->val_mA); }
#if ENABLED(HYBRID_THRESHOLD)
- inline void refresh_hybrid_thrs(float spmm) { this->TPWMTHRS(_tmc_thrs(this->microsteps(), this->stored.hybrid_thrs, spmm)); }
+ inline void refresh_hybrid_thrs() { set_pwm_thrs(this->stored.hybrid_thrs); }
#endif
#endif
};
-template
-class TMCMarlin : public TMC2660Stepper, public TMCStorage {
+template
+class TMCMarlin : public TMC2660Stepper, public TMCStorage {
public:
TMCMarlin(uint16_t cs_pin, float RS) :
TMC2660Stepper(cs_pin, RS)
@@ -197,30 +210,30 @@ class TMCMarlin : public TMC2660Stepper,
TMC2660Stepper::rms_current(mA);
}
- #if HAS_LCD_MENU
- inline void init_lcd_variables(const AxisEnum spmm_id) {
- #if ENABLED(SENSORLESS_HOMING)
- this->stored.homing_thrs = this->sgt();
+ #if USE_SENSORLESS
+ inline int8_t sgt() { return TMC2660Stepper::sgt(); }
+ void sgt(const int8_t sgt_val) {
+ TMC2660Stepper::sgt(sgt_val);
+ #if HAS_LCD_MENU
+ this->stored.homing_thrs = sgt_val;
#endif
}
+ #endif
+ #if HAS_LCD_MENU
inline void refresh_stepper_current() { rms_current(this->val_mA); }
- #if ENABLED(SENSORLESS_HOMING)
- inline void refresh_homing_thrs() { this->sgt(this->stored.homing_thrs); }
+ #if USE_SENSORLESS
+ inline void refresh_homing_thrs() { sgt(this->stored.homing_thrs); }
#endif
#endif
};
template
-void tmc_get_current(TMC &st) {
+void tmc_print_current(TMC &st) {
st.printLabel();
SERIAL_ECHOLNPAIR(" driver current: ", st.getMilliamps());
}
-template
-void tmc_set_current(TMC &st, const int mA) {
- st.rms_current(mA);
-}
#if ENABLED(MONITOR_DRIVER_STATUS)
template
@@ -237,25 +250,21 @@ void tmc_set_current(TMC &st, const int mA) {
SERIAL_ECHOLNPGM(" prewarn flag cleared");
}
#endif
-template
-void tmc_get_pwmthrs(TMC &st, const uint16_t spmm) {
- st.printLabel();
- SERIAL_ECHOLNPAIR(" stealthChop max speed: ", _tmc_thrs(st.microsteps(), st.TPWMTHRS(), spmm));
-}
-template
-void tmc_set_pwmthrs(TMC &st, const int32_t thrs, const uint32_t spmm) {
- st.TPWMTHRS(_tmc_thrs(st.microsteps(), thrs, spmm));
-}
-template
-void tmc_get_sgt(TMC &st) {
- st.printLabel();
- SERIAL_ECHOPGM(" homing sensitivity: ");
- SERIAL_PRINTLN(st.sgt(), DEC);
-}
-template
-void tmc_set_sgt(TMC &st, const int8_t sgt_val) {
- st.sgt(sgt_val);
-}
+#if ENABLED(HYBRID_THRESHOLD)
+ template
+ void tmc_print_pwmthrs(TMC &st) {
+ st.printLabel();
+ SERIAL_ECHOLNPAIR(" stealthChop max speed: ", st.get_pwm_thrs());
+ }
+#endif
+#if USE_SENSORLESS
+ template
+ void tmc_print_sgt(TMC &st) {
+ st.printLabel();
+ SERIAL_ECHOPGM(" homing sensitivity: ");
+ SERIAL_PRINTLN(st.sgt(), DEC);
+ }
+#endif
void monitor_tmc_driver();
void test_tmc_connection(const bool test_x, const bool test_y, const bool test_z, const bool test_e);
@@ -268,10 +277,6 @@ void test_tmc_connection(const bool test_x, const bool test_y, const bool test_z
void tmc_get_registers(const bool print_x, const bool print_y, const bool print_z, const bool print_e);
#endif
-#if HAS_LCD_MENU
- void init_tmc_section();
-#endif
-
/**
* TMC2130 specific sensorless homing using stallGuard2.
* stallGuard2 only works when in spreadCycle mode.
@@ -295,3 +300,5 @@ void test_tmc_connection(const bool test_x, const bool test_y, const bool test_z
#if TMC_HAS_SPI
void tmc_init_cs_pins();
#endif
+
+#endif // HAS_TRINAMIC
diff --git a/Marlin/src/gcode/calibrate/G28.cpp b/Marlin/src/gcode/calibrate/G28.cpp
index 1a6922cfa4..c191eeae3b 100644
--- a/Marlin/src/gcode/calibrate/G28.cpp
+++ b/Marlin/src/gcode/calibrate/G28.cpp
@@ -237,10 +237,6 @@ void GcodeSuite::G28(const bool always_home_all) {
workspace_plane = PLANE_XY;
#endif
- #if ENABLED(BLTOUCH)
- bltouch.init();
- #endif
-
// Always home with tool 0 active
#if HOTENDS > 1
#if DISABLED(DELTA) || ENABLED(DELTA_HOME_TO_SAFE_ZONE)
@@ -353,6 +349,9 @@ void GcodeSuite::G28(const bool always_home_all) {
// Home Z last if homing towards the bed
#if Z_HOME_DIR < 0
if (doZ) {
+ #if ENABLED(BLTOUCH)
+ bltouch.init();
+ #endif
#if ENABLED(Z_SAFE_HOMING)
home_z_safely();
#else
diff --git a/Marlin/src/gcode/calibrate/G34_M422.cpp b/Marlin/src/gcode/calibrate/G34_M422.cpp
index 66fa800169..666ddc38ff 100644
--- a/Marlin/src/gcode/calibrate/G34_M422.cpp
+++ b/Marlin/src/gcode/calibrate/G34_M422.cpp
@@ -73,11 +73,6 @@ void GcodeSuite::G34() {
do { // break out on error
- if (!TEST(axis_known_position, X_AXIS) || !TEST(axis_known_position, Y_AXIS)) {
- if (DEBUGGING(LEVELING)) DEBUG_ECHOLNPGM("> XY homing required.");
- break;
- }
-
const int8_t z_auto_align_iterations = parser.intval('I', Z_STEPPER_ALIGN_ITERATIONS);
if (!WITHIN(z_auto_align_iterations, 1, 30)) {
SERIAL_ECHOLNPGM("?(I)teration out of bounds (1-30).");
@@ -111,10 +106,6 @@ void GcodeSuite::G34() {
workspace_plane = PLANE_XY;
#endif
- #if ENABLED(BLTOUCH)
- bltouch.init();
- #endif
-
// Always home with tool 0 active
#if HOTENDS > 1
const uint8_t old_tool_index = active_extruder;
@@ -125,70 +116,122 @@ void GcodeSuite::G34() {
extruder_duplication_enabled = false;
#endif
- // Before moving other axes raise Z, if needed. Never lower Z.
- if (current_position[Z_AXIS] < Z_CLEARANCE_BETWEEN_PROBES) {
- if (DEBUGGING(LEVELING)) DEBUG_ECHOLNPAIR("Raise Z (before moving to probe pos) to ", Z_CLEARANCE_BETWEEN_PROBES);
- do_blocking_move_to_z(Z_CLEARANCE_BETWEEN_PROBES);
- }
+ #if BOTH(BLTOUCH, BLTOUCH_HS_MODE)
+ // In BLTOUCH HS mode, the probe travels in a deployed state.
+ // Users of G34 might have a badly misaligned bed, so raise Z by the
+ // length of the deployed pin (BLTOUCH stroke < 7mm)
+ #define Z_BASIC_CLEARANCE Z_CLEARANCE_BETWEEN_PROBES + 7.0f
+ #else
+ #define Z_BASIC_CLEARANCE Z_CLEARANCE_BETWEEN_PROBES
+ #endif
+
+ // 0.05 is a 5% incline. On a 300mm bed that would be a misalignment of about 1.5cm.
+ // This angle is the maximum misalignment catered for
+ #define MAX_ANGLE 0.05f
+ float z_probe = Z_BASIC_CLEARANCE + MAX_ANGLE * (
+ #if ENABLED(Z_TRIPLE_STEPPER_DRIVERS)
+ SQRT(MAX(HYPOT2(z_auto_align_xpos[0] - z_auto_align_ypos[0], z_auto_align_xpos[1] - z_auto_align_ypos[1]),
+ HYPOT2(z_auto_align_xpos[1] - z_auto_align_ypos[1], z_auto_align_xpos[2] - z_auto_align_ypos[2]),
+ HYPOT2(z_auto_align_xpos[2] - z_auto_align_ypos[2], z_auto_align_xpos[0] - z_auto_align_ypos[0])))
+ #else
+ HYPOT(z_auto_align_xpos[0] - z_auto_align_ypos[0], z_auto_align_xpos[1] - z_auto_align_ypos[1])
+ #endif
+ );
+
+ // Home before the alignment procedure
+ gcode.G28(false);
+
+ // Move the Z coordinate realm towards the positive - dirty trick
+ current_position[Z_AXIS] -= z_probe * 0.5;
- // Remember corrections to determine errors on each iteration
float last_z_align_move[Z_STEPPER_COUNT] = ARRAY_N(Z_STEPPER_COUNT, 10000.0f, 10000.0f, 10000.0f),
- z_measured[Z_STEPPER_COUNT] = { 0 };
+ z_measured[Z_STEPPER_COUNT] = { 0 },
+ z_maxdiff = 0.0f,
+ amplification = z_auto_align_amplification;
+
+ uint8_t iteration;
bool err_break = false;
- for (uint8_t iteration = 0; iteration < z_auto_align_iterations; ++iteration) {
+ for (iteration = 0; iteration < z_auto_align_iterations; ++iteration) {
if (DEBUGGING(LEVELING)) DEBUG_ECHOLNPGM("> probing all positions.");
- // Reset minimum value
- float z_measured_min = 100000.0f;
- // For each iteration go through all probe positions (one per Z-Stepper)
- for (uint8_t zstepper = 0; zstepper < Z_STEPPER_COUNT; ++zstepper) {
- // Probe a Z height for each stepper
- z_measured[zstepper] = probe_pt(z_auto_align_xpos[zstepper], z_auto_align_ypos[zstepper], PROBE_PT_RAISE, false);
+ SERIAL_ECHOLNPAIR(" \nITERATION: ", int(iteration + 1));
- // Stop on error
- if (isnan(z_measured[zstepper])) {
- if (DEBUGGING(LEVELING)) DEBUG_ECHOLNPGM("> PROBING FAILED!");
+ // Initialize minimum value
+ float z_measured_min = 100000.0f;
+ // Probe all positions (one per Z-Stepper)
+ for (uint8_t zstepper = 0; zstepper < Z_STEPPER_COUNT; ++zstepper) {
+ // Safe clearance even on an incline
+ do_blocking_move_to_z(z_probe);
+
+ // Probe a Z height for each stepper
+ if (isnan(probe_pt(z_auto_align_xpos[zstepper], z_auto_align_ypos[zstepper], PROBE_PT_RAISE, 0, true))) {
+ SERIAL_ECHOLNPGM("Probing failed.");
err_break = true;
break;
}
+ // This is not the trigger Z value. It is the position of the probe after raising it.
+ // It is higher than the trigger value by a constant value (not known here). This value
+ // is more useful for determining the desired next iteration Z position for probing. It is
+ // equally well suited for determining the misalignment, just like the trigger position would be.
+ z_measured[zstepper] = current_position[Z_AXIS];
if (DEBUGGING(LEVELING)) DEBUG_ECHOLNPAIR("> Z", int(zstepper + 1), " measured position is ", z_measured[zstepper]);
- // Remember the maximum position to calculate the correction
+ // Remember the minimum measurement to calculate the correction later on
z_measured_min = MIN(z_measured_min, z_measured[zstepper]);
- }
+ } // for (zstepper)
if (err_break) break;
- // Remember the current z position to return to
- float z_original_position = current_position[Z_AXIS];
+ // Adapt the next probe clearance height based on the new measurements.
+ // Safe_height = lowest distance to bed (= highest measurement) plus highest measured misalignment.
+ SERIAL_EOL();
+ #if ENABLED(Z_TRIPLE_STEPPER_DRIVERS)
+ z_maxdiff = MAX(ABS(z_measured[0] - z_measured[1]), ABS(z_measured[1] - z_measured[2]), ABS(z_measured[2] - z_measured[0]));
+ z_probe = Z_BASIC_CLEARANCE + MAX(z_measured[0], z_measured[1], z_measured[2]) + z_maxdiff;
+ SERIAL_ECHOLNPAIR("DIFFERENCE Z1-Z2: ", ABS(z_measured[0] - z_measured[1]),
+ "DIFFERENCE Z2-Z3: ", ABS(z_measured[1] - z_measured[2]),
+ "DIFFERENCE Z3-Z1: ", ABS(z_measured[2] - z_measured[0]));
+ #else
+ z_maxdiff = ABS(z_measured[0] - z_measured[1]);
+ z_probe = Z_BASIC_CLEARANCE + MAX(z_measured[0], z_measured[1]) + z_maxdiff;
+ SERIAL_ECHOLNPAIR("DIFFERENCE Z1-Z2: ", ABS(z_measured[0] - z_measured[1]));
+ #endif
+ SERIAL_EOL();
+
+ // Raise to the new next probing height right away
+ do_blocking_move_to_z(z_probe);
+
+ // The following correction actions are to be enabled for select Z-steppers only
+ stepper.set_separate_multi_axis(true);
- // Iterations can stop early if all corrections are below required accuracy
bool success_break = true;
- // Correct stepper offsets and re-iterate
+ // Correct the individual stepper offsets
for (uint8_t zstepper = 0; zstepper < Z_STEPPER_COUNT; ++zstepper) {
- stepper.set_separate_multi_axis(true);
- set_all_z_lock(true); // Steppers will be enabled separately
-
// Calculate current stepper move
const float z_align_move = z_measured[zstepper] - z_measured_min,
z_align_abs = ABS(z_align_move);
- // Check for lost accuracy compared to last move
+ // Optimize one iterations correction based on the first measurements
+ if (z_align_abs > 0.0f) amplification = iteration == 1 ? MIN(last_z_align_move[zstepper] / z_align_abs, 2.0f) : z_auto_align_amplification;
+
+ // Check for less accuracy compared to last move
if (last_z_align_move[zstepper] < z_align_abs - 1.0) {
- // Stop here
- if (DEBUGGING(LEVELING)) DEBUG_ECHOLNPGM("> detected decreasing accuracy.");
+ SERIAL_ECHOLNPGM("Decreasing accuracy detected.");
err_break = true;
break;
}
- else
- last_z_align_move[zstepper] = z_align_abs;
+
+ // Remember the alignment for the next iteration
+ last_z_align_move[zstepper] = z_align_abs;
- // Only stop early if all measured points achieve accuracy target
+ // Stop early if all measured points achieve accuracy target
if (z_align_abs > z_auto_align_accuracy) success_break = false;
if (DEBUGGING(LEVELING)) DEBUG_ECHOLNPAIR("> Z", int(zstepper + 1), " corrected by ", z_align_move);
+ // Lock all steppers except one
+ set_all_z_lock(true);
switch (zstepper) {
case 0: stepper.set_z_lock(false); break;
case 1: stepper.set_z2_lock(false); break;
@@ -197,26 +240,25 @@ void GcodeSuite::G34() {
#endif
}
- // This will lose home position and require re-homing
- do_blocking_move_to_z(z_auto_align_amplification * z_align_move + current_position[Z_AXIS]);
- }
+ // Do a move to correct part of the misalignment for the current stepper
+ do_blocking_move_to_z(amplification * z_align_move + current_position[Z_AXIS]);
+ } // for (zstepper)
+
+ // Back to normal stepper operations
+ set_all_z_lock(false);
+ stepper.set_separate_multi_axis(false);
if (err_break) break;
- // Move Z back to previous position
- set_all_z_lock(true);
- do_blocking_move_to_z(z_original_position);
- set_all_z_lock(false);
+ if (success_break) { SERIAL_ECHOLNPGM("Target accuracy achieved."); break; }
- stepper.set_separate_multi_axis(false);
+ } // for (iteration)
- if (success_break) {
- if (DEBUGGING(LEVELING)) DEBUG_ECHOLNPGM("> achieved target accuracy.");
- break;
- }
- }
+ if (err_break) { SERIAL_ECHOLNPGM("Aborted due to error."); break; }
- if (err_break) break;
+ SERIAL_ECHOLNPAIR("Performed iterations: ", int(iteration + (iteration != z_auto_align_iterations)), " of ", int(z_auto_align_iterations));
+ SERIAL_ECHOLNPAIR_F("Achieved accuracy: ", z_maxdiff);
+ SERIAL_EOL();
// Restore the active tool after homing
#if HOTENDS > 1
@@ -229,15 +271,20 @@ void GcodeSuite::G34() {
));
#endif
- #if HAS_LEVELING
- #if ENABLED(RESTORE_LEVELING_AFTER_G34)
- set_bed_leveling_enabled(leveling_was_active);
- #endif
+ #if HAS_LEVELING && ENABLED(RESTORE_LEVELING_AFTER_G34)
+ set_bed_leveling_enabled(leveling_was_active);
#endif
// After this operation the z position needs correction
set_axis_is_not_at_home(Z_AXIS);
+ #if BOTH(BLTOUCH, BLTOUCH_HS_MODE)
+ // In BLTOUCH HS mode, the pin is still deployed at this point.
+ // The upcoming G28 means travel, so it is better to stow the pin.
+ bltouch._stow();
+ #endif
+
+ // Home after the alignment procedure
gcode.G28(false);
} while(0);
diff --git a/Marlin/src/gcode/calibrate/G425.cpp b/Marlin/src/gcode/calibrate/G425.cpp
index fd854bf77d..7d729437a1 100644
--- a/Marlin/src/gcode/calibrate/G425.cpp
+++ b/Marlin/src/gcode/calibrate/G425.cpp
@@ -25,14 +25,17 @@
#if ENABLED(CALIBRATION_GCODE)
#include "../gcode.h"
+
+#if ENABLED(BACKLASH_GCODE)
+ #include "../../feature/backlash.h"
+#endif
+
#include "../../lcd/ultralcd.h"
#include "../../module/motion.h"
#include "../../module/planner.h"
#include "../../module/tool_change.h"
#include "../../module/endstops.h"
#include "../../feature/bedlevel/bedlevel.h"
-#include "../../feature/backlash.h"
-
/**
* G425 backs away from the calibration object by various distances
diff --git a/Marlin/src/gcode/config/M43.cpp b/Marlin/src/gcode/config/M43.cpp
index e1445eaf6d..c46e7005be 100644
--- a/Marlin/src/gcode/config/M43.cpp
+++ b/Marlin/src/gcode/config/M43.cpp
@@ -34,6 +34,10 @@
#include "../../module/servo.h"
#endif
+#if ENABLED(BLTOUCH)
+ #include "../../feature/bltouch.h"
+#endif
+
#if ENABLED(HOST_PROMPT_SUPPORT)
#include "../../feature/host_actions.h"
#endif
@@ -91,122 +95,152 @@ inline void toggle_pins() {
} // toggle_pins
inline void servo_probe_test() {
+
#if !(NUM_SERVOS > 0 && HAS_SERVO_0)
- SERIAL_ERROR_MSG("SERVO not setup");
+ SERIAL_ERROR_MSG("SERVO not set up.");
#elif !HAS_Z_SERVO_PROBE
- SERIAL_ERROR_MSG("Z_PROBE_SERVO_NR not setup");
+ SERIAL_ERROR_MSG("Z_PROBE_SERVO_NR not set up.");
#else // HAS_Z_SERVO_PROBE
const uint8_t probe_index = parser.byteval('P', Z_PROBE_SERVO_NR);
- SERIAL_ECHOLNPGM("Servo probe test");
- SERIAL_ECHOLNPAIR(". using index: ", probe_index);
- SERIAL_ECHOLNPAIR(". deploy angle: ", servo_angles[probe_index][0]);
- SERIAL_ECHOLNPAIR(". stow angle: ", servo_angles[probe_index][1]);
+ SERIAL_ECHOLNPAIR("Servo probe test\n"
+ ". using index: ", int(probe_index),
+ ", deploy angle: ", servo_angles[probe_index][0],
+ ", stow angle: ", servo_angles[probe_index][1]
+ );
- bool probe_inverting;
+ bool deploy_state, stow_state;
#if ENABLED(Z_MIN_PROBE_USES_Z_MIN_ENDSTOP_PIN)
#define PROBE_TEST_PIN Z_MIN_PIN
+ constexpr bool probe_inverting = Z_MIN_ENDSTOP_INVERTING;
- SERIAL_ECHOLNPAIR(". probe uses Z_MIN pin: ", PROBE_TEST_PIN);
- SERIAL_ECHOLNPGM(". uses Z_MIN_ENDSTOP_INVERTING (ignores Z_MIN_PROBE_ENDSTOP_INVERTING)");
+ SERIAL_ECHOLNPAIR(". Probe Z_MIN_PIN: ", int(PROBE_TEST_PIN));
SERIAL_ECHOPGM(". Z_MIN_ENDSTOP_INVERTING: ");
- #if Z_MIN_ENDSTOP_INVERTING
- SERIAL_ECHOLNPGM("true");
- #else
- SERIAL_ECHOLNPGM("false");
- #endif
-
- probe_inverting = Z_MIN_ENDSTOP_INVERTING;
-
- #elif USES_Z_MIN_PROBE_ENDSTOP
+ #else
#define PROBE_TEST_PIN Z_MIN_PROBE_PIN
- SERIAL_ECHOLNPAIR(". probe uses Z_MIN_PROBE_PIN: ", PROBE_TEST_PIN);
- SERIAL_ECHOLNPGM(". uses Z_MIN_PROBE_ENDSTOP_INVERTING (ignores Z_MIN_ENDSTOP_INVERTING)");
- SERIAL_ECHOPGM(". Z_MIN_PROBE_ENDSTOP_INVERTING: ");
+ constexpr bool probe_inverting = Z_MIN_PROBE_ENDSTOP_INVERTING;
- #if Z_MIN_PROBE_ENDSTOP_INVERTING
- SERIAL_ECHOLNPGM("true");
- #else
- SERIAL_ECHOLNPGM("false");
- #endif
-
- probe_inverting = Z_MIN_PROBE_ENDSTOP_INVERTING;
+ SERIAL_ECHOLNPAIR(". Probe Z_MIN_PROBE_PIN: ", int(PROBE_TEST_PIN));
+ SERIAL_ECHOPGM( ". Z_MIN_PROBE_ENDSTOP_INVERTING: ");
#endif
- SERIAL_ECHOLNPGM(". deploy & stow 4 times");
+ serialprint_truefalse(probe_inverting);
+ SERIAL_EOL();
+
SET_INPUT_PULLUP(PROBE_TEST_PIN);
- uint8_t i = 0;
- bool deploy_state, stow_state;
- do {
- MOVE_SERVO(probe_index, servo_angles[Z_PROBE_SERVO_NR][0]); // Deploy
- safe_delay(500);
- deploy_state = READ(PROBE_TEST_PIN);
- MOVE_SERVO(probe_index, servo_angles[Z_PROBE_SERVO_NR][1]); // Stow
- safe_delay(500);
- stow_state = READ(PROBE_TEST_PIN);
- } while (++i < 4);
- if (probe_inverting != deploy_state) SERIAL_ECHOLNPGM("WARNING - INVERTING setting probably backwards");
- if (deploy_state != stow_state) {
- SERIAL_ECHOLNPGM("BLTouch clone detected");
- if (deploy_state) {
- SERIAL_ECHOLNPGM(". DEPLOYED state: HIGH (logic 1)");
- SERIAL_ECHOLNPGM(". STOWED (triggered) state: LOW (logic 0)");
+ // First, check for a probe that recognizes an advanced BLTouch sequence.
+ // In addition to STOW and DEPLOY, it uses SW MODE (and RESET in the beginning)
+ // to see if this is one of the following: BLTOUCH Classic 1.2, 1.3, or
+ // BLTouch Smart 1.0, 2.0, 2.2, 3.0, 3.1. But only if the user has actually
+ // configured a BLTouch as being present. If the user has not configured this,
+ // the BLTouch will be detected in the last phase of these tests (see further on).
+ bool blt = false;
+ // This code will try to detect a BLTouch probe or clone
+ #if ENABLED(BLTOUCH)
+ SERIAL_ECHOLNPGM(". Check for BLTOUCH");
+ bltouch._reset();
+ bltouch._stow();
+ if (probe_inverting == READ(PROBE_TEST_PIN)) {
+ bltouch._set_SW_mode();
+ if (probe_inverting != READ(PROBE_TEST_PIN)) {
+ bltouch._deploy();
+ if (probe_inverting == READ(PROBE_TEST_PIN)) {
+ bltouch._stow();
+ SERIAL_ECHOLNPGM("= BLTouch Classic 1.2, 1.3, Smart 1.0, 2.0, 2.2, 3.0, 3.1 detected.");
+ // Check for a 3.1 by letting the user trigger it, later
+ blt = true;
+ }
}
- else {
- SERIAL_ECHOLNPGM(". DEPLOYED state: LOW (logic 0)");
- SERIAL_ECHOLNPGM(". STOWED (triggered) state: HIGH (logic 1)");
- }
- #if ENABLED(BLTOUCH)
- SERIAL_ECHOLNPGM("ERROR: BLTOUCH enabled - set this device up as a Z Servo Probe with inverting as true.");
- #endif
}
- else { // measure active signal length
- MOVE_SERVO(probe_index, servo_angles[Z_PROBE_SERVO_NR][0]); // Deploy
- safe_delay(500);
- SERIAL_ECHOLNPGM("please trigger probe");
- uint16_t probe_counter = 0;
+ #endif
- // Allow 30 seconds max for operator to trigger probe
- for (uint16_t j = 0; j < 500 * 30 && probe_counter == 0 ; j++) {
+ // The following code is common to all kinds of servo probes.
+ // Since it could be a real servo or a BLTouch (any kind) or a clone,
+ // use only "common" functions - i.e. SERVO_MOVE. No bltouch.xxxx stuff.
- safe_delay(2);
+ // If it is already recognised as a being a BLTouch, no need for this test
+ if (!blt) {
+ // DEPLOY and STOW 4 times and see if the signal follows
+ // Then it is a mechanical switch
+ uint8_t i = 0;
+ SERIAL_ECHOLNPGM(". Deploy & stow 4 times");
+ do {
+ MOVE_SERVO(probe_index, servo_angles[Z_PROBE_SERVO_NR][0]); // Deploy
+ safe_delay(500);
+ deploy_state = READ(PROBE_TEST_PIN);
+ MOVE_SERVO(probe_index, servo_angles[Z_PROBE_SERVO_NR][1]); // Stow
+ safe_delay(500);
+ stow_state = READ(PROBE_TEST_PIN);
+ } while (++i < 4);
- if (0 == j % (500 * 1)) gcode.reset_stepper_timeout(); // Keep steppers powered
+ if (probe_inverting != deploy_state) SERIAL_ECHOLNPGM("WARNING: INVERTING setting probably backwards.");
- if (deploy_state != READ(PROBE_TEST_PIN)) { // probe triggered
+ if (deploy_state != stow_state) {
+ SERIAL_ECHOLNPGM("= Mechanical Switch detected");
+ if (deploy_state) {
+ SERIAL_ECHOLNPAIR(" DEPLOYED state: HIGH (logic 1)",
+ " STOWED (triggered) state: LOW (logic 0)");
+ }
+ else {
+ SERIAL_ECHOLNPAIR(" DEPLOYED state: LOW (logic 0)",
+ " STOWED (triggered) state: HIGH (logic 1)");
+ }
+ #if ENABLED(BLTOUCH)
+ SERIAL_ECHOLNPGM("FAIL: BLTOUCH enabled - Set up this device as a Servo Probe with INVERTING set to 'true'.");
+ #endif
+ return;
+ }
+ }
- for (probe_counter = 1; probe_counter < 50 && deploy_state != READ(PROBE_TEST_PIN); ++probe_counter)
- safe_delay(2);
+ // Ask the user for a trigger event and measure the pulse width.
+ MOVE_SERVO(probe_index, servo_angles[Z_PROBE_SERVO_NR][0]); // Deploy
+ safe_delay(500);
+ SERIAL_ECHOLNPGM("** Please trigger probe within 30 sec **");
+ uint16_t probe_counter = 0;
- if (probe_counter == 50)
- SERIAL_ECHOLNPGM("Z Servo Probe detected"); // >= 100mS active time
- else if (probe_counter >= 2)
- SERIAL_ECHOLNPAIR("BLTouch compatible probe detected - pulse width (+/- 4mS): ", probe_counter * 2); // allow 4 - 100mS pulse
- else
- SERIAL_ECHOLNPGM("noise detected - please re-run test"); // less than 2mS pulse
+ // Wait 30 seconds for user to trigger probe
+ for (uint16_t j = 0; j < 500 * 30 && probe_counter == 0 ; j++) {
+ safe_delay(2);
- MOVE_SERVO(probe_index, servo_angles[Z_PROBE_SERVO_NR][1]); // Stow
+ if (0 == j % (500 * 1)) gcode.reset_stepper_timeout(); // Keep steppers powered
- } // pulse detected
+ if (deploy_state != READ(PROBE_TEST_PIN)) { // probe triggered
+ for (probe_counter = 0; probe_counter < 15 && deploy_state != READ(PROBE_TEST_PIN); ++probe_counter) safe_delay(2);
- } // for loop waiting for trigger
+ if (probe_counter == 15)
+ SERIAL_ECHOLNPGM(". Pulse width: 30ms or more");
+ else
+ SERIAL_ECHOLNPAIR(". Pulse width (+/- 4ms): ", probe_counter * 2);
+
+ if (probe_counter >= 4) {
+ if (probe_counter == 15) {
+ if (blt) SERIAL_ECHOPGM("= BLTouch V3.1");
+ else SERIAL_ECHOPGM("= Z Servo Probe");
+ }
+ else SERIAL_ECHOPGM("= BLTouch pre V3.1 or compatible probe");
+ SERIAL_ECHOLNPGM(" detected.");
+ }
+ else SERIAL_ECHOLNPGM("FAIL: Noise detected - please re-run test");
- if (probe_counter == 0) SERIAL_ECHOLNPGM("trigger not detected");
+ MOVE_SERVO(probe_index, servo_angles[Z_PROBE_SERVO_NR][1]); // Stow
+ return;
+ }
+ }
- } // measure active signal length
+ if (!probe_counter) SERIAL_ECHOLNPGM("FAIL: Trigger not detected");
- #endif
+ #endif // HAS_Z_SERVO_PROBE
} // servo_probe_test
@@ -239,12 +273,10 @@ inline void servo_probe_test() {
*/
void GcodeSuite::M43() {
- if (parser.seen('T')) { // must be first or else its "S" and "E" parameters will execute endstop or servo test
- toggle_pins();
- return;
- }
+ // 'T' must be first. It uses 'S' and 'E' differently.
+ if (parser.seen('T')) return toggle_pins();
- // Enable or disable endstop monitoring
+ // 'E' Enable or disable endstop monitoring and return
if (parser.seen('E')) {
endstops.monitor_flag = parser.value_bool();
SERIAL_ECHOPGM("endstop monitor ");
@@ -253,25 +285,23 @@ void GcodeSuite::M43() {
return;
}
- if (parser.seen('S')) {
- servo_probe_test();
- return;
- }
+ // 'S' Run servo probe test and return
+ if (parser.seen('S')) return servo_probe_test();
- // Get the range of pins to test or watch
+ // 'P' Get the range of pins to test or watch
uint8_t first_pin = PARSED_PIN_INDEX('P', 0),
last_pin = parser.seenval('P') ? first_pin : NUMBER_PINS_TOTAL - 1;
if (first_pin > last_pin) return;
+ // 'I' to ignore protected pins
const bool ignore_protection = parser.boolval('I');
- // Watch until click, M108, or reset
+ // 'W' Watch until click, M108, or reset
if (parser.boolval('W')) {
SERIAL_ECHOLNPGM("Watching pins");
-
#ifdef ARDUINO_ARCH_SAM
- NOLESS(first_pin, 2); // don't hijack the UART pins
+ NOLESS(first_pin, 2); // Don't hijack the UART pins
#endif
uint8_t pin_state[last_pin - first_pin + 1];
for (uint8_t i = first_pin; i <= last_pin; i++) {
@@ -280,11 +310,11 @@ void GcodeSuite::M43() {
if (M43_NEVER_TOUCH(i) || (!ignore_protection && pin_is_protected(pin))) continue;
pinMode(pin, INPUT_PULLUP);
delay(1);
- /*
+ /*
if (IS_ANALOG(pin))
pin_state[pin - first_pin] = analogRead(DIGITAL_PIN_TO_ANALOG_PIN(pin)); // int16_t pin_state[...]
else
- //*/
+ //*/
pin_state[i - first_pin] = extDigitalRead(pin);
}
@@ -303,9 +333,9 @@ void GcodeSuite::M43() {
if (M43_NEVER_TOUCH(i) || (!ignore_protection && pin_is_protected(pin))) continue;
const byte val =
/*
- IS_ANALOG(pin)
- ? analogRead(DIGITAL_PIN_TO_ANALOG_PIN(pin)) : // int16_t val
- :
+ IS_ANALOG(pin)
+ ? analogRead(DIGITAL_PIN_TO_ANALOG_PIN(pin)) : // int16_t val
+ :
//*/
extDigitalRead(pin);
if (val != pin_state[i - first_pin]) {
@@ -315,21 +345,18 @@ void GcodeSuite::M43() {
}
#if HAS_RESUME_CONTINUE
- if (!wait_for_user) {
- KEEPALIVE_STATE(IN_HANDLER);
- break;
- }
+ if (!wait_for_user) { KEEPALIVE_STATE(IN_HANDLER); break; }
#endif
safe_delay(200);
}
- return;
}
-
- // Report current state of selected pin(s)
- for (uint8_t i = first_pin; i <= last_pin; i++) {
- pin_t pin = GET_PIN_MAP_PIN(i);
- if (VALID_PIN(pin)) report_pin_state_extended(pin, ignore_protection, true);
+ else {
+ // Report current state of selected pin(s)
+ for (uint8_t i = first_pin; i <= last_pin; i++) {
+ pin_t pin = GET_PIN_MAP_PIN(i);
+ if (VALID_PIN(pin)) report_pin_state_extended(pin, ignore_protection, true);
+ }
}
}
diff --git a/Marlin/src/gcode/control/M226.cpp b/Marlin/src/gcode/control/M226.cpp
index 55f7dd8c50..85ebd837ef 100644
--- a/Marlin/src/gcode/control/M226.cpp
+++ b/Marlin/src/gcode/control/M226.cpp
@@ -45,7 +45,7 @@ void GcodeSuite::M226() {
case 0: target = LOW; break;
case -1: target = !extDigitalRead(pin); break;
}
- while (extDigitalRead(pin) != target) idle();
+ while (int(extDigitalRead(pin)) != target) idle();
}
} // pin_state -1 0 1 && pin > -1
} // parser.seen('P')
diff --git a/Marlin/src/gcode/control/M280.cpp b/Marlin/src/gcode/control/M280.cpp
index e7ee35413f..f973e81b1c 100644
--- a/Marlin/src/gcode/control/M280.cpp
+++ b/Marlin/src/gcode/control/M280.cpp
@@ -34,8 +34,13 @@ void GcodeSuite::M280() {
if (!parser.seen('P')) return;
const int servo_index = parser.value_int();
if (WITHIN(servo_index, 0, NUM_SERVOS - 1)) {
- if (parser.seen('S'))
- MOVE_SERVO(servo_index, parser.value_int());
+ if (parser.seen('S')) {
+ const int a = parser.value_int();
+ if (a == -1)
+ servo[servo_index].detach();
+ else
+ MOVE_SERVO(servo_index, a);
+ }
else {
SERIAL_ECHO_START();
SERIAL_ECHOPAIR(" Servo ", servo_index);
diff --git a/Marlin/src/gcode/feature/L6470/M916-918.cpp b/Marlin/src/gcode/feature/L6470/M916-918.cpp
index 590ae8c541..7744bfe0e3 100644
--- a/Marlin/src/gcode/feature/L6470/M916-918.cpp
+++ b/Marlin/src/gcode/feature/L6470/M916-918.cpp
@@ -34,7 +34,7 @@
/**
*
- * M916: increase KVAL_HOLD until get thermal warning
+ * M916: Increase KVAL_HOLD until thermal warning
*
*
* J - select which driver(s) to monitor on multi-driver axis
diff --git a/Marlin/src/gcode/feature/trinamic/M906.cpp b/Marlin/src/gcode/feature/trinamic/M906.cpp
index 0466bfff4e..91525495f2 100644
--- a/Marlin/src/gcode/feature/trinamic/M906.cpp
+++ b/Marlin/src/gcode/feature/trinamic/M906.cpp
@@ -43,8 +43,8 @@
* With no parameters report driver currents.
*/
void GcodeSuite::M906() {
- #define TMC_SAY_CURRENT(Q) tmc_get_current(stepper##Q)
- #define TMC_SET_CURRENT(Q) tmc_set_current(stepper##Q, value)
+ #define TMC_SAY_CURRENT(Q) tmc_print_current(stepper##Q)
+ #define TMC_SET_CURRENT(Q) stepper##Q.rms_current(value)
bool report = true;
diff --git a/Marlin/src/gcode/feature/trinamic/M911-M914.cpp b/Marlin/src/gcode/feature/trinamic/M911-M914.cpp
index ce07bb24f0..c74428d905 100644
--- a/Marlin/src/gcode/feature/trinamic/M911-M914.cpp
+++ b/Marlin/src/gcode/feature/trinamic/M911-M914.cpp
@@ -192,10 +192,10 @@
*/
#if ENABLED(HYBRID_THRESHOLD)
void GcodeSuite::M913() {
- #define TMC_SAY_PWMTHRS(A,Q) tmc_get_pwmthrs(stepper##Q, planner.settings.axis_steps_per_mm[_AXIS(A)])
- #define TMC_SET_PWMTHRS(A,Q) tmc_set_pwmthrs(stepper##Q, value, planner.settings.axis_steps_per_mm[_AXIS(A)])
- #define TMC_SAY_PWMTHRS_E(E) tmc_get_pwmthrs(stepperE##E, planner.settings.axis_steps_per_mm[E_AXIS_N(E)])
- #define TMC_SET_PWMTHRS_E(E) tmc_set_pwmthrs(stepperE##E, value, planner.settings.axis_steps_per_mm[E_AXIS_N(E)])
+ #define TMC_SAY_PWMTHRS(A,Q) tmc_print_pwmthrs(stepper##Q)
+ #define TMC_SET_PWMTHRS(A,Q) stepper##Q.set_pwm_thrs(value)
+ #define TMC_SAY_PWMTHRS_E(E) tmc_print_pwmthrs(stepperE##E)
+ #define TMC_SET_PWMTHRS_E(E) stepperE##E.set_pwm_thrs(value)
bool report = true;
#if AXIS_IS_TMC(X) || AXIS_IS_TMC(X2) || AXIS_IS_TMC(Y) || AXIS_IS_TMC(Y2) || AXIS_IS_TMC(Z) || AXIS_IS_TMC(Z2) || AXIS_IS_TMC(Z3)
@@ -309,8 +309,6 @@
*/
#if USE_SENSORLESS
void GcodeSuite::M914() {
- #define TMC_SAY_SGT(Q) tmc_get_sgt(stepper##Q)
- #define TMC_SET_SGT(Q) tmc_set_sgt(stepper##Q, value)
bool report = true;
const uint8_t index = parser.byteval('I');
@@ -321,33 +319,33 @@
#if X_SENSORLESS
case X_AXIS:
#if AXIS_HAS_STALLGUARD(X)
- if (index < 2) TMC_SET_SGT(X);
+ if (index < 2) stepperX.sgt(value);
#endif
#if AXIS_HAS_STALLGUARD(X2)
- if (!(index & 1)) TMC_SET_SGT(X2);
+ if (!(index & 1)) stepperX2.sgt(value);
#endif
break;
#endif
#if Y_SENSORLESS
case Y_AXIS:
#if AXIS_HAS_STALLGUARD(Y)
- if (index < 2) TMC_SET_SGT(Y);
+ if (index < 2) stepperY.sgt(value);
#endif
#if AXIS_HAS_STALLGUARD(Y2)
- if (!(index & 1)) TMC_SET_SGT(Y2);
+ if (!(index & 1)) stepperY2.sgt(value);
#endif
break;
#endif
#if Z_SENSORLESS
case Z_AXIS:
#if AXIS_HAS_STALLGUARD(Z)
- if (index < 2) TMC_SET_SGT(Z);
+ if (index < 2) stepperZ.sgt(value);
#endif
#if AXIS_HAS_STALLGUARD(Z2)
- if (index == 0 || index == 2) TMC_SET_SGT(Z2);
+ if (index == 0 || index == 2) stepperZ2.sgt(value);
#endif
#if AXIS_HAS_STALLGUARD(Z3)
- if (index == 0 || index == 3) TMC_SET_SGT(Z3);
+ if (index == 0 || index == 3) stepperZ3.sgt(value);
#endif
break;
#endif
@@ -357,29 +355,29 @@
if (report) {
#if X_SENSORLESS
#if AXIS_HAS_STALLGUARD(X)
- TMC_SAY_SGT(X);
+ tmc_print_sgt(stepperX);
#endif
#if AXIS_HAS_STALLGUARD(X2)
- TMC_SAY_SGT(X2);
+ tmc_print_sgt(stepperX2);
#endif
#endif
#if Y_SENSORLESS
#if AXIS_HAS_STALLGUARD(Y)
- TMC_SAY_SGT(Y);
+ tmc_print_sgt(stepperY);
#endif
#if AXIS_HAS_STALLGUARD(Y2)
- TMC_SAY_SGT(Y2);
+ tmc_print_sgt(stepperY2);
#endif
#endif
#if Z_SENSORLESS
#if AXIS_HAS_STALLGUARD(Z)
- TMC_SAY_SGT(Z);
+ tmc_print_sgt(stepperZ);
#endif
#if AXIS_HAS_STALLGUARD(Z2)
- TMC_SAY_SGT(Z2);
+ tmc_print_sgt(stepperZ2);
#endif
#if AXIS_HAS_STALLGUARD(Z3)
- TMC_SAY_SGT(Z3);
+ tmc_print_sgt(stepperZ3);
#endif
#endif
}
diff --git a/Marlin/src/gcode/gcode.h b/Marlin/src/gcode/gcode.h
index 95f9316a49..6037804693 100644
--- a/Marlin/src/gcode/gcode.h
+++ b/Marlin/src/gcode/gcode.h
@@ -103,6 +103,7 @@
* M42 - Change pin status via gcode: M42 P S. LED pin assumed if P is omitted.
* M43 - Display pin status, watch pins for changes, watch endstops & toggle LED, Z servo probe test, toggle pins
* M48 - Measure Z Probe repeatability: M48 P X Y V E L S. (Requires Z_MIN_PROBE_REPEATABILITY_TEST)
+ * M73 - Set the progress percentage. (Requires LCD_SET_PROGRESS_MANUALLY)
* M75 - Start the print job timer.
* M76 - Pause the print job timer.
* M77 - Stop the print job timer.
@@ -121,8 +122,8 @@
* M106 - Set print fan speed.
* M107 - Print fan off.
* M108 - Break out of heating loops (M109, M190, M303). With no controller, breaks out of M0/M1. (Requires EMERGENCY_PARSER)
- * M109 - Sxxx Wait for extruder current temp to reach target temp. Waits only when heating
- * Rxxx Wait for extruder current temp to reach target temp. Waits when heating and cooling
+ * M109 - S Wait for extruder current temp to reach target temp. ** Wait only when heating! **
+ * R Wait for extruder current temp to reach target temp. ** Wait for heating or cooling. **
* If AUTOTEMP is enabled, S B F. Exit autotemp by any M109 without F
* M110 - Set the current line number. (Used by host printing)
* M111 - Set debug flags: "M111 S". See flag bits defined in enum.h.
@@ -135,13 +136,14 @@
* M119 - Report endstops status.
* M120 - Enable endstops detection.
* M121 - Disable endstops detection.
- * M122 - Debug stepper (Requires at least one _DRIVER_TYPE defined as TMC2130/TMC2208/TMC2660)
+ * M122 - Debug stepper (Requires at least one _DRIVER_TYPE defined as TMC2130/TMC2208/TMC2660 or L6470)
* M125 - Save current position and move to filament change position. (Requires PARK_HEAD_ON_PAUSE)
* M126 - Solenoid Air Valve Open. (Requires BARICUDA)
* M127 - Solenoid Air Valve Closed. (Requires BARICUDA)
* M128 - EtoP Open. (Requires BARICUDA)
* M129 - EtoP Closed. (Requires BARICUDA)
* M140 - Set bed target temp. S
+ * M141 - Set heated chamber target temp. S (Requires a chamber heater)
* M145 - Set heatup values for materials on the LCD. H B F for S (0=PLA, 1=ABS)
* M149 - Set temperature units. (Requires TEMPERATURE_UNITS_SUPPORT)
* M150 - Set Status LED Color as R U B P. Values 0-255. (Requires BLINKM, RGB_LED, RGBW_LED, NEOPIXEL_LED, PCA9533, or PCA9632).
@@ -150,8 +152,8 @@
* M164 - Commit the mix and save to a virtual tool (current, or as specified by 'S'). (Requires MIXING_EXTRUDER)
* M165 - Set the mix for the mixing extruder (and current virtual tool) with parameters ABCDHI. (Requires MIXING_EXTRUDER and DIRECT_MIXING_IN_G1)
* M166 - Set the Gradient Mix for the mixing extruder. (Requires GRADIENT_MIX)
- * M190 - Sxxx Wait for bed current temp to reach target temp. ** Waits only when heating! **
- * Rxxx Wait for bed current temp to reach target temp. ** Waits for heating or cooling. **
+ * M190 - S Wait for bed current temp to reach target temp. ** Wait only when heating! **
+ * R Wait for bed current temp to reach target temp. ** Wait for heating or cooling. **
* M200 - Set filament diameter, D, setting E axis units to cubic. (Use S0 to revert to linear units.)
* M201 - Set max acceleration in units/s^2 for print moves: "M201 X Y Z E"
* M202 - Set max acceleration in units/s^2 for travel moves: "M202 X Y Z E" ** UNUSED IN MARLIN! **
@@ -210,9 +212,10 @@
* M501 - Restore parameters from EEPROM. (Requires EEPROM_SETTINGS)
* M502 - Revert to the default "factory settings". ** Does not write them to EEPROM! **
* M503 - Print the current settings (in memory): "M503 S". S0 specifies compact output.
+ * M504 - Validate EEPROM contents. (Requires EEPROM_SETTINGS)
* M524 - Abort the current SD print job (started with M24)
* M540 - Enable/disable SD card abort on endstop hit: "M540 S". (Requires ABORT_ON_ENDSTOP_HIT_FEATURE_ENABLED)
- * M569 - Enable stealthChop on an axis. (Requires at least one #_X_DRIVER_TYPE to be TMC2130 or TMC2208)
+ * M569 - Enable stealthChop on an axis. (Requires at least one _DRIVER_TYPE to be TMC2130 or TMC2208)
* M600 - Pause for filament change: "M600 X Y Z E L". (Requires ADVANCED_PAUSE_FEATURE)
* M603 - Configure filament change: "M603 T U L". (Requires ADVANCED_PAUSE_FEATURE)
* M605 - Set Dual X-Carriage movement mode: "M605 S [X] [R]". (Requires DUAL_X_CARRIAGE)
@@ -233,8 +236,9 @@
* M867 - Enable/disable or toggle error correction for position encoder modules.
* M868 - Report or set position encoder module error correction threshold.
* M869 - Report position encoder module error.
+ * M876 - Handle Prompt Response. (Requires HOST_PROMPT_SUPPORT and not EMERGENCY_PARSER)
* M900 - Get or Set Linear Advance K-factor. (Requires LIN_ADVANCE)
- * M906 - Set or get motor current in milliamps using axis codes X, Y, Z, E. Report values if no axis codes given. (Requires at least one _DRIVER_TYPE defined as TMC2130/TMC2208/TMC2660)
+ * M906 - Set or get motor current in milliamps using axis codes X, Y, Z, E. Report values if no axis codes given. (Requires at least one _DRIVER_TYPE defined as TMC2130/TMC2208/TMC2660 or L6470)
* M907 - Set digital trimpot motor current using axis codes. (Requires a board with digital trimpots)
* M908 - Control digital trimpot directly. (Requires DAC_STEPPER_CURRENT or DIGIPOTSS_PIN)
* M909 - Print digipot/DAC current value. (Requires DAC_STEPPER_CURRENT)
@@ -243,9 +247,11 @@
* M912 - Clear stepper driver overtemperature pre-warn condition flag. (Requires at least one _DRIVER_TYPE defined as TMC2130/TMC2208/TMC2660)
* M913 - Set HYBRID_THRESHOLD speed. (Requires HYBRID_THRESHOLD)
* M914 - Set StallGuard sensitivity. (Requires SENSORLESS_HOMING or SENSORLESS_PROBING)
- * M917 - L6470 tuning: Find minimum current thresholds
- * M918 - L6470 tuning: Increase speed until max or error
+ * M916 - L6470 tuning: Increase KVAL_HOLD until thermal warning. (Requires at least one _DRIVER_TYPE L6470)
+ * M917 - L6470 tuning: Find minimum current thresholds. (Requires at least one _DRIVER_TYPE L6470)
+ * M918 - L6470 tuning: Increase speed until max or error. (Requires at least one _DRIVER_TYPE L6470)
* M951 - Set Magnetic Parking Extruder parameters. (Requires MAGNETIC_PARKING_EXTRUDER)
+ * M7219 - Control Max7219 Matrix LEDs. (Requires MAX7219_GCODE)
*
* M360 - SCARA calibration: Move to cal-position ThetaA (0 deg calibration)
* M361 - SCARA calibration: Move to cal-position ThetaB (90 deg calibration - steps per degree)
@@ -254,6 +260,7 @@
* M364 - SCARA calibration: Move to cal-position PSIC (90 deg to Theta calibration position)
*
* ************ Custom codes - This can change to suit future G-code regulations
+ * G425 - Calibrate using a conductive object. (Requires CALIBRATION_GCODE)
* M928 - Start SD logging: "M928 filename.gco". Stop with M29. (Requires SDSUPPORT)
* M997 - Perform in-application firmware update
* M999 - Restart after being stopped by error
@@ -788,10 +795,6 @@ private:
static void M702();
#endif
- #if ENABLED(MAX7219_GCODE)
- static void M7219();
- #endif
-
#if ENABLED(GCODE_MACROS)
static void M810_819();
#endif
@@ -877,6 +880,10 @@ private:
static void M1000();
#endif
+ #if ENABLED(MAX7219_GCODE)
+ static void M7219();
+ #endif
+
static void T(const uint8_t tool_index);
};
diff --git a/Marlin/src/inc/Conditionals_post.h b/Marlin/src/inc/Conditionals_post.h
index 47b86dae92..a1f762193b 100644
--- a/Marlin/src/inc/Conditionals_post.h
+++ b/Marlin/src/inc/Conditionals_post.h
@@ -304,11 +304,12 @@
#define HEATER_0_MAX6675_TMAX 1024
#elif TEMP_SENSOR_0 == -1
#define HEATER_0_USES_AD595
-#elif TEMP_SENSOR_0 == 1000
- #define HEATER_0_USER_THERMISTOR
#elif TEMP_SENSOR_0 > 0
#define THERMISTOR_HEATER_0 TEMP_SENSOR_0
#define HEATER_0_USES_THERMISTOR
+ #if TEMP_SENSOR_0 == 1000
+ #define HEATER_0_USER_THERMISTOR
+ #endif
#else
#undef HEATER_0_MINTEMP
#undef HEATER_0_MAXTEMP
@@ -332,11 +333,12 @@
#define HEATER_1_MAX6675_TMAX 1024
#elif TEMP_SENSOR_1 == -1
#define HEATER_1_USES_AD595
-#elif TEMP_SENSOR_1 == 1000
- #define HEATER_1_USER_THERMISTOR
#elif TEMP_SENSOR_1 > 0
#define THERMISTOR_HEATER_1 TEMP_SENSOR_1
#define HEATER_1_USES_THERMISTOR
+ #if TEMP_SENSOR_1 == 1000
+ #define HEATER_1_USER_THERMISTOR
+ #endif
#else
#undef HEATER_1_MINTEMP
#undef HEATER_1_MAXTEMP
@@ -350,11 +352,12 @@
#error "MAX6675 Thermocouples (-2) not supported for TEMP_SENSOR_2."
#elif TEMP_SENSOR_2 == -1
#define HEATER_2_USES_AD595
-#elif TEMP_SENSOR_2 == 1000
- #define HEATER_2_USER_THERMISTOR
#elif TEMP_SENSOR_2 > 0
#define THERMISTOR_HEATER_2 TEMP_SENSOR_2
#define HEATER_2_USES_THERMISTOR
+ #if TEMP_SENSOR_2 == 1000
+ #define HEATER_2_USER_THERMISTOR
+ #endif
#else
#undef HEATER_2_MINTEMP
#undef HEATER_2_MAXTEMP
@@ -368,11 +371,12 @@
#error "MAX6675 Thermocouples (-2) not supported for TEMP_SENSOR_3."
#elif TEMP_SENSOR_3 == -1
#define HEATER_3_USES_AD595
-#elif TEMP_SENSOR_3 == 1000
- #define HEATER_3_USER_THERMISTOR
#elif TEMP_SENSOR_3 > 0
#define THERMISTOR_HEATER_3 TEMP_SENSOR_3
#define HEATER_3_USES_THERMISTOR
+ #if TEMP_SENSOR_3 == 1000
+ #define HEATER_3_USER_THERMISTOR
+ #endif
#else
#undef HEATER_3_MINTEMP
#undef HEATER_3_MAXTEMP
@@ -386,11 +390,12 @@
#error "MAX6675 Thermocouples (-2) not supported for TEMP_SENSOR_4."
#elif TEMP_SENSOR_4 == -1
#define HEATER_4_USES_AD595
-#elif TEMP_SENSOR_4 == 1000
- #define HEATER_4_USER_THERMISTOR
#elif TEMP_SENSOR_4 > 0
#define THERMISTOR_HEATER_4 TEMP_SENSOR_4
#define HEATER_4_USES_THERMISTOR
+ #if TEMP_SENSOR_4 == 1000
+ #define HEATER_4_USER_THERMISTOR
+ #endif
#else
#undef HEATER_4_MINTEMP
#undef HEATER_4_MAXTEMP
@@ -404,11 +409,12 @@
#error "MAX6675 Thermocouples (-2) not supported for TEMP_SENSOR_5."
#elif TEMP_SENSOR_5 == -1
#define HEATER_5_USES_AD595
-#elif TEMP_SENSOR_5 == 1000
- #define HEATER_5_USER_THERMISTOR
#elif TEMP_SENSOR_5 > 0
#define THERMISTOR_HEATER_5 TEMP_SENSOR_5
#define HEATER_5_USES_THERMISTOR
+ #if TEMP_SENSOR_5 == 1000
+ #define HEATER_5_USER_THERMISTOR
+ #endif
#else
#undef HEATER_5_MINTEMP
#undef HEATER_5_MAXTEMP
@@ -422,11 +428,12 @@
#error "MAX6675 Thermocouples (-2) not supported for TEMP_SENSOR_BED."
#elif TEMP_SENSOR_BED == -1
#define HEATER_BED_USES_AD595
-#elif TEMP_SENSOR_BED == 1000
- #define BED_USER_THERMISTOR
#elif TEMP_SENSOR_BED > 0
#define THERMISTORBED TEMP_SENSOR_BED
#define HEATER_BED_USES_THERMISTOR
+ #if TEMP_SENSOR_BED == 1000
+ #define HEATER_BED_USER_THERMISTOR
+ #endif
#else
#undef BED_MINTEMP
#undef BED_MAXTEMP
@@ -440,11 +447,12 @@
#error "MAX6675 Thermocouples (-2) not supported for TEMP_SENSOR_CHAMBER."
#elif TEMP_SENSOR_CHAMBER == -1
#define HEATER_CHAMBER_USES_AD595
-#elif TEMP_SENSOR_CHAMBER == 1000
- #define CHAMBER_USER_THERMISTOR
#elif TEMP_SENSOR_CHAMBER > 0
#define THERMISTORCHAMBER TEMP_SENSOR_CHAMBER
#define HEATER_CHAMBER_USES_THERMISTOR
+ #if TEMP_SENSOR_CHAMBER == 1000
+ #define HEATER_CHAMBER_USER_THERMISTOR
+ #endif
#else
#undef CHAMBER_MINTEMP
#undef CHAMBER_MAXTEMP
diff --git a/Marlin/src/inc/SanityCheck.h b/Marlin/src/inc/SanityCheck.h
index e7ea421a23..5bea38d9eb 100644
--- a/Marlin/src/inc/SanityCheck.h
+++ b/Marlin/src/inc/SanityCheck.h
@@ -985,6 +985,9 @@ static_assert(Y_MAX_LENGTH >= Y_BED_SIZE, "Movement bounds (Y_MIN_POS, Y_MAX_POS
#if HAS_BED_PROBE
+ static_assert(FLOOR(float(X_PROBE_OFFSET_FROM_EXTRUDER)) == float(X_PROBE_OFFSET_FROM_EXTRUDER), "X_PROBE_OFFSET_FROM_EXTRUDER must be an integer!");
+ static_assert(FLOOR(float(Y_PROBE_OFFSET_FROM_EXTRUDER)) == float(Y_PROBE_OFFSET_FROM_EXTRUDER), "Y_PROBE_OFFSET_FROM_EXTRUDER must be an integer!");
+
/**
* Z_PROBE_SLED is incompatible with DELTA
*/
@@ -1025,8 +1028,8 @@ static_assert(Y_MAX_LENGTH >= Y_BED_SIZE, "Movement bounds (Y_MIN_POS, Y_MAX_POS
#if ENABLED(BLTOUCH)
#if BLTOUCH_DELAY < 200
#error "BLTOUCH_DELAY less than 200 is unsafe and is not supported."
- #elif DISABLED(BLTOUCH_FORCE_5V_MODE) && NONE(ENDSTOPPULLUPS, ENDSTOPPULLUP_ZMIN, ENDSTOPPULLUP_ZMIN_PROBE)
- #error "BLTOUCH without BLTOUCH_FORCE_5V_MODE requires ENDSTOPPULLUPS, ENDSTOPPULLUP_ZMIN or ENDSTOPPULLUP_ZMIN_PROBE."
+ #elif DISABLED(BLTOUCH_SET_5V_MODE) && NONE(ENDSTOPPULLUPS, ENDSTOPPULLUP_ZMIN, ENDSTOPPULLUP_ZMIN_PROBE)
+ #error "BLTOUCH without BLTOUCH_SET_5V_MODE requires ENDSTOPPULLUPS, ENDSTOPPULLUP_ZMIN or ENDSTOPPULLUP_ZMIN_PROBE."
#endif
#endif
diff --git a/Marlin/src/inc/Version.h b/Marlin/src/inc/Version.h
index e694941aed..f646d454c1 100644
--- a/Marlin/src/inc/Version.h
+++ b/Marlin/src/inc/Version.h
@@ -39,7 +39,7 @@
/**
* Marlin release version identifier
*/
- #define SHORT_BUILD_VERSION "2.0.x_TR15"
+ #define SHORT_BUILD_VERSION "2.0.x_TR16"
/**
* Verbose version identifier which should contain a reference to the location
@@ -52,7 +52,7 @@
* here we define this default string as the date where the latest release
* version was tagged.
*/
- #define STRING_DISTRIBUTION_DATE "2019-05-15"
+ #define STRING_DISTRIBUTION_DATE "2019-05-26"
/**
* Required minimum Configuration.h and Configuration_adv.h file versions.
diff --git a/Marlin/src/lcd/dogm/ultralcd_DOGM.cpp b/Marlin/src/lcd/dogm/ultralcd_DOGM.cpp
index a337668db7..ff8bc33787 100644
--- a/Marlin/src/lcd/dogm/ultralcd_DOGM.cpp
+++ b/Marlin/src/lcd/dogm/ultralcd_DOGM.cpp
@@ -418,7 +418,7 @@ void MarlinUI::clear_lcd() { } // Automatically cleared by Picture Loop
onpage = PAGE_CONTAINS(baseline - (EDIT_FONT_ASCENT - 1), baseline);
}
if (onpage) {
- lcd_moveto(((lcd_chr_fit - 1) - (vallen + 1)) * one_chr_width, baseline); // Right-justified, leaving padded by spaces
+ lcd_moveto((lcd_chr_fit - (vallen + 1)) * one_chr_width, baseline); // Right-justified, leaving padded by spaces
lcd_put_wchar(' '); // overwrite char if value gets shorter
lcd_put_u8str(value);
}
diff --git a/Marlin/src/lcd/extensible_ui/ui_api.cpp b/Marlin/src/lcd/extensible_ui/ui_api.cpp
index 9456f284ff..017b652a0c 100644
--- a/Marlin/src/lcd/extensible_ui/ui_api.cpp
+++ b/Marlin/src/lcd/extensible_ui/ui_api.cpp
@@ -725,8 +725,8 @@ namespace ExtUI {
#if HAS_LEVELING
bool getLevelingActive() { return planner.leveling_active; }
void setLevelingActive(const bool state) { set_bed_leveling_enabled(state); }
+ bool getMeshValid() { return leveling_is_valid(); }
#if HAS_MESH
- bool getMeshValid() { return leveling_is_valid(); }
bed_mesh_t getMeshArray() { return Z_VALUES_ARR; }
float getMeshPoint(const uint8_t xpos, const uint8_t ypos) { return Z_VALUES(xpos,ypos); }
void setMeshPoint(const uint8_t xpos, const uint8_t ypos, const float zoff) {
diff --git a/Marlin/src/lcd/extensible_ui/ui_api.h b/Marlin/src/lcd/extensible_ui/ui_api.h
index 2c8d133037..cce012f38f 100644
--- a/Marlin/src/lcd/extensible_ui/ui_api.h
+++ b/Marlin/src/lcd/extensible_ui/ui_api.h
@@ -61,6 +61,10 @@ namespace ExtUI {
constexpr uint8_t hotendCount = HOTENDS;
constexpr uint8_t fanCount = FAN_COUNT;
+ #if HAS_MESH
+ typedef float (&bed_mesh_t)[GRID_MAX_POINTS_X][GRID_MAX_POINTS_Y];
+ #endif
+
bool isMoving();
bool isAxisPositionKnown(const axis_t);
bool isPositionKnown(); // Axis position guaranteed, steppers active since homing
@@ -122,9 +126,8 @@ namespace ExtUI {
#if HAS_LEVELING
bool getLevelingActive();
void setLevelingActive(const bool);
+ bool getMeshValid();
#if HAS_MESH
- #include "../../feature/bedlevel/bedlevel.h"
- bool getMeshValid();
bed_mesh_t getMeshArray();
float getMeshPoint(const uint8_t xpos, const uint8_t ypos);
void setMeshPoint(const uint8_t xpos, const uint8_t ypos, const float zval);
diff --git a/Marlin/src/lcd/language/language_de.h b/Marlin/src/lcd/language/language_de.h
index 05dbf899df..3f682a35ba 100644
--- a/Marlin/src/lcd/language/language_de.h
+++ b/Marlin/src/lcd/language/language_de.h
@@ -84,7 +84,7 @@
#define MSG_SWITCH_PS_ON _UxGT("Netzteil ein")
#define MSG_SWITCH_PS_OFF _UxGT("Netzteil aus")
#define MSG_EXTRUDE _UxGT("Extrudieren")
-#define MSG_RETRACT _UxGT("Rückzug")
+#define MSG_RETRACT _UxGT("Einzug")
#define MSG_MOVE_AXIS _UxGT("Achse Bewegen")
#define MSG_BED_LEVELING _UxGT("Bett-Nivellierung")
#define MSG_LEVEL_BED _UxGT("Bett nivellieren")
@@ -162,14 +162,14 @@
#define MSG_MESH_LOADED _UxGT("Netz %i geladen")
#define MSG_MESH_SAVED _UxGT("Netz %i gespeichert")
#define MSG_NO_STORAGE _UxGT("Kein Speicher")
-#define MSG_UBL_SAVE_ERROR _UxGT("ERR:UBL speichern")
-#define MSG_UBL_RESTORE_ERROR _UxGT("ERR:UBL wiederherst.")
+#define MSG_UBL_SAVE_ERROR _UxGT("Err:UBL speichern")
+#define MSG_UBL_RESTORE_ERROR _UxGT("Err:UBL wiederherst.")
#define MSG_UBL_Z_OFFSET_STOPPED _UxGT("Z-Versatz angehalten")
#define MSG_UBL_STEP_BY_STEP_MENU _UxGT("Schrittweises UBL")
-#define MSG_LED_CONTROL _UxGT("LED-Steuerung")
+#define MSG_LED_CONTROL _UxGT("Licht-Steuerung")
#define MSG_LEDS _UxGT("Licht")
-#define MSG_LED_PRESETS _UxGT("Licht-Einstellungen")
+#define MSG_LED_PRESETS _UxGT("Licht-Einstellung")
#define MSG_SET_LEDS_RED _UxGT("Rot")
#define MSG_SET_LEDS_ORANGE _UxGT("Orange")
#define MSG_SET_LEDS_YELLOW _UxGT("Gelb")
@@ -235,7 +235,7 @@
#define MSG_VTRAV_MIN _UxGT("V min Leerfahrt")
#define MSG_ACCELERATION _UxGT("Beschleunigung")
#define MSG_AMAX _UxGT("A max ") // space intentional
-#define MSG_A_RETRACT _UxGT("A Rückzug")
+#define MSG_A_RETRACT _UxGT("A Einzug")
#define MSG_A_TRAVEL _UxGT("A Leerfahrt")
#define MSG_STEPS_PER_MM _UxGT("Steps/mm")
#if IS_KINEMATIC
@@ -295,20 +295,20 @@
#define MSG_NO_MOVE _UxGT("Motoren angeschaltet")
#define MSG_KILLED _UxGT("ABGEBROCHEN")
#define MSG_STOPPED _UxGT("ANGEHALTEN")
-#define MSG_CONTROL_RETRACT _UxGT("Rückzug mm")
-#define MSG_CONTROL_RETRACT_SWAP _UxGT("Wechs. Rückzug mm")
-#define MSG_CONTROL_RETRACTF _UxGT("Rückzug V")
+#define MSG_CONTROL_RETRACT _UxGT("Einzug mm")
+#define MSG_CONTROL_RETRACT_SWAP _UxGT("Wechs. Einzug mm")
+#define MSG_CONTROL_RETRACTF _UxGT("Einzug V")
#define MSG_CONTROL_RETRACT_ZHOP _UxGT("Z-Sprung mm")
#define MSG_CONTROL_RETRACT_RECOVER _UxGT("UnRet mm")
#define MSG_CONTROL_RETRACT_RECOVER_SWAP _UxGT("Wechs. UnRet mm")
#define MSG_CONTROL_RETRACT_RECOVERF _UxGT("UnRet V")
#define MSG_CONTROL_RETRACT_RECOVER_SWAPF _UxGT("S UnRet V")
-#define MSG_AUTORETRACT _UxGT("Autom. Rückzug")
-#define MSG_FILAMENT_SWAP_LENGTH _UxGT("Rückzugslänge")
+#define MSG_AUTORETRACT _UxGT("Autom. Einzug")
+#define MSG_FILAMENT_SWAP_LENGTH _UxGT("Einzugslänge")
#define MSG_TOOL_CHANGE _UxGT("Werkzeugwechsel")
#define MSG_TOOL_CHANGE_ZLIFT _UxGT("Z anheben")
#define MSG_SINGLENOZZLE_PRIME_SPD _UxGT("Prime-Geschwin.")
-#define MSG_SINGLENOZZLE_RETRACT_SPD _UxGT("Rückzug-Geschwin.")
+#define MSG_SINGLENOZZLE_RETRACT_SPD _UxGT("Einzug-Geschwin.")
#define MSG_NOZZLE_STANDBY _UxGT("Düsen-Standby")
#define MSG_FILAMENTCHANGE _UxGT("Filament wechseln")
#define MSG_FILAMENTLOAD _UxGT("Filament laden")
@@ -326,6 +326,7 @@
#define MSG_BLTOUCH_SW_MODE _UxGT("BLTouch SW-Modus")
#define MSG_BLTOUCH_5V_MODE _UxGT("BLTouch 5V-Modus")
#define MSG_BLTOUCH_OD_MODE _UxGT("BLTouch OD Mode")
+#define MSG_BLTOUCH_MODE_STORE _UxGT("BLTouch Mode Store")
#define MSG_BLTOUCH_STOW _UxGT("BLTouch einfahren")
#define MSG_MANUAL_DEPLOY _UxGT("Z-Sonde ausfahren")
#define MSG_MANUAL_STOW _UxGT("Z-Sonde einfahren")
@@ -348,8 +349,8 @@
#define MSG_ERR_MINTEMP LCD_STR_THERMOMETER _UxGT(" UNTERSCHRITTEN")
#define MSG_ERR_MAXTEMP_BED _UxGT("BETT ") LCD_STR_THERMOMETER _UxGT(" ÜBERSCHRITTEN")
#define MSG_ERR_MINTEMP_BED _UxGT("BETT ") LCD_STR_THERMOMETER _UxGT(" UNTERSCHRITTEN")
-#define MSG_ERR_MAXTEMP_CHAMBER _UxGT("Err: GEHÄUSE MAX TEM")
-#define MSG_ERR_MINTEMP_CHAMBER _UxGT("Err: GEHÄUSE MIN TEM")
+#define MSG_ERR_MAXTEMP_CHAMBER _UxGT("Err:Gehäuse max Temp")
+#define MSG_ERR_MINTEMP_CHAMBER _UxGT("Err:Gehäuse min Temp")
#define MSG_ERR_Z_HOMING MSG_HOME _UxGT(" ") MSG_X MSG_Y _UxGT(" ") MSG_FIRST
#define MSG_HALTED _UxGT("DRUCKER STOPP")
#define MSG_PLEASE_RESET _UxGT("Bitte neustarten")
diff --git a/Marlin/src/lcd/language/language_en.h b/Marlin/src/lcd/language/language_en.h
index 440177ab98..2887605b97 100644
--- a/Marlin/src/lcd/language/language_en.h
+++ b/Marlin/src/lcd/language/language_en.h
@@ -247,6 +247,12 @@
#ifndef MSG_UBL_LEVEL_BED
#define MSG_UBL_LEVEL_BED _UxGT("Unified Bed Leveling")
#endif
+#ifndef MSG_LCD_PROBING_MESH
+ #define MSG_LCD_PROBING_MESH _UxGT("Probing point")
+#endif
+#ifndef MSG_LCD_TILTING_MESH
+ #define MSG_LCD_TILTING_MESH _UxGT("Tilting point")
+#endif
#ifndef MSG_IDEX_MENU
#define MSG_IDEX_MENU _UxGT("IDEX Mode")
#endif
@@ -895,25 +901,40 @@
#define MSG_BLTOUCH _UxGT("BLTouch")
#endif
#ifndef MSG_BLTOUCH_SELFTEST
- #define MSG_BLTOUCH_SELFTEST _UxGT("BLTouch Self-Test")
+ #define MSG_BLTOUCH_SELFTEST _UxGT("Cmd: Self-Test")
#endif
#ifndef MSG_BLTOUCH_RESET
- #define MSG_BLTOUCH_RESET _UxGT("Reset BLTouch")
-#endif
-#ifndef MSG_BLTOUCH_DEPLOY
- #define MSG_BLTOUCH_DEPLOY _UxGT("Deploy BLTouch")
-#endif
-#ifndef MSG_BLTOUCH_SW_MODE
- #define MSG_BLTOUCH_SW_MODE _UxGT("BLTouch SW Mode")
-#endif
-#ifndef MSG_BLTOUCH_5V_MODE
- #define MSG_BLTOUCH_5V_MODE _UxGT("BLTouch 5V Mode")
-#endif
-#ifndef MSG_BLTOUCH_OD_MODE
- #define MSG_BLTOUCH_OD_MODE _UxGT("BLTouch OD Mode")
+ #define MSG_BLTOUCH_RESET _UxGT("Cmd: Reset")
#endif
#ifndef MSG_BLTOUCH_STOW
- #define MSG_BLTOUCH_STOW _UxGT("Stow BLTouch")
+ #define MSG_BLTOUCH_STOW _UxGT("Cmd: Stow")
+#endif
+#ifndef MSG_BLTOUCH_DEPLOY
+ #define MSG_BLTOUCH_DEPLOY _UxGT("Cmd: Deploy")
+#endif
+#ifndef MSG_BLTOUCH_SW_MODE
+ #define MSG_BLTOUCH_SW_MODE _UxGT("Cmd: SW-Mode")
+#endif
+#ifndef MSG_BLTOUCH_5V_MODE
+ #define MSG_BLTOUCH_5V_MODE _UxGT("Cmd: 5V-Mode")
+#endif
+#ifndef MSG_BLTOUCH_OD_MODE
+ #define MSG_BLTOUCH_OD_MODE _UxGT("Cmd: OD-Mode")
+#endif
+#ifndef MSG_BLTOUCH_MODE_STORE
+ #define MSG_BLTOUCH_MODE_STORE _UxGT("Cmd: Mode-Store")
+#endif
+#ifndef MSG_BLTOUCH_MODE_STORE_5V
+ #define MSG_BLTOUCH_MODE_STORE_5V _UxGT("Set BLTouch to 5V")
+#endif
+#ifndef MSG_BLTOUCH_MODE_STORE_OD
+ #define MSG_BLTOUCH_MODE_STORE_OD _UxGT("Set BLTouch to OD")
+#endif
+#ifndef MSG_BLTOUCH_MODE_ECHO
+ #define MSG_BLTOUCH_MODE_ECHO _UxGT("Report Drain")
+#endif
+#ifndef MSG_BLTOUCH_MODE_CHANGE
+ #define MSG_BLTOUCH_MODE_CHANGE _UxGT(" ***WARNING*** Wrong Setting May Damage Machine! Proceed Anyway?")
#endif
#ifndef MSG_MANUAL_DEPLOY
#define MSG_MANUAL_DEPLOY _UxGT("Deploy Z-Probe")
diff --git a/Marlin/src/lcd/language/language_it.h b/Marlin/src/lcd/language/language_it.h
index 7d6f7ae83a..d583995674 100644
--- a/Marlin/src/lcd/language/language_it.h
+++ b/Marlin/src/lcd/language/language_it.h
@@ -97,6 +97,8 @@
#define MSG_UBL_UNHOMED _UxGT("Home XYZ prima")
#define MSG_UBL_TOOLS _UxGT("Strumenti UBL")
#define MSG_UBL_LEVEL_BED _UxGT("Unified Bed Leveling")
+#define MSG_LCD_PROBING_MESH _UxGT("Punto sondato")
+#define MSG_LCD_TILTING_MESH _UxGT("Punto inclinaz.")
#define MSG_IDEX_MENU _UxGT("Modo IDEX")
#define MSG_OFFSETS_MENU _UxGT("Strumenti Offsets")
#define MSG_IDEX_MODE_AUTOPARK _UxGT("Auto-Park")
@@ -324,6 +326,7 @@
#define MSG_BLTOUCH_SW_MODE _UxGT("BLTouch modo SW")
#define MSG_BLTOUCH_5V_MODE _UxGT("BLTouch modo 5V")
#define MSG_BLTOUCH_OD_MODE _UxGT("BLTouch modo OD")
+#define MSG_BLTOUCH_MODE_STORE _UxGT("BLTouch modo mem.")
#define MSG_BLTOUCH_STOW _UxGT("Ritrai BLTouch")
#define MSG_MANUAL_DEPLOY _UxGT("Estendi Sonda-Z")
#define MSG_MANUAL_STOW _UxGT("Ritrai Sonda-Z")
diff --git a/Marlin/src/lcd/menu/menu.h b/Marlin/src/lcd/menu/menu.h
index d050031fae..a300096399 100644
--- a/Marlin/src/lcd/menu/menu.h
+++ b/Marlin/src/lcd/menu/menu.h
@@ -53,7 +53,7 @@ DECLARE_MENU_EDIT_TYPE(uint8_t, uint8, ui8tostr3, 1 ); // 123
DECLARE_MENU_EDIT_TYPE(uint16_t, uint16_3, ui16tostr3, 1 ); // 123, -12 right-justified
DECLARE_MENU_EDIT_TYPE(uint16_t, uint16_4, ui16tostr4, 0.1 ); // 1234, -123 right-justified
DECLARE_MENU_EDIT_TYPE(float, float3, ftostr3, 1 ); // 123 right-justified
-DECLARE_MENU_EDIT_TYPE(float, float52, ftostr52, 100 ); // 123.45, -23.45
+DECLARE_MENU_EDIT_TYPE(float, float52, ftostr42_52, 100 ); // _2.34, 12.34, -2.34 or 123.45, -23.45
DECLARE_MENU_EDIT_TYPE(float, float43, ftostr43sign, 1000 ); // 1.234
DECLARE_MENU_EDIT_TYPE(float, float5, ftostr5rj, 0.01f ); // 12345 right-justified
DECLARE_MENU_EDIT_TYPE(float, float5_25, ftostr5rj, 0.04f ); // 12345 right-justified (25 increment)
@@ -123,7 +123,7 @@ DEFINE_DRAW_MENU_ITEM_SETTING_EDIT(uint8); // 123 right-justif
DEFINE_DRAW_MENU_ITEM_SETTING_EDIT(uint16_3); // 123, -12 right-justified
DEFINE_DRAW_MENU_ITEM_SETTING_EDIT(uint16_4); // 1234, -123 right-justified
DEFINE_DRAW_MENU_ITEM_SETTING_EDIT(float3); // 123 right-justified
-DEFINE_DRAW_MENU_ITEM_SETTING_EDIT(float52); // 123.45, -23.45
+DEFINE_DRAW_MENU_ITEM_SETTING_EDIT(float52); // _2.34, 12.34, -2.34 or 123.45, -23.45
DEFINE_DRAW_MENU_ITEM_SETTING_EDIT(float43); // 1.234
DEFINE_DRAW_MENU_ITEM_SETTING_EDIT(float5); // 12345 right-justified
DEFINE_DRAW_MENU_ITEM_SETTING_EDIT(float5_25); // 12345 right-justified (25 increment)
diff --git a/Marlin/src/lcd/menu/menu_advanced.cpp b/Marlin/src/lcd/menu/menu_advanced.cpp
index 69595f25d3..df873fc06d 100644
--- a/Marlin/src/lcd/menu/menu_advanced.cpp
+++ b/Marlin/src/lcd/menu/menu_advanced.cpp
@@ -39,11 +39,6 @@
#include "../../module/probe.h"
#endif
-#if ENABLED(BLTOUCH)
- #include "../../module/endstops.h"
- #include "../../feature/bltouch.h"
-#endif
-
#if ENABLED(PIDTEMP)
#include "../../module/temperature.h"
#endif
@@ -62,7 +57,7 @@ void menu_backlash();
void menu_dac() {
dac_driver_getValues();
START_MENU();
- MENU_BACK(MSG_CONTROL);
+ MENU_BACK(MSG_ADVANCED_SETTINGS);
#define EDIT_DAC_PERCENT(N) MENU_ITEM_EDIT_CALLBACK(uint8, MSG_##N " " MSG_DAC_PERCENT, &driverPercent[_AXIS(N)], 0, 100, dac_driver_commit)
EDIT_DAC_PERCENT(X);
EDIT_DAC_PERCENT(Y);
@@ -80,7 +75,7 @@ void menu_backlash();
void menu_pwm() {
START_MENU();
- MENU_BACK(MSG_CONTROL);
+ MENU_BACK(MSG_ADVANCED_SETTINGS);
#define EDIT_CURRENT_PWM(LABEL,I) MENU_ITEM_EDIT_CALLBACK(long5, LABEL, &stepper.motor_current_setting[I], 100, 2000, stepper.refresh_motor_power)
#if PIN_EXISTS(MOTOR_CURRENT_PWM_XY)
EDIT_CURRENT_PWM(MSG_X MSG_Y, 0);
@@ -107,18 +102,7 @@ void menu_backlash();
#endif
#if ENABLED(SD_FIRMWARE_UPDATE)
-
#include "../../module/configuration_store.h"
-
- //
- // Toggle the SD Firmware Update state in EEPROM
- //
- static void _lcd_toggle_sd_update() {
- const bool new_state = !settings.sd_update_status();
- ui.completion_feedback(settings.set_sd_update_status(new_state));
- ui.return_to_status();
- if (new_state) LCD_MESSAGEPGM(MSG_RESET_PRINTER); else ui.reset_status();
- }
#endif
#if DISABLED(NO_VOLUMETRICS) || ENABLED(ADVANCED_PAUSE_FEATURE)
@@ -694,18 +678,17 @@ void menu_advanced_settings() {
MENU_ITEM_EDIT(bool, MSG_ENDSTOP_ABORT, &planner.abort_on_endstop_hit);
#endif
- //
- // BLTouch Self-Test and Reset
- //
- #if ENABLED(BLTOUCH)
- MENU_ITEM(gcode, MSG_BLTOUCH_SELFTEST, PSTR("M280 P" STRINGIFY(Z_PROBE_SERVO_NR) " S" STRINGIFY(BLTOUCH_SELFTEST)));
- if (!endstops.z_probe_enabled && bltouch.triggered())
- MENU_ITEM(gcode, MSG_BLTOUCH_RESET, PSTR("M280 P" STRINGIFY(Z_PROBE_SERVO_NR) " S" STRINGIFY(BLTOUCH_RESET)));
- #endif
-
#if ENABLED(SD_FIRMWARE_UPDATE)
bool sd_update_state = settings.sd_update_status();
- MENU_ITEM_EDIT_CALLBACK(bool, MSG_SD_UPDATE, &sd_update_state, _lcd_toggle_sd_update);
+ MENU_ITEM_EDIT_CALLBACK(bool, MSG_SD_UPDATE, &sd_update_state, []{
+ //
+ // Toggle the SD Firmware Update state in EEPROM
+ //
+ const bool new_state = !settings.sd_update_status();
+ ui.completion_feedback(settings.set_sd_update_status(new_state));
+ ui.return_to_status();
+ if (new_state) LCD_MESSAGEPGM(MSG_RESET_PRINTER); else ui.reset_status();
+ });
#endif
#if ENABLED(EEPROM_SETTINGS) && DISABLED(SLIM_LCD_MENUS)
diff --git a/Marlin/src/lcd/menu/menu_configuration.cpp b/Marlin/src/lcd/menu/menu_configuration.cpp
index 25fa2c3dcd..a6596b279c 100644
--- a/Marlin/src/lcd/menu/menu_configuration.cpp
+++ b/Marlin/src/lcd/menu/menu_configuration.cpp
@@ -90,7 +90,7 @@ static void lcd_factory_settings() {
void menu_debug() {
START_MENU();
- MENU_BACK(MSG_MAIN);
+ MENU_BACK(MSG_CONFIGURATION);
#if ENABLED(LCD_PROGRESS_BAR_TEST)
MENU_ITEM(submenu, MSG_PROGRESS_BAR_TEST, _progress_bar_test);
@@ -107,7 +107,7 @@ static void lcd_factory_settings() {
void menu_tool_change() {
START_MENU();
- MENU_BACK(MSG_MAIN);
+ MENU_BACK(MSG_CONFIGURATION);
#if ENABLED(TOOLCHANGE_FILAMENT_SWAP)
MENU_ITEM_EDIT(float3, MSG_FILAMENT_SWAP_LENGTH, &toolchange_settings.swap_length, 0, 200);
MENU_MULTIPLIER_ITEM_EDIT(int4, MSG_SINGLENOZZLE_RETRACT_SPD, &toolchange_settings.retract_speed, 10, 5400);
@@ -123,16 +123,17 @@ static void lcd_factory_settings() {
#include "../../module/motion.h"
#include "../../gcode/queue.h"
- void _recalc_offsets() {
- if (active_extruder && all_axes_known()) { // For the 2nd extruder re-home so the next tool-change gets the new offsets.
- enqueue_and_echo_commands_P(PSTR("G28")); // In future, we can babystep the 2nd extruder (if active), making homing unnecessary.
- active_extruder = 0;
- }
- }
-
void menu_tool_offsets() {
+
+ auto _recalc_offsets = []{
+ if (active_extruder && all_axes_known()) { // For the 2nd extruder re-home so the next tool-change gets the new offsets.
+ enqueue_and_echo_commands_P(PSTR("G28")); // In future, we can babystep the 2nd extruder (if active), making homing unnecessary.
+ active_extruder = 0;
+ }
+ };
+
START_MENU();
- MENU_BACK(MSG_MAIN);
+ MENU_BACK(MSG_CONFIGURATION);
#if ENABLED(DUAL_X_CARRIAGE)
MENU_MULTIPLIER_ITEM_EDIT_CALLBACK(float52, MSG_X_OFFSET, &hotend_offset[X_AXIS][1], MIN(X2_HOME_POS, X2_MAX_POS) - 25.0, MAX(X2_HOME_POS, X2_MAX_POS) + 25.0, _recalc_offsets);
#else
@@ -151,7 +152,7 @@ static void lcd_factory_settings() {
void menu_idex() {
START_MENU();
- MENU_BACK(MSG_MAIN);
+ MENU_BACK(MSG_CONFIGURATION);
MENU_ITEM(gcode, MSG_IDEX_MODE_AUTOPARK, PSTR("M605 S1\nG28 X\nG1 X100"));
const bool need_g28 = !(TEST(axis_known_position, Y_AXIS) && TEST(axis_known_position, Z_AXIS));
@@ -171,16 +172,48 @@ static void lcd_factory_settings() {
#if ENABLED(BLTOUCH)
+ #if ENABLED(BLTOUCH_LCD_VOLTAGE_MENU)
+ void bltouch_report() {
+ SERIAL_ECHOLNPAIR("EEPROM Last BLTouch Mode - ", (int)bltouch.last_written_mode);
+ SERIAL_ECHOLNPGM("Configuration BLTouch Mode - "
+ #if ENABLED(BLTOUCH_SET_5V_MODE)
+ "5V"
+ #else
+ "OD"
+ #endif
+ );
+ char mess[21];
+ strcpy_P(mess, PSTR("BLTouch Mode - "));
+ sprintf_P(&mess[15], bltouch.last_written_mode ? PSTR("5V") : PSTR("OD"));
+ ui.set_status(mess);
+ ui.return_to_status();
+ }
+ #endif
+
void menu_bltouch() {
START_MENU();
- MENU_BACK(MSG_MAIN);
+ MENU_BACK(MSG_CONFIGURATION);
MENU_ITEM(function, MSG_BLTOUCH_RESET, bltouch._reset);
MENU_ITEM(function, MSG_BLTOUCH_SELFTEST, bltouch._selftest);
MENU_ITEM(function, MSG_BLTOUCH_DEPLOY, bltouch._deploy);
MENU_ITEM(function, MSG_BLTOUCH_STOW, bltouch._stow);
MENU_ITEM(function, MSG_BLTOUCH_SW_MODE, bltouch._set_SW_mode);
- MENU_ITEM(function, MSG_BLTOUCH_5V_MODE, bltouch._set_5V_mode);
- MENU_ITEM(function, MSG_BLTOUCH_OD_MODE, bltouch._set_OD_mode);
+ #if ENABLED(BLTOUCH_LCD_VOLTAGE_MENU)
+ MENU_ITEM(submenu, MSG_BLTOUCH_5V_MODE, []{
+ do_select_screen(PSTR(MSG_BLTOUCH_5V_MODE), PSTR(MSG_BUTTON_CANCEL), bltouch._set_5V_mode, ui.goto_previous_screen, PSTR(MSG_BLTOUCH_MODE_CHANGE));
+ });
+ MENU_ITEM(submenu, MSG_BLTOUCH_OD_MODE, []{
+ do_select_screen(PSTR(MSG_BLTOUCH_OD_MODE), PSTR(MSG_BUTTON_CANCEL), bltouch._set_OD_mode, ui.goto_previous_screen, PSTR(MSG_BLTOUCH_MODE_CHANGE));
+ });
+ MENU_ITEM(function, MSG_BLTOUCH_MODE_STORE, bltouch._mode_store);
+ MENU_ITEM(submenu, MSG_BLTOUCH_MODE_STORE_5V, []{
+ do_select_screen(PSTR(MSG_BLTOUCH_MODE_STORE_5V), PSTR(MSG_BUTTON_CANCEL), bltouch.mode_conv_5V, ui.goto_previous_screen, PSTR(MSG_BLTOUCH_MODE_CHANGE));
+ });
+ MENU_ITEM(submenu, MSG_BLTOUCH_MODE_STORE_OD, []{
+ do_select_screen(PSTR(MSG_BLTOUCH_MODE_STORE_OD), PSTR(MSG_BUTTON_CANCEL), bltouch.mode_conv_OD, ui.goto_previous_screen, PSTR(MSG_BLTOUCH_MODE_CHANGE));
+ });
+ MENU_ITEM(function, MSG_BLTOUCH_MODE_ECHO, bltouch_report);
+ #endif
END_MENU();
}
@@ -192,7 +225,7 @@ static void lcd_factory_settings() {
void menu_case_light() {
START_MENU();
- MENU_BACK(MSG_MAIN);
+ MENU_BACK(MSG_CONFIGURATION);
MENU_ITEM_EDIT_CALLBACK(uint8, MSG_CASE_LIGHT_BRIGHTNESS, &case_light_brightness, 0, 255, update_case_light, true);
MENU_ITEM_EDIT_CALLBACK(bool, MSG_CASE_LIGHT, (bool*)&case_light_on, update_case_light);
END_MENU();
@@ -206,7 +239,7 @@ static void lcd_factory_settings() {
void menu_config_retract() {
START_MENU();
- MENU_BACK(MSG_CONTROL);
+ MENU_BACK(MSG_CONFIGURATION);
#if ENABLED(FWRETRACT_AUTORETRACT)
MENU_ITEM_EDIT_CALLBACK(bool, MSG_AUTORETRACT, &fwretract.autoretract_enabled, fwretract.refresh_autoretract);
#endif
diff --git a/Marlin/src/lcd/menu/menu_filament.cpp b/Marlin/src/lcd/menu/menu_filament.cpp
index 9c91f7748b..2902d12a00 100644
--- a/Marlin/src/lcd/menu/menu_filament.cpp
+++ b/Marlin/src/lcd/menu/menu_filament.cpp
@@ -372,8 +372,8 @@ void _lcd_pause_message(PGM_P const msg1, PGM_P const msg2=nullptr, PGM_P const
STATIC_ITEM_P(pause_header(), true, true);
STATIC_ITEM_P(msg1);
if (msg2) STATIC_ITEM_P(msg2);
- if (msg3) STATIC_ITEM_P(msg3);
- if ((!!msg2) + (!!msg3) + 2 < LCD_HEIGHT - 1) STATIC_ITEM(" ");
+ if (msg3 && (LCD_HEIGHT) >= 5) STATIC_ITEM_P(msg3);
+ if ((!!msg2) + (!!msg3) + 2 < (LCD_HEIGHT) - 1) STATIC_ITEM(" ");
HOTEND_STATUS_ITEM();
END_SCREEN();
}
diff --git a/Marlin/src/lcd/menu/menu_main.cpp b/Marlin/src/lcd/menu/menu_main.cpp
index 08d30d124e..93ebe75781 100644
--- a/Marlin/src/lcd/menu/menu_main.cpp
+++ b/Marlin/src/lcd/menu/menu_main.cpp
@@ -53,6 +53,8 @@
#if MACHINE_CAN_PAUSE
void lcd_pause_job() {
+ ui.synchronize(PSTR(MSG_PAUSE_PRINT));
+
#if ENABLED(POWER_LOSS_RECOVERY)
if (recovery.enabled) recovery.save(true, false);
#endif
@@ -69,7 +71,6 @@
#elif defined(ACTION_ON_PAUSE)
host_action_pause();
#endif
- planner.synchronize();
}
void lcd_resume() {
@@ -264,7 +265,6 @@ void menu_main() {
if (card_detected) {
if (!card_open) {
- MENU_ITEM(submenu, MSG_CARD_MENU, menu_sdcard);
MENU_ITEM(gcode,
#if PIN_EXISTS(SD_DETECT)
MSG_CHANGE_SDCARD, PSTR("M21")
@@ -272,6 +272,7 @@ void menu_main() {
MSG_RELEASE_SDCARD, PSTR("M22")
#endif
);
+ MENU_ITEM(submenu, MSG_CARD_MENU, menu_sdcard);
}
}
else {
diff --git a/Marlin/src/lcd/menu/menu_temperature.cpp b/Marlin/src/lcd/menu/menu_temperature.cpp
index 012c0d574e..f41fb18e79 100644
--- a/Marlin/src/lcd/menu/menu_temperature.cpp
+++ b/Marlin/src/lcd/menu/menu_temperature.cpp
@@ -414,18 +414,12 @@ void menu_temperature() {
#endif
#endif // FAN_COUNT > 0
+ #if ENABLED(SPINDLE_LASER_ENABLE)
+ MENU_ITEM(submenu, MSG_LASER_MENU, menu_spindle_laser);
+ #endif
+
#if HAS_TEMP_HOTEND
- //
- // Cooldown
- //
- bool has_heat = false;
- HOTEND_LOOP() if (thermalManager.temp_hotend[HOTEND_INDEX].target) { has_heat = true; break; }
- #if HAS_TEMP_BED
- if (thermalManager.temp_bed.target) has_heat = true;
- #endif
- if (has_heat) MENU_ITEM(function, MSG_COOLDOWN, lcd_cooldown);
-
//
// Preheat for Material 1 and 2
//
@@ -437,11 +431,17 @@ void menu_temperature() {
MENU_ITEM(function, MSG_PREHEAT_2, lcd_preheat_m2_e0_only);
#endif
- #endif // HAS_TEMP_HOTEND
+ //
+ // Cooldown
+ //
+ bool has_heat = false;
+ HOTEND_LOOP() if (thermalManager.temp_hotend[HOTEND_INDEX].target) { has_heat = true; break; }
+ #if HAS_TEMP_BED
+ if (thermalManager.temp_bed.target) has_heat = true;
+ #endif
+ if (has_heat) MENU_ITEM(function, MSG_COOLDOWN, lcd_cooldown);
- #if ENABLED(SPINDLE_LASER_ENABLE)
- MENU_ITEM(submenu, MSG_LASER_MENU, menu_spindle_laser);
- #endif
+ #endif // HAS_TEMP_HOTEND
END_MENU();
}
diff --git a/Marlin/src/lcd/menu/menu_tmc.cpp b/Marlin/src/lcd/menu/menu_tmc.cpp
index 13634c5894..585af5b5b6 100644
--- a/Marlin/src/lcd/menu/menu_tmc.cpp
+++ b/Marlin/src/lcd/menu/menu_tmc.cpp
@@ -124,43 +124,43 @@ void menu_tmc_current() {
#define TMC_EDIT_STORED_HYBRID_THRS(ST, MSG) MENU_ITEM_EDIT_CALLBACK(uint8, MSG, &stepper##ST.stored.hybrid_thrs, 0, 255, refresh_hybrid_thrs_##ST);
#if AXIS_HAS_STEALTHCHOP(X)
- void refresh_hybrid_thrs_X() { stepperX.refresh_hybrid_thrs(planner.settings.axis_steps_per_mm[X_AXIS]); }
+ void refresh_hybrid_thrs_X() { stepperX.refresh_hybrid_thrs(); }
#endif
#if AXIS_HAS_STEALTHCHOP(Y)
- void refresh_hybrid_thrs_Y() { stepperY.refresh_hybrid_thrs(planner.settings.axis_steps_per_mm[Y_AXIS]); }
+ void refresh_hybrid_thrs_Y() { stepperY.refresh_hybrid_thrs(); }
#endif
#if AXIS_HAS_STEALTHCHOP(Z)
- void refresh_hybrid_thrs_Z() { stepperZ.refresh_hybrid_thrs(planner.settings.axis_steps_per_mm[Z_AXIS]); }
+ void refresh_hybrid_thrs_Z() { stepperZ.refresh_hybrid_thrs(); }
#endif
#if AXIS_HAS_STEALTHCHOP(X2)
- void refresh_hybrid_thrs_X2() { stepperX2.refresh_hybrid_thrs(planner.settings.axis_steps_per_mm[X_AXIS]); }
+ void refresh_hybrid_thrs_X2() { stepperX2.refresh_hybrid_thrs(); }
#endif
#if AXIS_HAS_STEALTHCHOP(Y2)
- void refresh_hybrid_thrs_Y2() { stepperY2.refresh_hybrid_thrs(planner.settings.axis_steps_per_mm[Y_AXIS]); }
+ void refresh_hybrid_thrs_Y2() { stepperY2.refresh_hybrid_thrs(); }
#endif
#if AXIS_HAS_STEALTHCHOP(Z2)
- void refresh_hybrid_thrs_Z2() { stepperZ2.refresh_hybrid_thrs(planner.settings.axis_steps_per_mm[Z_AXIS]); }
+ void refresh_hybrid_thrs_Z2() { stepperZ2.refresh_hybrid_thrs(); }
#endif
#if AXIS_HAS_STEALTHCHOP(Z3)
- void refresh_hybrid_thrs_Z3() { stepperZ3.refresh_hybrid_thrs(planner.settings.axis_steps_per_mm[Z_AXIS]); }
+ void refresh_hybrid_thrs_Z3() { stepperZ3.refresh_hybrid_thrs(); }
#endif
#if AXIS_HAS_STEALTHCHOP(E0)
- void refresh_hybrid_thrs_E0() { stepperE0.refresh_hybrid_thrs(planner.settings.axis_steps_per_mm[E_AXIS]); }
+ void refresh_hybrid_thrs_E0() { stepperE0.refresh_hybrid_thrs(); }
#endif
#if AXIS_HAS_STEALTHCHOP(E1)
- void refresh_hybrid_thrs_E1() { stepperE1.refresh_hybrid_thrs(planner.settings.axis_steps_per_mm[E_AXIS_N(1)]); }
+ void refresh_hybrid_thrs_E1() { stepperE1.refresh_hybrid_thrs(); }
#endif
#if AXIS_HAS_STEALTHCHOP(E2)
- void refresh_hybrid_thrs_E2() { stepperE2.refresh_hybrid_thrs(planner.settings.axis_steps_per_mm[E_AXIS_N(2)]); }
+ void refresh_hybrid_thrs_E2() { stepperE2.refresh_hybrid_thrs(); }
#endif
#if AXIS_HAS_STEALTHCHOP(E3)
- void refresh_hybrid_thrs_E3() { stepperE3.refresh_hybrid_thrs(planner.settings.axis_steps_per_mm[E_AXIS_N(3)]); }
+ void refresh_hybrid_thrs_E3() { stepperE3.refresh_hybrid_thrs(); }
#endif
#if AXIS_HAS_STEALTHCHOP(E4)
- void refresh_hybrid_thrs_E4() { stepperE4.refresh_hybrid_thrs(planner.settings.axis_steps_per_mm[E_AXIS_N(4)]); }
+ void refresh_hybrid_thrs_E4() { stepperE4.refresh_hybrid_thrs(); }
#endif
#if AXIS_HAS_STEALTHCHOP(E5)
- void refresh_hybrid_thrs_E5() { stepperE5.refresh_hybrid_thrs(planner.settings.axis_steps_per_mm[E_AXIS_N(5)]); }
+ void refresh_hybrid_thrs_E5() { stepperE5.refresh_hybrid_thrs(); }
#endif
void menu_tmc_hybrid_thrs() {
diff --git a/Marlin/src/lcd/thermistornames.h b/Marlin/src/lcd/thermistornames.h
index d143de5719..bb210b2dde 100644
--- a/Marlin/src/lcd/thermistornames.h
+++ b/Marlin/src/lcd/thermistornames.h
@@ -116,5 +116,7 @@
#define THERMISTOR_NAME "Dummy 1"
#elif THERMISTOR_ID == 999
#define THERMISTOR_NAME "Dummy 2"
+#elif THERMISTOR_ID == 1000
+ #define THERMISTOR_NAME "Custom"
#endif // THERMISTOR_ID
diff --git a/Marlin/src/lcd/ultralcd.cpp b/Marlin/src/lcd/ultralcd.cpp
index 8dbec921e1..a044886793 100644
--- a/Marlin/src/lcd/ultralcd.cpp
+++ b/Marlin/src/lcd/ultralcd.cpp
@@ -293,10 +293,6 @@ void MarlinUI::init() {
#if HAS_ENCODER_ACTION
encoderDiff = 0;
#endif
-
- #if HAS_TRINAMIC && HAS_LCD_MENU
- init_tmc_section();
- #endif
}
bool MarlinUI::get_blink() {
@@ -1000,8 +996,8 @@ void MarlinUI::update() {
uint8_t get_ADC_keyValue(void) {
if (thermalManager.ADCKey_count >= 16) {
- const uint16_t currentkpADCValue = thermalManager.current_ADCKey_raw >> 2;
- thermalManager.current_ADCKey_raw = 0;
+ const uint16_t currentkpADCValue = thermalManager.current_ADCKey_raw << 2;
+ thermalManager.current_ADCKey_raw = 1024;
thermalManager.ADCKey_count = 0;
if (currentkpADCValue < 4000)
for (uint8_t i = 0; i < ADC_KEY_NUM; i++) {
diff --git a/Marlin/src/module/configuration_store.cpp b/Marlin/src/module/configuration_store.cpp
index 50d5214ff2..df9f62fce8 100644
--- a/Marlin/src/module/configuration_store.cpp
+++ b/Marlin/src/module/configuration_store.cpp
@@ -37,7 +37,7 @@
*/
// Change EEPROM version if the structure changes
-#define EEPROM_VERSION "V66"
+#define EEPROM_VERSION "V67"
#define EEPROM_OFFSET 100
// Check the integrity of data offsets.
@@ -109,10 +109,13 @@ extern float saved_extruder_advance_K[EXTRUDERS];
void M217_report(const bool eeprom);
#endif
+#if ENABLED(BLTOUCH)
+ #include "../feature/bltouch.h"
+#endif
+
#if HAS_TRINAMIC
#include "stepper_indirection.h"
#include "../feature/tmc_util.h"
- #define TMC_GET_PWMTHRS(A,Q) _tmc_thrs(stepper##Q.microsteps(), stepper##Q.TPWMTHRS(), planner.settings.axis_steps_per_mm[_AXIS(A)])
#endif
#pragma pack(push, 1) // No padding between variables
@@ -207,6 +210,11 @@ typedef struct SettingsDataStruct {
//
uint16_t servo_angles[EEPROM_NUM_SERVOS][2]; // M281 P L U
+ //
+ // BLTOUCH
+ //
+ bool bltouch_last_written_mode;
+
//
// DELTA / [XYZ]_DUAL_ENDSTOPS
//
@@ -701,6 +709,19 @@ void MarlinSettings::postprocess() {
EEPROM_WRITE(servo_angles);
}
+ //
+ // BLTOUCH
+ //
+ {
+ _FIELD_TEST(bltouch_last_written_mode);
+ #if ENABLED(BLTOUCH)
+ const bool &bltouch_last_written_mode = bltouch.last_written_mode;
+ #else
+ constexpr bool bltouch_last_written_mode = false;
+ #endif
+ EEPROM_WRITE(bltouch_last_written_mode);
+ }
+
//
// DELTA Geometry or Dual Endstops offsets
//
@@ -962,49 +983,49 @@ void MarlinSettings::postprocess() {
#if ENABLED(HYBRID_THRESHOLD)
tmc_hybrid_threshold_t tmc_hybrid_threshold = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
#if AXIS_HAS_STEALTHCHOP(X)
- tmc_hybrid_threshold.X = TMC_GET_PWMTHRS(X, X);
+ tmc_hybrid_threshold.X = stepperX.get_pwm_thrs();
#endif
#if AXIS_HAS_STEALTHCHOP(Y)
- tmc_hybrid_threshold.Y = TMC_GET_PWMTHRS(Y, Y);
+ tmc_hybrid_threshold.Y = stepperY.get_pwm_thrs();
#endif
#if AXIS_HAS_STEALTHCHOP(Z)
- tmc_hybrid_threshold.Z = TMC_GET_PWMTHRS(Z, Z);
+ tmc_hybrid_threshold.Z = stepperZ.get_pwm_thrs();
#endif
#if AXIS_HAS_STEALTHCHOP(X2)
- tmc_hybrid_threshold.X2 = TMC_GET_PWMTHRS(X, X2);
+ tmc_hybrid_threshold.X2 = stepperX2.get_pwm_thrs();
#endif
#if AXIS_HAS_STEALTHCHOP(Y2)
- tmc_hybrid_threshold.Y2 = TMC_GET_PWMTHRS(Y, Y2);
+ tmc_hybrid_threshold.Y2 = stepperY2.get_pwm_thrs();
#endif
#if AXIS_HAS_STEALTHCHOP(Z2)
- tmc_hybrid_threshold.Z2 = TMC_GET_PWMTHRS(Z, Z2);
+ tmc_hybrid_threshold.Z2 = stepperZ2.get_pwm_thrs();
#endif
#if AXIS_HAS_STEALTHCHOP(Z3)
- tmc_hybrid_threshold.Z3 = TMC_GET_PWMTHRS(Z, Z3);
+ tmc_hybrid_threshold.Z3 = stepperZ3.get_pwm_thrs();
#endif
#if MAX_EXTRUDERS
#if AXIS_HAS_STEALTHCHOP(E0)
- tmc_hybrid_threshold.E0 = TMC_GET_PWMTHRS(E, E0);
+ tmc_hybrid_threshold.E0 = stepperE0.get_pwm_thrs();
#endif
#if MAX_EXTRUDERS > 1
#if AXIS_HAS_STEALTHCHOP(E1)
- tmc_hybrid_threshold.E1 = TMC_GET_PWMTHRS(E, E1);
+ tmc_hybrid_threshold.E1 = stepperE1.get_pwm_thrs();
#endif
#if MAX_EXTRUDERS > 2
#if AXIS_HAS_STEALTHCHOP(E2)
- tmc_hybrid_threshold.E2 = TMC_GET_PWMTHRS(E, E2);
+ tmc_hybrid_threshold.E2 = stepperE2.get_pwm_thrs();
#endif
#if MAX_EXTRUDERS > 3
#if AXIS_HAS_STEALTHCHOP(E3)
- tmc_hybrid_threshold.E3 = TMC_GET_PWMTHRS(E, E3);
+ tmc_hybrid_threshold.E3 = stepperE3.get_pwm_thrs();
#endif
#if MAX_EXTRUDERS > 4
#if AXIS_HAS_STEALTHCHOP(E4)
- tmc_hybrid_threshold.E4 = TMC_GET_PWMTHRS(E, E4);
+ tmc_hybrid_threshold.E4 = stepperE4.get_pwm_thrs();
#endif
#if MAX_EXTRUDERS > 5
#if AXIS_HAS_STEALTHCHOP(E5)
- tmc_hybrid_threshold.E5 = TMC_GET_PWMTHRS(E, E5);
+ tmc_hybrid_threshold.E5 = stepperE5.get_pwm_thrs();
#endif
#endif // MAX_EXTRUDERS > 5
#endif // MAX_EXTRUDERS > 4
@@ -1177,17 +1198,20 @@ void MarlinSettings::postprocess() {
// Backlash Compensation
//
{
- #if ENABLED(BACKLASH_COMPENSATION)
- const float (&backlash_distance_mm)[XYZ] = backlash.distance_mm;
- const uint8_t &backlash_correction = backlash.correction;
+ #ifdef BACKLASH_DISTANCE_MM
+ const float (&backlash_distance_mm)[XYZ] = backlash.distance_mm;
#else
- const float backlash_distance_mm[XYZ] = { 0 };
- const uint8_t backlash_correction = 0;
+ const float backlash_distance_mm[XYZ] = { 0 };
+ #endif
+ #if ENABLED(BACKLASH_COMPENSATION)
+ const uint8_t &backlash_correction = backlash.correction;
+ #else
+ const uint8_t backlash_correction = 0;
#endif
#ifdef BACKLASH_SMOOTHING_MM
- const float &backlash_smoothing_mm = backlash.smoothing_mm;
+ const float &backlash_smoothing_mm = backlash.smoothing_mm;
#else
- const float backlash_smoothing_mm = 3;
+ const float backlash_smoothing_mm = 3;
#endif
_FIELD_TEST(backlash_distance_mm);
EEPROM_WRITE(backlash_distance_mm[X_AXIS]);
@@ -1486,6 +1510,19 @@ void MarlinSettings::postprocess() {
EEPROM_READ(servo_angles_arr);
}
+ //
+ // BLTOUCH
+ //
+ {
+ _FIELD_TEST(bltouch_last_written_mode);
+ #if ENABLED(BLTOUCH)
+ bool &bltouch_last_written_mode = bltouch.last_written_mode;
+ #else
+ bool bltouch_last_written_mode;
+ #endif
+ EEPROM_READ(bltouch_last_written_mode);
+ }
+
//
// DELTA Geometry or Dual Endstops offsets
//
@@ -1739,46 +1776,45 @@ void MarlinSettings::postprocess() {
EEPROM_READ(tmc_hybrid_threshold);
#if ENABLED(HYBRID_THRESHOLD)
- #define TMC_SET_PWMTHRS(A,Q) tmc_set_pwmthrs(stepper##Q, tmc_hybrid_threshold.Q, planner.settings.axis_steps_per_mm[_AXIS(A)])
if (!validating) {
#if AXIS_HAS_STEALTHCHOP(X)
- TMC_SET_PWMTHRS(X, X);
+ stepperX.set_pwm_thrs(tmc_hybrid_threshold.X);
#endif
#if AXIS_HAS_STEALTHCHOP(Y)
- TMC_SET_PWMTHRS(Y, Y);
+ stepperY.set_pwm_thrs(tmc_hybrid_threshold.Y);
#endif
#if AXIS_HAS_STEALTHCHOP(Z)
- TMC_SET_PWMTHRS(Z, Z);
+ stepperZ.set_pwm_thrs(tmc_hybrid_threshold.Z);
#endif
#if AXIS_HAS_STEALTHCHOP(X2)
- TMC_SET_PWMTHRS(X, X2);
+ stepperX2.set_pwm_thrs(tmc_hybrid_threshold.X2);
#endif
#if AXIS_HAS_STEALTHCHOP(Y2)
- TMC_SET_PWMTHRS(Y, Y2);
+ stepperY2.set_pwm_thrs(tmc_hybrid_threshold.Y2);
#endif
#if AXIS_HAS_STEALTHCHOP(Z2)
- TMC_SET_PWMTHRS(Z, Z2);
+ stepperZ2.set_pwm_thrs(tmc_hybrid_threshold.Z2);
#endif
#if AXIS_HAS_STEALTHCHOP(Z3)
- TMC_SET_PWMTHRS(Z, Z3);
+ stepperZ3.set_pwm_thrs(tmc_hybrid_threshold.Z3);
#endif
#if AXIS_HAS_STEALTHCHOP(E0)
- TMC_SET_PWMTHRS(E, E0);
+ stepperE0.set_pwm_thrs(tmc_hybrid_threshold.E0);
#endif
#if AXIS_HAS_STEALTHCHOP(E1)
- TMC_SET_PWMTHRS(E, E1);
+ stepperE1.set_pwm_thrs(tmc_hybrid_threshold.E1);
#endif
#if AXIS_HAS_STEALTHCHOP(E2)
- TMC_SET_PWMTHRS(E, E2);
+ stepperE2.set_pwm_thrs(tmc_hybrid_threshold.E2);
#endif
#if AXIS_HAS_STEALTHCHOP(E3)
- TMC_SET_PWMTHRS(E, E3);
+ stepperE3.set_pwm_thrs(tmc_hybrid_threshold.E3);
#endif
#if AXIS_HAS_STEALTHCHOP(E4)
- TMC_SET_PWMTHRS(E, E4);
+ stepperE4.set_pwm_thrs(tmc_hybrid_threshold.E4);
#endif
#if AXIS_HAS_STEALTHCHOP(E5)
- TMC_SET_PWMTHRS(E, E5);
+ stepperE5.set_pwm_thrs(tmc_hybrid_threshold.E5);
#endif
}
#endif
@@ -1962,17 +1998,20 @@ void MarlinSettings::postprocess() {
// Backlash Compensation
//
{
- #if ENABLED(BACKLASH_COMPENSATION)
- float (&backlash_distance_mm)[XYZ] = backlash.distance_mm;
- uint8_t &backlash_correction = backlash.correction;
+ #ifdef BACKLASH_DISTANCE_MM
+ float (&backlash_distance_mm)[XYZ] = backlash.distance_mm;
+ #else
+ float backlash_distance_mm[XYZ];
+ #endif
+ #if ENABLED(BACKLASH_COMPENSATION)
+ uint8_t &backlash_correction = backlash.correction;
#else
- float backlash_distance_mm[XYZ];
uint8_t backlash_correction;
#endif
#ifdef BACKLASH_SMOOTHING_MM
float &backlash_smoothing_mm = backlash.smoothing_mm;
#else
- float backlash_smoothing_mm;
+ float backlash_smoothing_mm;
#endif
_FIELD_TEST(backlash_distance_mm);
EEPROM_READ(backlash_distance_mm[X_AXIS]);
@@ -2309,6 +2348,13 @@ void MarlinSettings::reset() {
COPY(servo_angles, base_servo_angles);
#endif
+ //
+ // BLTOUCH
+ //
+ //#if ENABLED(BLTOUCH)
+ // bltouch.last_written_mode;
+ //#endif
+
//
// Endstop Adjustments
//
@@ -3143,13 +3189,13 @@ void MarlinSettings::reset() {
say_M913();
#endif
#if AXIS_HAS_STEALTHCHOP(X)
- SERIAL_ECHOPAIR(" X", TMC_GET_PWMTHRS(X, X));
+ SERIAL_ECHOPAIR(" X", stepperX.get_pwm_thrs());
#endif
#if AXIS_HAS_STEALTHCHOP(Y)
- SERIAL_ECHOPAIR(" Y", TMC_GET_PWMTHRS(Y, Y));
+ SERIAL_ECHOPAIR(" Y", stepperY.get_pwm_thrs());
#endif
#if AXIS_HAS_STEALTHCHOP(Z)
- SERIAL_ECHOPAIR(" Z", TMC_GET_PWMTHRS(Z, Z));
+ SERIAL_ECHOPAIR(" Z", stepperZ.get_pwm_thrs());
#endif
#if AXIS_HAS_STEALTHCHOP(X) || AXIS_HAS_STEALTHCHOP(Y) || AXIS_HAS_STEALTHCHOP(Z)
SERIAL_EOL();
@@ -3160,13 +3206,13 @@ void MarlinSettings::reset() {
SERIAL_ECHOPGM(" I1");
#endif
#if AXIS_HAS_STEALTHCHOP(X2)
- SERIAL_ECHOPAIR(" X", TMC_GET_PWMTHRS(X, X2));
+ SERIAL_ECHOPAIR(" X", stepperX2.get_pwm_thrs());
#endif
#if AXIS_HAS_STEALTHCHOP(Y2)
- SERIAL_ECHOPAIR(" Y", TMC_GET_PWMTHRS(Y, Y2));
+ SERIAL_ECHOPAIR(" Y", stepperY2.get_pwm_thrs());
#endif
#if AXIS_HAS_STEALTHCHOP(Z2)
- SERIAL_ECHOPAIR(" Z", TMC_GET_PWMTHRS(Z, Z2));
+ SERIAL_ECHOPAIR(" Z", stepperZ2.get_pwm_thrs());
#endif
#if AXIS_HAS_STEALTHCHOP(X2) || AXIS_HAS_STEALTHCHOP(Y2) || AXIS_HAS_STEALTHCHOP(Z2)
SERIAL_EOL();
@@ -3174,32 +3220,32 @@ void MarlinSettings::reset() {
#if AXIS_HAS_STEALTHCHOP(Z3)
say_M913();
- SERIAL_ECHOLNPAIR(" I2 Z", TMC_GET_PWMTHRS(Z, Z3));
+ SERIAL_ECHOLNPAIR(" I2 Z", stepperZ3.get_pwm_thrs());
#endif
#if AXIS_HAS_STEALTHCHOP(E0)
say_M913();
- SERIAL_ECHOLNPAIR(" T0 E", TMC_GET_PWMTHRS(E, E0));
+ SERIAL_ECHOLNPAIR(" T0 E", stepperE0.get_pwm_thrs());
#endif
#if AXIS_HAS_STEALTHCHOP(E1)
say_M913();
- SERIAL_ECHOLNPAIR(" T1 E", TMC_GET_PWMTHRS(E, E1));
+ SERIAL_ECHOLNPAIR(" T1 E", stepperE1.get_pwm_thrs());
#endif
#if AXIS_HAS_STEALTHCHOP(E2)
say_M913();
- SERIAL_ECHOLNPAIR(" T2 E", TMC_GET_PWMTHRS(E, E2));
+ SERIAL_ECHOLNPAIR(" T2 E", stepperE2.get_pwm_thrs());
#endif
#if AXIS_HAS_STEALTHCHOP(E3)
say_M913();
- SERIAL_ECHOLNPAIR(" T3 E", TMC_GET_PWMTHRS(E, E3));
+ SERIAL_ECHOLNPAIR(" T3 E", stepperE3.get_pwm_thrs());
#endif
#if AXIS_HAS_STEALTHCHOP(E4)
say_M913();
- SERIAL_ECHOLNPAIR(" T4 E", TMC_GET_PWMTHRS(E, E4));
+ SERIAL_ECHOLNPAIR(" T4 E", stepperE4.get_pwm_thrs());
#endif
#if AXIS_HAS_STEALTHCHOP(E5)
say_M913();
- SERIAL_ECHOLNPAIR(" T5 E", TMC_GET_PWMTHRS(E, E5));
+ SERIAL_ECHOLNPAIR(" T5 E", stepperE5.get_pwm_thrs());
#endif
SERIAL_EOL();
#endif // HYBRID_THRESHOLD
diff --git a/Marlin/src/module/endstops.cpp b/Marlin/src/module/endstops.cpp
index bfb89fb7b5..deba8b33a4 100644
--- a/Marlin/src/module/endstops.cpp
+++ b/Marlin/src/module/endstops.cpp
@@ -465,8 +465,7 @@ void _O2 Endstops::M119() {
#endif
#endif
#if ENABLED(BLTOUCH)
- bltouch._reset();
- if (enabled_globally) bltouch._stow();
+ bltouch._reset_SW_mode();
#endif
} // Endstops::M119
diff --git a/Marlin/src/module/motion.cpp b/Marlin/src/module/motion.cpp
index 7f1f9172c9..5469b4d691 100644
--- a/Marlin/src/module/motion.cpp
+++ b/Marlin/src/module/motion.cpp
@@ -1422,8 +1422,7 @@ void homeaxis(const AxisEnum axis) {
if (DEBUGGING(LEVELING)) DEBUG_ECHOLNPGM("Home 1 Fast:");
#if HOMING_Z_WITH_PROBE && ENABLED(BLTOUCH)
- // BLTOUCH needs to be deployed every time
- if (axis == Z_AXIS && bltouch.deploy()) return;
+ if (axis == Z_AXIS && bltouch.deploy()) return; // The initial DEPLOY
#endif
do_homing_move(axis, 1.5f * max_length(
@@ -1435,9 +1434,8 @@ void homeaxis(const AxisEnum axis) {
) * axis_home_dir
);
- #if HOMING_Z_WITH_PROBE && ENABLED(BLTOUCH)
- // BLTOUCH needs to be stowed after trigger to rearm itself
- if (axis == Z_AXIS) bltouch.stow();
+ #if HOMING_Z_WITH_PROBE && ENABLED(BLTOUCH) && DISABLED(BLTOUCH_HS_MODE)
+ if (axis == Z_AXIS) bltouch.stow(); // Intermediate STOW (in LOW SPEED MODE)
#endif
// When homing Z with probe respect probe clearance
@@ -1461,16 +1459,14 @@ void homeaxis(const AxisEnum axis) {
// Slow move towards endstop until triggered
if (DEBUGGING(LEVELING)) DEBUG_ECHOLNPGM("Home 2 Slow:");
- #if HOMING_Z_WITH_PROBE && ENABLED(BLTOUCH)
- // BLTOUCH needs to be deployed every time
- if (axis == Z_AXIS && bltouch.deploy()) return;
+ #if HOMING_Z_WITH_PROBE && ENABLED(BLTOUCH) && DISABLED(BLTOUCH_HS_MODE)
+ if (axis == Z_AXIS && bltouch.deploy()) return; // Intermediate DEPLOY (in LOW SPEED MODE)
#endif
do_homing_move(axis, 2 * bump, get_homing_bump_feedrate(axis));
#if HOMING_Z_WITH_PROBE && ENABLED(BLTOUCH)
- // BLTOUCH needs to be stowed after trigger to rearm itself
- if (axis == Z_AXIS) bltouch.stow();
+ if (axis == Z_AXIS) bltouch.stow(); // The final STOW
#endif
}
diff --git a/Marlin/src/module/probe.cpp b/Marlin/src/module/probe.cpp
index 20afebefd1..207490405d 100644
--- a/Marlin/src/module/probe.cpp
+++ b/Marlin/src/module/probe.cpp
@@ -356,9 +356,15 @@ FORCE_INLINE void probe_specific_action(const bool deploy) {
dock_sled(!deploy);
- #elif HAS_Z_SERVO_PROBE && DISABLED(BLTOUCH)
+ #elif HAS_Z_SERVO_PROBE
- MOVE_SERVO(Z_PROBE_SERVO_NR, servo_angles[Z_PROBE_SERVO_NR][deploy ? 0 : 1]);
+ #if DISABLED(BLTOUCH)
+ MOVE_SERVO(Z_PROBE_SERVO_NR, servo_angles[Z_PROBE_SERVO_NR][deploy ? 0 : 1]);
+ #elif ENABLED(BLTOUCH_HS_MODE)
+ // In HIGH SPEED MODE, use the normal retractable probe logic in this code
+ // i.e. no intermediate STOWs and DEPLOYs in between individual probe actions
+ if (deploy) bltouch.deploy(); else bltouch.stow();
+ #endif
#elif ENABLED(Z_PROBE_ALLEN_KEY)
@@ -492,9 +498,8 @@ static bool do_probe_move(const float z, const float fr_mm_s) {
}
#endif
- // Deploy BLTouch at the start of any probe
- #if ENABLED(BLTOUCH)
- if (bltouch.deploy()) return true;
+ #if ENABLED(BLTOUCH) && DISABLED(BLTOUCH_HS_MODE)
+ if (bltouch.deploy()) return true; // DEPLOY in LOW SPEED MODE on every probe action
#endif
// Disable stealthChop if used. Enable diag1 pin on driver.
@@ -544,9 +549,8 @@ static bool do_probe_move(const float z, const float fr_mm_s) {
tmc_disable_stallguard(stepperZ, stealth_states.z);
#endif
- // Retract BLTouch immediately after a probe if it was triggered
- #if ENABLED(BLTOUCH)
- if (probe_triggered && bltouch.stow()) return true;
+ #if ENABLED(BLTOUCH) && DISABLED(BLTOUCH_HS_MODE)
+ if (probe_triggered && bltouch.stow()) return true; // STOW in LOW SPEED MODE on trigger on every probe action
#endif
// Clear endstop flags
diff --git a/Marlin/src/module/stepper.cpp b/Marlin/src/module/stepper.cpp
index 5666f58bb3..6b655b44e9 100644
--- a/Marlin/src/module/stepper.cpp
+++ b/Marlin/src/module/stepper.cpp
@@ -2327,10 +2327,10 @@ void Stepper::report_positions() {
#define _SAVE_START NOOP
#if EXTRA_CYCLES_BABYSTEP > 0
#define _PULSE_WAIT DELAY_NS(EXTRA_CYCLES_BABYSTEP * NANOSECONDS_PER_CYCLE)
- #elif STEP_PULSE_CYCLES > 0
- #define _PULSE_WAIT NOOP
#elif ENABLED(DELTA)
#define _PULSE_WAIT DELAY_US(2);
+ #elif STEP_PULSE_CYCLES > 0
+ #define _PULSE_WAIT NOOP
#else
#define _PULSE_WAIT DELAY_US(4);
#endif
diff --git a/Marlin/src/module/stepper_indirection.cpp b/Marlin/src/module/stepper_indirection.cpp
index 2e25b11afd..cb1b4113e1 100644
--- a/Marlin/src/module/stepper_indirection.cpp
+++ b/Marlin/src/module/stepper_indirection.cpp
@@ -144,69 +144,88 @@
#endif // TMC26X
#if HAS_TRINAMIC
- enum StealthIndex : uint8_t { STEALTH_AXIS_XY, STEALTH_AXIS_Z, STEALTH_AXIS_E };
- #define _TMC_INIT(ST, SPMM_INDEX, STEALTH_INDEX) tmc_init(stepper##ST, ST##_CURRENT, ST##_MICROSTEPS, ST##_HYBRID_THRESHOLD, planner.settings.axis_steps_per_mm[SPMM_INDEX], stealthchop_by_axis[STEALTH_INDEX])
-#endif
-
-//
-// TMC2130 Driver objects and inits
-//
-#if HAS_DRIVER(TMC2130)
-
+ #include
#include
#include "planner.h"
#include "../core/enum.h"
+ enum StealthIndex : uint8_t { STEALTH_AXIS_XY, STEALTH_AXIS_Z, STEALTH_AXIS_E };
+ #define _TMC_INIT(ST, STEALTH_INDEX) tmc_init(stepper##ST, ST##_CURRENT, ST##_MICROSTEPS, ST##_HYBRID_THRESHOLD, stealthchop_by_axis[STEALTH_INDEX])
+
+ // IC = TMC model number
+ // ST = Stepper object letter
+ // L = Label characters
+ // AI = Axis Enum Index
+ // SWHW = SW/SH UART selection
#if ENABLED(TMC_USE_SW_SPI)
- #define _TMC2130_DEFINE(ST, L) TMCMarlin stepper##ST(ST##_CS_PIN, ST##_RSENSE, TMC_SW_MOSI, TMC_SW_MISO, TMC_SW_SCK)
- #define TMC2130_DEFINE(ST) _TMC2130_DEFINE(ST, TMC_##ST##_LABEL)
+ #define __TMC_SPI_DEFINE(IC, ST, L, AI) TMCMarlin stepper##ST(ST##_CS_PIN, ST##_RSENSE, TMC_SW_MOSI, TMC_SW_MISO, TMC_SW_SCK)
#else
- #define _TMC2130_DEFINE(ST, L) TMCMarlin stepper##ST(ST##_CS_PIN, ST##_RSENSE)
- #define TMC2130_DEFINE(ST) _TMC2130_DEFINE(ST, TMC_##ST##_LABEL)
- #endif
- // Stepper objects of TMC2130 steppers used
- #if AXIS_DRIVER_TYPE_X(TMC2130)
- TMC2130_DEFINE(X);
- #endif
- #if AXIS_DRIVER_TYPE_X2(TMC2130)
- TMC2130_DEFINE(X2);
- #endif
- #if AXIS_DRIVER_TYPE_Y(TMC2130)
- TMC2130_DEFINE(Y);
- #endif
- #if AXIS_DRIVER_TYPE_Y2(TMC2130)
- TMC2130_DEFINE(Y2);
- #endif
- #if AXIS_DRIVER_TYPE_Z(TMC2130)
- TMC2130_DEFINE(Z);
- #endif
- #if AXIS_DRIVER_TYPE_Z2(TMC2130)
- TMC2130_DEFINE(Z2);
- #endif
- #if AXIS_DRIVER_TYPE_Z3(TMC2130)
- TMC2130_DEFINE(Z3);
- #endif
- #if AXIS_DRIVER_TYPE_E0(TMC2130)
- TMC2130_DEFINE(E0);
- #endif
- #if AXIS_DRIVER_TYPE_E1(TMC2130)
- TMC2130_DEFINE(E1);
- #endif
- #if AXIS_DRIVER_TYPE_E2(TMC2130)
- TMC2130_DEFINE(E2);
- #endif
- #if AXIS_DRIVER_TYPE_E3(TMC2130)
- TMC2130_DEFINE(E3);
- #endif
- #if AXIS_DRIVER_TYPE_E4(TMC2130)
- TMC2130_DEFINE(E4);
- #endif
- #if AXIS_DRIVER_TYPE_E5(TMC2130)
- TMC2130_DEFINE(E5);
+ #define __TMC_SPI_DEFINE(IC, ST, L, AI) TMCMarlin stepper##ST(ST##_CS_PIN, ST##_RSENSE)
#endif
- template
- void tmc_init(TMCMarlin &st, const uint16_t mA, const uint16_t microsteps, const uint32_t thrs, const float spmm, const bool stealth) {
+ #define TMC_UART_HW_DEFINE(IC, ST, L, AI) TMCMarlin stepper##ST(&ST##_HARDWARE_SERIAL, ST##_RSENSE)
+ #define TMC_UART_SW_DEFINE(IC, ST, L, AI) TMCMarlin stepper##ST(ST##_SERIAL_RX_PIN, ST##_SERIAL_TX_PIN, ST##_RSENSE, ST##_SERIAL_RX_PIN > -1)
+
+ #define _TMC_SPI_DEFINE(IC, ST, AI) __TMC_SPI_DEFINE(IC, ST, TMC_##ST##_LABEL, AI)
+ #define TMC_SPI_DEFINE(ST, AI) _TMC_SPI_DEFINE(ST##_DRIVER_TYPE, ST, AI##_AXIS)
+
+ #define _TMC_UART_DEFINE(SWHW, IC, ST, AI) TMC_UART_##SWHW##_DEFINE(IC, ST, TMC_##ST##_LABEL, AI)
+ #define TMC_UART_DEFINE(SWHW, ST, AI) _TMC_UART_DEFINE(SWHW, ST##_DRIVER_TYPE, ST, AI##_AXIS)
+
+ #if ENABLED(DISTINCT_E_FACTORS) && E_STEPPERS > 1
+ #define TMC_SPI_DEFINE_E(AI) TMC_SPI_DEFINE(E##AI, E##AI)
+ #define TMC_UART_DEFINE_E(SWHW, AI) TMC_UART_DEFINE(SWHW, E##AI, E##AI)
+ #else
+ #define TMC_SPI_DEFINE_E(AI) TMC_SPI_DEFINE(E##AI, E)
+ #define TMC_UART_DEFINE_E(SWHW, AI) TMC_UART_DEFINE(SWHW, E##AI, E)
+ #endif
+
+ // Stepper objects of TMC2130/TMC2160/TMC2660/TMC5130/TMC5160 steppers used
+ #if AXIS_HAS_SPI(X)
+ TMC_SPI_DEFINE(X, X);
+ #endif
+ #if AXIS_HAS_SPI(X2)
+ TMC_SPI_DEFINE(X2, X);
+ #endif
+ #if AXIS_HAS_SPI(Y)
+ TMC_SPI_DEFINE(Y, Y);
+ #endif
+ #if AXIS_HAS_SPI(Y2)
+ TMC_SPI_DEFINE(Y2, Y);
+ #endif
+ #if AXIS_HAS_SPI(Z)
+ TMC_SPI_DEFINE(Z, Z);
+ #endif
+ #if AXIS_HAS_SPI(Z2)
+ TMC_SPI_DEFINE(Z2, Z);
+ #endif
+ #if AXIS_HAS_SPI(Z3)
+ TMC_SPI_DEFINE(Z3, Z);
+ #endif
+ #if AXIS_HAS_SPI(E0)
+ TMC_SPI_DEFINE_E(0);
+ #endif
+ #if AXIS_HAS_SPI(E1)
+ TMC_SPI_DEFINE_E(1);
+ #endif
+ #if AXIS_HAS_SPI(E2)
+ TMC_SPI_DEFINE_E(2);
+ #endif
+ #if AXIS_HAS_SPI(E3)
+ TMC_SPI_DEFINE_E(3);
+ #endif
+ #if AXIS_HAS_SPI(E4)
+ TMC_SPI_DEFINE_E(4);
+ #endif
+ #if AXIS_HAS_SPI(E5)
+ TMC_SPI_DEFINE_E(5);
+ #endif
+
+#endif
+
+#if HAS_DRIVER(TMC2130)
+ template
+ void tmc_init(TMCMarlin &st, const uint16_t mA, const uint16_t microsteps, const uint32_t thrs, const bool stealth) {
st.begin();
CHOPCONF_t chopconf{0};
@@ -233,75 +252,18 @@
st.PWMCONF(pwmconf.sr);
#if ENABLED(HYBRID_THRESHOLD)
- st.TPWMTHRS(12650000UL*microsteps/(256*thrs*spmm));
+ st.set_pwm_thrs(thrs);
#else
UNUSED(thrs);
- UNUSED(spmm);
#endif
st.GSTAT(); // Clear GSTAT
}
#endif // TMC2130
-//
-// TMC2160 Driver objects and inits
-//
#if HAS_DRIVER(TMC2160)
-
- #include
- #include "planner.h"
- #include "../core/enum.h"
-
- #if ENABLED(TMC_USE_SW_SPI)
- #define _TMC2160_DEFINE(ST, L) TMCMarlin stepper##ST(ST##_CS_PIN, ST##_RSENSE, TMC_SW_MOSI, TMC_SW_MISO, TMC_SW_SCK)
- #define TMC2160_DEFINE(ST) _TMC2160_DEFINE(ST, TMC_##ST##_LABEL)
- #else
- #define _TMC2160_DEFINE(ST, L) TMCMarlin stepper##ST(ST##_CS_PIN, ST##_RSENSE)
- #define TMC2160_DEFINE(ST) _TMC2160_DEFINE(ST, TMC_##ST##_LABEL)
- #endif
- // Stepper objects of TMC2160 steppers used
- #if AXIS_DRIVER_TYPE(X, TMC2160)
- TMC2160_DEFINE(X);
- #endif
- #if AXIS_DRIVER_TYPE(X2, TMC2160)
- TMC2160_DEFINE(X2);
- #endif
- #if AXIS_DRIVER_TYPE(Y, TMC2160)
- TMC2160_DEFINE(Y);
- #endif
- #if AXIS_DRIVER_TYPE(Y2, TMC2160)
- TMC2160_DEFINE(Y2);
- #endif
- #if AXIS_DRIVER_TYPE(Z, TMC2160)
- TMC2160_DEFINE(Z);
- #endif
- #if AXIS_DRIVER_TYPE(Z2, TMC2160)
- TMC2160_DEFINE(Z2);
- #endif
- #if AXIS_DRIVER_TYPE(Z3, TMC2160)
- TMC2160_DEFINE(Z3);
- #endif
- #if AXIS_DRIVER_TYPE(E0, TMC2160)
- TMC2160_DEFINE(E0);
- #endif
- #if AXIS_DRIVER_TYPE(E1, TMC2160)
- TMC2160_DEFINE(E1);
- #endif
- #if AXIS_DRIVER_TYPE(E2, TMC2160)
- TMC2160_DEFINE(E2);
- #endif
- #if AXIS_DRIVER_TYPE(E3, TMC2160)
- TMC2160_DEFINE(E3);
- #endif
- #if AXIS_DRIVER_TYPE(E4, TMC2160)
- TMC2160_DEFINE(E4);
- #endif
- #if AXIS_DRIVER_TYPE(E5, TMC2160)
- TMC2160_DEFINE(E5);
- #endif
-
- template
- void tmc_init(TMCMarlin &st, const uint16_t mA, const uint16_t microsteps, const uint32_t thrs, const float spmm, const bool stealth) {
+ template
+ void tmc_init(TMCMarlin &st, const uint16_t mA, const uint16_t microsteps, const uint32_t thrs, const bool stealth) {
st.begin();
static constexpr int8_t timings[] = CHOPPER_TIMING; // Default 4, -2, 1
@@ -337,10 +299,9 @@
st.PWMCONF(pwmconf.sr);
#if ENABLED(HYBRID_THRESHOLD)
- st.TPWMTHRS(12650000UL*microsteps/(256*thrs*spmm));
+ st.set_pwm_thrs(thrs);
#else
UNUSED(thrs);
- UNUSED(spmm);
#endif
st.GSTAT(); // Clear GSTAT
@@ -351,105 +312,96 @@
// TMC2208 Driver objects and inits
//
#if HAS_DRIVER(TMC2208)
- #include
- #include "planner.h"
-
- #define _TMC2208_DEFINE_HARDWARE(ST, L) TMCMarlin stepper##ST(&ST##_HARDWARE_SERIAL, ST##_RSENSE)
- #define TMC2208_DEFINE_HARDWARE(ST) _TMC2208_DEFINE_HARDWARE(ST, TMC_##ST##_LABEL)
-
- #define _TMC2208_DEFINE_SOFTWARE(ST, L) TMCMarlin stepper##ST(ST##_SERIAL_RX_PIN, ST##_SERIAL_TX_PIN, ST##_RSENSE, ST##_SERIAL_RX_PIN > -1)
- #define TMC2208_DEFINE_SOFTWARE(ST) _TMC2208_DEFINE_SOFTWARE(ST, TMC_##ST##_LABEL)
-
// Stepper objects of TMC2208 steppers used
#if AXIS_DRIVER_TYPE_X(TMC2208)
#ifdef X_HARDWARE_SERIAL
- TMC2208_DEFINE_HARDWARE(X);
+ TMC_UART_DEFINE(HW, X, X);
#else
- TMC2208_DEFINE_SOFTWARE(X);
+ TMC_UART_DEFINE(SW, X, X);
#endif
#endif
#if AXIS_DRIVER_TYPE_X2(TMC2208)
#ifdef X2_HARDWARE_SERIAL
- TMC2208_DEFINE_HARDWARE(X2);
+ TMC_UART_DEFINE(HW, X2, X);
#else
- TMC2208_DEFINE_SOFTWARE(X2);
+ TMC_UART_DEFINE(SW, X2, X);
#endif
#endif
#if AXIS_DRIVER_TYPE_Y(TMC2208)
#ifdef Y_HARDWARE_SERIAL
- TMC2208_DEFINE_HARDWARE(Y);
+ TMC_UART_DEFINE(HW, Y, Y);
#else
- TMC2208_DEFINE_SOFTWARE(Y);
+ TMC_UART_DEFINE(SW, Y, Y);
#endif
#endif
#if AXIS_DRIVER_TYPE_Y2(TMC2208)
#ifdef Y2_HARDWARE_SERIAL
- TMC2208_DEFINE_HARDWARE(Y2);
+ TMC_UART_DEFINE(HW, Y2, Y);
#else
- TMC2208_DEFINE_SOFTWARE(Y2);
+ TMC_UART_DEFINE(SW, Y2, Y);
#endif
#endif
#if AXIS_DRIVER_TYPE_Z(TMC2208)
#ifdef Z_HARDWARE_SERIAL
- TMC2208_DEFINE_HARDWARE(Z);
+ TMC_UART_DEFINE(HW, Z, Z);
#else
- TMC2208_DEFINE_SOFTWARE(Z);
+ TMC_UART_DEFINE(SW, Z, Z);
#endif
#endif
#if AXIS_DRIVER_TYPE_Z2(TMC2208)
#ifdef Z2_HARDWARE_SERIAL
- TMC2208_DEFINE_HARDWARE(Z2);
+ TMC_UART_DEFINE(HW, Z2, Z);
#else
- TMC2208_DEFINE_SOFTWARE(Z2);
+ TMC_UART_DEFINE(SW, Z2, Z);
#endif
#endif
#if AXIS_DRIVER_TYPE_Z3(TMC2208)
#ifdef Z3_HARDWARE_SERIAL
- TMC2208_DEFINE_HARDWARE(Z3);
+ TMC_UART_DEFINE(HW, Z3, Z);
#else
- TMC2208_DEFINE_SOFTWARE(Z3);
+ TMC_UART_DEFINE(SW, Z3, Z);
#endif
#endif
#if AXIS_DRIVER_TYPE_E0(TMC2208)
#ifdef E0_HARDWARE_SERIAL
- TMC2208_DEFINE_HARDWARE(E0);
+ TMC_UART_DEFINE_E(HW, 0);
#else
- TMC2208_DEFINE_SOFTWARE(E0);
+ TMC_UART_DEFINE_E(SW, 0);
#endif
#endif
#if AXIS_DRIVER_TYPE_E1(TMC2208)
#ifdef E1_HARDWARE_SERIAL
- TMC2208_DEFINE_HARDWARE(E1);
+ TMC_UART_DEFINE_E(HW, 1);
#else
- TMC2208_DEFINE_SOFTWARE(E1);
+ TMC_UART_DEFINE_E(SW, 1);
#endif
#endif
#if AXIS_DRIVER_TYPE_E2(TMC2208)
#ifdef E2_HARDWARE_SERIAL
- TMC2208_DEFINE_HARDWARE(E2);
+ TMC_UART_DEFINE_E(HW, 2);
#else
- TMC2208_DEFINE_SOFTWARE(E2);
+ TMC_UART_DEFINE_E(SW, 2);
#endif
#endif
#if AXIS_DRIVER_TYPE_E3(TMC2208)
#ifdef E3_HARDWARE_SERIAL
- TMC2208_DEFINE_HARDWARE(E3);
+ TMC_UART_DEFINE_E(HW, 3);
#else
- TMC2208_DEFINE_SOFTWARE(E3);
+ TMC_UART_DEFINE_E(SW, 3);
#endif
#endif
#if AXIS_DRIVER_TYPE_E4(TMC2208)
#ifdef E4_HARDWARE_SERIAL
- TMC2208_DEFINE_HARDWARE(E4);
+ TMC_UART_DEFINE_E(HW, 4);
#else
- TMC2208_DEFINE_SOFTWARE(E4);
+ TMC_UART_DEFINE_E(SW, 4);
#endif
#endif
#if AXIS_DRIVER_TYPE_E5(TMC2208)
#ifdef E5_HARDWARE_SERIAL
- TMC2208_DEFINE_HARDWARE(E5);
+ TMC_UART_DEFINE_E(HW, 5);
#else
- TMC2208_DEFINE_SOFTWARE(E5);
+ TMC_UART_DEFINE_E(SW, 5);
#endif
#endif
@@ -547,8 +499,8 @@
#endif
}
- template
- void tmc_init(TMCMarlin &st, const uint16_t mA, const uint16_t microsteps, const uint32_t thrs, const float spmm, const bool stealth) {
+ template
+ void tmc_init(TMCMarlin &st, const uint16_t mA, const uint16_t microsteps, const uint32_t thrs, const bool stealth) {
TMC2208_n::GCONF_t gconf{0};
gconf.pdn_disable = true; // Use UART
gconf.mstep_reg_select = true; // Select microsteps with UART
@@ -581,10 +533,9 @@
st.PWMCONF(pwmconf.sr);
#if ENABLED(HYBRID_THRESHOLD)
- st.TPWMTHRS(12650000UL*microsteps/(256*thrs*spmm));
+ st.set_pwm_thrs(thrs);
#else
UNUSED(thrs);
- UNUSED(spmm);
#endif
st.GSTAT(0b111); // Clear
@@ -592,63 +543,9 @@
}
#endif // TMC2208
-//
-// TMC2660 Driver objects and inits
-//
#if HAS_DRIVER(TMC2660)
-
- #include
- #include "planner.h"
- #include "../core/enum.h"
-
- #if ENABLED(TMC_USE_SW_SPI)
- #define _TMC2660_DEFINE(ST, L) TMCMarlin stepper##ST(ST##_CS_PIN, ST##_RSENSE, TMC_SW_MOSI, TMC_SW_MISO, TMC_SW_SCK)
- #define TMC2660_DEFINE(ST) _TMC2660_DEFINE(ST, TMC_##ST##_LABEL)
- #else
- #define _TMC2660_DEFINE(ST, L) TMCMarlin stepper##ST(ST##_CS_PIN, ST##_RSENSE)
- #define TMC2660_DEFINE(ST) _TMC2660_DEFINE(ST, TMC_##ST##_LABEL)
- #endif
-
- // Stepper objects of TMC2660 steppers used
- #if AXIS_DRIVER_TYPE_X(TMC2660)
- TMC2660_DEFINE(X);
- #endif
- #if AXIS_DRIVER_TYPE_X2(TMC2660)
- TMC2660_DEFINE(X2);
- #endif
- #if AXIS_DRIVER_TYPE_Y(TMC2660)
- TMC2660_DEFINE(Y);
- #endif
- #if AXIS_DRIVER_TYPE_Y2(TMC2660)
- TMC2660_DEFINE(Y2);
- #endif
- #if AXIS_DRIVER_TYPE_Z(TMC2660)
- TMC2660_DEFINE(Z);
- #endif
- #if AXIS_DRIVER_TYPE_Z2(TMC2660)
- TMC2660_DEFINE(Z2);
- #endif
- #if AXIS_DRIVER_TYPE_E0(TMC2660)
- TMC2660_DEFINE(E0);
- #endif
- #if AXIS_DRIVER_TYPE_E1(TMC2660)
- TMC2660_DEFINE(E1);
- #endif
- #if AXIS_DRIVER_TYPE_E2(TMC2660)
- TMC2660_DEFINE(E2);
- #endif
- #if AXIS_DRIVER_TYPE_E3(TMC2660)
- TMC2660_DEFINE(E3);
- #endif
- #if AXIS_DRIVER_TYPE_E4(TMC2660)
- TMC2660_DEFINE(E4);
- #endif
- #if AXIS_DRIVER_TYPE_E5(TMC2660)
- TMC2660_DEFINE(E5);
- #endif
-
- template
- void tmc_init(TMCMarlin &st, const uint16_t mA, const uint16_t microsteps, const uint32_t, const float, const bool) {
+ template
+ void tmc_init(TMCMarlin &st, const uint16_t mA, const uint16_t microsteps, const uint32_t, const bool) {
st.begin();
TMC2660_n::CHOPCONF_t chopconf{0};
@@ -669,65 +566,9 @@
}
#endif // TMC2660
-//
-// TMC5130 Driver objects and inits
-//
#if HAS_DRIVER(TMC5130)
-
- #include
- #include "planner.h"
- #include "../core/enum.h"
-
- #if ENABLED(TMC_USE_SW_SPI)
- #define _TMC5130_DEFINE(ST, L) TMCMarlin stepper##ST(ST##_CS_PIN, ST##_RSENSE, TMC_SW_MOSI, TMC_SW_MISO, TMC_SW_SCK)
- #define TMC5130_DEFINE(ST) _TMC5130_DEFINE(ST, TMC_##ST##_LABEL)
- #else
- #define _TMC5130_DEFINE(ST, L) TMCMarlin stepper##ST(ST##_CS_PIN, ST##_RSENSE)
- #define TMC5130_DEFINE(ST) _TMC5130_DEFINE(ST, TMC_##ST##_LABEL)
- #endif
- // Stepper objects of TMC5130 steppers used
- #if AXIS_DRIVER_TYPE_X(TMC5130)
- TMC5130_DEFINE(X);
- #endif
- #if AXIS_DRIVER_TYPE_X2(TMC5130)
- TMC5130_DEFINE(X2);
- #endif
- #if AXIS_DRIVER_TYPE_Y(TMC5130)
- TMC5130_DEFINE(Y);
- #endif
- #if AXIS_DRIVER_TYPE_Y2(TMC5130)
- TMC5130_DEFINE(Y2);
- #endif
- #if AXIS_DRIVER_TYPE_Z(TMC5130)
- TMC5130_DEFINE(Z);
- #endif
- #if AXIS_DRIVER_TYPE_Z2(TMC5130)
- TMC5130_DEFINE(Z2);
- #endif
- #if AXIS_DRIVER_TYPE_Z3(TMC5130)
- TMC5130_DEFINE(Z3);
- #endif
- #if AXIS_DRIVER_TYPE_E0(TMC5130)
- TMC5130_DEFINE(E0);
- #endif
- #if AXIS_DRIVER_TYPE_E1(TMC5130)
- TMC5130_DEFINE(E1);
- #endif
- #if AXIS_DRIVER_TYPE_E2(TMC5130)
- TMC5130_DEFINE(E2);
- #endif
- #if AXIS_DRIVER_TYPE_E3(TMC5130)
- TMC5130_DEFINE(E3);
- #endif
- #if AXIS_DRIVER_TYPE_E4(TMC5130)
- TMC5130_DEFINE(E4);
- #endif
- #if AXIS_DRIVER_TYPE_E5(TMC5130)
- TMC5130_DEFINE(E5);
- #endif
-
- template
- void tmc_init(TMCMarlin &st, const uint16_t mA, const uint16_t microsteps, const uint32_t thrs, const float spmm, const bool stealth) {
+ template
+ void tmc_init(TMCMarlin &st, const uint16_t mA, const uint16_t microsteps, const uint32_t thrs, const bool stealth) {
st.begin();
CHOPCONF_t chopconf{0};
@@ -754,75 +595,18 @@
st.PWMCONF(pwmconf.sr);
#if ENABLED(HYBRID_THRESHOLD)
- st.TPWMTHRS(12650000UL*microsteps/(256*thrs*spmm));
+ st.set_pwm_thrs(thrs);
#else
UNUSED(thrs);
- UNUSED(spmm);
#endif
st.GSTAT(); // Clear GSTAT
}
#endif // TMC5130
-//
-// TMC5160 Driver objects and inits
-//
#if HAS_DRIVER(TMC5160)
-
- #include
- #include "planner.h"
- #include "../core/enum.h"
-
- #if ENABLED(TMC_USE_SW_SPI)
- #define _TMC5160_DEFINE(ST, L) TMCMarlin stepper##ST(ST##_CS_PIN, ST##_RSENSE, TMC_SW_MOSI, TMC_SW_MISO, TMC_SW_SCK)
- #define TMC5160_DEFINE(ST) _TMC5160_DEFINE(ST, TMC_##ST##_LABEL)
- #else
- #define _TMC5160_DEFINE(ST, L) TMCMarlin stepper##ST(ST##_CS_PIN, ST##_RSENSE)
- #define TMC5160_DEFINE(ST) _TMC5160_DEFINE(ST, TMC_##ST##_LABEL)
- #endif
- // Stepper objects of TMC5160 steppers used
- #if AXIS_DRIVER_TYPE(X, TMC5160)
- TMC5160_DEFINE(X);
- #endif
- #if AXIS_DRIVER_TYPE(X2, TMC5160)
- TMC5160_DEFINE(X2);
- #endif
- #if AXIS_DRIVER_TYPE(Y, TMC5160)
- TMC5160_DEFINE(Y);
- #endif
- #if AXIS_DRIVER_TYPE(Y2, TMC5160)
- TMC5160_DEFINE(Y2);
- #endif
- #if AXIS_DRIVER_TYPE(Z, TMC5160)
- TMC5160_DEFINE(Z);
- #endif
- #if AXIS_DRIVER_TYPE(Z2, TMC5160)
- TMC5160_DEFINE(Z2);
- #endif
- #if AXIS_DRIVER_TYPE(Z3, TMC5160)
- TMC5160_DEFINE(Z3);
- #endif
- #if AXIS_DRIVER_TYPE(E0, TMC5160)
- TMC5160_DEFINE(E0);
- #endif
- #if AXIS_DRIVER_TYPE(E1, TMC5160)
- TMC5160_DEFINE(E1);
- #endif
- #if AXIS_DRIVER_TYPE(E2, TMC5160)
- TMC5160_DEFINE(E2);
- #endif
- #if AXIS_DRIVER_TYPE(E3, TMC5160)
- TMC5160_DEFINE(E3);
- #endif
- #if AXIS_DRIVER_TYPE(E4, TMC5160)
- TMC5160_DEFINE(E4);
- #endif
- #if AXIS_DRIVER_TYPE(E5, TMC5160)
- TMC5160_DEFINE(E5);
- #endif
-
- template
- void tmc_init(TMCMarlin &st, const uint16_t mA, const uint16_t microsteps, const uint32_t thrs, const float spmm, const bool stealth) {
+ template
+ void tmc_init(TMCMarlin &st, const uint16_t mA, const uint16_t microsteps, const uint32_t thrs, const bool stealth) {
st.begin();
int8_t timings[] = CHOPPER_TIMING; // Default 4, -2, 1
@@ -857,10 +641,9 @@
st.PWMCONF(pwmconf.sr);
#if ENABLED(HYBRID_THRESHOLD)
- st.TPWMTHRS(12650000UL*microsteps/(256*thrs*spmm));
+ st.set_pwm_thrs(thrs);
#else
UNUSED(thrs);
- UNUSED(spmm);
#endif
st.GSTAT(); // Clear GSTAT
}
@@ -941,43 +724,43 @@ void reset_stepper_drivers() {
#endif
#if AXIS_IS_TMC(X)
- _TMC_INIT(X, X_AXIS, STEALTH_AXIS_XY);
+ _TMC_INIT(X, STEALTH_AXIS_XY);
#endif
#if AXIS_IS_TMC(X2)
- _TMC_INIT(X2, X_AXIS, STEALTH_AXIS_XY);
+ _TMC_INIT(X2, STEALTH_AXIS_XY);
#endif
#if AXIS_IS_TMC(Y)
- _TMC_INIT(Y, Y_AXIS, STEALTH_AXIS_XY);
+ _TMC_INIT(Y, STEALTH_AXIS_XY);
#endif
#if AXIS_IS_TMC(Y2)
- _TMC_INIT(Y2, Y_AXIS, STEALTH_AXIS_XY);
+ _TMC_INIT(Y2, STEALTH_AXIS_XY);
#endif
#if AXIS_IS_TMC(Z)
- _TMC_INIT(Z, Z_AXIS, STEALTH_AXIS_Z);
+ _TMC_INIT(Z, STEALTH_AXIS_Z);
#endif
#if AXIS_IS_TMC(Z2)
- _TMC_INIT(Z2, Z_AXIS, STEALTH_AXIS_Z);
+ _TMC_INIT(Z2, STEALTH_AXIS_Z);
#endif
#if AXIS_IS_TMC(Z3)
- _TMC_INIT(Z3, Z_AXIS, STEALTH_AXIS_Z);
+ _TMC_INIT(Z3, STEALTH_AXIS_Z);
#endif
#if AXIS_IS_TMC(E0)
- _TMC_INIT(E0, E_AXIS, STEALTH_AXIS_E);
+ _TMC_INIT(E0, STEALTH_AXIS_E);
#endif
#if AXIS_IS_TMC(E1)
- _TMC_INIT(E1, E_AXIS_N(1), STEALTH_AXIS_E);
+ _TMC_INIT(E1, STEALTH_AXIS_E);
#endif
#if AXIS_IS_TMC(E2)
- _TMC_INIT(E2, E_AXIS_N(2), STEALTH_AXIS_E);
+ _TMC_INIT(E2, STEALTH_AXIS_E);
#endif
#if AXIS_IS_TMC(E3)
- _TMC_INIT(E3, E_AXIS_N(3), STEALTH_AXIS_E);
+ _TMC_INIT(E3, STEALTH_AXIS_E);
#endif
#if AXIS_IS_TMC(E4)
- _TMC_INIT(E4, E_AXIS_N(4), STEALTH_AXIS_E);
+ _TMC_INIT(E4, STEALTH_AXIS_E);
#endif
#if AXIS_IS_TMC(E5)
- _TMC_INIT(E5, E_AXIS_N(5), STEALTH_AXIS_E);
+ _TMC_INIT(E5, STEALTH_AXIS_E);
#endif
#if USE_SENSORLESS
diff --git a/Marlin/src/module/stepper_indirection.h b/Marlin/src/module/stepper_indirection.h
index 39d4fceacb..8afe82b050 100644
--- a/Marlin/src/module/stepper_indirection.h
+++ b/Marlin/src/module/stepper_indirection.h
@@ -62,11 +62,11 @@
#error "Update TMCStepper library to 0.2.2 or newer."
#endif
- #define ____TMC_CLASS(MODEL, A, I) TMCMarlin
- #define ___TMC_CLASS(MODEL, A, I) ____TMC_CLASS(MODEL, A, I)
- #define __TMC_CLASS(MODEL, A, I) ___TMC_CLASS(_##MODEL, A, I)
- #define _TMC_CLASS(MODEL, L) __TMC_CLASS(MODEL, L)
- #define TMC_CLASS(ST) _TMC_CLASS(ST##_DRIVER_TYPE, TMC_##ST##_LABEL)
+ #define ____TMC_CLASS(MODEL, A, I, E) TMCMarlin
+ #define ___TMC_CLASS(MODEL, A, I, E) ____TMC_CLASS(MODEL, A, I, E)
+ #define __TMC_CLASS(MODEL, A, I, E) ___TMC_CLASS(_##MODEL, A, I, E)
+ #define _TMC_CLASS(MODEL, L, E) __TMC_CLASS(MODEL, L, E)
+ #define TMC_CLASS(ST) _TMC_CLASS(ST##_DRIVER_TYPE, TMC_##ST##_LABEL, ST##_AXIS)
typedef struct {
uint8_t toff;
diff --git a/Marlin/src/module/temperature.cpp b/Marlin/src/module/temperature.cpp
index a4a94fc678..717489857c 100644
--- a/Marlin/src/module/temperature.cpp
+++ b/Marlin/src/module/temperature.cpp
@@ -68,6 +68,10 @@
#include "tool_change.h"
#endif
+#if HAS_BUZZER
+ #include "../libs/buzzer.h"
+#endif
+
#if HOTEND_USES_THERMISTOR
#if ENABLED(TEMP_SENSOR_1_AS_REDUNDANT)
static void* heater_ttbl_map[2] = { (void*)HEATER_0_TEMPTABLE, (void*)HEATER_1_TEMPTABLE };
@@ -310,7 +314,7 @@ temp_range_t Temperature::temp_range[HOTENDS] = ARRAY_BY_HOTENDS(sensor_heater_0
// public:
#if HAS_ADC_BUTTONS
- uint32_t Temperature::current_ADCKey_raw = 0;
+ uint32_t Temperature::current_ADCKey_raw = 1024;
uint8_t Temperature::ADCKey_count = 0;
#endif
@@ -750,10 +754,22 @@ void Temperature::_temp_error(const int8_t heater, PGM_P const serial_msg, PGM_P
else SERIAL_ECHOPGM(MSG_HEATER_BED);
SERIAL_EOL();
}
+
#if DISABLED(BOGUS_TEMPERATURE_FAILSAFE_OVERRIDE)
if (!killed) {
Running = false;
killed = true;
+
+ disable_all_heaters();
+
+ #if HAS_BUZZER && PIN_EXISTS(BEEPER)
+ for (uint8_t i = 20; i--;) {
+ WRITE(BEEPER_PIN, HIGH); delay(25);
+ WRITE(BEEPER_PIN, LOW); delay(80);
+ }
+ WRITE(BEEPER_PIN, HIGH);
+ #endif
+
kill(lcd_msg);
}
else
@@ -1176,14 +1192,15 @@ void Temperature::manage_heater() {
uint8_t l = 0, r = LEN, m; \
for (;;) { \
m = (l + r) >> 1; \
- if (m == l || m == r) return (short)pgm_read_word(&TBL[LEN-1][1]); \
+ if (!m) return short(pgm_read_word(&TBL[0][1])); \
+ if (m == l || m == r) return short(pgm_read_word(&TBL[LEN-1][1])); \
short v00 = pgm_read_word(&TBL[m-1][0]), \
v10 = pgm_read_word(&TBL[m-0][0]); \
if (raw < v00) r = m; \
else if (raw > v10) l = m; \
else { \
- const short v01 = (short)pgm_read_word(&TBL[m-1][1]), \
- v11 = (short)pgm_read_word(&TBL[m-0][1]); \
+ const short v01 = short(pgm_read_word(&TBL[m-1][1])), \
+ v11 = short(pgm_read_word(&TBL[m-0][1])); \
return v01 + (raw - v00) * float(v11 - v01) / float(v10 - v00); \
} \
} \
@@ -1301,12 +1318,6 @@ void Temperature::manage_heater() {
value += user_thermistor[t_index].sh_c_coeff * log_resistance * log_resistance * log_resistance;
value = 1.0f / value;
- // Convert to degrees C
- float deg_c = value + THERMISTOR_ABS_ZERO_C;
-
- // Test only
- //deg_c = constrain(deg_c, 6, 100);
-
//#if (MOTHERBOARD == BOARD_RAMPS_14_EFB)
// int32_t clocks = TCNT5 - tcnt5;
// if (clocks >= 0) {
@@ -1315,7 +1326,8 @@ void Temperature::manage_heater() {
// }
//#endif
- return deg_c;
+ // Return degrees C (up to 999, as the LCD only displays 3 digits)
+ return MIN(value + THERMISTOR_ABS_ZERO_C, 999);
}
#endif
@@ -1419,7 +1431,7 @@ float Temperature::analog_to_celsius_hotend(const int raw, const uint8_t e) {
#if ENABLED(BED_USER_THERMISTOR)
return user_thermistor_to_deg_c(CTI_BED, raw);
#elif ENABLED(HEATER_BED_USES_THERMISTOR)
- SCAN_THERMISTOR_TABLE(BEDTEMPTABLE, BEDTEMPTABLE_LEN);
+ SCAN_THERMISTOR_TABLE(BED_TEMPTABLE, BED_TEMPTABLE_LEN);
#elif ENABLED(HEATER_BED_USES_AD595)
return TEMP_AD595(raw);
#elif ENABLED(HEATER_BED_USES_AD8495)
@@ -1437,7 +1449,7 @@ float Temperature::analog_to_celsius_hotend(const int raw, const uint8_t e) {
#if ENABLED(CHAMBER_USER_THERMISTOR)
return user_thermistor_to_deg_c(CTI_CHAMBER, raw);
#elif ENABLED(HEATER_CHAMBER_USES_THERMISTOR)
- SCAN_THERMISTOR_TABLE(CHAMBERTEMPTABLE, CHAMBERTEMPTABLE_LEN);
+ SCAN_THERMISTOR_TABLE(CHAMBER_TEMPTABLE, CHAMBER_TEMPTABLE_LEN);
#elif ENABLED(HEATER_CHAMBER_USES_AD595)
return TEMP_AD595(raw);
#elif ENABLED(HEATER_CHAMBER_USES_AD8495)
@@ -2300,6 +2312,7 @@ void Temperature::isr() {
#if HAS_ADC_BUTTONS
static unsigned int raw_ADCKey_value = 0;
+ static bool ADCKey_pressed = false;
#endif
#if ENABLED(SLOW_PWM_HEATERS)
@@ -2702,16 +2715,19 @@ void Temperature::isr() {
next_sensor_state = adc_sensor_state; // redo this state
else if (ADCKey_count < 16) {
raw_ADCKey_value = HAL_READ_ADC();
- if (raw_ADCKey_value > 900) {
- //ADC Key release
- ADCKey_count = 0;
- current_ADCKey_raw = 0;
- }
- else {
- current_ADCKey_raw += raw_ADCKey_value;
+ if (raw_ADCKey_value <= 900) {
+ NOMORE(current_ADCKey_raw, raw_ADCKey_value);
ADCKey_count++;
}
+ else { //ADC Key release
+ if (ADCKey_count > 0) ADCKey_count++; else ADCKey_pressed = false;
+ if (ADCKey_pressed) {
+ ADCKey_count = 0;
+ current_ADCKey_raw = 1024;
+ }
+ }
}
+ if (ADCKey_count == 16) ADCKey_pressed = true;
break;
#endif // ADC_KEYPAD
diff --git a/Marlin/src/module/thermistor/thermistors.h b/Marlin/src/module/thermistor/thermistors.h
index 9d62f28bc2..00def3ae40 100644
--- a/Marlin/src/module/thermistor/thermistors.h
+++ b/Marlin/src/module/thermistor/thermistors.h
@@ -137,6 +137,9 @@
#if ANY_THERMISTOR_IS(999) // User-defined table 2
#include "thermistor_999.h"
#endif
+#if ANY_THERMISTOR_IS(1000) // Custom
+ const short temptable_1000[][2] PROGMEM = { { 0, 0 } };
+#endif
#define _TT_NAME(_N) temptable_ ## _N
#define TT_NAME(_N) _TT_NAME(_N)
@@ -202,25 +205,29 @@
#endif
#ifdef THERMISTORBED
- #define BEDTEMPTABLE TT_NAME(THERMISTORBED)
- #define BEDTEMPTABLE_LEN COUNT(BEDTEMPTABLE)
+ #define BED_TEMPTABLE TT_NAME(THERMISTORBED)
+ #define BED_TEMPTABLE_LEN COUNT(BED_TEMPTABLE)
#elif defined(HEATER_BED_USES_THERMISTOR)
#error "No bed thermistor table specified"
#else
- #define BEDTEMPTABLE_LEN 0
+ #define BED_TEMPTABLE_LEN 0
#endif
#ifdef THERMISTORCHAMBER
- #define CHAMBERTEMPTABLE TT_NAME(THERMISTORCHAMBER)
- #define CHAMBERTEMPTABLE_LEN COUNT(CHAMBERTEMPTABLE)
+ #define CHAMBER_TEMPTABLE TT_NAME(THERMISTORCHAMBER)
+ #define CHAMBER_TEMPTABLE_LEN COUNT(CHAMBER_TEMPTABLE)
#elif defined(HEATER_CHAMBER_USES_THERMISTOR)
#error "No chamber thermistor table specified"
#else
- #define CHAMBERTEMPTABLE_LEN 0
+ #define CHAMBER_TEMPTABLE_LEN 0
#endif
// The SCAN_THERMISTOR_TABLE macro needs alteration?
-static_assert(HEATER_0_TEMPTABLE_LEN < 256 && HEATER_1_TEMPTABLE_LEN < 256 && HEATER_2_TEMPTABLE_LEN < 256 && HEATER_3_TEMPTABLE_LEN < 256 && HEATER_4_TEMPTABLE_LEN < 256 && BEDTEMPTABLE_LEN < 256 && CHAMBERTEMPTABLE_LEN < 256,
+static_assert(
+ HEATER_0_TEMPTABLE_LEN < 256 && HEATER_1_TEMPTABLE_LEN < 256
+ && HEATER_2_TEMPTABLE_LEN < 256 && HEATER_3_TEMPTABLE_LEN < 256
+ && HEATER_4_TEMPTABLE_LEN < 256 && HEATER_5_TEMPTABLE_LEN < 256
+ && BED_TEMPTABLE_LEN < 256 && CHAMBER_TEMPTABLE_LEN < 256,
"Temperature conversion tables over 255 entries need special consideration."
);
diff --git a/Marlin/src/module/tool_change.cpp b/Marlin/src/module/tool_change.cpp
index 3b97cb60c1..04854f2aab 100644
--- a/Marlin/src/module/tool_change.cpp
+++ b/Marlin/src/module/tool_change.cpp
@@ -702,11 +702,7 @@ void tool_change(const uint8_t tmp_extruder, const float fr_mm_s/*=0.0*/, bool n
if (tmp_extruder >= EXTRUDERS)
return invalid_extruder_error(tmp_extruder);
- if (!no_move && (!all_axes_homed()
- #if ENABLED(DUAL_X_CARRIAGE)
- || dual_x_carriage_mode == DXC_FULL_CONTROL_MODE
- #endif
- )) {
+ if (!no_move && (!all_axes_homed())) {
no_move = true;
if (DEBUGGING(LEVELING)) DEBUG_ECHOLNPGM("No move on toolchange");
}
@@ -716,7 +712,11 @@ void tool_change(const uint8_t tmp_extruder, const float fr_mm_s/*=0.0*/, bool n
#endif
#if ENABLED(TOOLCHANGE_FILAMENT_SWAP)
- const bool should_swap = !no_move && toolchange_settings.swap_length;
+ const bool should_swap = !no_move && toolchange_settings.swap_length
+ #if ENABLED(DUAL_X_CARRIAGE)
+ && dual_x_carriage_mode != DXC_FULL_CONTROL_MODE
+ #endif
+ ;
#if ENABLED(PREVENT_COLD_EXTRUSION)
const bool too_cold = !DEBUGGING(DRYRUN) && (thermalManager.targetTooColdToExtrude(active_extruder) || thermalManager.targetTooColdToExtrude(tmp_extruder));
#else
@@ -756,7 +756,11 @@ void tool_change(const uint8_t tmp_extruder, const float fr_mm_s/*=0.0*/, bool n
set_destination_from_current();
- if (!no_move) {
+ if (!no_move
+ #if ENABLED(DUAL_X_CARRIAGE)
+ && dual_x_carriage_mode != DXC_FULL_CONTROL_MODE
+ #endif
+ ) {
#if DISABLED(SWITCHING_NOZZLE)
// Do a small lift to avoid the workpiece in the move back (below)
current_position[Z_AXIS] += toolchange_settings.z_raise;
@@ -876,7 +880,24 @@ void tool_change(const uint8_t tmp_extruder, const float fr_mm_s/*=0.0*/, bool n
#endif
// Move back to the original (or tweaked) position
- do_blocking_move_to(destination);
+ if(
+ #if ENABLED(TOOLCHANGE_RETURN_NEXT_MOVE)
+ true ||
+ #endif
+ #if ENABLED(DUAL_X_CARRIAGE)
+ dual_x_carriage_mode == DXC_FULL_CONTROL_MODE ||
+ #endif
+ false ) {
+ SERIAL_ECHOLN("TLCHNG_OFFSETS");
+ //current_position[Z_AXIS] -= toolchange_settings.z_raise; //return z-raise
+ destination[X_AXIS] = current_position[X_AXIS];
+ destination[Y_AXIS] = current_position[Y_AXIS];
+ //planner.buffer_line(current_position, feedrate_mm_s, active_extruder); //apply offsets
+ }
+ else{
+ SERIAL_ECHOLN("TLCHNG_RETURNPOS");
+ }
+ do_blocking_move_to(destination); //return to stored position
#if ENABLED(DUAL_X_CARRIAGE)
active_extruder_parked = false;
diff --git a/Marlin/src/pins/pins.h b/Marlin/src/pins/pins.h
index bb7a10108e..1c346b237d 100644
--- a/Marlin/src/pins/pins.h
+++ b/Marlin/src/pins/pins.h
@@ -161,7 +161,7 @@
#elif MB(RAMPS_CREALITY)
#include "pins_RAMPS_CREALITY.h" // ATmega2560 env:megaatmega2560
#elif MB(FYSETC_F6_13)
- #include "pins_FYSETC_F6_13.h" // ATmega2560 env:megaatmega2560
+ #include "pins_FYSETC_F6_13.h" // ATmega2560 env:fysetc_f6_13
#elif MB(DUPLICATOR_I3_PLUS)
#include "pins_DUPLICATOR_I3_PLUS.h" // ATmega2560 env:megaatmega2560
#elif MB(VORON)
@@ -460,7 +460,7 @@
//
#elif MB(ESP32)
- #include "pins_ESP32.h"
+ #include "pins_ESP32.h" // ESP32 env:esp32
//
// Linux Native Debug board
diff --git a/Marlin/src/pins/pins_AZTEEG_X5_MINI.h b/Marlin/src/pins/pins_AZTEEG_X5_MINI.h
index f3ce5b4179..0f3e454371 100644
--- a/Marlin/src/pins/pins_AZTEEG_X5_MINI.h
+++ b/Marlin/src/pins/pins_AZTEEG_X5_MINI.h
@@ -50,8 +50,12 @@
#define Y_STOP_PIN P1_26
#define Z_STOP_PIN P1_28
+#ifndef FIL_RUNOUT_PIN
+ #define FIL_RUNOUT_PIN P2_04
+#endif
+
#ifndef FILWIDTH_PIN
- #define FILWIDTH_PIN P2_04
+ #define FILWIDTH_PIN 2 // Analog Input (P0_25)
#endif
//
diff --git a/Marlin/src/pins/pins_BEAST.h b/Marlin/src/pins/pins_BEAST.h
index 5f9709a175..2a80cf905e 100644
--- a/Marlin/src/pins/pins_BEAST.h
+++ b/Marlin/src/pins/pins_BEAST.h
@@ -112,10 +112,10 @@
//
// Temperature Sensors
//
-#define TEMP_BED_PIN PA0 // ANALOG NUMBERING
-#define TEMP_0_PIN PA1 // ANALOG NUMBERING
-#define TEMP_1_PIN PA2 // ANALOG NUMBERING
-#define TEMP_2_PIN PA3 // ANALOG NUMBERING
+#define TEMP_BED_PIN PA0 // Analog Input
+#define TEMP_0_PIN PA1 // Analog Input
+#define TEMP_1_PIN PA2 // Analog Input
+#define TEMP_2_PIN PA3 // Analog Input
//
// LCD Pins
diff --git a/Marlin/src/pins/pins_CHITU3D.h b/Marlin/src/pins/pins_CHITU3D.h
index db094c76c0..4b8f73614b 100644
--- a/Marlin/src/pins/pins_CHITU3D.h
+++ b/Marlin/src/pins/pins_CHITU3D.h
@@ -111,10 +111,10 @@
//
// Temperature Sensors
//
-#define TEMP_BED_PIN PA0 // ANALOG NUMBERING
-#define TEMP_0_PIN PA1 // ANALOG NUMBERING
-#define TEMP_1_PIN -1 // ANALOG NUMBERING
-#define TEMP_2_PIN -1 // ANALOG NUMBERING
+#define TEMP_BED_PIN PA0 // Analog Input
+#define TEMP_0_PIN PA1 // Analog Input
+#define TEMP_1_PIN -1 // Analog Input
+#define TEMP_2_PIN -1 // Analog Input
//
// LCD Pins
diff --git a/Marlin/src/pins/pins_ESP32.h b/Marlin/src/pins/pins_ESP32.h
index 9901dde200..dad1e0d818 100644
--- a/Marlin/src/pins/pins_ESP32.h
+++ b/Marlin/src/pins/pins_ESP32.h
@@ -40,6 +40,8 @@
//
// Steppers
//
+#define I2S_STEPPER_STREAM
+
#define X_STEP_PIN 128
#define X_DIR_PIN 129
#define X_ENABLE_PIN 130
diff --git a/Marlin/src/pins/pins_MKS_SGEN.h b/Marlin/src/pins/pins_MKS_SGEN.h
index 2aa6bcc551..e5de7de8e1 100644
--- a/Marlin/src/pins/pins_MKS_SGEN.h
+++ b/Marlin/src/pins/pins_MKS_SGEN.h
@@ -1,7 +1,6 @@
/**
* Marlin 3D Printer Firmware
- * Copyright (C) 2016 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
- * Copyright (C) 2017 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
+ * Copyright (C) 2019 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
*
* Based on Sprinter and grbl.
* Copyright (C) 2011 Camiel Gubbels / Erik van der Zalm
diff --git a/Marlin/src/pins/pins_PRINTRBOARD_G2.h b/Marlin/src/pins/pins_PRINTRBOARD_G2.h
index e8816b267d..ddf786d2cc 100644
--- a/Marlin/src/pins/pins_PRINTRBOARD_G2.h
+++ b/Marlin/src/pins/pins_PRINTRBOARD_G2.h
@@ -1,6 +1,6 @@
/**
* Marlin 3D Printer Firmware
- * Copyright (C) 2016, 2019 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
+ * Copyright (C) 2019 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
*
* Based on Sprinter and grbl.
* Copyright (C) 2011 Camiel Gubbels / Erik van der Zalm
diff --git a/Marlin/src/pins/pins_RURAMPS4D_11.h b/Marlin/src/pins/pins_RURAMPS4D_11.h
index ac188ec334..9717d3365c 100644
--- a/Marlin/src/pins/pins_RURAMPS4D_11.h
+++ b/Marlin/src/pins/pins_RURAMPS4D_11.h
@@ -148,8 +148,8 @@
#define TEMP_0_PIN 0 // ANALOG A0
#define TEMP_1_PIN 1 // ANALOG A1
#define TEMP_2_PIN 2 // ANALOG A2
-#define TEMP_3_PIN 3 // ANALOG A2
-#define TEMP_BED_PIN 4 // ANALOG A3
+#define TEMP_3_PIN 3 // ANALOG A3
+#define TEMP_BED_PIN 4 // ANALOG A4
// The thermocouple uses Analog pins
#if ENABLED(VER_WITH_THERMOCOUPLE) // Defined in Configuration.h
diff --git a/Marlin/src/pins/pins_RURAMPS4D_13.h b/Marlin/src/pins/pins_RURAMPS4D_13.h
index c224d57820..aedf2e1012 100644
--- a/Marlin/src/pins/pins_RURAMPS4D_13.h
+++ b/Marlin/src/pins/pins_RURAMPS4D_13.h
@@ -134,8 +134,8 @@
#define TEMP_0_PIN 0 // ANALOG A0
#define TEMP_1_PIN 1 // ANALOG A1
#define TEMP_2_PIN 2 // ANALOG A2
-#define TEMP_3_PIN 3 // ANALOG A2
-#define TEMP_BED_PIN 4 // ANALOG A3
+#define TEMP_3_PIN 3 // ANALOG A3
+#define TEMP_BED_PIN 4 // ANALOG A4
// The thermocouple uses Analog pins
#if ENABLED(VER_WITH_THERMOCOUPLE) // Defined in Configuration.h
diff --git a/Marlin/src/pins/pins_STM32F1R.h b/Marlin/src/pins/pins_STM32F1R.h
index 0e124f5c54..bda4137c02 100644
--- a/Marlin/src/pins/pins_STM32F1R.h
+++ b/Marlin/src/pins/pins_STM32F1R.h
@@ -92,9 +92,9 @@
//
// Temperature Sensors
//
-#define TEMP_BED_PIN PA0 // ANALOG NUMBERING
-#define TEMP_0_PIN PA1 // ANALOG NUMBERING
-#define TEMP_1_PIN PA2 // ANALOG NUMBERING
+#define TEMP_BED_PIN PA0 // Analog Input
+#define TEMP_0_PIN PA1 // Analog Input
+#define TEMP_1_PIN PA2 // Analog Input
//
// LCD Pins
diff --git a/config/default/Configuration.h b/config/default/Configuration.h
index 0575d981f0..d0ccf20148 100644
--- a/config/default/Configuration.h
+++ b/config/default/Configuration.h
@@ -828,15 +828,71 @@
*/
//#define BLTOUCH
#if ENABLED(BLTOUCH)
- //#define BLTOUCH_DELAY 500 // Minimum Command delay (ms). Enable and increase if needed
+ /**
+ * Either: Use the defaults (recommended) or: For special purposes, use the following DEFINES
+ * Do not activate settings that the probe might not understand. Clones might misunderstand
+ * advanced commands.
+ *
+ * Note: If the probe is not deploying, check a "Cmd: Reset" and "Cmd: Self-Test" and then
+ * check the wiring of the BROWN, RED and ORANGE wires.
+ *
+ * Note: If the trigger signal of your probe is not being recognized, it has been very often
+ * because the BLACK and WHITE wires needed to be swapped. They are not "interchangeable"
+ * like they would be with a real switch. So please check the wiring first.
+ *
+ * Settings for all BLTouch and clone probes:
+ */
+
+ // Safety: The probe needs time to recognize the command.
+ // Minimum command delay (ms). Enable and increase if needed.
+ //#define BLTOUCH_DELAY 500
/**
- * BLTouch V3.0 and newer smart series
- * For genuine BLTouch 3.0 sensors. Clones may be confused by 3.0 command angles. YMMV.
- * If the pin trigger is not detected, first try swapping the black and white wires then toggle this.
+ * Settings for BLTOUCH Classic 1.2, 1.3 or BLTouch Smart 1.0, 2.0, 2.2, 3.0, 3.1, and most clones:
*/
- //#define BLTOUCH_FORCE_5V_MODE
-#endif
+
+ // Feature: Switch into SW mode after a deploy. It makes the output pulse longer. Can be useful
+ // in special cases, like noisy or filtered input configurations.
+ //#define BLTOUCH_FORCE_SW_MODE
+
+ /**
+ * Settings for BLTouch Smart 3.0 and 3.1
+ * Summary:
+ * - Voltage modes: 5V and OD (open drain - "logic voltage free") output modes
+ * - High-Speed mode
+ * - Disable LCD voltage options
+ */
+
+ /**
+ * Danger: Don't activate 5V mode unless attached to a 5V-tolerant controller!
+ * V3.0 or 3.1: Set default mode to 5V mode at Marlin startup.
+ * If disabled, OD mode is the hard-coded default on 3.0
+ * On startup, Marlin will compare its eeprom to this vale. If the selected mode
+ * differs, a mode set eeprom write will be completed at initialization.
+ * Use the option below to force an eeprom write to a V3.1 probe regardless.
+ */
+ //#define BLTOUCH_SET_5V_MODE
+
+ /**
+ * Safety: Activate if connecting a probe with an unknown voltage mode.
+ * V3.0: Set a probe into mode selected above at Marlin startup. Required for 5V mode on 3.0
+ * V3.1: Force a probe with unknown mode into selected mode at Marlin startup ( = Probe EEPROM write )
+ * To preserve the life of the probe, use this once then turn it off and re-flash.
+ */
+ //#define BLTOUCH_FORCE_MODE_SET
+
+ /**
+ * Use "HIGH SPEED" mode for probing.
+ * Danger: Disable if your probe sometimes fails. Only suitable for stable well-adjusted systems.
+ * This feature was designed for Delta's with very fast Z moves however higher speed cartesians may function
+ * If the machine cannot raise the probe fast enough after a trigger, it may enter a fault state.
+ */
+ //#define BLTOUCH_HS_MODE
+
+ // Safety: Enable voltage mode settings in the LCD menu.
+ //#define BLTOUCH_LCD_VOLTAGE_MENU
+
+#endif // BLTOUCH
// A probe that is deployed and stowed with a solenoid pin (SOL1_PIN)
//#define SOLENOID_PROBE
@@ -857,23 +913,23 @@
//
/**
- * Z Probe to nozzle (X,Y) offset, relative to (0, 0).
- * X and Y offsets must be integers.
+ * Z Probe to nozzle (X,Y) offset, relative to (0, 0).
+ * X and Y offsets must be integers.
*
- * In the following example the X and Y offsets are both positive:
- * #define X_PROBE_OFFSET_FROM_EXTRUDER 10
- * #define Y_PROBE_OFFSET_FROM_EXTRUDER 10
+ * In the following example the X and Y offsets are both positive:
+ * #define X_PROBE_OFFSET_FROM_EXTRUDER 10
+ * #define Y_PROBE_OFFSET_FROM_EXTRUDER 10
*
- * +-- BACK ---+
- * | |
- * L | (+) P | R <-- probe (20,20)
- * E | | I
- * F | (-) N (+) | G <-- nozzle (10,10)
- * T | | H
- * | (-) | T
- * | |
- * O-- FRONT --+
- * (0,0)
+ * +-- BACK ---+
+ * | |
+ * L | (+) P | R <-- probe (20,20)
+ * E | | I
+ * F | (-) N (+) | G <-- nozzle (10,10)
+ * T | | H
+ * | (-) | T
+ * | |
+ * O-- FRONT --+
+ * (0,0)
*/
#define X_PROBE_OFFSET_FROM_EXTRUDER 10 // X offset: -left +right [of the nozzle]
#define Y_PROBE_OFFSET_FROM_EXTRUDER 10 // Y offset: -front +behind [the nozzle]
@@ -2089,6 +2145,10 @@
#define NEOPIXEL_IS_SEQUENTIAL // Sequential display for temperature change - LED by LED. Disable to change all LEDs at once.
#define NEOPIXEL_BRIGHTNESS 127 // Initial brightness (0-255)
//#define NEOPIXEL_STARTUP_TEST // Cycle through colors at startup
+
+ // Use a single Neopixel LED for static (background) lighting
+ //#define NEOPIXEL_BKGD_LED_INDEX 0 // Index of the LED to use
+ //#define NEOPIXEL_BKGD_COLOR { 255, 255, 255, 0 } // R, G, B, W
#endif
/**
diff --git a/config/default/Configuration_adv.h b/config/default/Configuration_adv.h
index a9a15211f3..03c6bcfd5d 100644
--- a/config/default/Configuration_adv.h
+++ b/config/default/Configuration_adv.h
@@ -382,10 +382,6 @@
#endif
#endif
-//===========================================================================
-//============================ Mechanical Settings ==========================
-//===========================================================================
-
// @section homing
// If you want endstops to stay on (by default) even when not homing
@@ -745,6 +741,7 @@
* A (A shifted) B (B shifted) IC
* Smoothie 0x2C (0x58) 0x2D (0x5A) MCP4451
* AZTEEG_X3_PRO 0x2C (0x58) 0x2E (0x5C) MCP4451
+ * AZTEEG_X5_MINI 0x2C (0x58) 0x2E (0x5C) MCP4451
* AZTEEG_X5_MINI_WIFI 0x58 0x5C MCP4451
* MIGHTYBOARD_REVE 0x2F (0x5E) MCP4018
*/
diff --git a/config/examples/3DFabXYZ/Migbot/Configuration.h b/config/examples/3DFabXYZ/Migbot/Configuration.h
index 06528ed798..7989f37cd6 100644
--- a/config/examples/3DFabXYZ/Migbot/Configuration.h
+++ b/config/examples/3DFabXYZ/Migbot/Configuration.h
@@ -834,15 +834,71 @@
*/
//#define BLTOUCH
#if ENABLED(BLTOUCH)
- //#define BLTOUCH_DELAY 500 // Minimum Command delay (ms). Enable and increase if needed
+ /**
+ * Either: Use the defaults (recommended) or: For special purposes, use the following DEFINES
+ * Do not activate settings that the probe might not understand. Clones might misunderstand
+ * advanced commands.
+ *
+ * Note: If the probe is not deploying, check a "Cmd: Reset" and "Cmd: Self-Test" and then
+ * check the wiring of the BROWN, RED and ORANGE wires.
+ *
+ * Note: If the trigger signal of your probe is not being recognized, it has been very often
+ * because the BLACK and WHITE wires needed to be swapped. They are not "interchangeable"
+ * like they would be with a real switch. So please check the wiring first.
+ *
+ * Settings for all BLTouch and clone probes:
+ */
+
+ // Safety: The probe needs time to recognize the command.
+ // Minimum command delay (ms). Enable and increase if needed.
+ //#define BLTOUCH_DELAY 500
/**
- * BLTouch V3.0 and newer smart series
- * For genuine BLTouch 3.0 sensors. Clones may be confused by 3.0 command angles. YMMV.
- * If the pin trigger is not detected, first try swapping the black and white wires then toggle this.
+ * Settings for BLTOUCH Classic 1.2, 1.3 or BLTouch Smart 1.0, 2.0, 2.2, 3.0, 3.1, and most clones:
*/
- //#define BLTOUCH_FORCE_5V_MODE
-#endif
+
+ // Feature: Switch into SW mode after a deploy. It makes the output pulse longer. Can be useful
+ // in special cases, like noisy or filtered input configurations.
+ //#define BLTOUCH_FORCE_SW_MODE
+
+ /**
+ * Settings for BLTouch Smart 3.0 and 3.1
+ * Summary:
+ * - Voltage modes: 5V and OD (open drain - "logic voltage free") output modes
+ * - High-Speed mode
+ * - Disable LCD voltage options
+ */
+
+ /**
+ * Danger: Don't activate 5V mode unless attached to a 5V-tolerant controller!
+ * V3.0 or 3.1: Set default mode to 5V mode at Marlin startup.
+ * If disabled, OD mode is the hard-coded default on 3.0
+ * On startup, Marlin will compare its eeprom to this vale. If the selected mode
+ * differs, a mode set eeprom write will be completed at initialization.
+ * Use the option below to force an eeprom write to a V3.1 probe regardless.
+ */
+ //#define BLTOUCH_SET_5V_MODE
+
+ /**
+ * Safety: Activate if connecting a probe with an unknown voltage mode.
+ * V3.0: Set a probe into mode selected above at Marlin startup. Required for 5V mode on 3.0
+ * V3.1: Force a probe with unknown mode into selected mode at Marlin startup ( = Probe EEPROM write )
+ * To preserve the life of the probe, use this once then turn it off and re-flash.
+ */
+ //#define BLTOUCH_FORCE_MODE_SET
+
+ /**
+ * Use "HIGH SPEED" mode for probing.
+ * Danger: Disable if your probe sometimes fails. Only suitable for stable well-adjusted systems.
+ * This feature was designed for Delta's with very fast Z moves however higher speed cartesians may function
+ * If the machine cannot raise the probe fast enough after a trigger, it may enter a fault state.
+ */
+ //#define BLTOUCH_HS_MODE
+
+ // Safety: Enable voltage mode settings in the LCD menu.
+ //#define BLTOUCH_LCD_VOLTAGE_MENU
+
+#endif // BLTOUCH
// A probe that is deployed and stowed with a solenoid pin (SOL1_PIN)
//#define SOLENOID_PROBE
@@ -863,23 +919,23 @@
//
/**
- * Z Probe to nozzle (X,Y) offset, relative to (0, 0).
- * X and Y offsets must be integers.
+ * Z Probe to nozzle (X,Y) offset, relative to (0, 0).
+ * X and Y offsets must be integers.
*
- * In the following example the X and Y offsets are both positive:
- * #define X_PROBE_OFFSET_FROM_EXTRUDER 10
- * #define Y_PROBE_OFFSET_FROM_EXTRUDER 10
+ * In the following example the X and Y offsets are both positive:
+ * #define X_PROBE_OFFSET_FROM_EXTRUDER 10
+ * #define Y_PROBE_OFFSET_FROM_EXTRUDER 10
*
- * +-- BACK ---+
- * | |
- * L | (+) P | R <-- probe (20,20)
- * E | | I
- * F | (-) N (+) | G <-- nozzle (10,10)
- * T | | H
- * | (-) | T
- * | |
- * O-- FRONT --+
- * (0,0)
+ * +-- BACK ---+
+ * | |
+ * L | (+) P | R <-- probe (20,20)
+ * E | | I
+ * F | (-) N (+) | G <-- nozzle (10,10)
+ * T | | H
+ * | (-) | T
+ * | |
+ * O-- FRONT --+
+ * (0,0)
*/
#define X_PROBE_OFFSET_FROM_EXTRUDER 21 // X offset: -left +right [of the nozzle]
#define Y_PROBE_OFFSET_FROM_EXTRUDER 61 // Y offset: -front +behind [the nozzle]
@@ -2120,6 +2176,10 @@
#define NEOPIXEL_IS_SEQUENTIAL // Sequential display for temperature change - LED by LED. Disable to change all LEDs at once.
#define NEOPIXEL_BRIGHTNESS 127 // Initial brightness (0-255)
//#define NEOPIXEL_STARTUP_TEST // Cycle through colors at startup
+
+ // Use a single Neopixel LED for static (background) lighting
+ //#define NEOPIXEL_BKGD_LED_INDEX 0 // Index of the LED to use
+ //#define NEOPIXEL_BKGD_COLOR { 255, 255, 255, 0 } // R, G, B, W
#endif
/**
diff --git a/config/examples/3DFabXYZ/Migbot/Configuration_adv.h b/config/examples/3DFabXYZ/Migbot/Configuration_adv.h
index 4f40b80412..a4d4ae0386 100644
--- a/config/examples/3DFabXYZ/Migbot/Configuration_adv.h
+++ b/config/examples/3DFabXYZ/Migbot/Configuration_adv.h
@@ -382,10 +382,6 @@
#endif
#endif
-//===========================================================================
-//============================ Mechanical Settings ==========================
-//===========================================================================
-
// @section homing
// If you want endstops to stay on (by default) even when not homing
@@ -745,6 +741,7 @@
* A (A shifted) B (B shifted) IC
* Smoothie 0x2C (0x58) 0x2D (0x5A) MCP4451
* AZTEEG_X3_PRO 0x2C (0x58) 0x2E (0x5C) MCP4451
+ * AZTEEG_X5_MINI 0x2C (0x58) 0x2E (0x5C) MCP4451
* AZTEEG_X5_MINI_WIFI 0x58 0x5C MCP4451
* MIGHTYBOARD_REVE 0x2F (0x5E) MCP4018
*/
diff --git a/config/examples/AlephObjects/TAZ4/Configuration.h b/config/examples/AlephObjects/TAZ4/Configuration.h
index 861f17643c..33d2b42ce8 100644
--- a/config/examples/AlephObjects/TAZ4/Configuration.h
+++ b/config/examples/AlephObjects/TAZ4/Configuration.h
@@ -848,15 +848,71 @@
*/
//#define BLTOUCH
#if ENABLED(BLTOUCH)
- //#define BLTOUCH_DELAY 500 // Minimum Command delay (ms). Enable and increase if needed
+ /**
+ * Either: Use the defaults (recommended) or: For special purposes, use the following DEFINES
+ * Do not activate settings that the probe might not understand. Clones might misunderstand
+ * advanced commands.
+ *
+ * Note: If the probe is not deploying, check a "Cmd: Reset" and "Cmd: Self-Test" and then
+ * check the wiring of the BROWN, RED and ORANGE wires.
+ *
+ * Note: If the trigger signal of your probe is not being recognized, it has been very often
+ * because the BLACK and WHITE wires needed to be swapped. They are not "interchangeable"
+ * like they would be with a real switch. So please check the wiring first.
+ *
+ * Settings for all BLTouch and clone probes:
+ */
+
+ // Safety: The probe needs time to recognize the command.
+ // Minimum command delay (ms). Enable and increase if needed.
+ //#define BLTOUCH_DELAY 500
/**
- * BLTouch V3.0 and newer smart series
- * For genuine BLTouch 3.0 sensors. Clones may be confused by 3.0 command angles. YMMV.
- * If the pin trigger is not detected, first try swapping the black and white wires then toggle this.
+ * Settings for BLTOUCH Classic 1.2, 1.3 or BLTouch Smart 1.0, 2.0, 2.2, 3.0, 3.1, and most clones:
*/
- //#define BLTOUCH_FORCE_5V_MODE
-#endif
+
+ // Feature: Switch into SW mode after a deploy. It makes the output pulse longer. Can be useful
+ // in special cases, like noisy or filtered input configurations.
+ //#define BLTOUCH_FORCE_SW_MODE
+
+ /**
+ * Settings for BLTouch Smart 3.0 and 3.1
+ * Summary:
+ * - Voltage modes: 5V and OD (open drain - "logic voltage free") output modes
+ * - High-Speed mode
+ * - Disable LCD voltage options
+ */
+
+ /**
+ * Danger: Don't activate 5V mode unless attached to a 5V-tolerant controller!
+ * V3.0 or 3.1: Set default mode to 5V mode at Marlin startup.
+ * If disabled, OD mode is the hard-coded default on 3.0
+ * On startup, Marlin will compare its eeprom to this vale. If the selected mode
+ * differs, a mode set eeprom write will be completed at initialization.
+ * Use the option below to force an eeprom write to a V3.1 probe regardless.
+ */
+ //#define BLTOUCH_SET_5V_MODE
+
+ /**
+ * Safety: Activate if connecting a probe with an unknown voltage mode.
+ * V3.0: Set a probe into mode selected above at Marlin startup. Required for 5V mode on 3.0
+ * V3.1: Force a probe with unknown mode into selected mode at Marlin startup ( = Probe EEPROM write )
+ * To preserve the life of the probe, use this once then turn it off and re-flash.
+ */
+ //#define BLTOUCH_FORCE_MODE_SET
+
+ /**
+ * Use "HIGH SPEED" mode for probing.
+ * Danger: Disable if your probe sometimes fails. Only suitable for stable well-adjusted systems.
+ * This feature was designed for Delta's with very fast Z moves however higher speed cartesians may function
+ * If the machine cannot raise the probe fast enough after a trigger, it may enter a fault state.
+ */
+ //#define BLTOUCH_HS_MODE
+
+ // Safety: Enable voltage mode settings in the LCD menu.
+ //#define BLTOUCH_LCD_VOLTAGE_MENU
+
+#endif // BLTOUCH
// A probe that is deployed and stowed with a solenoid pin (SOL1_PIN)
//#define SOLENOID_PROBE
@@ -877,23 +933,23 @@
//
/**
- * Z Probe to nozzle (X,Y) offset, relative to (0, 0).
- * X and Y offsets must be integers.
+ * Z Probe to nozzle (X,Y) offset, relative to (0, 0).
+ * X and Y offsets must be integers.
*
- * In the following example the X and Y offsets are both positive:
- * #define X_PROBE_OFFSET_FROM_EXTRUDER 10
- * #define Y_PROBE_OFFSET_FROM_EXTRUDER 10
+ * In the following example the X and Y offsets are both positive:
+ * #define X_PROBE_OFFSET_FROM_EXTRUDER 10
+ * #define Y_PROBE_OFFSET_FROM_EXTRUDER 10
*
- * +-- BACK ---+
- * | |
- * L | (+) P | R <-- probe (20,20)
- * E | | I
- * F | (-) N (+) | G <-- nozzle (10,10)
- * T | | H
- * | (-) | T
- * | |
- * O-- FRONT --+
- * (0,0)
+ * +-- BACK ---+
+ * | |
+ * L | (+) P | R <-- probe (20,20)
+ * E | | I
+ * F | (-) N (+) | G <-- nozzle (10,10)
+ * T | | H
+ * | (-) | T
+ * | |
+ * O-- FRONT --+
+ * (0,0)
*/
#define X_PROBE_OFFSET_FROM_EXTRUDER -25 // X offset: -left +right [of the nozzle]
#define Y_PROBE_OFFSET_FROM_EXTRUDER -29 // Y offset: -front +behind [the nozzle]
@@ -2109,6 +2165,10 @@
#define NEOPIXEL_IS_SEQUENTIAL // Sequential display for temperature change - LED by LED. Disable to change all LEDs at once.
#define NEOPIXEL_BRIGHTNESS 127 // Initial brightness (0-255)
//#define NEOPIXEL_STARTUP_TEST // Cycle through colors at startup
+
+ // Use a single Neopixel LED for static (background) lighting
+ //#define NEOPIXEL_BKGD_LED_INDEX 0 // Index of the LED to use
+ //#define NEOPIXEL_BKGD_COLOR { 255, 255, 255, 0 } // R, G, B, W
#endif
/**
diff --git a/config/examples/AlephObjects/TAZ4/Configuration_adv.h b/config/examples/AlephObjects/TAZ4/Configuration_adv.h
index 44227d4d0f..d0cfc13264 100644
--- a/config/examples/AlephObjects/TAZ4/Configuration_adv.h
+++ b/config/examples/AlephObjects/TAZ4/Configuration_adv.h
@@ -382,10 +382,6 @@
#endif
#endif
-//===========================================================================
-//============================ Mechanical Settings ==========================
-//===========================================================================
-
// @section homing
// If you want endstops to stay on (by default) even when not homing
@@ -745,6 +741,7 @@
* A (A shifted) B (B shifted) IC
* Smoothie 0x2C (0x58) 0x2D (0x5A) MCP4451
* AZTEEG_X3_PRO 0x2C (0x58) 0x2E (0x5C) MCP4451
+ * AZTEEG_X5_MINI 0x2C (0x58) 0x2E (0x5C) MCP4451
* AZTEEG_X5_MINI_WIFI 0x58 0x5C MCP4451
* MIGHTYBOARD_REVE 0x2F (0x5E) MCP4018
*/
diff --git a/config/examples/AliExpress/CL-260/Configuration.h b/config/examples/AliExpress/CL-260/Configuration.h
index 746246625e..0605526f74 100644
--- a/config/examples/AliExpress/CL-260/Configuration.h
+++ b/config/examples/AliExpress/CL-260/Configuration.h
@@ -828,15 +828,71 @@
*/
//#define BLTOUCH
#if ENABLED(BLTOUCH)
- //#define BLTOUCH_DELAY 500 // Minimum Command delay (ms). Enable and increase if needed
+ /**
+ * Either: Use the defaults (recommended) or: For special purposes, use the following DEFINES
+ * Do not activate settings that the probe might not understand. Clones might misunderstand
+ * advanced commands.
+ *
+ * Note: If the probe is not deploying, check a "Cmd: Reset" and "Cmd: Self-Test" and then
+ * check the wiring of the BROWN, RED and ORANGE wires.
+ *
+ * Note: If the trigger signal of your probe is not being recognized, it has been very often
+ * because the BLACK and WHITE wires needed to be swapped. They are not "interchangeable"
+ * like they would be with a real switch. So please check the wiring first.
+ *
+ * Settings for all BLTouch and clone probes:
+ */
+
+ // Safety: The probe needs time to recognize the command.
+ // Minimum command delay (ms). Enable and increase if needed.
+ //#define BLTOUCH_DELAY 500
/**
- * BLTouch V3.0 and newer smart series
- * For genuine BLTouch 3.0 sensors. Clones may be confused by 3.0 command angles. YMMV.
- * If the pin trigger is not detected, first try swapping the black and white wires then toggle this.
+ * Settings for BLTOUCH Classic 1.2, 1.3 or BLTouch Smart 1.0, 2.0, 2.2, 3.0, 3.1, and most clones:
*/
- //#define BLTOUCH_FORCE_5V_MODE
-#endif
+
+ // Feature: Switch into SW mode after a deploy. It makes the output pulse longer. Can be useful
+ // in special cases, like noisy or filtered input configurations.
+ //#define BLTOUCH_FORCE_SW_MODE
+
+ /**
+ * Settings for BLTouch Smart 3.0 and 3.1
+ * Summary:
+ * - Voltage modes: 5V and OD (open drain - "logic voltage free") output modes
+ * - High-Speed mode
+ * - Disable LCD voltage options
+ */
+
+ /**
+ * Danger: Don't activate 5V mode unless attached to a 5V-tolerant controller!
+ * V3.0 or 3.1: Set default mode to 5V mode at Marlin startup.
+ * If disabled, OD mode is the hard-coded default on 3.0
+ * On startup, Marlin will compare its eeprom to this vale. If the selected mode
+ * differs, a mode set eeprom write will be completed at initialization.
+ * Use the option below to force an eeprom write to a V3.1 probe regardless.
+ */
+ //#define BLTOUCH_SET_5V_MODE
+
+ /**
+ * Safety: Activate if connecting a probe with an unknown voltage mode.
+ * V3.0: Set a probe into mode selected above at Marlin startup. Required for 5V mode on 3.0
+ * V3.1: Force a probe with unknown mode into selected mode at Marlin startup ( = Probe EEPROM write )
+ * To preserve the life of the probe, use this once then turn it off and re-flash.
+ */
+ //#define BLTOUCH_FORCE_MODE_SET
+
+ /**
+ * Use "HIGH SPEED" mode for probing.
+ * Danger: Disable if your probe sometimes fails. Only suitable for stable well-adjusted systems.
+ * This feature was designed for Delta's with very fast Z moves however higher speed cartesians may function
+ * If the machine cannot raise the probe fast enough after a trigger, it may enter a fault state.
+ */
+ //#define BLTOUCH_HS_MODE
+
+ // Safety: Enable voltage mode settings in the LCD menu.
+ //#define BLTOUCH_LCD_VOLTAGE_MENU
+
+#endif // BLTOUCH
// A probe that is deployed and stowed with a solenoid pin (SOL1_PIN)
//#define SOLENOID_PROBE
@@ -857,23 +913,23 @@
//
/**
- * Z Probe to nozzle (X,Y) offset, relative to (0, 0).
- * X and Y offsets must be integers.
+ * Z Probe to nozzle (X,Y) offset, relative to (0, 0).
+ * X and Y offsets must be integers.
*
- * In the following example the X and Y offsets are both positive:
- * #define X_PROBE_OFFSET_FROM_EXTRUDER 10
- * #define Y_PROBE_OFFSET_FROM_EXTRUDER 10
+ * In the following example the X and Y offsets are both positive:
+ * #define X_PROBE_OFFSET_FROM_EXTRUDER 10
+ * #define Y_PROBE_OFFSET_FROM_EXTRUDER 10
*
- * +-- BACK ---+
- * | |
- * L | (+) P | R <-- probe (20,20)
- * E | | I
- * F | (-) N (+) | G <-- nozzle (10,10)
- * T | | H
- * | (-) | T
- * | |
- * O-- FRONT --+
- * (0,0)
+ * +-- BACK ---+
+ * | |
+ * L | (+) P | R <-- probe (20,20)
+ * E | | I
+ * F | (-) N (+) | G <-- nozzle (10,10)
+ * T | | H
+ * | (-) | T
+ * | |
+ * O-- FRONT --+
+ * (0,0)
*/
#define X_PROBE_OFFSET_FROM_EXTRUDER 10 // X offset: -left +right [of the nozzle]
#define Y_PROBE_OFFSET_FROM_EXTRUDER 10 // Y offset: -front +behind [the nozzle]
@@ -2089,6 +2145,10 @@
#define NEOPIXEL_IS_SEQUENTIAL // Sequential display for temperature change - LED by LED. Disable to change all LEDs at once.
#define NEOPIXEL_BRIGHTNESS 127 // Initial brightness (0-255)
//#define NEOPIXEL_STARTUP_TEST // Cycle through colors at startup
+
+ // Use a single Neopixel LED for static (background) lighting
+ //#define NEOPIXEL_BKGD_LED_INDEX 0 // Index of the LED to use
+ //#define NEOPIXEL_BKGD_COLOR { 255, 255, 255, 0 } // R, G, B, W
#endif
/**
diff --git a/config/examples/AliExpress/UM2pExt/Configuration.h b/config/examples/AliExpress/UM2pExt/Configuration.h
index 3250a45f5c..f4423157ae 100644
--- a/config/examples/AliExpress/UM2pExt/Configuration.h
+++ b/config/examples/AliExpress/UM2pExt/Configuration.h
@@ -839,15 +839,71 @@
*/
//#define BLTOUCH
#if ENABLED(BLTOUCH)
- //#define BLTOUCH_DELAY 500 // Minimum Command delay (ms). Enable and increase if needed
+ /**
+ * Either: Use the defaults (recommended) or: For special purposes, use the following DEFINES
+ * Do not activate settings that the probe might not understand. Clones might misunderstand
+ * advanced commands.
+ *
+ * Note: If the probe is not deploying, check a "Cmd: Reset" and "Cmd: Self-Test" and then
+ * check the wiring of the BROWN, RED and ORANGE wires.
+ *
+ * Note: If the trigger signal of your probe is not being recognized, it has been very often
+ * because the BLACK and WHITE wires needed to be swapped. They are not "interchangeable"
+ * like they would be with a real switch. So please check the wiring first.
+ *
+ * Settings for all BLTouch and clone probes:
+ */
+
+ // Safety: The probe needs time to recognize the command.
+ // Minimum command delay (ms). Enable and increase if needed.
+ //#define BLTOUCH_DELAY 500
/**
- * BLTouch V3.0 and newer smart series
- * For genuine BLTouch 3.0 sensors. Clones may be confused by 3.0 command angles. YMMV.
- * If the pin trigger is not detected, first try swapping the black and white wires then toggle this.
+ * Settings for BLTOUCH Classic 1.2, 1.3 or BLTouch Smart 1.0, 2.0, 2.2, 3.0, 3.1, and most clones:
*/
- //#define BLTOUCH_FORCE_5V_MODE
-#endif
+
+ // Feature: Switch into SW mode after a deploy. It makes the output pulse longer. Can be useful
+ // in special cases, like noisy or filtered input configurations.
+ //#define BLTOUCH_FORCE_SW_MODE
+
+ /**
+ * Settings for BLTouch Smart 3.0 and 3.1
+ * Summary:
+ * - Voltage modes: 5V and OD (open drain - "logic voltage free") output modes
+ * - High-Speed mode
+ * - Disable LCD voltage options
+ */
+
+ /**
+ * Danger: Don't activate 5V mode unless attached to a 5V-tolerant controller!
+ * V3.0 or 3.1: Set default mode to 5V mode at Marlin startup.
+ * If disabled, OD mode is the hard-coded default on 3.0
+ * On startup, Marlin will compare its eeprom to this vale. If the selected mode
+ * differs, a mode set eeprom write will be completed at initialization.
+ * Use the option below to force an eeprom write to a V3.1 probe regardless.
+ */
+ //#define BLTOUCH_SET_5V_MODE
+
+ /**
+ * Safety: Activate if connecting a probe with an unknown voltage mode.
+ * V3.0: Set a probe into mode selected above at Marlin startup. Required for 5V mode on 3.0
+ * V3.1: Force a probe with unknown mode into selected mode at Marlin startup ( = Probe EEPROM write )
+ * To preserve the life of the probe, use this once then turn it off and re-flash.
+ */
+ //#define BLTOUCH_FORCE_MODE_SET
+
+ /**
+ * Use "HIGH SPEED" mode for probing.
+ * Danger: Disable if your probe sometimes fails. Only suitable for stable well-adjusted systems.
+ * This feature was designed for Delta's with very fast Z moves however higher speed cartesians may function
+ * If the machine cannot raise the probe fast enough after a trigger, it may enter a fault state.
+ */
+ //#define BLTOUCH_HS_MODE
+
+ // Safety: Enable voltage mode settings in the LCD menu.
+ //#define BLTOUCH_LCD_VOLTAGE_MENU
+
+#endif // BLTOUCH
// A probe that is deployed and stowed with a solenoid pin (SOL1_PIN)
//#define SOLENOID_PROBE
@@ -868,23 +924,23 @@
//
/**
- * Z Probe to nozzle (X,Y) offset, relative to (0, 0).
- * X and Y offsets must be integers.
+ * Z Probe to nozzle (X,Y) offset, relative to (0, 0).
+ * X and Y offsets must be integers.
*
- * In the following example the X and Y offsets are both positive:
- * #define X_PROBE_OFFSET_FROM_EXTRUDER 10
- * #define Y_PROBE_OFFSET_FROM_EXTRUDER 10
+ * In the following example the X and Y offsets are both positive:
+ * #define X_PROBE_OFFSET_FROM_EXTRUDER 10
+ * #define Y_PROBE_OFFSET_FROM_EXTRUDER 10
*
- * +-- BACK ---+
- * | |
- * L | (+) P | R <-- probe (20,20)
- * E | | I
- * F | (-) N (+) | G <-- nozzle (10,10)
- * T | | H
- * | (-) | T
- * | |
- * O-- FRONT --+
- * (0,0)
+ * +-- BACK ---+
+ * | |
+ * L | (+) P | R <-- probe (20,20)
+ * E | | I
+ * F | (-) N (+) | G <-- nozzle (10,10)
+ * T | | H
+ * | (-) | T
+ * | |
+ * O-- FRONT --+
+ * (0,0)
*/
#define X_PROBE_OFFSET_FROM_EXTRUDER 10 // X offset: -left +right [of the nozzle]
#define Y_PROBE_OFFSET_FROM_EXTRUDER 10 // Y offset: -front +behind [the nozzle]
@@ -2100,6 +2156,10 @@
#define NEOPIXEL_IS_SEQUENTIAL // Sequential display for temperature change - LED by LED. Disable to change all LEDs at once.
#define NEOPIXEL_BRIGHTNESS 127 // Initial brightness (0-255)
//#define NEOPIXEL_STARTUP_TEST // Cycle through colors at startup
+
+ // Use a single Neopixel LED for static (background) lighting
+ //#define NEOPIXEL_BKGD_LED_INDEX 0 // Index of the LED to use
+ //#define NEOPIXEL_BKGD_COLOR { 255, 255, 255, 0 } // R, G, B, W
#endif
/**
diff --git a/config/examples/AliExpress/UM2pExt/Configuration_adv.h b/config/examples/AliExpress/UM2pExt/Configuration_adv.h
index 160cb86f4a..9c004e59c7 100644
--- a/config/examples/AliExpress/UM2pExt/Configuration_adv.h
+++ b/config/examples/AliExpress/UM2pExt/Configuration_adv.h
@@ -382,10 +382,6 @@
#endif
#endif
-//===========================================================================
-//============================ Mechanical Settings ==========================
-//===========================================================================
-
// @section homing
// If you want endstops to stay on (by default) even when not homing
@@ -745,6 +741,7 @@
* A (A shifted) B (B shifted) IC
* Smoothie 0x2C (0x58) 0x2D (0x5A) MCP4451
* AZTEEG_X3_PRO 0x2C (0x58) 0x2E (0x5C) MCP4451
+ * AZTEEG_X5_MINI 0x2C (0x58) 0x2E (0x5C) MCP4451
* AZTEEG_X5_MINI_WIFI 0x58 0x5C MCP4451
* MIGHTYBOARD_REVE 0x2F (0x5E) MCP4018
*/
diff --git a/config/examples/Anet/A2/Configuration.h b/config/examples/Anet/A2/Configuration.h
index b5a902bf0b..eaaf073e16 100644
--- a/config/examples/Anet/A2/Configuration.h
+++ b/config/examples/Anet/A2/Configuration.h
@@ -828,15 +828,71 @@
*/
//#define BLTOUCH
#if ENABLED(BLTOUCH)
- //#define BLTOUCH_DELAY 500 // Minimum Command delay (ms). Enable and increase if needed
+ /**
+ * Either: Use the defaults (recommended) or: For special purposes, use the following DEFINES
+ * Do not activate settings that the probe might not understand. Clones might misunderstand
+ * advanced commands.
+ *
+ * Note: If the probe is not deploying, check a "Cmd: Reset" and "Cmd: Self-Test" and then
+ * check the wiring of the BROWN, RED and ORANGE wires.
+ *
+ * Note: If the trigger signal of your probe is not being recognized, it has been very often
+ * because the BLACK and WHITE wires needed to be swapped. They are not "interchangeable"
+ * like they would be with a real switch. So please check the wiring first.
+ *
+ * Settings for all BLTouch and clone probes:
+ */
+
+ // Safety: The probe needs time to recognize the command.
+ // Minimum command delay (ms). Enable and increase if needed.
+ //#define BLTOUCH_DELAY 500
/**
- * BLTouch V3.0 and newer smart series
- * For genuine BLTouch 3.0 sensors. Clones may be confused by 3.0 command angles. YMMV.
- * If the pin trigger is not detected, first try swapping the black and white wires then toggle this.
+ * Settings for BLTOUCH Classic 1.2, 1.3 or BLTouch Smart 1.0, 2.0, 2.2, 3.0, 3.1, and most clones:
*/
- //#define BLTOUCH_FORCE_5V_MODE
-#endif
+
+ // Feature: Switch into SW mode after a deploy. It makes the output pulse longer. Can be useful
+ // in special cases, like noisy or filtered input configurations.
+ //#define BLTOUCH_FORCE_SW_MODE
+
+ /**
+ * Settings for BLTouch Smart 3.0 and 3.1
+ * Summary:
+ * - Voltage modes: 5V and OD (open drain - "logic voltage free") output modes
+ * - High-Speed mode
+ * - Disable LCD voltage options
+ */
+
+ /**
+ * Danger: Don't activate 5V mode unless attached to a 5V-tolerant controller!
+ * V3.0 or 3.1: Set default mode to 5V mode at Marlin startup.
+ * If disabled, OD mode is the hard-coded default on 3.0
+ * On startup, Marlin will compare its eeprom to this vale. If the selected mode
+ * differs, a mode set eeprom write will be completed at initialization.
+ * Use the option below to force an eeprom write to a V3.1 probe regardless.
+ */
+ //#define BLTOUCH_SET_5V_MODE
+
+ /**
+ * Safety: Activate if connecting a probe with an unknown voltage mode.
+ * V3.0: Set a probe into mode selected above at Marlin startup. Required for 5V mode on 3.0
+ * V3.1: Force a probe with unknown mode into selected mode at Marlin startup ( = Probe EEPROM write )
+ * To preserve the life of the probe, use this once then turn it off and re-flash.
+ */
+ //#define BLTOUCH_FORCE_MODE_SET
+
+ /**
+ * Use "HIGH SPEED" mode for probing.
+ * Danger: Disable if your probe sometimes fails. Only suitable for stable well-adjusted systems.
+ * This feature was designed for Delta's with very fast Z moves however higher speed cartesians may function
+ * If the machine cannot raise the probe fast enough after a trigger, it may enter a fault state.
+ */
+ //#define BLTOUCH_HS_MODE
+
+ // Safety: Enable voltage mode settings in the LCD menu.
+ //#define BLTOUCH_LCD_VOLTAGE_MENU
+
+#endif // BLTOUCH
// A probe that is deployed and stowed with a solenoid pin (SOL1_PIN)
//#define SOLENOID_PROBE
@@ -857,23 +913,23 @@
//
/**
- * Z Probe to nozzle (X,Y) offset, relative to (0, 0).
- * X and Y offsets must be integers.
+ * Z Probe to nozzle (X,Y) offset, relative to (0, 0).
+ * X and Y offsets must be integers.
*
- * In the following example the X and Y offsets are both positive:
- * #define X_PROBE_OFFSET_FROM_EXTRUDER 10
- * #define Y_PROBE_OFFSET_FROM_EXTRUDER 10
+ * In the following example the X and Y offsets are both positive:
+ * #define X_PROBE_OFFSET_FROM_EXTRUDER 10
+ * #define Y_PROBE_OFFSET_FROM_EXTRUDER 10
*
- * +-- BACK ---+
- * | |
- * L | (+) P | R <-- probe (20,20)
- * E | | I
- * F | (-) N (+) | G <-- nozzle (10,10)
- * T | | H
- * | (-) | T
- * | |
- * O-- FRONT --+
- * (0,0)
+ * +-- BACK ---+
+ * | |
+ * L | (+) P | R <-- probe (20,20)
+ * E | | I
+ * F | (-) N (+) | G <-- nozzle (10,10)
+ * T | | H
+ * | (-) | T
+ * | |
+ * O-- FRONT --+
+ * (0,0)
*/
//#define X_PROBE_OFFSET_FROM_EXTRUDER 10 // X offset: -left +right [of the nozzle]
//#define Y_PROBE_OFFSET_FROM_EXTRUDER 10 // Y offset: -front +behind [the nozzle]
@@ -2091,6 +2147,10 @@
#define NEOPIXEL_IS_SEQUENTIAL // Sequential display for temperature change - LED by LED. Disable to change all LEDs at once.
#define NEOPIXEL_BRIGHTNESS 127 // Initial brightness (0-255)
//#define NEOPIXEL_STARTUP_TEST // Cycle through colors at startup
+
+ // Use a single Neopixel LED for static (background) lighting
+ //#define NEOPIXEL_BKGD_LED_INDEX 0 // Index of the LED to use
+ //#define NEOPIXEL_BKGD_COLOR { 255, 255, 255, 0 } // R, G, B, W
#endif
/**
diff --git a/config/examples/Anet/A2/Configuration_adv.h b/config/examples/Anet/A2/Configuration_adv.h
index 9ace82c328..e44c289a0f 100644
--- a/config/examples/Anet/A2/Configuration_adv.h
+++ b/config/examples/Anet/A2/Configuration_adv.h
@@ -382,10 +382,6 @@
#endif
#endif
-//===========================================================================
-//============================ Mechanical Settings ==========================
-//===========================================================================
-
// @section homing
// If you want endstops to stay on (by default) even when not homing
@@ -745,6 +741,7 @@
* A (A shifted) B (B shifted) IC
* Smoothie 0x2C (0x58) 0x2D (0x5A) MCP4451
* AZTEEG_X3_PRO 0x2C (0x58) 0x2E (0x5C) MCP4451
+ * AZTEEG_X5_MINI 0x2C (0x58) 0x2E (0x5C) MCP4451
* AZTEEG_X5_MINI_WIFI 0x58 0x5C MCP4451
* MIGHTYBOARD_REVE 0x2F (0x5E) MCP4018
*/
diff --git a/config/examples/Anet/A2plus/Configuration.h b/config/examples/Anet/A2plus/Configuration.h
index 7db8d45d0b..ca22d5eeb7 100644
--- a/config/examples/Anet/A2plus/Configuration.h
+++ b/config/examples/Anet/A2plus/Configuration.h
@@ -828,15 +828,71 @@
*/
//#define BLTOUCH
#if ENABLED(BLTOUCH)
- //#define BLTOUCH_DELAY 500 // Minimum Command delay (ms). Enable and increase if needed
+ /**
+ * Either: Use the defaults (recommended) or: For special purposes, use the following DEFINES
+ * Do not activate settings that the probe might not understand. Clones might misunderstand
+ * advanced commands.
+ *
+ * Note: If the probe is not deploying, check a "Cmd: Reset" and "Cmd: Self-Test" and then
+ * check the wiring of the BROWN, RED and ORANGE wires.
+ *
+ * Note: If the trigger signal of your probe is not being recognized, it has been very often
+ * because the BLACK and WHITE wires needed to be swapped. They are not "interchangeable"
+ * like they would be with a real switch. So please check the wiring first.
+ *
+ * Settings for all BLTouch and clone probes:
+ */
+
+ // Safety: The probe needs time to recognize the command.
+ // Minimum command delay (ms). Enable and increase if needed.
+ //#define BLTOUCH_DELAY 500
/**
- * BLTouch V3.0 and newer smart series
- * For genuine BLTouch 3.0 sensors. Clones may be confused by 3.0 command angles. YMMV.
- * If the pin trigger is not detected, first try swapping the black and white wires then toggle this.
+ * Settings for BLTOUCH Classic 1.2, 1.3 or BLTouch Smart 1.0, 2.0, 2.2, 3.0, 3.1, and most clones:
*/
- //#define BLTOUCH_FORCE_5V_MODE
-#endif
+
+ // Feature: Switch into SW mode after a deploy. It makes the output pulse longer. Can be useful
+ // in special cases, like noisy or filtered input configurations.
+ //#define BLTOUCH_FORCE_SW_MODE
+
+ /**
+ * Settings for BLTouch Smart 3.0 and 3.1
+ * Summary:
+ * - Voltage modes: 5V and OD (open drain - "logic voltage free") output modes
+ * - High-Speed mode
+ * - Disable LCD voltage options
+ */
+
+ /**
+ * Danger: Don't activate 5V mode unless attached to a 5V-tolerant controller!
+ * V3.0 or 3.1: Set default mode to 5V mode at Marlin startup.
+ * If disabled, OD mode is the hard-coded default on 3.0
+ * On startup, Marlin will compare its eeprom to this vale. If the selected mode
+ * differs, a mode set eeprom write will be completed at initialization.
+ * Use the option below to force an eeprom write to a V3.1 probe regardless.
+ */
+ //#define BLTOUCH_SET_5V_MODE
+
+ /**
+ * Safety: Activate if connecting a probe with an unknown voltage mode.
+ * V3.0: Set a probe into mode selected above at Marlin startup. Required for 5V mode on 3.0
+ * V3.1: Force a probe with unknown mode into selected mode at Marlin startup ( = Probe EEPROM write )
+ * To preserve the life of the probe, use this once then turn it off and re-flash.
+ */
+ //#define BLTOUCH_FORCE_MODE_SET
+
+ /**
+ * Use "HIGH SPEED" mode for probing.
+ * Danger: Disable if your probe sometimes fails. Only suitable for stable well-adjusted systems.
+ * This feature was designed for Delta's with very fast Z moves however higher speed cartesians may function
+ * If the machine cannot raise the probe fast enough after a trigger, it may enter a fault state.
+ */
+ //#define BLTOUCH_HS_MODE
+
+ // Safety: Enable voltage mode settings in the LCD menu.
+ //#define BLTOUCH_LCD_VOLTAGE_MENU
+
+#endif // BLTOUCH
// A probe that is deployed and stowed with a solenoid pin (SOL1_PIN)
//#define SOLENOID_PROBE
@@ -857,23 +913,23 @@
//
/**
- * Z Probe to nozzle (X,Y) offset, relative to (0, 0).
- * X and Y offsets must be integers.
+ * Z Probe to nozzle (X,Y) offset, relative to (0, 0).
+ * X and Y offsets must be integers.
*
- * In the following example the X and Y offsets are both positive:
- * #define X_PROBE_OFFSET_FROM_EXTRUDER 10
- * #define Y_PROBE_OFFSET_FROM_EXTRUDER 10
+ * In the following example the X and Y offsets are both positive:
+ * #define X_PROBE_OFFSET_FROM_EXTRUDER 10
+ * #define Y_PROBE_OFFSET_FROM_EXTRUDER 10
*
- * +-- BACK ---+
- * | |
- * L | (+) P | R <-- probe (20,20)
- * E | | I
- * F | (-) N (+) | G <-- nozzle (10,10)
- * T | | H
- * | (-) | T
- * | |
- * O-- FRONT --+
- * (0,0)
+ * +-- BACK ---+
+ * | |
+ * L | (+) P | R <-- probe (20,20)
+ * E | | I
+ * F | (-) N (+) | G <-- nozzle (10,10)
+ * T | | H
+ * | (-) | T
+ * | |
+ * O-- FRONT --+
+ * (0,0)
*/
//#define X_PROBE_OFFSET_FROM_EXTRUDER 10 // X offset: -left +right [of the nozzle]
//#define Y_PROBE_OFFSET_FROM_EXTRUDER 10 // Y offset: -front +behind [the nozzle]
@@ -2091,6 +2147,10 @@
#define NEOPIXEL_IS_SEQUENTIAL // Sequential display for temperature change - LED by LED. Disable to change all LEDs at once.
#define NEOPIXEL_BRIGHTNESS 127 // Initial brightness (0-255)
//#define NEOPIXEL_STARTUP_TEST // Cycle through colors at startup
+
+ // Use a single Neopixel LED for static (background) lighting
+ //#define NEOPIXEL_BKGD_LED_INDEX 0 // Index of the LED to use
+ //#define NEOPIXEL_BKGD_COLOR { 255, 255, 255, 0 } // R, G, B, W
#endif
/**
diff --git a/config/examples/Anet/A2plus/Configuration_adv.h b/config/examples/Anet/A2plus/Configuration_adv.h
index 9ace82c328..e44c289a0f 100644
--- a/config/examples/Anet/A2plus/Configuration_adv.h
+++ b/config/examples/Anet/A2plus/Configuration_adv.h
@@ -382,10 +382,6 @@
#endif
#endif
-//===========================================================================
-//============================ Mechanical Settings ==========================
-//===========================================================================
-
// @section homing
// If you want endstops to stay on (by default) even when not homing
@@ -745,6 +741,7 @@
* A (A shifted) B (B shifted) IC
* Smoothie 0x2C (0x58) 0x2D (0x5A) MCP4451
* AZTEEG_X3_PRO 0x2C (0x58) 0x2E (0x5C) MCP4451
+ * AZTEEG_X5_MINI 0x2C (0x58) 0x2E (0x5C) MCP4451
* AZTEEG_X5_MINI_WIFI 0x58 0x5C MCP4451
* MIGHTYBOARD_REVE 0x2F (0x5E) MCP4018
*/
diff --git a/config/examples/Anet/A6/Configuration.h b/config/examples/Anet/A6/Configuration.h
index d1a8f982cd..35986136c4 100644
--- a/config/examples/Anet/A6/Configuration.h
+++ b/config/examples/Anet/A6/Configuration.h
@@ -875,15 +875,71 @@
*/
//#define BLTOUCH
#if ENABLED(BLTOUCH)
- //#define BLTOUCH_DELAY 500 // Minimum Command delay (ms). Enable and increase if needed
+ /**
+ * Either: Use the defaults (recommended) or: For special purposes, use the following DEFINES
+ * Do not activate settings that the probe might not understand. Clones might misunderstand
+ * advanced commands.
+ *
+ * Note: If the probe is not deploying, check a "Cmd: Reset" and "Cmd: Self-Test" and then
+ * check the wiring of the BROWN, RED and ORANGE wires.
+ *
+ * Note: If the trigger signal of your probe is not being recognized, it has been very often
+ * because the BLACK and WHITE wires needed to be swapped. They are not "interchangeable"
+ * like they would be with a real switch. So please check the wiring first.
+ *
+ * Settings for all BLTouch and clone probes:
+ */
+
+ // Safety: The probe needs time to recognize the command.
+ // Minimum command delay (ms). Enable and increase if needed.
+ //#define BLTOUCH_DELAY 500
/**
- * BLTouch V3.0 and newer smart series
- * For genuine BLTouch 3.0 sensors. Clones may be confused by 3.0 command angles. YMMV.
- * If the pin trigger is not detected, first try swapping the black and white wires then toggle this.
+ * Settings for BLTOUCH Classic 1.2, 1.3 or BLTouch Smart 1.0, 2.0, 2.2, 3.0, 3.1, and most clones:
*/
- //#define BLTOUCH_FORCE_5V_MODE
-#endif
+
+ // Feature: Switch into SW mode after a deploy. It makes the output pulse longer. Can be useful
+ // in special cases, like noisy or filtered input configurations.
+ //#define BLTOUCH_FORCE_SW_MODE
+
+ /**
+ * Settings for BLTouch Smart 3.0 and 3.1
+ * Summary:
+ * - Voltage modes: 5V and OD (open drain - "logic voltage free") output modes
+ * - High-Speed mode
+ * - Disable LCD voltage options
+ */
+
+ /**
+ * Danger: Don't activate 5V mode unless attached to a 5V-tolerant controller!
+ * V3.0 or 3.1: Set default mode to 5V mode at Marlin startup.
+ * If disabled, OD mode is the hard-coded default on 3.0
+ * On startup, Marlin will compare its eeprom to this vale. If the selected mode
+ * differs, a mode set eeprom write will be completed at initialization.
+ * Use the option below to force an eeprom write to a V3.1 probe regardless.
+ */
+ //#define BLTOUCH_SET_5V_MODE
+
+ /**
+ * Safety: Activate if connecting a probe with an unknown voltage mode.
+ * V3.0: Set a probe into mode selected above at Marlin startup. Required for 5V mode on 3.0
+ * V3.1: Force a probe with unknown mode into selected mode at Marlin startup ( = Probe EEPROM write )
+ * To preserve the life of the probe, use this once then turn it off and re-flash.
+ */
+ //#define BLTOUCH_FORCE_MODE_SET
+
+ /**
+ * Use "HIGH SPEED" mode for probing.
+ * Danger: Disable if your probe sometimes fails. Only suitable for stable well-adjusted systems.
+ * This feature was designed for Delta's with very fast Z moves however higher speed cartesians may function
+ * If the machine cannot raise the probe fast enough after a trigger, it may enter a fault state.
+ */
+ //#define BLTOUCH_HS_MODE
+
+ // Safety: Enable voltage mode settings in the LCD menu.
+ //#define BLTOUCH_LCD_VOLTAGE_MENU
+
+#endif // BLTOUCH
// A probe that is deployed and stowed with a solenoid pin (SOL1_PIN)
//#define SOLENOID_PROBE
@@ -904,23 +960,23 @@
//
/**
- * Z Probe to nozzle (X,Y) offset, relative to (0, 0).
- * X and Y offsets must be integers.
+ * Z Probe to nozzle (X,Y) offset, relative to (0, 0).
+ * X and Y offsets must be integers.
*
- * In the following example the X and Y offsets are both positive:
- * #define X_PROBE_OFFSET_FROM_EXTRUDER 10
- * #define Y_PROBE_OFFSET_FROM_EXTRUDER 10
+ * In the following example the X and Y offsets are both positive:
+ * #define X_PROBE_OFFSET_FROM_EXTRUDER 10
+ * #define Y_PROBE_OFFSET_FROM_EXTRUDER 10
*
- * +-- BACK ---+
- * | |
- * L | (+) P | R <-- probe (20,20)
- * E | | I
- * F | (-) N (+) | G <-- nozzle (10,10)
- * T | | H
- * | (-) | T
- * | |
- * O-- FRONT --+
- * (0,0)
+ * +-- BACK ---+
+ * | |
+ * L | (+) P | R <-- probe (20,20)
+ * E | | I
+ * F | (-) N (+) | G <-- nozzle (10,10)
+ * T | | H
+ * | (-) | T
+ * | |
+ * O-- FRONT --+
+ * (0,0)
*/
//#define X_PROBE_OFFSET_FROM_EXTRUDER 10 // X offset: -left +right [of the nozzle]
//#define Y_PROBE_OFFSET_FROM_EXTRUDER 10 // Y offset: -front +behind [the nozzle]
@@ -2243,6 +2299,10 @@
#define NEOPIXEL_IS_SEQUENTIAL // Sequential display for temperature change - LED by LED. Disable to change all LEDs at once.
#define NEOPIXEL_BRIGHTNESS 127 // Initial brightness (0-255)
//#define NEOPIXEL_STARTUP_TEST // Cycle through colors at startup
+
+ // Use a single Neopixel LED for static (background) lighting
+ //#define NEOPIXEL_BKGD_LED_INDEX 0 // Index of the LED to use
+ //#define NEOPIXEL_BKGD_COLOR { 255, 255, 255, 0 } // R, G, B, W
#endif
/**
diff --git a/config/examples/Anet/A6/Configuration_adv.h b/config/examples/Anet/A6/Configuration_adv.h
index e0b52cb7b3..7980e46aa9 100644
--- a/config/examples/Anet/A6/Configuration_adv.h
+++ b/config/examples/Anet/A6/Configuration_adv.h
@@ -382,10 +382,6 @@
#endif
#endif
-//===========================================================================
-//============================ Mechanical Settings ==========================
-//===========================================================================
-
// @section homing
// If you want endstops to stay on (by default) even when not homing
@@ -745,6 +741,7 @@
* A (A shifted) B (B shifted) IC
* Smoothie 0x2C (0x58) 0x2D (0x5A) MCP4451
* AZTEEG_X3_PRO 0x2C (0x58) 0x2E (0x5C) MCP4451
+ * AZTEEG_X5_MINI 0x2C (0x58) 0x2E (0x5C) MCP4451
* AZTEEG_X5_MINI_WIFI 0x58 0x5C MCP4451
* MIGHTYBOARD_REVE 0x2F (0x5E) MCP4018
*/
diff --git a/config/examples/Anet/A8/Configuration.h b/config/examples/Anet/A8/Configuration.h
index 394aa32a44..21b76caac5 100644
--- a/config/examples/Anet/A8/Configuration.h
+++ b/config/examples/Anet/A8/Configuration.h
@@ -841,15 +841,71 @@
*/
//#define BLTOUCH
#if ENABLED(BLTOUCH)
- //#define BLTOUCH_DELAY 500 // Minimum Command delay (ms). Enable and increase if needed
+ /**
+ * Either: Use the defaults (recommended) or: For special purposes, use the following DEFINES
+ * Do not activate settings that the probe might not understand. Clones might misunderstand
+ * advanced commands.
+ *
+ * Note: If the probe is not deploying, check a "Cmd: Reset" and "Cmd: Self-Test" and then
+ * check the wiring of the BROWN, RED and ORANGE wires.
+ *
+ * Note: If the trigger signal of your probe is not being recognized, it has been very often
+ * because the BLACK and WHITE wires needed to be swapped. They are not "interchangeable"
+ * like they would be with a real switch. So please check the wiring first.
+ *
+ * Settings for all BLTouch and clone probes:
+ */
+
+ // Safety: The probe needs time to recognize the command.
+ // Minimum command delay (ms). Enable and increase if needed.
+ //#define BLTOUCH_DELAY 500
/**
- * BLTouch V3.0 and newer smart series
- * For genuine BLTouch 3.0 sensors. Clones may be confused by 3.0 command angles. YMMV.
- * If the pin trigger is not detected, first try swapping the black and white wires then toggle this.
+ * Settings for BLTOUCH Classic 1.2, 1.3 or BLTouch Smart 1.0, 2.0, 2.2, 3.0, 3.1, and most clones:
*/
- //#define BLTOUCH_FORCE_5V_MODE
-#endif
+
+ // Feature: Switch into SW mode after a deploy. It makes the output pulse longer. Can be useful
+ // in special cases, like noisy or filtered input configurations.
+ //#define BLTOUCH_FORCE_SW_MODE
+
+ /**
+ * Settings for BLTouch Smart 3.0 and 3.1
+ * Summary:
+ * - Voltage modes: 5V and OD (open drain - "logic voltage free") output modes
+ * - High-Speed mode
+ * - Disable LCD voltage options
+ */
+
+ /**
+ * Danger: Don't activate 5V mode unless attached to a 5V-tolerant controller!
+ * V3.0 or 3.1: Set default mode to 5V mode at Marlin startup.
+ * If disabled, OD mode is the hard-coded default on 3.0
+ * On startup, Marlin will compare its eeprom to this vale. If the selected mode
+ * differs, a mode set eeprom write will be completed at initialization.
+ * Use the option below to force an eeprom write to a V3.1 probe regardless.
+ */
+ //#define BLTOUCH_SET_5V_MODE
+
+ /**
+ * Safety: Activate if connecting a probe with an unknown voltage mode.
+ * V3.0: Set a probe into mode selected above at Marlin startup. Required for 5V mode on 3.0
+ * V3.1: Force a probe with unknown mode into selected mode at Marlin startup ( = Probe EEPROM write )
+ * To preserve the life of the probe, use this once then turn it off and re-flash.
+ */
+ //#define BLTOUCH_FORCE_MODE_SET
+
+ /**
+ * Use "HIGH SPEED" mode for probing.
+ * Danger: Disable if your probe sometimes fails. Only suitable for stable well-adjusted systems.
+ * This feature was designed for Delta's with very fast Z moves however higher speed cartesians may function
+ * If the machine cannot raise the probe fast enough after a trigger, it may enter a fault state.
+ */
+ //#define BLTOUCH_HS_MODE
+
+ // Safety: Enable voltage mode settings in the LCD menu.
+ //#define BLTOUCH_LCD_VOLTAGE_MENU
+
+#endif // BLTOUCH
// A probe that is deployed and stowed with a solenoid pin (SOL1_PIN)
//#define SOLENOID_PROBE
@@ -870,23 +926,23 @@
//
/**
- * Z Probe to nozzle (X,Y) offset, relative to (0, 0).
- * X and Y offsets must be integers.
+ * Z Probe to nozzle (X,Y) offset, relative to (0, 0).
+ * X and Y offsets must be integers.
*
- * In the following example the X and Y offsets are both positive:
- * #define X_PROBE_OFFSET_FROM_EXTRUDER 10
- * #define Y_PROBE_OFFSET_FROM_EXTRUDER 10
+ * In the following example the X and Y offsets are both positive:
+ * #define X_PROBE_OFFSET_FROM_EXTRUDER 10
+ * #define Y_PROBE_OFFSET_FROM_EXTRUDER 10
*
- * +-- BACK ---+
- * | |
- * L | (+) P | R <-- probe (20,20)
- * E | | I
- * F | (-) N (+) | G <-- nozzle (10,10)
- * T | | H
- * | (-) | T
- * | |
- * O-- FRONT --+
- * (0,0)
+ * +-- BACK ---+
+ * | |
+ * L | (+) P | R <-- probe (20,20)
+ * E | | I
+ * F | (-) N (+) | G <-- nozzle (10,10)
+ * T | | H
+ * | (-) | T
+ * | |
+ * O-- FRONT --+
+ * (0,0)
*/
#define X_PROBE_OFFSET_FROM_EXTRUDER 0 // X offset: -left +right [of the nozzle]
#define Y_PROBE_OFFSET_FROM_EXTRUDER 0 // Y offset: -front +behind [the nozzle]
@@ -2104,6 +2160,10 @@
#define NEOPIXEL_IS_SEQUENTIAL // Sequential display for temperature change - LED by LED. Disable to change all LEDs at once.
#define NEOPIXEL_BRIGHTNESS 127 // Initial brightness (0-255)
//#define NEOPIXEL_STARTUP_TEST // Cycle through colors at startup
+
+ // Use a single Neopixel LED for static (background) lighting
+ //#define NEOPIXEL_BKGD_LED_INDEX 0 // Index of the LED to use
+ //#define NEOPIXEL_BKGD_COLOR { 255, 255, 255, 0 } // R, G, B, W
#endif
/**
diff --git a/config/examples/Anet/A8/Configuration_adv.h b/config/examples/Anet/A8/Configuration_adv.h
index 083c067f0f..ea53723531 100644
--- a/config/examples/Anet/A8/Configuration_adv.h
+++ b/config/examples/Anet/A8/Configuration_adv.h
@@ -382,10 +382,6 @@
#endif
#endif
-//===========================================================================
-//============================ Mechanical Settings ==========================
-//===========================================================================
-
// @section homing
// If you want endstops to stay on (by default) even when not homing
@@ -745,6 +741,7 @@
* A (A shifted) B (B shifted) IC
* Smoothie 0x2C (0x58) 0x2D (0x5A) MCP4451
* AZTEEG_X3_PRO 0x2C (0x58) 0x2E (0x5C) MCP4451
+ * AZTEEG_X5_MINI 0x2C (0x58) 0x2E (0x5C) MCP4451
* AZTEEG_X5_MINI_WIFI 0x58 0x5C MCP4451
* MIGHTYBOARD_REVE 0x2F (0x5E) MCP4018
*/
diff --git a/config/examples/Anet/A8plus/Configuration.h b/config/examples/Anet/A8plus/Configuration.h
index 6d6eaccce4..c40b6f7827 100644
--- a/config/examples/Anet/A8plus/Configuration.h
+++ b/config/examples/Anet/A8plus/Configuration.h
@@ -839,15 +839,71 @@
*/
//#define BLTOUCH
#if ENABLED(BLTOUCH)
- //#define BLTOUCH_DELAY 500 // Minimum Command delay (ms). Enable and increase if needed
+ /**
+ * Either: Use the defaults (recommended) or: For special purposes, use the following DEFINES
+ * Do not activate settings that the probe might not understand. Clones might misunderstand
+ * advanced commands.
+ *
+ * Note: If the probe is not deploying, check a "Cmd: Reset" and "Cmd: Self-Test" and then
+ * check the wiring of the BROWN, RED and ORANGE wires.
+ *
+ * Note: If the trigger signal of your probe is not being recognized, it has been very often
+ * because the BLACK and WHITE wires needed to be swapped. They are not "interchangeable"
+ * like they would be with a real switch. So please check the wiring first.
+ *
+ * Settings for all BLTouch and clone probes:
+ */
+
+ // Safety: The probe needs time to recognize the command.
+ // Minimum command delay (ms). Enable and increase if needed.
+ //#define BLTOUCH_DELAY 500
/**
- * BLTouch V3.0 and newer smart series
- * For genuine BLTouch 3.0 sensors. Clones may be confused by 3.0 command angles. YMMV.
- * If the pin trigger is not detected, first try swapping the black and white wires then toggle this.
+ * Settings for BLTOUCH Classic 1.2, 1.3 or BLTouch Smart 1.0, 2.0, 2.2, 3.0, 3.1, and most clones:
*/
- //#define BLTOUCH_FORCE_5V_MODE
-#endif
+
+ // Feature: Switch into SW mode after a deploy. It makes the output pulse longer. Can be useful
+ // in special cases, like noisy or filtered input configurations.
+ //#define BLTOUCH_FORCE_SW_MODE
+
+ /**
+ * Settings for BLTouch Smart 3.0 and 3.1
+ * Summary:
+ * - Voltage modes: 5V and OD (open drain - "logic voltage free") output modes
+ * - High-Speed mode
+ * - Disable LCD voltage options
+ */
+
+ /**
+ * Danger: Don't activate 5V mode unless attached to a 5V-tolerant controller!
+ * V3.0 or 3.1: Set default mode to 5V mode at Marlin startup.
+ * If disabled, OD mode is the hard-coded default on 3.0
+ * On startup, Marlin will compare its eeprom to this vale. If the selected mode
+ * differs, a mode set eeprom write will be completed at initialization.
+ * Use the option below to force an eeprom write to a V3.1 probe regardless.
+ */
+ //#define BLTOUCH_SET_5V_MODE
+
+ /**
+ * Safety: Activate if connecting a probe with an unknown voltage mode.
+ * V3.0: Set a probe into mode selected above at Marlin startup. Required for 5V mode on 3.0
+ * V3.1: Force a probe with unknown mode into selected mode at Marlin startup ( = Probe EEPROM write )
+ * To preserve the life of the probe, use this once then turn it off and re-flash.
+ */
+ //#define BLTOUCH_FORCE_MODE_SET
+
+ /**
+ * Use "HIGH SPEED" mode for probing.
+ * Danger: Disable if your probe sometimes fails. Only suitable for stable well-adjusted systems.
+ * This feature was designed for Delta's with very fast Z moves however higher speed cartesians may function
+ * If the machine cannot raise the probe fast enough after a trigger, it may enter a fault state.
+ */
+ //#define BLTOUCH_HS_MODE
+
+ // Safety: Enable voltage mode settings in the LCD menu.
+ //#define BLTOUCH_LCD_VOLTAGE_MENU
+
+#endif // BLTOUCH
// A probe that is deployed and stowed with a solenoid pin (SOL1_PIN)
//#define SOLENOID_PROBE
@@ -868,23 +924,23 @@
//
/**
- * Z Probe to nozzle (X,Y) offset, relative to (0, 0).
- * X and Y offsets must be integers.
+ * Z Probe to nozzle (X,Y) offset, relative to (0, 0).
+ * X and Y offsets must be integers.
*
- * In the following example the X and Y offsets are both positive:
- * #define X_PROBE_OFFSET_FROM_EXTRUDER 10
- * #define Y_PROBE_OFFSET_FROM_EXTRUDER 10
+ * In the following example the X and Y offsets are both positive:
+ * #define X_PROBE_OFFSET_FROM_EXTRUDER 10
+ * #define Y_PROBE_OFFSET_FROM_EXTRUDER 10
*
- * +-- BACK ---+
- * | |
- * L | (+) P | R <-- probe (20,20)
- * E | | I
- * F | (-) N (+) | G <-- nozzle (10,10)
- * T | | H
- * | (-) | T
- * | |
- * O-- FRONT --+
- * (0,0)
+ * +-- BACK ---+
+ * | |
+ * L | (+) P | R <-- probe (20,20)
+ * E | | I
+ * F | (-) N (+) | G <-- nozzle (10,10)
+ * T | | H
+ * | (-) | T
+ * | |
+ * O-- FRONT --+
+ * (0,0)
*/
#define X_PROBE_OFFSET_FROM_EXTRUDER 10 // X offset: -left +right [of the nozzle]
#define Y_PROBE_OFFSET_FROM_EXTRUDER 10 // Y offset: -front +behind [the nozzle]
@@ -2100,6 +2156,10 @@
#define NEOPIXEL_IS_SEQUENTIAL // Sequential display for temperature change - LED by LED. Disable to change all LEDs at once.
#define NEOPIXEL_BRIGHTNESS 127 // Initial brightness (0-255)
//#define NEOPIXEL_STARTUP_TEST // Cycle through colors at startup
+
+ // Use a single Neopixel LED for static (background) lighting
+ //#define NEOPIXEL_BKGD_LED_INDEX 0 // Index of the LED to use
+ //#define NEOPIXEL_BKGD_COLOR { 255, 255, 255, 0 } // R, G, B, W
#endif
/**
diff --git a/config/examples/Anet/A8plus/Configuration_adv.h b/config/examples/Anet/A8plus/Configuration_adv.h
index 4b3003f979..461d00c707 100644
--- a/config/examples/Anet/A8plus/Configuration_adv.h
+++ b/config/examples/Anet/A8plus/Configuration_adv.h
@@ -382,10 +382,6 @@
#endif
#endif
-//===========================================================================
-//============================ Mechanical Settings ==========================
-//===========================================================================
-
// @section homing
// If you want endstops to stay on (by default) even when not homing
@@ -577,8 +573,11 @@
// @section lcd
-#if ENABLED(ULTIPANEL)
+#if EITHER(ULTIPANEL, EXTENSIBLE_UI)
#define MANUAL_FEEDRATE {50*60, 50*60, 4*60, 60} // Feedrates for manual moves along X, Y, Z, E from panel
+#endif
+
+#if ENABLED(ULTIPANEL)
#define MANUAL_E_MOVES_RELATIVE // Show LCD extruder moves as relative rather than absolute positions
#define ULTIPANEL_FEEDMULTIPLY // Comment to disable setting feedrate multiplier via encoder
#endif
@@ -851,7 +850,7 @@
*/
#define POWER_LOSS_RECOVERY
#if ENABLED(POWER_LOSS_RECOVERY)
- //#define POWER_LOSS_PIN 44 // Pin to detect power loss (optional)
+ //#define POWER_LOSS_PIN 44 // Pin to detect power loss
//#define POWER_LOSS_STATE HIGH // State of pin indicating power loss
//#define POWER_LOSS_PURGE_LEN 20 // (mm) Length of filament to purge on resume
//#define POWER_LOSS_RETRACT_LEN 10 // (mm) Length of filament to retract on fail. Requires backup power.
diff --git a/config/examples/Anet/E16/Configuration.h b/config/examples/Anet/E16/Configuration.h
index b8aad3efab..a08d2248c8 100644
--- a/config/examples/Anet/E16/Configuration.h
+++ b/config/examples/Anet/E16/Configuration.h
@@ -840,15 +840,71 @@
*/
//#define BLTOUCH
#if ENABLED(BLTOUCH)
- //#define BLTOUCH_DELAY 500 // Minimum Command delay (ms). Enable and increase if needed
+ /**
+ * Either: Use the defaults (recommended) or: For special purposes, use the following DEFINES
+ * Do not activate settings that the probe might not understand. Clones might misunderstand
+ * advanced commands.
+ *
+ * Note: If the probe is not deploying, check a "Cmd: Reset" and "Cmd: Self-Test" and then
+ * check the wiring of the BROWN, RED and ORANGE wires.
+ *
+ * Note: If the trigger signal of your probe is not being recognized, it has been very often
+ * because the BLACK and WHITE wires needed to be swapped. They are not "interchangeable"
+ * like they would be with a real switch. So please check the wiring first.
+ *
+ * Settings for all BLTouch and clone probes:
+ */
+
+ // Safety: The probe needs time to recognize the command.
+ // Minimum command delay (ms). Enable and increase if needed.
+ //#define BLTOUCH_DELAY 500
/**
- * BLTouch V3.0 and newer smart series
- * For genuine BLTouch 3.0 sensors. Clones may be confused by 3.0 command angles. YMMV.
- * If the pin trigger is not detected, first try swapping the black and white wires then toggle this.
+ * Settings for BLTOUCH Classic 1.2, 1.3 or BLTouch Smart 1.0, 2.0, 2.2, 3.0, 3.1, and most clones:
*/
- #define BLTOUCH_FORCE_5V_MODE
-#endif
+
+ // Feature: Switch into SW mode after a deploy. It makes the output pulse longer. Can be useful
+ // in special cases, like noisy or filtered input configurations.
+ //#define BLTOUCH_FORCE_SW_MODE
+
+ /**
+ * Settings for BLTouch Smart 3.0 and 3.1
+ * Summary:
+ * - Voltage modes: 5V and OD (open drain - "logic voltage free") output modes
+ * - High-Speed mode
+ * - Disable LCD voltage options
+ */
+
+ /**
+ * Danger: Don't activate 5V mode unless attached to a 5V-tolerant controller!
+ * V3.0 or 3.1: Set default mode to 5V mode at Marlin startup.
+ * If disabled, OD mode is the hard-coded default on 3.0
+ * On startup, Marlin will compare its eeprom to this vale. If the selected mode
+ * differs, a mode set eeprom write will be completed at initialization.
+ * Use the option below to force an eeprom write to a V3.1 probe regardless.
+ */
+ #define BLTOUCH_SET_5V_MODE
+
+ /**
+ * Safety: Activate if connecting a probe with an unknown voltage mode.
+ * V3.0: Set a probe into mode selected above at Marlin startup. Required for 5V mode on 3.0
+ * V3.1: Force a probe with unknown mode into selected mode at Marlin startup ( = Probe EEPROM write )
+ * To preserve the life of the probe, use this once then turn it off and re-flash.
+ */
+ //#define BLTOUCH_FORCE_MODE_SET
+
+ /**
+ * Use "HIGH SPEED" mode for probing.
+ * Danger: Disable if your probe sometimes fails. Only suitable for stable well-adjusted systems.
+ * This feature was designed for Delta's with very fast Z moves however higher speed cartesians may function
+ * If the machine cannot raise the probe fast enough after a trigger, it may enter a fault state.
+ */
+ //#define BLTOUCH_HS_MODE
+
+ // Safety: Enable voltage mode settings in the LCD menu.
+ //#define BLTOUCH_LCD_VOLTAGE_MENU
+
+#endif // BLTOUCH
// A probe that is deployed and stowed with a solenoid pin (SOL1_PIN)
//#define SOLENOID_PROBE
@@ -869,23 +925,23 @@
//
/**
- * Z Probe to nozzle (X,Y) offset, relative to (0, 0).
- * X and Y offsets must be integers.
+ * Z Probe to nozzle (X,Y) offset, relative to (0, 0).
+ * X and Y offsets must be integers.
*
- * In the following example the X and Y offsets are both positive:
- * #define X_PROBE_OFFSET_FROM_EXTRUDER 10
- * #define Y_PROBE_OFFSET_FROM_EXTRUDER 10
+ * In the following example the X and Y offsets are both positive:
+ * #define X_PROBE_OFFSET_FROM_EXTRUDER 10
+ * #define Y_PROBE_OFFSET_FROM_EXTRUDER 10
*
- * +-- BACK ---+
- * | |
- * L | (+) P | R <-- probe (20,20)
- * E | | I
- * F | (-) N (+) | G <-- nozzle (10,10)
- * T | | H
- * | (-) | T
- * | |
- * O-- FRONT --+
- * (0,0)
+ * +-- BACK ---+
+ * | |
+ * L | (+) P | R <-- probe (20,20)
+ * E | | I
+ * F | (-) N (+) | G <-- nozzle (10,10)
+ * T | | H
+ * | (-) | T
+ * | |
+ * O-- FRONT --+
+ * (0,0)
*/
#define X_PROBE_OFFSET_FROM_EXTRUDER 10 // X offset: -left +right [of the nozzle]
#define Y_PROBE_OFFSET_FROM_EXTRUDER 10 // Y offset: -front +behind [the nozzle]
@@ -2101,6 +2157,10 @@
#define NEOPIXEL_IS_SEQUENTIAL // Sequential display for temperature change - LED by LED. Disable to change all LEDs at once.
#define NEOPIXEL_BRIGHTNESS 127 // Initial brightness (0-255)
//#define NEOPIXEL_STARTUP_TEST // Cycle through colors at startup
+
+ // Use a single Neopixel LED for static (background) lighting
+ //#define NEOPIXEL_BKGD_LED_INDEX 0 // Index of the LED to use
+ //#define NEOPIXEL_BKGD_COLOR { 255, 255, 255, 0 } // R, G, B, W
#endif
/**
diff --git a/config/examples/Anet/E16/Configuration_adv.h b/config/examples/Anet/E16/Configuration_adv.h
index 5ef03528bd..5a60fb0e8b 100644
--- a/config/examples/Anet/E16/Configuration_adv.h
+++ b/config/examples/Anet/E16/Configuration_adv.h
@@ -382,10 +382,6 @@
#endif
#endif
-//===========================================================================
-//============================ Mechanical Settings ==========================
-//===========================================================================
-
// @section homing
// If you want endstops to stay on (by default) even when not homing
@@ -745,6 +741,7 @@
* A (A shifted) B (B shifted) IC
* Smoothie 0x2C (0x58) 0x2D (0x5A) MCP4451
* AZTEEG_X3_PRO 0x2C (0x58) 0x2E (0x5C) MCP4451
+ * AZTEEG_X5_MINI 0x2C (0x58) 0x2E (0x5C) MCP4451
* AZTEEG_X5_MINI_WIFI 0x58 0x5C MCP4451
* MIGHTYBOARD_REVE 0x2F (0x5E) MCP4018
*/
diff --git a/config/examples/Anet/E16/_Statusscreen.h b/config/examples/Anet/E16/_Statusscreen.h
index 466e4843c7..9bc16f9c46 100644
--- a/config/examples/Anet/E16/_Statusscreen.h
+++ b/config/examples/Anet/E16/_Statusscreen.h
@@ -1,6 +1,6 @@
/**
* Marlin 3D Printer Firmware
- * Copyright (C) 2016 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
+ * Copyright (C) 2019 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
*
* Based on Sprinter and grbl.
* Copyright (C) 2011 Camiel Gubbels / Erik van der Zalm
@@ -63,7 +63,7 @@ const unsigned char status_logo_bmp[] PROGMEM = {
B11110000,B00000000,B00001111,
B11111100,B00000000,B00111111,
B11111110,B01101100,B01111111,
- B11111111,B11111111,B11111111
+ B11111111,B11111111,B11111111
};
//
diff --git a/config/examples/AnyCubic/i3/Configuration.h b/config/examples/AnyCubic/i3/Configuration.h
index 61b7619e2e..70cfd08dd2 100644
--- a/config/examples/AnyCubic/i3/Configuration.h
+++ b/config/examples/AnyCubic/i3/Configuration.h
@@ -838,15 +838,71 @@
*/
#define BLTOUCH
#if ENABLED(BLTOUCH)
- //#define BLTOUCH_DELAY 500 // Minimum Command delay (ms). Enable and increase if needed
+ /**
+ * Either: Use the defaults (recommended) or: For special purposes, use the following DEFINES
+ * Do not activate settings that the probe might not understand. Clones might misunderstand
+ * advanced commands.
+ *
+ * Note: If the probe is not deploying, check a "Cmd: Reset" and "Cmd: Self-Test" and then
+ * check the wiring of the BROWN, RED and ORANGE wires.
+ *
+ * Note: If the trigger signal of your probe is not being recognized, it has been very often
+ * because the BLACK and WHITE wires needed to be swapped. They are not "interchangeable"
+ * like they would be with a real switch. So please check the wiring first.
+ *
+ * Settings for all BLTouch and clone probes:
+ */
+
+ // Safety: The probe needs time to recognize the command.
+ // Minimum command delay (ms). Enable and increase if needed.
+ //#define BLTOUCH_DELAY 500
/**
- * BLTouch V3.0 and newer smart series
- * For genuine BLTouch 3.0 sensors. Clones may be confused by 3.0 command angles. YMMV.
- * If the pin trigger is not detected, first try swapping the black and white wires then toggle this.
+ * Settings for BLTOUCH Classic 1.2, 1.3 or BLTouch Smart 1.0, 2.0, 2.2, 3.0, 3.1, and most clones:
*/
- //#define BLTOUCH_FORCE_5V_MODE
-#endif
+
+ // Feature: Switch into SW mode after a deploy. It makes the output pulse longer. Can be useful
+ // in special cases, like noisy or filtered input configurations.
+ //#define BLTOUCH_FORCE_SW_MODE
+
+ /**
+ * Settings for BLTouch Smart 3.0 and 3.1
+ * Summary:
+ * - Voltage modes: 5V and OD (open drain - "logic voltage free") output modes
+ * - High-Speed mode
+ * - Disable LCD voltage options
+ */
+
+ /**
+ * Danger: Don't activate 5V mode unless attached to a 5V-tolerant controller!
+ * V3.0 or 3.1: Set default mode to 5V mode at Marlin startup.
+ * If disabled, OD mode is the hard-coded default on 3.0
+ * On startup, Marlin will compare its eeprom to this vale. If the selected mode
+ * differs, a mode set eeprom write will be completed at initialization.
+ * Use the option below to force an eeprom write to a V3.1 probe regardless.
+ */
+ //#define BLTOUCH_SET_5V_MODE
+
+ /**
+ * Safety: Activate if connecting a probe with an unknown voltage mode.
+ * V3.0: Set a probe into mode selected above at Marlin startup. Required for 5V mode on 3.0
+ * V3.1: Force a probe with unknown mode into selected mode at Marlin startup ( = Probe EEPROM write )
+ * To preserve the life of the probe, use this once then turn it off and re-flash.
+ */
+ //#define BLTOUCH_FORCE_MODE_SET
+
+ /**
+ * Use "HIGH SPEED" mode for probing.
+ * Danger: Disable if your probe sometimes fails. Only suitable for stable well-adjusted systems.
+ * This feature was designed for Delta's with very fast Z moves however higher speed cartesians may function
+ * If the machine cannot raise the probe fast enough after a trigger, it may enter a fault state.
+ */
+ //#define BLTOUCH_HS_MODE
+
+ // Safety: Enable voltage mode settings in the LCD menu.
+ //#define BLTOUCH_LCD_VOLTAGE_MENU
+
+#endif // BLTOUCH
// A probe that is deployed and stowed with a solenoid pin (SOL1_PIN)
//#define SOLENOID_PROBE
@@ -867,23 +923,23 @@
//
/**
- * Z Probe to nozzle (X,Y) offset, relative to (0, 0).
- * X and Y offsets must be integers.
+ * Z Probe to nozzle (X,Y) offset, relative to (0, 0).
+ * X and Y offsets must be integers.
*
- * In the following example the X and Y offsets are both positive:
- * #define X_PROBE_OFFSET_FROM_EXTRUDER 10
- * #define Y_PROBE_OFFSET_FROM_EXTRUDER 10
+ * In the following example the X and Y offsets are both positive:
+ * #define X_PROBE_OFFSET_FROM_EXTRUDER 10
+ * #define Y_PROBE_OFFSET_FROM_EXTRUDER 10
*
- * +-- BACK ---+
- * | |
- * L | (+) P | R <-- probe (20,20)
- * E | | I
- * F | (-) N (+) | G <-- nozzle (10,10)
- * T | | H
- * | (-) | T
- * | |
- * O-- FRONT --+
- * (0,0)
+ * +-- BACK ---+
+ * | |
+ * L | (+) P | R <-- probe (20,20)
+ * E | | I
+ * F | (-) N (+) | G <-- nozzle (10,10)
+ * T | | H
+ * | (-) | T
+ * | |
+ * O-- FRONT --+
+ * (0,0)
*/
#define X_PROBE_OFFSET_FROM_EXTRUDER 75 // X offset: -left +right [of the nozzle]
#define Y_PROBE_OFFSET_FROM_EXTRUDER 5 // Y offset: -front +behind [the nozzle]
@@ -2099,6 +2155,10 @@
#define NEOPIXEL_IS_SEQUENTIAL // Sequential display for temperature change - LED by LED. Disable to change all LEDs at once.
#define NEOPIXEL_BRIGHTNESS 127 // Initial brightness (0-255)
//#define NEOPIXEL_STARTUP_TEST // Cycle through colors at startup
+
+ // Use a single Neopixel LED for static (background) lighting
+ //#define NEOPIXEL_BKGD_LED_INDEX 0 // Index of the LED to use
+ //#define NEOPIXEL_BKGD_COLOR { 255, 255, 255, 0 } // R, G, B, W
#endif
/**
diff --git a/config/examples/AnyCubic/i3/Configuration_adv.h b/config/examples/AnyCubic/i3/Configuration_adv.h
index 6abd184f43..7eda335925 100644
--- a/config/examples/AnyCubic/i3/Configuration_adv.h
+++ b/config/examples/AnyCubic/i3/Configuration_adv.h
@@ -382,10 +382,6 @@
#endif
#endif
-//===========================================================================
-//============================ Mechanical Settings ==========================
-//===========================================================================
-
// @section homing
// If you want endstops to stay on (by default) even when not homing
@@ -745,6 +741,7 @@
* A (A shifted) B (B shifted) IC
* Smoothie 0x2C (0x58) 0x2D (0x5A) MCP4451
* AZTEEG_X3_PRO 0x2C (0x58) 0x2E (0x5C) MCP4451
+ * AZTEEG_X5_MINI 0x2C (0x58) 0x2E (0x5C) MCP4451
* AZTEEG_X5_MINI_WIFI 0x58 0x5C MCP4451
* MIGHTYBOARD_REVE 0x2F (0x5E) MCP4018
*/
diff --git a/config/examples/ArmEd/Configuration.h b/config/examples/ArmEd/Configuration.h
index aa5fbdeb31..5e1c2ba6fe 100644
--- a/config/examples/ArmEd/Configuration.h
+++ b/config/examples/ArmEd/Configuration.h
@@ -829,15 +829,71 @@
*/
//#define BLTOUCH
#if ENABLED(BLTOUCH)
- //#define BLTOUCH_DELAY 500 // Minimum Command delay (ms). Enable and increase if needed
+ /**
+ * Either: Use the defaults (recommended) or: For special purposes, use the following DEFINES
+ * Do not activate settings that the probe might not understand. Clones might misunderstand
+ * advanced commands.
+ *
+ * Note: If the probe is not deploying, check a "Cmd: Reset" and "Cmd: Self-Test" and then
+ * check the wiring of the BROWN, RED and ORANGE wires.
+ *
+ * Note: If the trigger signal of your probe is not being recognized, it has been very often
+ * because the BLACK and WHITE wires needed to be swapped. They are not "interchangeable"
+ * like they would be with a real switch. So please check the wiring first.
+ *
+ * Settings for all BLTouch and clone probes:
+ */
+
+ // Safety: The probe needs time to recognize the command.
+ // Minimum command delay (ms). Enable and increase if needed.
+ //#define BLTOUCH_DELAY 500
/**
- * BLTouch V3.0 and newer smart series
- * For genuine BLTouch 3.0 sensors. Clones may be confused by 3.0 command angles. YMMV.
- * If the pin trigger is not detected, first try swapping the black and white wires then toggle this.
+ * Settings for BLTOUCH Classic 1.2, 1.3 or BLTouch Smart 1.0, 2.0, 2.2, 3.0, 3.1, and most clones:
*/
- //#define BLTOUCH_FORCE_5V_MODE
-#endif
+
+ // Feature: Switch into SW mode after a deploy. It makes the output pulse longer. Can be useful
+ // in special cases, like noisy or filtered input configurations.
+ //#define BLTOUCH_FORCE_SW_MODE
+
+ /**
+ * Settings for BLTouch Smart 3.0 and 3.1
+ * Summary:
+ * - Voltage modes: 5V and OD (open drain - "logic voltage free") output modes
+ * - High-Speed mode
+ * - Disable LCD voltage options
+ */
+
+ /**
+ * Danger: Don't activate 5V mode unless attached to a 5V-tolerant controller!
+ * V3.0 or 3.1: Set default mode to 5V mode at Marlin startup.
+ * If disabled, OD mode is the hard-coded default on 3.0
+ * On startup, Marlin will compare its eeprom to this vale. If the selected mode
+ * differs, a mode set eeprom write will be completed at initialization.
+ * Use the option below to force an eeprom write to a V3.1 probe regardless.
+ */
+ //#define BLTOUCH_SET_5V_MODE
+
+ /**
+ * Safety: Activate if connecting a probe with an unknown voltage mode.
+ * V3.0: Set a probe into mode selected above at Marlin startup. Required for 5V mode on 3.0
+ * V3.1: Force a probe with unknown mode into selected mode at Marlin startup ( = Probe EEPROM write )
+ * To preserve the life of the probe, use this once then turn it off and re-flash.
+ */
+ //#define BLTOUCH_FORCE_MODE_SET
+
+ /**
+ * Use "HIGH SPEED" mode for probing.
+ * Danger: Disable if your probe sometimes fails. Only suitable for stable well-adjusted systems.
+ * This feature was designed for Delta's with very fast Z moves however higher speed cartesians may function
+ * If the machine cannot raise the probe fast enough after a trigger, it may enter a fault state.
+ */
+ //#define BLTOUCH_HS_MODE
+
+ // Safety: Enable voltage mode settings in the LCD menu.
+ //#define BLTOUCH_LCD_VOLTAGE_MENU
+
+#endif // BLTOUCH
// A probe that is deployed and stowed with a solenoid pin (SOL1_PIN)
//#define SOLENOID_PROBE
@@ -858,23 +914,23 @@
//
/**
- * Z Probe to nozzle (X,Y) offset, relative to (0, 0).
- * X and Y offsets must be integers.
+ * Z Probe to nozzle (X,Y) offset, relative to (0, 0).
+ * X and Y offsets must be integers.
*
- * In the following example the X and Y offsets are both positive:
- * #define X_PROBE_OFFSET_FROM_EXTRUDER 10
- * #define Y_PROBE_OFFSET_FROM_EXTRUDER 10
+ * In the following example the X and Y offsets are both positive:
+ * #define X_PROBE_OFFSET_FROM_EXTRUDER 10
+ * #define Y_PROBE_OFFSET_FROM_EXTRUDER 10
*
- * +-- BACK ---+
- * | |
- * L | (+) P | R <-- probe (20,20)
- * E | | I
- * F | (-) N (+) | G <-- nozzle (10,10)
- * T | | H
- * | (-) | T
- * | |
- * O-- FRONT --+
- * (0,0)
+ * +-- BACK ---+
+ * | |
+ * L | (+) P | R <-- probe (20,20)
+ * E | | I
+ * F | (-) N (+) | G <-- nozzle (10,10)
+ * T | | H
+ * | (-) | T
+ * | |
+ * O-- FRONT --+
+ * (0,0)
*/
#define X_PROBE_OFFSET_FROM_EXTRUDER 10 // X offset: -left +right [of the nozzle]
#define Y_PROBE_OFFSET_FROM_EXTRUDER 10 // Y offset: -front +behind [the nozzle]
@@ -2090,6 +2146,10 @@
#define NEOPIXEL_IS_SEQUENTIAL // Sequential display for temperature change - LED by LED. Disable to change all LEDs at once.
#define NEOPIXEL_BRIGHTNESS 127 // Initial brightness (0-255)
//#define NEOPIXEL_STARTUP_TEST // Cycle through colors at startup
+
+ // Use a single Neopixel LED for static (background) lighting
+ //#define NEOPIXEL_BKGD_LED_INDEX 0 // Index of the LED to use
+ //#define NEOPIXEL_BKGD_COLOR { 255, 255, 255, 0 } // R, G, B, W
#endif
/**
diff --git a/config/examples/ArmEd/Configuration_adv.h b/config/examples/ArmEd/Configuration_adv.h
index 382abf1d99..57ee097224 100644
--- a/config/examples/ArmEd/Configuration_adv.h
+++ b/config/examples/ArmEd/Configuration_adv.h
@@ -386,10 +386,6 @@
#endif
#endif
-//===========================================================================
-//============================ Mechanical Settings ==========================
-//===========================================================================
-
// @section homing
// If you want endstops to stay on (by default) even when not homing
@@ -749,6 +745,7 @@
* A (A shifted) B (B shifted) IC
* Smoothie 0x2C (0x58) 0x2D (0x5A) MCP4451
* AZTEEG_X3_PRO 0x2C (0x58) 0x2E (0x5C) MCP4451
+ * AZTEEG_X5_MINI 0x2C (0x58) 0x2E (0x5C) MCP4451
* AZTEEG_X5_MINI_WIFI 0x58 0x5C MCP4451
* MIGHTYBOARD_REVE 0x2F (0x5E) MCP4018
*/
diff --git a/config/examples/Azteeg/X5GT/Configuration.h b/config/examples/Azteeg/X5GT/Configuration.h
index 85a1db1313..f916b973ba 100644
--- a/config/examples/Azteeg/X5GT/Configuration.h
+++ b/config/examples/Azteeg/X5GT/Configuration.h
@@ -828,15 +828,71 @@
*/
//#define BLTOUCH
#if ENABLED(BLTOUCH)
- //#define BLTOUCH_DELAY 500 // Minimum Command delay (ms). Enable and increase if needed
+ /**
+ * Either: Use the defaults (recommended) or: For special purposes, use the following DEFINES
+ * Do not activate settings that the probe might not understand. Clones might misunderstand
+ * advanced commands.
+ *
+ * Note: If the probe is not deploying, check a "Cmd: Reset" and "Cmd: Self-Test" and then
+ * check the wiring of the BROWN, RED and ORANGE wires.
+ *
+ * Note: If the trigger signal of your probe is not being recognized, it has been very often
+ * because the BLACK and WHITE wires needed to be swapped. They are not "interchangeable"
+ * like they would be with a real switch. So please check the wiring first.
+ *
+ * Settings for all BLTouch and clone probes:
+ */
+
+ // Safety: The probe needs time to recognize the command.
+ // Minimum command delay (ms). Enable and increase if needed.
+ //#define BLTOUCH_DELAY 500
/**
- * BLTouch V3.0 and newer smart series
- * For genuine BLTouch 3.0 sensors. Clones may be confused by 3.0 command angles. YMMV.
- * If the pin trigger is not detected, first try swapping the black and white wires then toggle this.
+ * Settings for BLTOUCH Classic 1.2, 1.3 or BLTouch Smart 1.0, 2.0, 2.2, 3.0, 3.1, and most clones:
*/
- //#define BLTOUCH_FORCE_5V_MODE
-#endif
+
+ // Feature: Switch into SW mode after a deploy. It makes the output pulse longer. Can be useful
+ // in special cases, like noisy or filtered input configurations.
+ //#define BLTOUCH_FORCE_SW_MODE
+
+ /**
+ * Settings for BLTouch Smart 3.0 and 3.1
+ * Summary:
+ * - Voltage modes: 5V and OD (open drain - "logic voltage free") output modes
+ * - High-Speed mode
+ * - Disable LCD voltage options
+ */
+
+ /**
+ * Danger: Don't activate 5V mode unless attached to a 5V-tolerant controller!
+ * V3.0 or 3.1: Set default mode to 5V mode at Marlin startup.
+ * If disabled, OD mode is the hard-coded default on 3.0
+ * On startup, Marlin will compare its eeprom to this vale. If the selected mode
+ * differs, a mode set eeprom write will be completed at initialization.
+ * Use the option below to force an eeprom write to a V3.1 probe regardless.
+ */
+ //#define BLTOUCH_SET_5V_MODE
+
+ /**
+ * Safety: Activate if connecting a probe with an unknown voltage mode.
+ * V3.0: Set a probe into mode selected above at Marlin startup. Required for 5V mode on 3.0
+ * V3.1: Force a probe with unknown mode into selected mode at Marlin startup ( = Probe EEPROM write )
+ * To preserve the life of the probe, use this once then turn it off and re-flash.
+ */
+ //#define BLTOUCH_FORCE_MODE_SET
+
+ /**
+ * Use "HIGH SPEED" mode for probing.
+ * Danger: Disable if your probe sometimes fails. Only suitable for stable well-adjusted systems.
+ * This feature was designed for Delta's with very fast Z moves however higher speed cartesians may function
+ * If the machine cannot raise the probe fast enough after a trigger, it may enter a fault state.
+ */
+ //#define BLTOUCH_HS_MODE
+
+ // Safety: Enable voltage mode settings in the LCD menu.
+ //#define BLTOUCH_LCD_VOLTAGE_MENU
+
+#endif // BLTOUCH
// A probe that is deployed and stowed with a solenoid pin (SOL1_PIN)
//#define SOLENOID_PROBE
@@ -857,23 +913,23 @@
//
/**
- * Z Probe to nozzle (X,Y) offset, relative to (0, 0).
- * X and Y offsets must be integers.
+ * Z Probe to nozzle (X,Y) offset, relative to (0, 0).
+ * X and Y offsets must be integers.
*
- * In the following example the X and Y offsets are both positive:
- * #define X_PROBE_OFFSET_FROM_EXTRUDER 10
- * #define Y_PROBE_OFFSET_FROM_EXTRUDER 10
+ * In the following example the X and Y offsets are both positive:
+ * #define X_PROBE_OFFSET_FROM_EXTRUDER 10
+ * #define Y_PROBE_OFFSET_FROM_EXTRUDER 10
*
- * +-- BACK ---+
- * | |
- * L | (+) P | R <-- probe (20,20)
- * E | | I
- * F | (-) N (+) | G <-- nozzle (10,10)
- * T | | H
- * | (-) | T
- * | |
- * O-- FRONT --+
- * (0,0)
+ * +-- BACK ---+
+ * | |
+ * L | (+) P | R <-- probe (20,20)
+ * E | | I
+ * F | (-) N (+) | G <-- nozzle (10,10)
+ * T | | H
+ * | (-) | T
+ * | |
+ * O-- FRONT --+
+ * (0,0)
*/
#define X_PROBE_OFFSET_FROM_EXTRUDER 10 // X offset: -left +right [of the nozzle]
#define Y_PROBE_OFFSET_FROM_EXTRUDER 10 // Y offset: -front +behind [the nozzle]
@@ -2089,6 +2145,10 @@
#define NEOPIXEL_IS_SEQUENTIAL // Sequential display for temperature change - LED by LED. Disable to change all LEDs at once.
#define NEOPIXEL_BRIGHTNESS 127 // Initial brightness (0-255)
//#define NEOPIXEL_STARTUP_TEST // Cycle through colors at startup
+
+ // Use a single Neopixel LED for static (background) lighting
+ //#define NEOPIXEL_BKGD_LED_INDEX 0 // Index of the LED to use
+ //#define NEOPIXEL_BKGD_COLOR { 255, 255, 255, 0 } // R, G, B, W
#endif
/**
diff --git a/config/examples/BIBO/TouchX/cyclops/Configuration.h b/config/examples/BIBO/TouchX/cyclops/Configuration.h
index e7aaa01e1a..cd8e443771 100644
--- a/config/examples/BIBO/TouchX/cyclops/Configuration.h
+++ b/config/examples/BIBO/TouchX/cyclops/Configuration.h
@@ -828,15 +828,71 @@
*/
//#define BLTOUCH
#if ENABLED(BLTOUCH)
- //#define BLTOUCH_DELAY 500 // Minimum Command delay (ms). Enable and increase if needed
+ /**
+ * Either: Use the defaults (recommended) or: For special purposes, use the following DEFINES
+ * Do not activate settings that the probe might not understand. Clones might misunderstand
+ * advanced commands.
+ *
+ * Note: If the probe is not deploying, check a "Cmd: Reset" and "Cmd: Self-Test" and then
+ * check the wiring of the BROWN, RED and ORANGE wires.
+ *
+ * Note: If the trigger signal of your probe is not being recognized, it has been very often
+ * because the BLACK and WHITE wires needed to be swapped. They are not "interchangeable"
+ * like they would be with a real switch. So please check the wiring first.
+ *
+ * Settings for all BLTouch and clone probes:
+ */
+
+ // Safety: The probe needs time to recognize the command.
+ // Minimum command delay (ms). Enable and increase if needed.
+ //#define BLTOUCH_DELAY 500
/**
- * BLTouch V3.0 and newer smart series
- * For genuine BLTouch 3.0 sensors. Clones may be confused by 3.0 command angles. YMMV.
- * If the pin trigger is not detected, first try swapping the black and white wires then toggle this.
+ * Settings for BLTOUCH Classic 1.2, 1.3 or BLTouch Smart 1.0, 2.0, 2.2, 3.0, 3.1, and most clones:
*/
- //#define BLTOUCH_FORCE_5V_MODE
-#endif
+
+ // Feature: Switch into SW mode after a deploy. It makes the output pulse longer. Can be useful
+ // in special cases, like noisy or filtered input configurations.
+ //#define BLTOUCH_FORCE_SW_MODE
+
+ /**
+ * Settings for BLTouch Smart 3.0 and 3.1
+ * Summary:
+ * - Voltage modes: 5V and OD (open drain - "logic voltage free") output modes
+ * - High-Speed mode
+ * - Disable LCD voltage options
+ */
+
+ /**
+ * Danger: Don't activate 5V mode unless attached to a 5V-tolerant controller!
+ * V3.0 or 3.1: Set default mode to 5V mode at Marlin startup.
+ * If disabled, OD mode is the hard-coded default on 3.0
+ * On startup, Marlin will compare its eeprom to this vale. If the selected mode
+ * differs, a mode set eeprom write will be completed at initialization.
+ * Use the option below to force an eeprom write to a V3.1 probe regardless.
+ */
+ //#define BLTOUCH_SET_5V_MODE
+
+ /**
+ * Safety: Activate if connecting a probe with an unknown voltage mode.
+ * V3.0: Set a probe into mode selected above at Marlin startup. Required for 5V mode on 3.0
+ * V3.1: Force a probe with unknown mode into selected mode at Marlin startup ( = Probe EEPROM write )
+ * To preserve the life of the probe, use this once then turn it off and re-flash.
+ */
+ //#define BLTOUCH_FORCE_MODE_SET
+
+ /**
+ * Use "HIGH SPEED" mode for probing.
+ * Danger: Disable if your probe sometimes fails. Only suitable for stable well-adjusted systems.
+ * This feature was designed for Delta's with very fast Z moves however higher speed cartesians may function
+ * If the machine cannot raise the probe fast enough after a trigger, it may enter a fault state.
+ */
+ //#define BLTOUCH_HS_MODE
+
+ // Safety: Enable voltage mode settings in the LCD menu.
+ //#define BLTOUCH_LCD_VOLTAGE_MENU
+
+#endif // BLTOUCH
// A probe that is deployed and stowed with a solenoid pin (SOL1_PIN)
//#define SOLENOID_PROBE
@@ -857,23 +913,23 @@
//
/**
- * Z Probe to nozzle (X,Y) offset, relative to (0, 0).
- * X and Y offsets must be integers.
+ * Z Probe to nozzle (X,Y) offset, relative to (0, 0).
+ * X and Y offsets must be integers.
*
- * In the following example the X and Y offsets are both positive:
- * #define X_PROBE_OFFSET_FROM_EXTRUDER 10
- * #define Y_PROBE_OFFSET_FROM_EXTRUDER 10
+ * In the following example the X and Y offsets are both positive:
+ * #define X_PROBE_OFFSET_FROM_EXTRUDER 10
+ * #define Y_PROBE_OFFSET_FROM_EXTRUDER 10
*
- * +-- BACK ---+
- * | |
- * L | (+) P | R <-- probe (20,20)
- * E | | I
- * F | (-) N (+) | G <-- nozzle (10,10)
- * T | | H
- * | (-) | T
- * | |
- * O-- FRONT --+
- * (0,0)
+ * +-- BACK ---+
+ * | |
+ * L | (+) P | R <-- probe (20,20)
+ * E | | I
+ * F | (-) N (+) | G <-- nozzle (10,10)
+ * T | | H
+ * | (-) | T
+ * | |
+ * O-- FRONT --+
+ * (0,0)
*/
#define X_PROBE_OFFSET_FROM_EXTRUDER 10 // X offset: -left +right [of the nozzle]
#define Y_PROBE_OFFSET_FROM_EXTRUDER 10 // Y offset: -front +behind [the nozzle]
@@ -2089,6 +2145,10 @@
#define NEOPIXEL_IS_SEQUENTIAL // Sequential display for temperature change - LED by LED. Disable to change all LEDs at once.
#define NEOPIXEL_BRIGHTNESS 127 // Initial brightness (0-255)
//#define NEOPIXEL_STARTUP_TEST // Cycle through colors at startup
+
+ // Use a single Neopixel LED for static (background) lighting
+ //#define NEOPIXEL_BKGD_LED_INDEX 0 // Index of the LED to use
+ //#define NEOPIXEL_BKGD_COLOR { 255, 255, 255, 0 } // R, G, B, W
#endif
/**
diff --git a/config/examples/BIBO/TouchX/cyclops/Configuration_adv.h b/config/examples/BIBO/TouchX/cyclops/Configuration_adv.h
index 00423bcd5b..c08d0f81b9 100644
--- a/config/examples/BIBO/TouchX/cyclops/Configuration_adv.h
+++ b/config/examples/BIBO/TouchX/cyclops/Configuration_adv.h
@@ -382,10 +382,6 @@
#endif
#endif
-//===========================================================================
-//============================ Mechanical Settings ==========================
-//===========================================================================
-
// @section homing
// If you want endstops to stay on (by default) even when not homing
@@ -745,6 +741,7 @@
* A (A shifted) B (B shifted) IC
* Smoothie 0x2C (0x58) 0x2D (0x5A) MCP4451
* AZTEEG_X3_PRO 0x2C (0x58) 0x2E (0x5C) MCP4451
+ * AZTEEG_X5_MINI 0x2C (0x58) 0x2E (0x5C) MCP4451
* AZTEEG_X5_MINI_WIFI 0x58 0x5C MCP4451
* MIGHTYBOARD_REVE 0x2F (0x5E) MCP4018
*/
diff --git a/config/examples/BIBO/TouchX/default/Configuration.h b/config/examples/BIBO/TouchX/default/Configuration.h
index 38e1fce6dd..995e50f81e 100644
--- a/config/examples/BIBO/TouchX/default/Configuration.h
+++ b/config/examples/BIBO/TouchX/default/Configuration.h
@@ -828,15 +828,71 @@
*/
//#define BLTOUCH
#if ENABLED(BLTOUCH)
- //#define BLTOUCH_DELAY 500 // Minimum Command delay (ms). Enable and increase if needed
+ /**
+ * Either: Use the defaults (recommended) or: For special purposes, use the following DEFINES
+ * Do not activate settings that the probe might not understand. Clones might misunderstand
+ * advanced commands.
+ *
+ * Note: If the probe is not deploying, check a "Cmd: Reset" and "Cmd: Self-Test" and then
+ * check the wiring of the BROWN, RED and ORANGE wires.
+ *
+ * Note: If the trigger signal of your probe is not being recognized, it has been very often
+ * because the BLACK and WHITE wires needed to be swapped. They are not "interchangeable"
+ * like they would be with a real switch. So please check the wiring first.
+ *
+ * Settings for all BLTouch and clone probes:
+ */
+
+ // Safety: The probe needs time to recognize the command.
+ // Minimum command delay (ms). Enable and increase if needed.
+ //#define BLTOUCH_DELAY 500
/**
- * BLTouch V3.0 and newer smart series
- * For genuine BLTouch 3.0 sensors. Clones may be confused by 3.0 command angles. YMMV.
- * If the pin trigger is not detected, first try swapping the black and white wires then toggle this.
+ * Settings for BLTOUCH Classic 1.2, 1.3 or BLTouch Smart 1.0, 2.0, 2.2, 3.0, 3.1, and most clones:
*/
- //#define BLTOUCH_FORCE_5V_MODE
-#endif
+
+ // Feature: Switch into SW mode after a deploy. It makes the output pulse longer. Can be useful
+ // in special cases, like noisy or filtered input configurations.
+ //#define BLTOUCH_FORCE_SW_MODE
+
+ /**
+ * Settings for BLTouch Smart 3.0 and 3.1
+ * Summary:
+ * - Voltage modes: 5V and OD (open drain - "logic voltage free") output modes
+ * - High-Speed mode
+ * - Disable LCD voltage options
+ */
+
+ /**
+ * Danger: Don't activate 5V mode unless attached to a 5V-tolerant controller!
+ * V3.0 or 3.1: Set default mode to 5V mode at Marlin startup.
+ * If disabled, OD mode is the hard-coded default on 3.0
+ * On startup, Marlin will compare its eeprom to this vale. If the selected mode
+ * differs, a mode set eeprom write will be completed at initialization.
+ * Use the option below to force an eeprom write to a V3.1 probe regardless.
+ */
+ //#define BLTOUCH_SET_5V_MODE
+
+ /**
+ * Safety: Activate if connecting a probe with an unknown voltage mode.
+ * V3.0: Set a probe into mode selected above at Marlin startup. Required for 5V mode on 3.0
+ * V3.1: Force a probe with unknown mode into selected mode at Marlin startup ( = Probe EEPROM write )
+ * To preserve the life of the probe, use this once then turn it off and re-flash.
+ */
+ //#define BLTOUCH_FORCE_MODE_SET
+
+ /**
+ * Use "HIGH SPEED" mode for probing.
+ * Danger: Disable if your probe sometimes fails. Only suitable for stable well-adjusted systems.
+ * This feature was designed for Delta's with very fast Z moves however higher speed cartesians may function
+ * If the machine cannot raise the probe fast enough after a trigger, it may enter a fault state.
+ */
+ //#define BLTOUCH_HS_MODE
+
+ // Safety: Enable voltage mode settings in the LCD menu.
+ //#define BLTOUCH_LCD_VOLTAGE_MENU
+
+#endif // BLTOUCH
// A probe that is deployed and stowed with a solenoid pin (SOL1_PIN)
//#define SOLENOID_PROBE
@@ -857,23 +913,23 @@
//
/**
- * Z Probe to nozzle (X,Y) offset, relative to (0, 0).
- * X and Y offsets must be integers.
+ * Z Probe to nozzle (X,Y) offset, relative to (0, 0).
+ * X and Y offsets must be integers.
*
- * In the following example the X and Y offsets are both positive:
- * #define X_PROBE_OFFSET_FROM_EXTRUDER 10
- * #define Y_PROBE_OFFSET_FROM_EXTRUDER 10
+ * In the following example the X and Y offsets are both positive:
+ * #define X_PROBE_OFFSET_FROM_EXTRUDER 10
+ * #define Y_PROBE_OFFSET_FROM_EXTRUDER 10
*
- * +-- BACK ---+
- * | |
- * L | (+) P | R <-- probe (20,20)
- * E | | I
- * F | (-) N (+) | G <-- nozzle (10,10)
- * T | | H
- * | (-) | T
- * | |
- * O-- FRONT --+
- * (0,0)
+ * +-- BACK ---+
+ * | |
+ * L | (+) P | R <-- probe (20,20)
+ * E | | I
+ * F | (-) N (+) | G <-- nozzle (10,10)
+ * T | | H
+ * | (-) | T
+ * | |
+ * O-- FRONT --+
+ * (0,0)
*/
#define X_PROBE_OFFSET_FROM_EXTRUDER 10 // X offset: -left +right [of the nozzle]
#define Y_PROBE_OFFSET_FROM_EXTRUDER 10 // Y offset: -front +behind [the nozzle]
@@ -2089,6 +2145,10 @@
#define NEOPIXEL_IS_SEQUENTIAL // Sequential display for temperature change - LED by LED. Disable to change all LEDs at once.
#define NEOPIXEL_BRIGHTNESS 127 // Initial brightness (0-255)
//#define NEOPIXEL_STARTUP_TEST // Cycle through colors at startup
+
+ // Use a single Neopixel LED for static (background) lighting
+ //#define NEOPIXEL_BKGD_LED_INDEX 0 // Index of the LED to use
+ //#define NEOPIXEL_BKGD_COLOR { 255, 255, 255, 0 } // R, G, B, W
#endif
/**
diff --git a/config/examples/BIBO/TouchX/default/Configuration_adv.h b/config/examples/BIBO/TouchX/default/Configuration_adv.h
index 54ffd7cbd1..3ebb27541a 100644
--- a/config/examples/BIBO/TouchX/default/Configuration_adv.h
+++ b/config/examples/BIBO/TouchX/default/Configuration_adv.h
@@ -382,10 +382,6 @@
#endif
#endif
-//===========================================================================
-//============================ Mechanical Settings ==========================
-//===========================================================================
-
// @section homing
// If you want endstops to stay on (by default) even when not homing
@@ -745,6 +741,7 @@
* A (A shifted) B (B shifted) IC
* Smoothie 0x2C (0x58) 0x2D (0x5A) MCP4451
* AZTEEG_X3_PRO 0x2C (0x58) 0x2E (0x5C) MCP4451
+ * AZTEEG_X5_MINI 0x2C (0x58) 0x2E (0x5C) MCP4451
* AZTEEG_X5_MINI_WIFI 0x58 0x5C MCP4451
* MIGHTYBOARD_REVE 0x2F (0x5E) MCP4018
*/
diff --git a/config/examples/BQ/Hephestos/Configuration.h b/config/examples/BQ/Hephestos/Configuration.h
index 66f6bf1321..e79b828fc5 100644
--- a/config/examples/BQ/Hephestos/Configuration.h
+++ b/config/examples/BQ/Hephestos/Configuration.h
@@ -816,15 +816,71 @@
*/
//#define BLTOUCH
#if ENABLED(BLTOUCH)
- //#define BLTOUCH_DELAY 500 // Minimum Command delay (ms). Enable and increase if needed
+ /**
+ * Either: Use the defaults (recommended) or: For special purposes, use the following DEFINES
+ * Do not activate settings that the probe might not understand. Clones might misunderstand
+ * advanced commands.
+ *
+ * Note: If the probe is not deploying, check a "Cmd: Reset" and "Cmd: Self-Test" and then
+ * check the wiring of the BROWN, RED and ORANGE wires.
+ *
+ * Note: If the trigger signal of your probe is not being recognized, it has been very often
+ * because the BLACK and WHITE wires needed to be swapped. They are not "interchangeable"
+ * like they would be with a real switch. So please check the wiring first.
+ *
+ * Settings for all BLTouch and clone probes:
+ */
+
+ // Safety: The probe needs time to recognize the command.
+ // Minimum command delay (ms). Enable and increase if needed.
+ //#define BLTOUCH_DELAY 500
/**
- * BLTouch V3.0 and newer smart series
- * For genuine BLTouch 3.0 sensors. Clones may be confused by 3.0 command angles. YMMV.
- * If the pin trigger is not detected, first try swapping the black and white wires then toggle this.
+ * Settings for BLTOUCH Classic 1.2, 1.3 or BLTouch Smart 1.0, 2.0, 2.2, 3.0, 3.1, and most clones:
*/
- //#define BLTOUCH_FORCE_5V_MODE
-#endif
+
+ // Feature: Switch into SW mode after a deploy. It makes the output pulse longer. Can be useful
+ // in special cases, like noisy or filtered input configurations.
+ //#define BLTOUCH_FORCE_SW_MODE
+
+ /**
+ * Settings for BLTouch Smart 3.0 and 3.1
+ * Summary:
+ * - Voltage modes: 5V and OD (open drain - "logic voltage free") output modes
+ * - High-Speed mode
+ * - Disable LCD voltage options
+ */
+
+ /**
+ * Danger: Don't activate 5V mode unless attached to a 5V-tolerant controller!
+ * V3.0 or 3.1: Set default mode to 5V mode at Marlin startup.
+ * If disabled, OD mode is the hard-coded default on 3.0
+ * On startup, Marlin will compare its eeprom to this vale. If the selected mode
+ * differs, a mode set eeprom write will be completed at initialization.
+ * Use the option below to force an eeprom write to a V3.1 probe regardless.
+ */
+ //#define BLTOUCH_SET_5V_MODE
+
+ /**
+ * Safety: Activate if connecting a probe with an unknown voltage mode.
+ * V3.0: Set a probe into mode selected above at Marlin startup. Required for 5V mode on 3.0
+ * V3.1: Force a probe with unknown mode into selected mode at Marlin startup ( = Probe EEPROM write )
+ * To preserve the life of the probe, use this once then turn it off and re-flash.
+ */
+ //#define BLTOUCH_FORCE_MODE_SET
+
+ /**
+ * Use "HIGH SPEED" mode for probing.
+ * Danger: Disable if your probe sometimes fails. Only suitable for stable well-adjusted systems.
+ * This feature was designed for Delta's with very fast Z moves however higher speed cartesians may function
+ * If the machine cannot raise the probe fast enough after a trigger, it may enter a fault state.
+ */
+ //#define BLTOUCH_HS_MODE
+
+ // Safety: Enable voltage mode settings in the LCD menu.
+ //#define BLTOUCH_LCD_VOLTAGE_MENU
+
+#endif // BLTOUCH
// A probe that is deployed and stowed with a solenoid pin (SOL1_PIN)
//#define SOLENOID_PROBE
@@ -845,23 +901,23 @@
//
/**
- * Z Probe to nozzle (X,Y) offset, relative to (0, 0).
- * X and Y offsets must be integers.
+ * Z Probe to nozzle (X,Y) offset, relative to (0, 0).
+ * X and Y offsets must be integers.
*
- * In the following example the X and Y offsets are both positive:
- * #define X_PROBE_OFFSET_FROM_EXTRUDER 10
- * #define Y_PROBE_OFFSET_FROM_EXTRUDER 10
+ * In the following example the X and Y offsets are both positive:
+ * #define X_PROBE_OFFSET_FROM_EXTRUDER 10
+ * #define Y_PROBE_OFFSET_FROM_EXTRUDER 10
*
- * +-- BACK ---+
- * | |
- * L | (+) P | R <-- probe (20,20)
- * E | | I
- * F | (-) N (+) | G <-- nozzle (10,10)
- * T | | H
- * | (-) | T
- * | |
- * O-- FRONT --+
- * (0,0)
+ * +-- BACK ---+
+ * | |
+ * L | (+) P | R <-- probe (20,20)
+ * E | | I
+ * F | (-) N (+) | G <-- nozzle (10,10)
+ * T | | H
+ * | (-) | T
+ * | |
+ * O-- FRONT --+
+ * (0,0)
*/
#define X_PROBE_OFFSET_FROM_EXTRUDER -25 // X offset: -left +right [of the nozzle]
#define Y_PROBE_OFFSET_FROM_EXTRUDER -29 // Y offset: -front +behind [the nozzle]
@@ -2077,6 +2133,10 @@
#define NEOPIXEL_IS_SEQUENTIAL // Sequential display for temperature change - LED by LED. Disable to change all LEDs at once.
#define NEOPIXEL_BRIGHTNESS 127 // Initial brightness (0-255)
//#define NEOPIXEL_STARTUP_TEST // Cycle through colors at startup
+
+ // Use a single Neopixel LED for static (background) lighting
+ //#define NEOPIXEL_BKGD_LED_INDEX 0 // Index of the LED to use
+ //#define NEOPIXEL_BKGD_COLOR { 255, 255, 255, 0 } // R, G, B, W
#endif
/**
diff --git a/config/examples/BQ/Hephestos/Configuration_adv.h b/config/examples/BQ/Hephestos/Configuration_adv.h
index 129a6b33e9..f59267978d 100644
--- a/config/examples/BQ/Hephestos/Configuration_adv.h
+++ b/config/examples/BQ/Hephestos/Configuration_adv.h
@@ -382,10 +382,6 @@
#endif
#endif
-//===========================================================================
-//============================ Mechanical Settings ==========================
-//===========================================================================
-
// @section homing
// If you want endstops to stay on (by default) even when not homing
@@ -577,8 +573,11 @@
// @section lcd
-#if ENABLED(ULTIPANEL)
+#if EITHER(ULTIPANEL, EXTENSIBLE_UI)
#define MANUAL_FEEDRATE {120*60, 120*60, 18*60, 60} // Feedrates for manual moves along X, Y, Z, E from panel
+#endif
+
+#if ENABLED(ULTIPANEL)
#define MANUAL_E_MOVES_RELATIVE // Show LCD extruder moves as relative rather than absolute positions
#define ULTIPANEL_FEEDMULTIPLY // Comment to disable setting feedrate multiplier via encoder
#endif
@@ -742,6 +741,7 @@
* A (A shifted) B (B shifted) IC
* Smoothie 0x2C (0x58) 0x2D (0x5A) MCP4451
* AZTEEG_X3_PRO 0x2C (0x58) 0x2E (0x5C) MCP4451
+ * AZTEEG_X5_MINI 0x2C (0x58) 0x2E (0x5C) MCP4451
* AZTEEG_X5_MINI_WIFI 0x58 0x5C MCP4451
* MIGHTYBOARD_REVE 0x2F (0x5E) MCP4018
*/
diff --git a/config/examples/BQ/Hephestos_2/Configuration.h b/config/examples/BQ/Hephestos_2/Configuration.h
index 03b87da3bd..aa2dd95f2d 100644
--- a/config/examples/BQ/Hephestos_2/Configuration.h
+++ b/config/examples/BQ/Hephestos_2/Configuration.h
@@ -829,15 +829,71 @@
*/
//#define BLTOUCH
#if ENABLED(BLTOUCH)
- //#define BLTOUCH_DELAY 500 // Minimum Command delay (ms). Enable and increase if needed
+ /**
+ * Either: Use the defaults (recommended) or: For special purposes, use the following DEFINES
+ * Do not activate settings that the probe might not understand. Clones might misunderstand
+ * advanced commands.
+ *
+ * Note: If the probe is not deploying, check a "Cmd: Reset" and "Cmd: Self-Test" and then
+ * check the wiring of the BROWN, RED and ORANGE wires.
+ *
+ * Note: If the trigger signal of your probe is not being recognized, it has been very often
+ * because the BLACK and WHITE wires needed to be swapped. They are not "interchangeable"
+ * like they would be with a real switch. So please check the wiring first.
+ *
+ * Settings for all BLTouch and clone probes:
+ */
+
+ // Safety: The probe needs time to recognize the command.
+ // Minimum command delay (ms). Enable and increase if needed.
+ //#define BLTOUCH_DELAY 500
/**
- * BLTouch V3.0 and newer smart series
- * For genuine BLTouch 3.0 sensors. Clones may be confused by 3.0 command angles. YMMV.
- * If the pin trigger is not detected, first try swapping the black and white wires then toggle this.
+ * Settings for BLTOUCH Classic 1.2, 1.3 or BLTouch Smart 1.0, 2.0, 2.2, 3.0, 3.1, and most clones:
*/
- //#define BLTOUCH_FORCE_5V_MODE
-#endif
+
+ // Feature: Switch into SW mode after a deploy. It makes the output pulse longer. Can be useful
+ // in special cases, like noisy or filtered input configurations.
+ //#define BLTOUCH_FORCE_SW_MODE
+
+ /**
+ * Settings for BLTouch Smart 3.0 and 3.1
+ * Summary:
+ * - Voltage modes: 5V and OD (open drain - "logic voltage free") output modes
+ * - High-Speed mode
+ * - Disable LCD voltage options
+ */
+
+ /**
+ * Danger: Don't activate 5V mode unless attached to a 5V-tolerant controller!
+ * V3.0 or 3.1: Set default mode to 5V mode at Marlin startup.
+ * If disabled, OD mode is the hard-coded default on 3.0
+ * On startup, Marlin will compare its eeprom to this vale. If the selected mode
+ * differs, a mode set eeprom write will be completed at initialization.
+ * Use the option below to force an eeprom write to a V3.1 probe regardless.
+ */
+ //#define BLTOUCH_SET_5V_MODE
+
+ /**
+ * Safety: Activate if connecting a probe with an unknown voltage mode.
+ * V3.0: Set a probe into mode selected above at Marlin startup. Required for 5V mode on 3.0
+ * V3.1: Force a probe with unknown mode into selected mode at Marlin startup ( = Probe EEPROM write )
+ * To preserve the life of the probe, use this once then turn it off and re-flash.
+ */
+ //#define BLTOUCH_FORCE_MODE_SET
+
+ /**
+ * Use "HIGH SPEED" mode for probing.
+ * Danger: Disable if your probe sometimes fails. Only suitable for stable well-adjusted systems.
+ * This feature was designed for Delta's with very fast Z moves however higher speed cartesians may function
+ * If the machine cannot raise the probe fast enough after a trigger, it may enter a fault state.
+ */
+ //#define BLTOUCH_HS_MODE
+
+ // Safety: Enable voltage mode settings in the LCD menu.
+ //#define BLTOUCH_LCD_VOLTAGE_MENU
+
+#endif // BLTOUCH
// A probe that is deployed and stowed with a solenoid pin (SOL1_PIN)
//#define SOLENOID_PROBE
@@ -858,23 +914,23 @@
//
/**
- * Z Probe to nozzle (X,Y) offset, relative to (0, 0).
- * X and Y offsets must be integers.
+ * Z Probe to nozzle (X,Y) offset, relative to (0, 0).
+ * X and Y offsets must be integers.
*
- * In the following example the X and Y offsets are both positive:
- * #define X_PROBE_OFFSET_FROM_EXTRUDER 10
- * #define Y_PROBE_OFFSET_FROM_EXTRUDER 10
+ * In the following example the X and Y offsets are both positive:
+ * #define X_PROBE_OFFSET_FROM_EXTRUDER 10
+ * #define Y_PROBE_OFFSET_FROM_EXTRUDER 10
*
- * +-- BACK ---+
- * | |
- * L | (+) P | R <-- probe (20,20)
- * E | | I
- * F | (-) N (+) | G <-- nozzle (10,10)
- * T | | H
- * | (-) | T
- * | |
- * O-- FRONT --+
- * (0,0)
+ * +-- BACK ---+
+ * | |
+ * L | (+) P | R <-- probe (20,20)
+ * E | | I
+ * F | (-) N (+) | G <-- nozzle (10,10)
+ * T | | H
+ * | (-) | T
+ * | |
+ * O-- FRONT --+
+ * (0,0)
*/
#define X_PROBE_OFFSET_FROM_EXTRUDER 34 // X offset: -left +right [of the nozzle]
#define Y_PROBE_OFFSET_FROM_EXTRUDER 15 // Y offset: -front +behind [the nozzle]
@@ -2089,6 +2145,10 @@
#define NEOPIXEL_IS_SEQUENTIAL // Sequential display for temperature change - LED by LED. Disable to change all LEDs at once.
#define NEOPIXEL_BRIGHTNESS 127 // Initial brightness (0-255)
//#define NEOPIXEL_STARTUP_TEST // Cycle through colors at startup
+
+ // Use a single Neopixel LED for static (background) lighting
+ //#define NEOPIXEL_BKGD_LED_INDEX 0 // Index of the LED to use
+ //#define NEOPIXEL_BKGD_COLOR { 255, 255, 255, 0 } // R, G, B, W
#endif
/**
diff --git a/config/examples/BQ/Hephestos_2/Configuration_adv.h b/config/examples/BQ/Hephestos_2/Configuration_adv.h
index e918c47ce0..a3462a408f 100644
--- a/config/examples/BQ/Hephestos_2/Configuration_adv.h
+++ b/config/examples/BQ/Hephestos_2/Configuration_adv.h
@@ -382,10 +382,6 @@
#endif
#endif
-//===========================================================================
-//============================ Mechanical Settings ==========================
-//===========================================================================
-
// @section homing
// If you want endstops to stay on (by default) even when not homing
@@ -577,8 +573,11 @@
// @section lcd
-#if ENABLED(ULTIPANEL)
+#if EITHER(ULTIPANEL, EXTENSIBLE_UI)
#define MANUAL_FEEDRATE {50*60, 50*60, 4*60, 60} // Feedrates for manual moves along X, Y, Z, E from panel
+#endif
+
+#if ENABLED(ULTIPANEL)
#define MANUAL_E_MOVES_RELATIVE // Show LCD extruder moves as relative rather than absolute positions
//#define ULTIPANEL_FEEDMULTIPLY // Comment to disable setting feedrate multiplier via encoder
#endif
@@ -750,6 +749,7 @@
* A (A shifted) B (B shifted) IC
* Smoothie 0x2C (0x58) 0x2D (0x5A) MCP4451
* AZTEEG_X3_PRO 0x2C (0x58) 0x2E (0x5C) MCP4451
+ * AZTEEG_X5_MINI 0x2C (0x58) 0x2E (0x5C) MCP4451
* AZTEEG_X5_MINI_WIFI 0x58 0x5C MCP4451
* MIGHTYBOARD_REVE 0x2F (0x5E) MCP4018
*/
diff --git a/config/examples/BQ/WITBOX/Configuration.h b/config/examples/BQ/WITBOX/Configuration.h
index 5da0a792ec..c1a5f95c58 100644
--- a/config/examples/BQ/WITBOX/Configuration.h
+++ b/config/examples/BQ/WITBOX/Configuration.h
@@ -816,15 +816,71 @@
*/
//#define BLTOUCH
#if ENABLED(BLTOUCH)
- //#define BLTOUCH_DELAY 500 // Minimum Command delay (ms). Enable and increase if needed
+ /**
+ * Either: Use the defaults (recommended) or: For special purposes, use the following DEFINES
+ * Do not activate settings that the probe might not understand. Clones might misunderstand
+ * advanced commands.
+ *
+ * Note: If the probe is not deploying, check a "Cmd: Reset" and "Cmd: Self-Test" and then
+ * check the wiring of the BROWN, RED and ORANGE wires.
+ *
+ * Note: If the trigger signal of your probe is not being recognized, it has been very often
+ * because the BLACK and WHITE wires needed to be swapped. They are not "interchangeable"
+ * like they would be with a real switch. So please check the wiring first.
+ *
+ * Settings for all BLTouch and clone probes:
+ */
+
+ // Safety: The probe needs time to recognize the command.
+ // Minimum command delay (ms). Enable and increase if needed.
+ //#define BLTOUCH_DELAY 500
/**
- * BLTouch V3.0 and newer smart series
- * For genuine BLTouch 3.0 sensors. Clones may be confused by 3.0 command angles. YMMV.
- * If the pin trigger is not detected, first try swapping the black and white wires then toggle this.
+ * Settings for BLTOUCH Classic 1.2, 1.3 or BLTouch Smart 1.0, 2.0, 2.2, 3.0, 3.1, and most clones:
*/
- //#define BLTOUCH_FORCE_5V_MODE
-#endif
+
+ // Feature: Switch into SW mode after a deploy. It makes the output pulse longer. Can be useful
+ // in special cases, like noisy or filtered input configurations.
+ //#define BLTOUCH_FORCE_SW_MODE
+
+ /**
+ * Settings for BLTouch Smart 3.0 and 3.1
+ * Summary:
+ * - Voltage modes: 5V and OD (open drain - "logic voltage free") output modes
+ * - High-Speed mode
+ * - Disable LCD voltage options
+ */
+
+ /**
+ * Danger: Don't activate 5V mode unless attached to a 5V-tolerant controller!
+ * V3.0 or 3.1: Set default mode to 5V mode at Marlin startup.
+ * If disabled, OD mode is the hard-coded default on 3.0
+ * On startup, Marlin will compare its eeprom to this vale. If the selected mode
+ * differs, a mode set eeprom write will be completed at initialization.
+ * Use the option below to force an eeprom write to a V3.1 probe regardless.
+ */
+ //#define BLTOUCH_SET_5V_MODE
+
+ /**
+ * Safety: Activate if connecting a probe with an unknown voltage mode.
+ * V3.0: Set a probe into mode selected above at Marlin startup. Required for 5V mode on 3.0
+ * V3.1: Force a probe with unknown mode into selected mode at Marlin startup ( = Probe EEPROM write )
+ * To preserve the life of the probe, use this once then turn it off and re-flash.
+ */
+ //#define BLTOUCH_FORCE_MODE_SET
+
+ /**
+ * Use "HIGH SPEED" mode for probing.
+ * Danger: Disable if your probe sometimes fails. Only suitable for stable well-adjusted systems.
+ * This feature was designed for Delta's with very fast Z moves however higher speed cartesians may function
+ * If the machine cannot raise the probe fast enough after a trigger, it may enter a fault state.
+ */
+ //#define BLTOUCH_HS_MODE
+
+ // Safety: Enable voltage mode settings in the LCD menu.
+ //#define BLTOUCH_LCD_VOLTAGE_MENU
+
+#endif // BLTOUCH
// A probe that is deployed and stowed with a solenoid pin (SOL1_PIN)
//#define SOLENOID_PROBE
@@ -845,23 +901,23 @@
//
/**
- * Z Probe to nozzle (X,Y) offset, relative to (0, 0).
- * X and Y offsets must be integers.
+ * Z Probe to nozzle (X,Y) offset, relative to (0, 0).
+ * X and Y offsets must be integers.
*
- * In the following example the X and Y offsets are both positive:
- * #define X_PROBE_OFFSET_FROM_EXTRUDER 10
- * #define Y_PROBE_OFFSET_FROM_EXTRUDER 10
+ * In the following example the X and Y offsets are both positive:
+ * #define X_PROBE_OFFSET_FROM_EXTRUDER 10
+ * #define Y_PROBE_OFFSET_FROM_EXTRUDER 10
*
- * +-- BACK ---+
- * | |
- * L | (+) P | R <-- probe (20,20)
- * E | | I
- * F | (-) N (+) | G <-- nozzle (10,10)
- * T | | H
- * | (-) | T
- * | |
- * O-- FRONT --+
- * (0,0)
+ * +-- BACK ---+
+ * | |
+ * L | (+) P | R <-- probe (20,20)
+ * E | | I
+ * F | (-) N (+) | G <-- nozzle (10,10)
+ * T | | H
+ * | (-) | T
+ * | |
+ * O-- FRONT --+
+ * (0,0)
*/
#define X_PROBE_OFFSET_FROM_EXTRUDER -25 // X offset: -left +right [of the nozzle]
#define Y_PROBE_OFFSET_FROM_EXTRUDER -29 // Y offset: -front +behind [the nozzle]
@@ -2077,6 +2133,10 @@
#define NEOPIXEL_IS_SEQUENTIAL // Sequential display for temperature change - LED by LED. Disable to change all LEDs at once.
#define NEOPIXEL_BRIGHTNESS 127 // Initial brightness (0-255)
//#define NEOPIXEL_STARTUP_TEST // Cycle through colors at startup
+
+ // Use a single Neopixel LED for static (background) lighting
+ //#define NEOPIXEL_BKGD_LED_INDEX 0 // Index of the LED to use
+ //#define NEOPIXEL_BKGD_COLOR { 255, 255, 255, 0 } // R, G, B, W
#endif
/**
diff --git a/config/examples/BQ/WITBOX/Configuration_adv.h b/config/examples/BQ/WITBOX/Configuration_adv.h
index 129a6b33e9..f59267978d 100644
--- a/config/examples/BQ/WITBOX/Configuration_adv.h
+++ b/config/examples/BQ/WITBOX/Configuration_adv.h
@@ -382,10 +382,6 @@
#endif
#endif
-//===========================================================================
-//============================ Mechanical Settings ==========================
-//===========================================================================
-
// @section homing
// If you want endstops to stay on (by default) even when not homing
@@ -577,8 +573,11 @@
// @section lcd
-#if ENABLED(ULTIPANEL)
+#if EITHER(ULTIPANEL, EXTENSIBLE_UI)
#define MANUAL_FEEDRATE {120*60, 120*60, 18*60, 60} // Feedrates for manual moves along X, Y, Z, E from panel
+#endif
+
+#if ENABLED(ULTIPANEL)
#define MANUAL_E_MOVES_RELATIVE // Show LCD extruder moves as relative rather than absolute positions
#define ULTIPANEL_FEEDMULTIPLY // Comment to disable setting feedrate multiplier via encoder
#endif
@@ -742,6 +741,7 @@
* A (A shifted) B (B shifted) IC
* Smoothie 0x2C (0x58) 0x2D (0x5A) MCP4451
* AZTEEG_X3_PRO 0x2C (0x58) 0x2E (0x5C) MCP4451
+ * AZTEEG_X5_MINI 0x2C (0x58) 0x2E (0x5C) MCP4451
* AZTEEG_X5_MINI_WIFI 0x58 0x5C MCP4451
* MIGHTYBOARD_REVE 0x2F (0x5E) MCP4018
*/
diff --git a/config/examples/Cartesio/Configuration.h b/config/examples/Cartesio/Configuration.h
index d74b3a1d13..4c4886e917 100644
--- a/config/examples/Cartesio/Configuration.h
+++ b/config/examples/Cartesio/Configuration.h
@@ -827,15 +827,71 @@
*/
//#define BLTOUCH
#if ENABLED(BLTOUCH)
- //#define BLTOUCH_DELAY 500 // Minimum Command delay (ms). Enable and increase if needed
+ /**
+ * Either: Use the defaults (recommended) or: For special purposes, use the following DEFINES
+ * Do not activate settings that the probe might not understand. Clones might misunderstand
+ * advanced commands.
+ *
+ * Note: If the probe is not deploying, check a "Cmd: Reset" and "Cmd: Self-Test" and then
+ * check the wiring of the BROWN, RED and ORANGE wires.
+ *
+ * Note: If the trigger signal of your probe is not being recognized, it has been very often
+ * because the BLACK and WHITE wires needed to be swapped. They are not "interchangeable"
+ * like they would be with a real switch. So please check the wiring first.
+ *
+ * Settings for all BLTouch and clone probes:
+ */
+
+ // Safety: The probe needs time to recognize the command.
+ // Minimum command delay (ms). Enable and increase if needed.
+ //#define BLTOUCH_DELAY 500
/**
- * BLTouch V3.0 and newer smart series
- * For genuine BLTouch 3.0 sensors. Clones may be confused by 3.0 command angles. YMMV.
- * If the pin trigger is not detected, first try swapping the black and white wires then toggle this.
+ * Settings for BLTOUCH Classic 1.2, 1.3 or BLTouch Smart 1.0, 2.0, 2.2, 3.0, 3.1, and most clones:
*/
- //#define BLTOUCH_FORCE_5V_MODE
-#endif
+
+ // Feature: Switch into SW mode after a deploy. It makes the output pulse longer. Can be useful
+ // in special cases, like noisy or filtered input configurations.
+ //#define BLTOUCH_FORCE_SW_MODE
+
+ /**
+ * Settings for BLTouch Smart 3.0 and 3.1
+ * Summary:
+ * - Voltage modes: 5V and OD (open drain - "logic voltage free") output modes
+ * - High-Speed mode
+ * - Disable LCD voltage options
+ */
+
+ /**
+ * Danger: Don't activate 5V mode unless attached to a 5V-tolerant controller!
+ * V3.0 or 3.1: Set default mode to 5V mode at Marlin startup.
+ * If disabled, OD mode is the hard-coded default on 3.0
+ * On startup, Marlin will compare its eeprom to this vale. If the selected mode
+ * differs, a mode set eeprom write will be completed at initialization.
+ * Use the option below to force an eeprom write to a V3.1 probe regardless.
+ */
+ //#define BLTOUCH_SET_5V_MODE
+
+ /**
+ * Safety: Activate if connecting a probe with an unknown voltage mode.
+ * V3.0: Set a probe into mode selected above at Marlin startup. Required for 5V mode on 3.0
+ * V3.1: Force a probe with unknown mode into selected mode at Marlin startup ( = Probe EEPROM write )
+ * To preserve the life of the probe, use this once then turn it off and re-flash.
+ */
+ //#define BLTOUCH_FORCE_MODE_SET
+
+ /**
+ * Use "HIGH SPEED" mode for probing.
+ * Danger: Disable if your probe sometimes fails. Only suitable for stable well-adjusted systems.
+ * This feature was designed for Delta's with very fast Z moves however higher speed cartesians may function
+ * If the machine cannot raise the probe fast enough after a trigger, it may enter a fault state.
+ */
+ //#define BLTOUCH_HS_MODE
+
+ // Safety: Enable voltage mode settings in the LCD menu.
+ //#define BLTOUCH_LCD_VOLTAGE_MENU
+
+#endif // BLTOUCH
// A probe that is deployed and stowed with a solenoid pin (SOL1_PIN)
//#define SOLENOID_PROBE
@@ -856,23 +912,23 @@
//
/**
- * Z Probe to nozzle (X,Y) offset, relative to (0, 0).
- * X and Y offsets must be integers.
+ * Z Probe to nozzle (X,Y) offset, relative to (0, 0).
+ * X and Y offsets must be integers.
*
- * In the following example the X and Y offsets are both positive:
- * #define X_PROBE_OFFSET_FROM_EXTRUDER 10
- * #define Y_PROBE_OFFSET_FROM_EXTRUDER 10
+ * In the following example the X and Y offsets are both positive:
+ * #define X_PROBE_OFFSET_FROM_EXTRUDER 10
+ * #define Y_PROBE_OFFSET_FROM_EXTRUDER 10
*
- * +-- BACK ---+
- * | |
- * L | (+) P | R <-- probe (20,20)
- * E | | I
- * F | (-) N (+) | G <-- nozzle (10,10)
- * T | | H
- * | (-) | T
- * | |
- * O-- FRONT --+
- * (0,0)
+ * +-- BACK ---+
+ * | |
+ * L | (+) P | R <-- probe (20,20)
+ * E | | I
+ * F | (-) N (+) | G <-- nozzle (10,10)
+ * T | | H
+ * | (-) | T
+ * | |
+ * O-- FRONT --+
+ * (0,0)
*/
#define X_PROBE_OFFSET_FROM_EXTRUDER 10 // X offset: -left +right [of the nozzle]
#define Y_PROBE_OFFSET_FROM_EXTRUDER 10 // Y offset: -front +behind [the nozzle]
@@ -2088,6 +2144,10 @@
#define NEOPIXEL_IS_SEQUENTIAL // Sequential display for temperature change - LED by LED. Disable to change all LEDs at once.
#define NEOPIXEL_BRIGHTNESS 127 // Initial brightness (0-255)
//#define NEOPIXEL_STARTUP_TEST // Cycle through colors at startup
+
+ // Use a single Neopixel LED for static (background) lighting
+ //#define NEOPIXEL_BKGD_LED_INDEX 0 // Index of the LED to use
+ //#define NEOPIXEL_BKGD_COLOR { 255, 255, 255, 0 } // R, G, B, W
#endif
/**
diff --git a/config/examples/Cartesio/Configuration_adv.h b/config/examples/Cartesio/Configuration_adv.h
index ba2a6fb92b..552643b839 100644
--- a/config/examples/Cartesio/Configuration_adv.h
+++ b/config/examples/Cartesio/Configuration_adv.h
@@ -382,10 +382,6 @@
#endif
#endif
-//===========================================================================
-//============================ Mechanical Settings ==========================
-//===========================================================================
-
// @section homing
// If you want endstops to stay on (by default) even when not homing
@@ -745,6 +741,7 @@
* A (A shifted) B (B shifted) IC
* Smoothie 0x2C (0x58) 0x2D (0x5A) MCP4451
* AZTEEG_X3_PRO 0x2C (0x58) 0x2E (0x5C) MCP4451
+ * AZTEEG_X5_MINI 0x2C (0x58) 0x2E (0x5C) MCP4451
* AZTEEG_X5_MINI_WIFI 0x58 0x5C MCP4451
* MIGHTYBOARD_REVE 0x2F (0x5E) MCP4018
*/
diff --git a/config/examples/Creality/CR-10/Configuration.h b/config/examples/Creality/CR-10/Configuration.h
index 7b56572bfd..5a9c04c86c 100644
--- a/config/examples/Creality/CR-10/Configuration.h
+++ b/config/examples/Creality/CR-10/Configuration.h
@@ -838,15 +838,71 @@
*/
//#define BLTOUCH
#if ENABLED(BLTOUCH)
- //#define BLTOUCH_DELAY 500 // Minimum Command delay (ms). Enable and increase if needed
+ /**
+ * Either: Use the defaults (recommended) or: For special purposes, use the following DEFINES
+ * Do not activate settings that the probe might not understand. Clones might misunderstand
+ * advanced commands.
+ *
+ * Note: If the probe is not deploying, check a "Cmd: Reset" and "Cmd: Self-Test" and then
+ * check the wiring of the BROWN, RED and ORANGE wires.
+ *
+ * Note: If the trigger signal of your probe is not being recognized, it has been very often
+ * because the BLACK and WHITE wires needed to be swapped. They are not "interchangeable"
+ * like they would be with a real switch. So please check the wiring first.
+ *
+ * Settings for all BLTouch and clone probes:
+ */
+
+ // Safety: The probe needs time to recognize the command.
+ // Minimum command delay (ms). Enable and increase if needed.
+ //#define BLTOUCH_DELAY 500
/**
- * BLTouch V3.0 and newer smart series
- * For genuine BLTouch 3.0 sensors. Clones may be confused by 3.0 command angles. YMMV.
- * If the pin trigger is not detected, first try swapping the black and white wires then toggle this.
+ * Settings for BLTOUCH Classic 1.2, 1.3 or BLTouch Smart 1.0, 2.0, 2.2, 3.0, 3.1, and most clones:
*/
- #define BLTOUCH_FORCE_5V_MODE
-#endif
+
+ // Feature: Switch into SW mode after a deploy. It makes the output pulse longer. Can be useful
+ // in special cases, like noisy or filtered input configurations.
+ //#define BLTOUCH_FORCE_SW_MODE
+
+ /**
+ * Settings for BLTouch Smart 3.0 and 3.1
+ * Summary:
+ * - Voltage modes: 5V and OD (open drain - "logic voltage free") output modes
+ * - High-Speed mode
+ * - Disable LCD voltage options
+ */
+
+ /**
+ * Danger: Don't activate 5V mode unless attached to a 5V-tolerant controller!
+ * V3.0 or 3.1: Set default mode to 5V mode at Marlin startup.
+ * If disabled, OD mode is the hard-coded default on 3.0
+ * On startup, Marlin will compare its eeprom to this vale. If the selected mode
+ * differs, a mode set eeprom write will be completed at initialization.
+ * Use the option below to force an eeprom write to a V3.1 probe regardless.
+ */
+ #define BLTOUCH_SET_5V_MODE
+
+ /**
+ * Safety: Activate if connecting a probe with an unknown voltage mode.
+ * V3.0: Set a probe into mode selected above at Marlin startup. Required for 5V mode on 3.0
+ * V3.1: Force a probe with unknown mode into selected mode at Marlin startup ( = Probe EEPROM write )
+ * To preserve the life of the probe, use this once then turn it off and re-flash.
+ */
+ //#define BLTOUCH_FORCE_MODE_SET
+
+ /**
+ * Use "HIGH SPEED" mode for probing.
+ * Danger: Disable if your probe sometimes fails. Only suitable for stable well-adjusted systems.
+ * This feature was designed for Delta's with very fast Z moves however higher speed cartesians may function
+ * If the machine cannot raise the probe fast enough after a trigger, it may enter a fault state.
+ */
+ //#define BLTOUCH_HS_MODE
+
+ // Safety: Enable voltage mode settings in the LCD menu.
+ //#define BLTOUCH_LCD_VOLTAGE_MENU
+
+#endif // BLTOUCH
// A probe that is deployed and stowed with a solenoid pin (SOL1_PIN)
//#define SOLENOID_PROBE
@@ -867,23 +923,23 @@
//
/**
- * Z Probe to nozzle (X,Y) offset, relative to (0, 0).
- * X and Y offsets must be integers.
+ * Z Probe to nozzle (X,Y) offset, relative to (0, 0).
+ * X and Y offsets must be integers.
*
- * In the following example the X and Y offsets are both positive:
- * #define X_PROBE_OFFSET_FROM_EXTRUDER 10
- * #define Y_PROBE_OFFSET_FROM_EXTRUDER 10
+ * In the following example the X and Y offsets are both positive:
+ * #define X_PROBE_OFFSET_FROM_EXTRUDER 10
+ * #define Y_PROBE_OFFSET_FROM_EXTRUDER 10
*
- * +-- BACK ---+
- * | |
- * L | (+) P | R <-- probe (20,20)
- * E | | I
- * F | (-) N (+) | G <-- nozzle (10,10)
- * T | | H
- * | (-) | T
- * | |
- * O-- FRONT --+
- * (0,0)
+ * +-- BACK ---+
+ * | |
+ * L | (+) P | R <-- probe (20,20)
+ * E | | I
+ * F | (-) N (+) | G <-- nozzle (10,10)
+ * T | | H
+ * | (-) | T
+ * | |
+ * O-- FRONT --+
+ * (0,0)
*/
#define X_PROBE_OFFSET_FROM_EXTRUDER 10 // X offset: -left +right [of the nozzle]
#define Y_PROBE_OFFSET_FROM_EXTRUDER 10 // Y offset: -front +behind [the nozzle]
@@ -2099,6 +2155,10 @@
#define NEOPIXEL_IS_SEQUENTIAL // Sequential display for temperature change - LED by LED. Disable to change all LEDs at once.
#define NEOPIXEL_BRIGHTNESS 127 // Initial brightness (0-255)
//#define NEOPIXEL_STARTUP_TEST // Cycle through colors at startup
+
+ // Use a single Neopixel LED for static (background) lighting
+ //#define NEOPIXEL_BKGD_LED_INDEX 0 // Index of the LED to use
+ //#define NEOPIXEL_BKGD_COLOR { 255, 255, 255, 0 } // R, G, B, W
#endif
/**
diff --git a/config/examples/Creality/CR-10/Configuration_adv.h b/config/examples/Creality/CR-10/Configuration_adv.h
index 0af4542443..a3ed0745f6 100644
--- a/config/examples/Creality/CR-10/Configuration_adv.h
+++ b/config/examples/Creality/CR-10/Configuration_adv.h
@@ -382,10 +382,6 @@
#endif
#endif
-//===========================================================================
-//============================ Mechanical Settings ==========================
-//===========================================================================
-
// @section homing
// If you want endstops to stay on (by default) even when not homing
@@ -745,6 +741,7 @@
* A (A shifted) B (B shifted) IC
* Smoothie 0x2C (0x58) 0x2D (0x5A) MCP4451
* AZTEEG_X3_PRO 0x2C (0x58) 0x2E (0x5C) MCP4451
+ * AZTEEG_X5_MINI 0x2C (0x58) 0x2E (0x5C) MCP4451
* AZTEEG_X5_MINI_WIFI 0x58 0x5C MCP4451
* MIGHTYBOARD_REVE 0x2F (0x5E) MCP4018
*/
diff --git a/config/examples/Creality/CR-10S/Configuration.h b/config/examples/Creality/CR-10S/Configuration.h
index 76184c285a..fe9b7a600e 100644
--- a/config/examples/Creality/CR-10S/Configuration.h
+++ b/config/examples/Creality/CR-10S/Configuration.h
@@ -828,15 +828,71 @@
*/
//#define BLTOUCH
#if ENABLED(BLTOUCH)
- //#define BLTOUCH_DELAY 500 // Minimum Command delay (ms). Enable and increase if needed
+ /**
+ * Either: Use the defaults (recommended) or: For special purposes, use the following DEFINES
+ * Do not activate settings that the probe might not understand. Clones might misunderstand
+ * advanced commands.
+ *
+ * Note: If the probe is not deploying, check a "Cmd: Reset" and "Cmd: Self-Test" and then
+ * check the wiring of the BROWN, RED and ORANGE wires.
+ *
+ * Note: If the trigger signal of your probe is not being recognized, it has been very often
+ * because the BLACK and WHITE wires needed to be swapped. They are not "interchangeable"
+ * like they would be with a real switch. So please check the wiring first.
+ *
+ * Settings for all BLTouch and clone probes:
+ */
+
+ // Safety: The probe needs time to recognize the command.
+ // Minimum command delay (ms). Enable and increase if needed.
+ //#define BLTOUCH_DELAY 500
/**
- * BLTouch V3.0 and newer smart series
- * For genuine BLTouch 3.0 sensors. Clones may be confused by 3.0 command angles. YMMV.
- * If the pin trigger is not detected, first try swapping the black and white wires then toggle this.
+ * Settings for BLTOUCH Classic 1.2, 1.3 or BLTouch Smart 1.0, 2.0, 2.2, 3.0, 3.1, and most clones:
*/
- #define BLTOUCH_FORCE_5V_MODE
-#endif
+
+ // Feature: Switch into SW mode after a deploy. It makes the output pulse longer. Can be useful
+ // in special cases, like noisy or filtered input configurations.
+ //#define BLTOUCH_FORCE_SW_MODE
+
+ /**
+ * Settings for BLTouch Smart 3.0 and 3.1
+ * Summary:
+ * - Voltage modes: 5V and OD (open drain - "logic voltage free") output modes
+ * - High-Speed mode
+ * - Disable LCD voltage options
+ */
+
+ /**
+ * Danger: Don't activate 5V mode unless attached to a 5V-tolerant controller!
+ * V3.0 or 3.1: Set default mode to 5V mode at Marlin startup.
+ * If disabled, OD mode is the hard-coded default on 3.0
+ * On startup, Marlin will compare its eeprom to this vale. If the selected mode
+ * differs, a mode set eeprom write will be completed at initialization.
+ * Use the option below to force an eeprom write to a V3.1 probe regardless.
+ */
+ #define BLTOUCH_SET_5V_MODE
+
+ /**
+ * Safety: Activate if connecting a probe with an unknown voltage mode.
+ * V3.0: Set a probe into mode selected above at Marlin startup. Required for 5V mode on 3.0
+ * V3.1: Force a probe with unknown mode into selected mode at Marlin startup ( = Probe EEPROM write )
+ * To preserve the life of the probe, use this once then turn it off and re-flash.
+ */
+ //#define BLTOUCH_FORCE_MODE_SET
+
+ /**
+ * Use "HIGH SPEED" mode for probing.
+ * Danger: Disable if your probe sometimes fails. Only suitable for stable well-adjusted systems.
+ * This feature was designed for Delta's with very fast Z moves however higher speed cartesians may function
+ * If the machine cannot raise the probe fast enough after a trigger, it may enter a fault state.
+ */
+ //#define BLTOUCH_HS_MODE
+
+ // Safety: Enable voltage mode settings in the LCD menu.
+ //#define BLTOUCH_LCD_VOLTAGE_MENU
+
+#endif // BLTOUCH
// A probe that is deployed and stowed with a solenoid pin (SOL1_PIN)
//#define SOLENOID_PROBE
@@ -857,23 +913,23 @@
//
/**
- * Z Probe to nozzle (X,Y) offset, relative to (0, 0).
- * X and Y offsets must be integers.
+ * Z Probe to nozzle (X,Y) offset, relative to (0, 0).
+ * X and Y offsets must be integers.
*
- * In the following example the X and Y offsets are both positive:
- * #define X_PROBE_OFFSET_FROM_EXTRUDER 10
- * #define Y_PROBE_OFFSET_FROM_EXTRUDER 10
+ * In the following example the X and Y offsets are both positive:
+ * #define X_PROBE_OFFSET_FROM_EXTRUDER 10
+ * #define Y_PROBE_OFFSET_FROM_EXTRUDER 10
*
- * +-- BACK ---+
- * | |
- * L | (+) P | R <-- probe (20,20)
- * E | | I
- * F | (-) N (+) | G <-- nozzle (10,10)
- * T | | H
- * | (-) | T
- * | |
- * O-- FRONT --+
- * (0,0)
+ * +-- BACK ---+
+ * | |
+ * L | (+) P | R <-- probe (20,20)
+ * E | | I
+ * F | (-) N (+) | G <-- nozzle (10,10)
+ * T | | H
+ * | (-) | T
+ * | |
+ * O-- FRONT --+
+ * (0,0)
*/
#define X_PROBE_OFFSET_FROM_EXTRUDER 10 // X offset: -left +right [of the nozzle]
#define Y_PROBE_OFFSET_FROM_EXTRUDER 10 // Y offset: -front +behind [the nozzle]
@@ -2090,6 +2146,10 @@
#define NEOPIXEL_IS_SEQUENTIAL // Sequential display for temperature change - LED by LED. Disable to change all LEDs at once.
#define NEOPIXEL_BRIGHTNESS 127 // Initial brightness (0-255)
//#define NEOPIXEL_STARTUP_TEST // Cycle through colors at startup
+
+ // Use a single Neopixel LED for static (background) lighting
+ //#define NEOPIXEL_BKGD_LED_INDEX 0 // Index of the LED to use
+ //#define NEOPIXEL_BKGD_COLOR { 255, 255, 255, 0 } // R, G, B, W
#endif
/**
diff --git a/config/examples/Creality/CR-10S/Configuration_adv.h b/config/examples/Creality/CR-10S/Configuration_adv.h
index 828dbab298..b6d4c7d963 100644
--- a/config/examples/Creality/CR-10S/Configuration_adv.h
+++ b/config/examples/Creality/CR-10S/Configuration_adv.h
@@ -382,10 +382,6 @@
#endif
#endif
-//===========================================================================
-//============================ Mechanical Settings ==========================
-//===========================================================================
-
// @section homing
// If you want endstops to stay on (by default) even when not homing
@@ -745,6 +741,7 @@
* A (A shifted) B (B shifted) IC
* Smoothie 0x2C (0x58) 0x2D (0x5A) MCP4451
* AZTEEG_X3_PRO 0x2C (0x58) 0x2E (0x5C) MCP4451
+ * AZTEEG_X5_MINI 0x2C (0x58) 0x2E (0x5C) MCP4451
* AZTEEG_X5_MINI_WIFI 0x58 0x5C MCP4451
* MIGHTYBOARD_REVE 0x2F (0x5E) MCP4018
*/
diff --git a/config/examples/Creality/CR-10_5S/Configuration.h b/config/examples/Creality/CR-10_5S/Configuration.h
index e6639de818..71c38600a8 100644
--- a/config/examples/Creality/CR-10_5S/Configuration.h
+++ b/config/examples/Creality/CR-10_5S/Configuration.h
@@ -829,15 +829,71 @@
*/
//#define BLTOUCH
#if ENABLED(BLTOUCH)
- //#define BLTOUCH_DELAY 500 // Minimum Command delay (ms). Enable and increase if needed
+ /**
+ * Either: Use the defaults (recommended) or: For special purposes, use the following DEFINES
+ * Do not activate settings that the probe might not understand. Clones might misunderstand
+ * advanced commands.
+ *
+ * Note: If the probe is not deploying, check a "Cmd: Reset" and "Cmd: Self-Test" and then
+ * check the wiring of the BROWN, RED and ORANGE wires.
+ *
+ * Note: If the trigger signal of your probe is not being recognized, it has been very often
+ * because the BLACK and WHITE wires needed to be swapped. They are not "interchangeable"
+ * like they would be with a real switch. So please check the wiring first.
+ *
+ * Settings for all BLTouch and clone probes:
+ */
+
+ // Safety: The probe needs time to recognize the command.
+ // Minimum command delay (ms). Enable and increase if needed.
+ //#define BLTOUCH_DELAY 500
/**
- * BLTouch V3.0 and newer smart series
- * For genuine BLTouch 3.0 sensors. Clones may be confused by 3.0 command angles. YMMV.
- * If the pin trigger is not detected, first try swapping the black and white wires then toggle this.
+ * Settings for BLTOUCH Classic 1.2, 1.3 or BLTouch Smart 1.0, 2.0, 2.2, 3.0, 3.1, and most clones:
*/
- #define BLTOUCH_FORCE_5V_MODE
-#endif
+
+ // Feature: Switch into SW mode after a deploy. It makes the output pulse longer. Can be useful
+ // in special cases, like noisy or filtered input configurations.
+ //#define BLTOUCH_FORCE_SW_MODE
+
+ /**
+ * Settings for BLTouch Smart 3.0 and 3.1
+ * Summary:
+ * - Voltage modes: 5V and OD (open drain - "logic voltage free") output modes
+ * - High-Speed mode
+ * - Disable LCD voltage options
+ */
+
+ /**
+ * Danger: Don't activate 5V mode unless attached to a 5V-tolerant controller!
+ * V3.0 or 3.1: Set default mode to 5V mode at Marlin startup.
+ * If disabled, OD mode is the hard-coded default on 3.0
+ * On startup, Marlin will compare its eeprom to this vale. If the selected mode
+ * differs, a mode set eeprom write will be completed at initialization.
+ * Use the option below to force an eeprom write to a V3.1 probe regardless.
+ */
+ #define BLTOUCH_SET_5V_MODE
+
+ /**
+ * Safety: Activate if connecting a probe with an unknown voltage mode.
+ * V3.0: Set a probe into mode selected above at Marlin startup. Required for 5V mode on 3.0
+ * V3.1: Force a probe with unknown mode into selected mode at Marlin startup ( = Probe EEPROM write )
+ * To preserve the life of the probe, use this once then turn it off and re-flash.
+ */
+ //#define BLTOUCH_FORCE_MODE_SET
+
+ /**
+ * Use "HIGH SPEED" mode for probing.
+ * Danger: Disable if your probe sometimes fails. Only suitable for stable well-adjusted systems.
+ * This feature was designed for Delta's with very fast Z moves however higher speed cartesians may function
+ * If the machine cannot raise the probe fast enough after a trigger, it may enter a fault state.
+ */
+ //#define BLTOUCH_HS_MODE
+
+ // Safety: Enable voltage mode settings in the LCD menu.
+ //#define BLTOUCH_LCD_VOLTAGE_MENU
+
+#endif // BLTOUCH
// A probe that is deployed and stowed with a solenoid pin (SOL1_PIN)
//#define SOLENOID_PROBE
@@ -858,23 +914,23 @@
//
/**
- * Z Probe to nozzle (X,Y) offset, relative to (0, 0).
- * X and Y offsets must be integers.
+ * Z Probe to nozzle (X,Y) offset, relative to (0, 0).
+ * X and Y offsets must be integers.
*
- * In the following example the X and Y offsets are both positive:
- * #define X_PROBE_OFFSET_FROM_EXTRUDER 10
- * #define Y_PROBE_OFFSET_FROM_EXTRUDER 10
+ * In the following example the X and Y offsets are both positive:
+ * #define X_PROBE_OFFSET_FROM_EXTRUDER 10
+ * #define Y_PROBE_OFFSET_FROM_EXTRUDER 10
*
- * +-- BACK ---+
- * | |
- * L | (+) P | R <-- probe (20,20)
- * E | | I
- * F | (-) N (+) | G <-- nozzle (10,10)
- * T | | H
- * | (-) | T
- * | |
- * O-- FRONT --+
- * (0,0)
+ * +-- BACK ---+
+ * | |
+ * L | (+) P | R <-- probe (20,20)
+ * E | | I
+ * F | (-) N (+) | G <-- nozzle (10,10)
+ * T | | H
+ * | (-) | T
+ * | |
+ * O-- FRONT --+
+ * (0,0)
*/
#define X_PROBE_OFFSET_FROM_EXTRUDER 10 // X offset: -left +right [of the nozzle]
#define Y_PROBE_OFFSET_FROM_EXTRUDER 10 // Y offset: -front +behind [the nozzle]
@@ -2092,6 +2148,10 @@
#define NEOPIXEL_IS_SEQUENTIAL // Sequential display for temperature change - LED by LED. Disable to change all LEDs at once.
#define NEOPIXEL_BRIGHTNESS 127 // Initial brightness (0-255)
//#define NEOPIXEL_STARTUP_TEST // Cycle through colors at startup
+
+ // Use a single Neopixel LED for static (background) lighting
+ //#define NEOPIXEL_BKGD_LED_INDEX 0 // Index of the LED to use
+ //#define NEOPIXEL_BKGD_COLOR { 255, 255, 255, 0 } // R, G, B, W
#endif
/**
diff --git a/config/examples/Creality/CR-10_5S/Configuration_adv.h b/config/examples/Creality/CR-10_5S/Configuration_adv.h
index e2b0462965..beac229e5a 100644
--- a/config/examples/Creality/CR-10_5S/Configuration_adv.h
+++ b/config/examples/Creality/CR-10_5S/Configuration_adv.h
@@ -382,10 +382,6 @@
#endif
#endif
-//===========================================================================
-//============================ Mechanical Settings ==========================
-//===========================================================================
-
// @section homing
// If you want endstops to stay on (by default) even when not homing
@@ -745,6 +741,7 @@
* A (A shifted) B (B shifted) IC
* Smoothie 0x2C (0x58) 0x2D (0x5A) MCP4451
* AZTEEG_X3_PRO 0x2C (0x58) 0x2E (0x5C) MCP4451
+ * AZTEEG_X5_MINI 0x2C (0x58) 0x2E (0x5C) MCP4451
* AZTEEG_X5_MINI_WIFI 0x58 0x5C MCP4451
* MIGHTYBOARD_REVE 0x2F (0x5E) MCP4018
*/
diff --git a/config/examples/Creality/CR-10mini/Configuration.h b/config/examples/Creality/CR-10mini/Configuration.h
index 8a34bdd476..4345f0767b 100644
--- a/config/examples/Creality/CR-10mini/Configuration.h
+++ b/config/examples/Creality/CR-10mini/Configuration.h
@@ -847,15 +847,71 @@
*/
//#define BLTOUCH
#if ENABLED(BLTOUCH)
- //#define BLTOUCH_DELAY 500 // Minimum Command delay (ms). Enable and increase if needed
+ /**
+ * Either: Use the defaults (recommended) or: For special purposes, use the following DEFINES
+ * Do not activate settings that the probe might not understand. Clones might misunderstand
+ * advanced commands.
+ *
+ * Note: If the probe is not deploying, check a "Cmd: Reset" and "Cmd: Self-Test" and then
+ * check the wiring of the BROWN, RED and ORANGE wires.
+ *
+ * Note: If the trigger signal of your probe is not being recognized, it has been very often
+ * because the BLACK and WHITE wires needed to be swapped. They are not "interchangeable"
+ * like they would be with a real switch. So please check the wiring first.
+ *
+ * Settings for all BLTouch and clone probes:
+ */
+
+ // Safety: The probe needs time to recognize the command.
+ // Minimum command delay (ms). Enable and increase if needed.
+ //#define BLTOUCH_DELAY 500
/**
- * BLTouch V3.0 and newer smart series
- * For genuine BLTouch 3.0 sensors. Clones may be confused by 3.0 command angles. YMMV.
- * If the pin trigger is not detected, first try swapping the black and white wires then toggle this.
+ * Settings for BLTOUCH Classic 1.2, 1.3 or BLTouch Smart 1.0, 2.0, 2.2, 3.0, 3.1, and most clones:
*/
- #define BLTOUCH_FORCE_5V_MODE
-#endif
+
+ // Feature: Switch into SW mode after a deploy. It makes the output pulse longer. Can be useful
+ // in special cases, like noisy or filtered input configurations.
+ //#define BLTOUCH_FORCE_SW_MODE
+
+ /**
+ * Settings for BLTouch Smart 3.0 and 3.1
+ * Summary:
+ * - Voltage modes: 5V and OD (open drain - "logic voltage free") output modes
+ * - High-Speed mode
+ * - Disable LCD voltage options
+ */
+
+ /**
+ * Danger: Don't activate 5V mode unless attached to a 5V-tolerant controller!
+ * V3.0 or 3.1: Set default mode to 5V mode at Marlin startup.
+ * If disabled, OD mode is the hard-coded default on 3.0
+ * On startup, Marlin will compare its eeprom to this vale. If the selected mode
+ * differs, a mode set eeprom write will be completed at initialization.
+ * Use the option below to force an eeprom write to a V3.1 probe regardless.
+ */
+ #define BLTOUCH_SET_5V_MODE
+
+ /**
+ * Safety: Activate if connecting a probe with an unknown voltage mode.
+ * V3.0: Set a probe into mode selected above at Marlin startup. Required for 5V mode on 3.0
+ * V3.1: Force a probe with unknown mode into selected mode at Marlin startup ( = Probe EEPROM write )
+ * To preserve the life of the probe, use this once then turn it off and re-flash.
+ */
+ //#define BLTOUCH_FORCE_MODE_SET
+
+ /**
+ * Use "HIGH SPEED" mode for probing.
+ * Danger: Disable if your probe sometimes fails. Only suitable for stable well-adjusted systems.
+ * This feature was designed for Delta's with very fast Z moves however higher speed cartesians may function
+ * If the machine cannot raise the probe fast enough after a trigger, it may enter a fault state.
+ */
+ //#define BLTOUCH_HS_MODE
+
+ // Safety: Enable voltage mode settings in the LCD menu.
+ //#define BLTOUCH_LCD_VOLTAGE_MENU
+
+#endif // BLTOUCH
// A probe that is deployed and stowed with a solenoid pin (SOL1_PIN)
//#define SOLENOID_PROBE
@@ -876,23 +932,23 @@
//
/**
- * Z Probe to nozzle (X,Y) offset, relative to (0, 0).
- * X and Y offsets must be integers.
+ * Z Probe to nozzle (X,Y) offset, relative to (0, 0).
+ * X and Y offsets must be integers.
*
- * In the following example the X and Y offsets are both positive:
- * #define X_PROBE_OFFSET_FROM_EXTRUDER 10
- * #define Y_PROBE_OFFSET_FROM_EXTRUDER 10
+ * In the following example the X and Y offsets are both positive:
+ * #define X_PROBE_OFFSET_FROM_EXTRUDER 10
+ * #define Y_PROBE_OFFSET_FROM_EXTRUDER 10
*
- * +-- BACK ---+
- * | |
- * L | (+) P | R <-- probe (20,20)
- * E | | I
- * F | (-) N (+) | G <-- nozzle (10,10)
- * T | | H
- * | (-) | T
- * | |
- * O-- FRONT --+
- * (0,0)
+ * +-- BACK ---+
+ * | |
+ * L | (+) P | R <-- probe (20,20)
+ * E | | I
+ * F | (-) N (+) | G <-- nozzle (10,10)
+ * T | | H
+ * | (-) | T
+ * | |
+ * O-- FRONT --+
+ * (0,0)
*/
#define X_PROBE_OFFSET_FROM_EXTRUDER 10 // X offset: -left +right [of the nozzle]
#define Y_PROBE_OFFSET_FROM_EXTRUDER 10 // Y offset: -front +behind [the nozzle]
@@ -2108,6 +2164,10 @@
#define NEOPIXEL_IS_SEQUENTIAL // Sequential display for temperature change - LED by LED. Disable to change all LEDs at once.
#define NEOPIXEL_BRIGHTNESS 127 // Initial brightness (0-255)
//#define NEOPIXEL_STARTUP_TEST // Cycle through colors at startup
+
+ // Use a single Neopixel LED for static (background) lighting
+ //#define NEOPIXEL_BKGD_LED_INDEX 0 // Index of the LED to use
+ //#define NEOPIXEL_BKGD_COLOR { 255, 255, 255, 0 } // R, G, B, W
#endif
/**
diff --git a/config/examples/Creality/CR-10mini/Configuration_adv.h b/config/examples/Creality/CR-10mini/Configuration_adv.h
index af56eb00ab..ac34073407 100644
--- a/config/examples/Creality/CR-10mini/Configuration_adv.h
+++ b/config/examples/Creality/CR-10mini/Configuration_adv.h
@@ -382,10 +382,6 @@
#endif
#endif
-//===========================================================================
-//============================ Mechanical Settings ==========================
-//===========================================================================
-
// @section homing
// If you want endstops to stay on (by default) even when not homing
@@ -745,6 +741,7 @@
* A (A shifted) B (B shifted) IC
* Smoothie 0x2C (0x58) 0x2D (0x5A) MCP4451
* AZTEEG_X3_PRO 0x2C (0x58) 0x2E (0x5C) MCP4451
+ * AZTEEG_X5_MINI 0x2C (0x58) 0x2E (0x5C) MCP4451
* AZTEEG_X5_MINI_WIFI 0x58 0x5C MCP4451
* MIGHTYBOARD_REVE 0x2F (0x5E) MCP4018
*/
diff --git a/config/examples/Creality/CR-8/Configuration.h b/config/examples/Creality/CR-8/Configuration.h
index 545e8a22e6..c2891b70d0 100644
--- a/config/examples/Creality/CR-8/Configuration.h
+++ b/config/examples/Creality/CR-8/Configuration.h
@@ -838,15 +838,71 @@
*/
//#define BLTOUCH
#if ENABLED(BLTOUCH)
- //#define BLTOUCH_DELAY 500 // Minimum Command delay (ms). Enable and increase if needed
+ /**
+ * Either: Use the defaults (recommended) or: For special purposes, use the following DEFINES
+ * Do not activate settings that the probe might not understand. Clones might misunderstand
+ * advanced commands.
+ *
+ * Note: If the probe is not deploying, check a "Cmd: Reset" and "Cmd: Self-Test" and then
+ * check the wiring of the BROWN, RED and ORANGE wires.
+ *
+ * Note: If the trigger signal of your probe is not being recognized, it has been very often
+ * because the BLACK and WHITE wires needed to be swapped. They are not "interchangeable"
+ * like they would be with a real switch. So please check the wiring first.
+ *
+ * Settings for all BLTouch and clone probes:
+ */
+
+ // Safety: The probe needs time to recognize the command.
+ // Minimum command delay (ms). Enable and increase if needed.
+ //#define BLTOUCH_DELAY 500
/**
- * BLTouch V3.0 and newer smart series
- * For genuine BLTouch 3.0 sensors. Clones may be confused by 3.0 command angles. YMMV.
- * If the pin trigger is not detected, first try swapping the black and white wires then toggle this.
+ * Settings for BLTOUCH Classic 1.2, 1.3 or BLTouch Smart 1.0, 2.0, 2.2, 3.0, 3.1, and most clones:
*/
- #define BLTOUCH_FORCE_5V_MODE
-#endif
+
+ // Feature: Switch into SW mode after a deploy. It makes the output pulse longer. Can be useful
+ // in special cases, like noisy or filtered input configurations.
+ //#define BLTOUCH_FORCE_SW_MODE
+
+ /**
+ * Settings for BLTouch Smart 3.0 and 3.1
+ * Summary:
+ * - Voltage modes: 5V and OD (open drain - "logic voltage free") output modes
+ * - High-Speed mode
+ * - Disable LCD voltage options
+ */
+
+ /**
+ * Danger: Don't activate 5V mode unless attached to a 5V-tolerant controller!
+ * V3.0 or 3.1: Set default mode to 5V mode at Marlin startup.
+ * If disabled, OD mode is the hard-coded default on 3.0
+ * On startup, Marlin will compare its eeprom to this vale. If the selected mode
+ * differs, a mode set eeprom write will be completed at initialization.
+ * Use the option below to force an eeprom write to a V3.1 probe regardless.
+ */
+ #define BLTOUCH_SET_5V_MODE
+
+ /**
+ * Safety: Activate if connecting a probe with an unknown voltage mode.
+ * V3.0: Set a probe into mode selected above at Marlin startup. Required for 5V mode on 3.0
+ * V3.1: Force a probe with unknown mode into selected mode at Marlin startup ( = Probe EEPROM write )
+ * To preserve the life of the probe, use this once then turn it off and re-flash.
+ */
+ //#define BLTOUCH_FORCE_MODE_SET
+
+ /**
+ * Use "HIGH SPEED" mode for probing.
+ * Danger: Disable if your probe sometimes fails. Only suitable for stable well-adjusted systems.
+ * This feature was designed for Delta's with very fast Z moves however higher speed cartesians may function
+ * If the machine cannot raise the probe fast enough after a trigger, it may enter a fault state.
+ */
+ //#define BLTOUCH_HS_MODE
+
+ // Safety: Enable voltage mode settings in the LCD menu.
+ //#define BLTOUCH_LCD_VOLTAGE_MENU
+
+#endif // BLTOUCH
// A probe that is deployed and stowed with a solenoid pin (SOL1_PIN)
//#define SOLENOID_PROBE
@@ -867,23 +923,23 @@
//
/**
- * Z Probe to nozzle (X,Y) offset, relative to (0, 0).
- * X and Y offsets must be integers.
+ * Z Probe to nozzle (X,Y) offset, relative to (0, 0).
+ * X and Y offsets must be integers.
*
- * In the following example the X and Y offsets are both positive:
- * #define X_PROBE_OFFSET_FROM_EXTRUDER 10
- * #define Y_PROBE_OFFSET_FROM_EXTRUDER 10
+ * In the following example the X and Y offsets are both positive:
+ * #define X_PROBE_OFFSET_FROM_EXTRUDER 10
+ * #define Y_PROBE_OFFSET_FROM_EXTRUDER 10
*
- * +-- BACK ---+
- * | |
- * L | (+) P | R <-- probe (20,20)
- * E | | I
- * F | (-) N (+) | G <-- nozzle (10,10)
- * T | | H
- * | (-) | T
- * | |
- * O-- FRONT --+
- * (0,0)
+ * +-- BACK ---+
+ * | |
+ * L | (+) P | R <-- probe (20,20)
+ * E | | I
+ * F | (-) N (+) | G <-- nozzle (10,10)
+ * T | | H
+ * | (-) | T
+ * | |
+ * O-- FRONT --+
+ * (0,0)
*/
#define X_PROBE_OFFSET_FROM_EXTRUDER 10 // X offset: -left +right [of the nozzle]
#define Y_PROBE_OFFSET_FROM_EXTRUDER 10 // Y offset: -front +behind [the nozzle]
@@ -2099,6 +2155,10 @@
#define NEOPIXEL_IS_SEQUENTIAL // Sequential display for temperature change - LED by LED. Disable to change all LEDs at once.
#define NEOPIXEL_BRIGHTNESS 127 // Initial brightness (0-255)
//#define NEOPIXEL_STARTUP_TEST // Cycle through colors at startup
+
+ // Use a single Neopixel LED for static (background) lighting
+ //#define NEOPIXEL_BKGD_LED_INDEX 0 // Index of the LED to use
+ //#define NEOPIXEL_BKGD_COLOR { 255, 255, 255, 0 } // R, G, B, W
#endif
/**
diff --git a/config/examples/Creality/CR-8/Configuration_adv.h b/config/examples/Creality/CR-8/Configuration_adv.h
index cdce190345..9a903c0a70 100644
--- a/config/examples/Creality/CR-8/Configuration_adv.h
+++ b/config/examples/Creality/CR-8/Configuration_adv.h
@@ -382,10 +382,6 @@
#endif
#endif
-//===========================================================================
-//============================ Mechanical Settings ==========================
-//===========================================================================
-
// @section homing
// If you want endstops to stay on (by default) even when not homing
@@ -745,6 +741,7 @@
* A (A shifted) B (B shifted) IC
* Smoothie 0x2C (0x58) 0x2D (0x5A) MCP4451
* AZTEEG_X3_PRO 0x2C (0x58) 0x2E (0x5C) MCP4451
+ * AZTEEG_X5_MINI 0x2C (0x58) 0x2E (0x5C) MCP4451
* AZTEEG_X5_MINI_WIFI 0x58 0x5C MCP4451
* MIGHTYBOARD_REVE 0x2F (0x5E) MCP4018
*/
diff --git a/config/examples/Creality/Ender-2/Configuration.h b/config/examples/Creality/Ender-2/Configuration.h
index 94511fc266..02cdca926f 100644
--- a/config/examples/Creality/Ender-2/Configuration.h
+++ b/config/examples/Creality/Ender-2/Configuration.h
@@ -832,15 +832,71 @@
*/
//#define BLTOUCH
#if ENABLED(BLTOUCH)
- //#define BLTOUCH_DELAY 500 // Minimum Command delay (ms). Enable and increase if needed
+ /**
+ * Either: Use the defaults (recommended) or: For special purposes, use the following DEFINES
+ * Do not activate settings that the probe might not understand. Clones might misunderstand
+ * advanced commands.
+ *
+ * Note: If the probe is not deploying, check a "Cmd: Reset" and "Cmd: Self-Test" and then
+ * check the wiring of the BROWN, RED and ORANGE wires.
+ *
+ * Note: If the trigger signal of your probe is not being recognized, it has been very often
+ * because the BLACK and WHITE wires needed to be swapped. They are not "interchangeable"
+ * like they would be with a real switch. So please check the wiring first.
+ *
+ * Settings for all BLTouch and clone probes:
+ */
+
+ // Safety: The probe needs time to recognize the command.
+ // Minimum command delay (ms). Enable and increase if needed.
+ //#define BLTOUCH_DELAY 500
/**
- * BLTouch V3.0 and newer smart series
- * For genuine BLTouch 3.0 sensors. Clones may be confused by 3.0 command angles. YMMV.
- * If the pin trigger is not detected, first try swapping the black and white wires then toggle this.
+ * Settings for BLTOUCH Classic 1.2, 1.3 or BLTouch Smart 1.0, 2.0, 2.2, 3.0, 3.1, and most clones:
*/
- #define BLTOUCH_FORCE_5V_MODE
-#endif
+
+ // Feature: Switch into SW mode after a deploy. It makes the output pulse longer. Can be useful
+ // in special cases, like noisy or filtered input configurations.
+ //#define BLTOUCH_FORCE_SW_MODE
+
+ /**
+ * Settings for BLTouch Smart 3.0 and 3.1
+ * Summary:
+ * - Voltage modes: 5V and OD (open drain - "logic voltage free") output modes
+ * - High-Speed mode
+ * - Disable LCD voltage options
+ */
+
+ /**
+ * Danger: Don't activate 5V mode unless attached to a 5V-tolerant controller!
+ * V3.0 or 3.1: Set default mode to 5V mode at Marlin startup.
+ * If disabled, OD mode is the hard-coded default on 3.0
+ * On startup, Marlin will compare its eeprom to this vale. If the selected mode
+ * differs, a mode set eeprom write will be completed at initialization.
+ * Use the option below to force an eeprom write to a V3.1 probe regardless.
+ */
+ #define BLTOUCH_SET_5V_MODE
+
+ /**
+ * Safety: Activate if connecting a probe with an unknown voltage mode.
+ * V3.0: Set a probe into mode selected above at Marlin startup. Required for 5V mode on 3.0
+ * V3.1: Force a probe with unknown mode into selected mode at Marlin startup ( = Probe EEPROM write )
+ * To preserve the life of the probe, use this once then turn it off and re-flash.
+ */
+ //#define BLTOUCH_FORCE_MODE_SET
+
+ /**
+ * Use "HIGH SPEED" mode for probing.
+ * Danger: Disable if your probe sometimes fails. Only suitable for stable well-adjusted systems.
+ * This feature was designed for Delta's with very fast Z moves however higher speed cartesians may function
+ * If the machine cannot raise the probe fast enough after a trigger, it may enter a fault state.
+ */
+ //#define BLTOUCH_HS_MODE
+
+ // Safety: Enable voltage mode settings in the LCD menu.
+ //#define BLTOUCH_LCD_VOLTAGE_MENU
+
+#endif // BLTOUCH
// A probe that is deployed and stowed with a solenoid pin (SOL1_PIN)
//#define SOLENOID_PROBE
@@ -861,23 +917,23 @@
//
/**
- * Z Probe to nozzle (X,Y) offset, relative to (0, 0).
- * X and Y offsets must be integers.
+ * Z Probe to nozzle (X,Y) offset, relative to (0, 0).
+ * X and Y offsets must be integers.
*
- * In the following example the X and Y offsets are both positive:
- * #define X_PROBE_OFFSET_FROM_EXTRUDER 10
- * #define Y_PROBE_OFFSET_FROM_EXTRUDER 10
+ * In the following example the X and Y offsets are both positive:
+ * #define X_PROBE_OFFSET_FROM_EXTRUDER 10
+ * #define Y_PROBE_OFFSET_FROM_EXTRUDER 10
*
- * +-- BACK ---+
- * | |
- * L | (+) P | R <-- probe (20,20)
- * E | | I
- * F | (-) N (+) | G <-- nozzle (10,10)
- * T | | H
- * | (-) | T
- * | |
- * O-- FRONT --+
- * (0,0)
+ * +-- BACK ---+
+ * | |
+ * L | (+) P | R <-- probe (20,20)
+ * E | | I
+ * F | (-) N (+) | G <-- nozzle (10,10)
+ * T | | H
+ * | (-) | T
+ * | |
+ * O-- FRONT --+
+ * (0,0)
*/
#define X_PROBE_OFFSET_FROM_EXTRUDER 10 // X offset: -left +right [of the nozzle]
#define Y_PROBE_OFFSET_FROM_EXTRUDER 10 // Y offset: -front +behind [the nozzle]
@@ -2093,6 +2149,10 @@
#define NEOPIXEL_IS_SEQUENTIAL // Sequential display for temperature change - LED by LED. Disable to change all LEDs at once.
#define NEOPIXEL_BRIGHTNESS 127 // Initial brightness (0-255)
//#define NEOPIXEL_STARTUP_TEST // Cycle through colors at startup
+
+ // Use a single Neopixel LED for static (background) lighting
+ //#define NEOPIXEL_BKGD_LED_INDEX 0 // Index of the LED to use
+ //#define NEOPIXEL_BKGD_COLOR { 255, 255, 255, 0 } // R, G, B, W
#endif
/**
diff --git a/config/examples/Creality/Ender-2/Configuration_adv.h b/config/examples/Creality/Ender-2/Configuration_adv.h
index a38c1dc267..1827d4319c 100644
--- a/config/examples/Creality/Ender-2/Configuration_adv.h
+++ b/config/examples/Creality/Ender-2/Configuration_adv.h
@@ -382,10 +382,6 @@
#endif
#endif
-//===========================================================================
-//============================ Mechanical Settings ==========================
-//===========================================================================
-
// @section homing
// If you want endstops to stay on (by default) even when not homing
@@ -577,8 +573,11 @@
// @section lcd
-#if ENABLED(ULTIPANEL)
+#if EITHER(ULTIPANEL, EXTENSIBLE_UI)
#define MANUAL_FEEDRATE {50*60, 50*60, 4*60, 0} // Feedrates for manual moves along X, Y, Z, E from panel
+#endif
+
+#if ENABLED(ULTIPANEL)
#define MANUAL_E_MOVES_RELATIVE // Show LCD extruder moves as relative rather than absolute positions
#define ULTIPANEL_FEEDMULTIPLY // Comment to disable setting feedrate multiplier via encoder
#endif
@@ -742,6 +741,7 @@
* A (A shifted) B (B shifted) IC
* Smoothie 0x2C (0x58) 0x2D (0x5A) MCP4451
* AZTEEG_X3_PRO 0x2C (0x58) 0x2E (0x5C) MCP4451
+ * AZTEEG_X5_MINI 0x2C (0x58) 0x2E (0x5C) MCP4451
* AZTEEG_X5_MINI_WIFI 0x58 0x5C MCP4451
* MIGHTYBOARD_REVE 0x2F (0x5E) MCP4018
*/
diff --git a/config/examples/Creality/Ender-3/Configuration.h b/config/examples/Creality/Ender-3/Configuration.h
index 79140e24e3..35efebeba5 100644
--- a/config/examples/Creality/Ender-3/Configuration.h
+++ b/config/examples/Creality/Ender-3/Configuration.h
@@ -832,15 +832,71 @@
*/
//#define BLTOUCH
#if ENABLED(BLTOUCH)
- //#define BLTOUCH_DELAY 500 // Minimum Command delay (ms). Enable and increase if needed
+ /**
+ * Either: Use the defaults (recommended) or: For special purposes, use the following DEFINES
+ * Do not activate settings that the probe might not understand. Clones might misunderstand
+ * advanced commands.
+ *
+ * Note: If the probe is not deploying, check a "Cmd: Reset" and "Cmd: Self-Test" and then
+ * check the wiring of the BROWN, RED and ORANGE wires.
+ *
+ * Note: If the trigger signal of your probe is not being recognized, it has been very often
+ * because the BLACK and WHITE wires needed to be swapped. They are not "interchangeable"
+ * like they would be with a real switch. So please check the wiring first.
+ *
+ * Settings for all BLTouch and clone probes:
+ */
+
+ // Safety: The probe needs time to recognize the command.
+ // Minimum command delay (ms). Enable and increase if needed.
+ //#define BLTOUCH_DELAY 500
/**
- * BLTouch V3.0 and newer smart series
- * For genuine BLTouch 3.0 sensors. Clones may be confused by 3.0 command angles. YMMV.
- * If the pin trigger is not detected, first try swapping the black and white wires then toggle this.
+ * Settings for BLTOUCH Classic 1.2, 1.3 or BLTouch Smart 1.0, 2.0, 2.2, 3.0, 3.1, and most clones:
*/
- #define BLTOUCH_FORCE_5V_MODE
-#endif
+
+ // Feature: Switch into SW mode after a deploy. It makes the output pulse longer. Can be useful
+ // in special cases, like noisy or filtered input configurations.
+ //#define BLTOUCH_FORCE_SW_MODE
+
+ /**
+ * Settings for BLTouch Smart 3.0 and 3.1
+ * Summary:
+ * - Voltage modes: 5V and OD (open drain - "logic voltage free") output modes
+ * - High-Speed mode
+ * - Disable LCD voltage options
+ */
+
+ /**
+ * Danger: Don't activate 5V mode unless attached to a 5V-tolerant controller!
+ * V3.0 or 3.1: Set default mode to 5V mode at Marlin startup.
+ * If disabled, OD mode is the hard-coded default on 3.0
+ * On startup, Marlin will compare its eeprom to this vale. If the selected mode
+ * differs, a mode set eeprom write will be completed at initialization.
+ * Use the option below to force an eeprom write to a V3.1 probe regardless.
+ */
+ #define BLTOUCH_SET_5V_MODE
+
+ /**
+ * Safety: Activate if connecting a probe with an unknown voltage mode.
+ * V3.0: Set a probe into mode selected above at Marlin startup. Required for 5V mode on 3.0
+ * V3.1: Force a probe with unknown mode into selected mode at Marlin startup ( = Probe EEPROM write )
+ * To preserve the life of the probe, use this once then turn it off and re-flash.
+ */
+ //#define BLTOUCH_FORCE_MODE_SET
+
+ /**
+ * Use "HIGH SPEED" mode for probing.
+ * Danger: Disable if your probe sometimes fails. Only suitable for stable well-adjusted systems.
+ * This feature was designed for Delta's with very fast Z moves however higher speed cartesians may function
+ * If the machine cannot raise the probe fast enough after a trigger, it may enter a fault state.
+ */
+ //#define BLTOUCH_HS_MODE
+
+ // Safety: Enable voltage mode settings in the LCD menu.
+ //#define BLTOUCH_LCD_VOLTAGE_MENU
+
+#endif // BLTOUCH
// A probe that is deployed and stowed with a solenoid pin (SOL1_PIN)
//#define SOLENOID_PROBE
@@ -861,23 +917,23 @@
//
/**
- * Z Probe to nozzle (X,Y) offset, relative to (0, 0).
- * X and Y offsets must be integers.
+ * Z Probe to nozzle (X,Y) offset, relative to (0, 0).
+ * X and Y offsets must be integers.
*
- * In the following example the X and Y offsets are both positive:
- * #define X_PROBE_OFFSET_FROM_EXTRUDER 10
- * #define Y_PROBE_OFFSET_FROM_EXTRUDER 10
+ * In the following example the X and Y offsets are both positive:
+ * #define X_PROBE_OFFSET_FROM_EXTRUDER 10
+ * #define Y_PROBE_OFFSET_FROM_EXTRUDER 10
*
- * +-- BACK ---+
- * | |
- * L | (+) P | R <-- probe (20,20)
- * E | | I
- * F | (-) N (+) | G <-- nozzle (10,10)
- * T | | H
- * | (-) | T
- * | |
- * O-- FRONT --+
- * (0,0)
+ * +-- BACK ---+
+ * | |
+ * L | (+) P | R <-- probe (20,20)
+ * E | | I
+ * F | (-) N (+) | G <-- nozzle (10,10)
+ * T | | H
+ * | (-) | T
+ * | |
+ * O-- FRONT --+
+ * (0,0)
*/
#define X_PROBE_OFFSET_FROM_EXTRUDER 10 // X offset: -left +right [of the nozzle]
#define Y_PROBE_OFFSET_FROM_EXTRUDER 10 // Y offset: -front +behind [the nozzle]
@@ -2093,6 +2149,10 @@
#define NEOPIXEL_IS_SEQUENTIAL // Sequential display for temperature change - LED by LED. Disable to change all LEDs at once.
#define NEOPIXEL_BRIGHTNESS 127 // Initial brightness (0-255)
//#define NEOPIXEL_STARTUP_TEST // Cycle through colors at startup
+
+ // Use a single Neopixel LED for static (background) lighting
+ //#define NEOPIXEL_BKGD_LED_INDEX 0 // Index of the LED to use
+ //#define NEOPIXEL_BKGD_COLOR { 255, 255, 255, 0 } // R, G, B, W
#endif
/**
diff --git a/config/examples/Creality/Ender-3/Configuration_adv.h b/config/examples/Creality/Ender-3/Configuration_adv.h
index af2e776499..9473c34059 100644
--- a/config/examples/Creality/Ender-3/Configuration_adv.h
+++ b/config/examples/Creality/Ender-3/Configuration_adv.h
@@ -382,10 +382,6 @@
#endif
#endif
-//===========================================================================
-//============================ Mechanical Settings ==========================
-//===========================================================================
-
// @section homing
// If you want endstops to stay on (by default) even when not homing
@@ -577,8 +573,11 @@
// @section lcd
+#if EITHER(ULTIPANEL, EXTENSIBLE_UI)
+ #define MANUAL_FEEDRATE {50*60, 50*60, 4*60, 2*60} // Feedrates for manual moves along X, Y, Z, E from panel
+#endif
+
#if ENABLED(ULTIPANEL)
- #define MANUAL_FEEDRATE {50*60, 50*60, 4*60, 0} // Feedrates for manual moves along X, Y, Z, E from panel
#define MANUAL_E_MOVES_RELATIVE // Show LCD extruder moves as relative rather than absolute positions
#define ULTIPANEL_FEEDMULTIPLY // Comment to disable setting feedrate multiplier via encoder
#endif
@@ -742,6 +741,7 @@
* A (A shifted) B (B shifted) IC
* Smoothie 0x2C (0x58) 0x2D (0x5A) MCP4451
* AZTEEG_X3_PRO 0x2C (0x58) 0x2E (0x5C) MCP4451
+ * AZTEEG_X5_MINI 0x2C (0x58) 0x2E (0x5C) MCP4451
* AZTEEG_X5_MINI_WIFI 0x58 0x5C MCP4451
* MIGHTYBOARD_REVE 0x2F (0x5E) MCP4018
*/
diff --git a/config/examples/Creality/Ender-4/Configuration.h b/config/examples/Creality/Ender-4/Configuration.h
index df3728bf15..76c1657ac5 100644
--- a/config/examples/Creality/Ender-4/Configuration.h
+++ b/config/examples/Creality/Ender-4/Configuration.h
@@ -838,15 +838,71 @@
*/
//#define BLTOUCH
#if ENABLED(BLTOUCH)
- //#define BLTOUCH_DELAY 500 // Minimum Command delay (ms). Enable and increase if needed
+ /**
+ * Either: Use the defaults (recommended) or: For special purposes, use the following DEFINES
+ * Do not activate settings that the probe might not understand. Clones might misunderstand
+ * advanced commands.
+ *
+ * Note: If the probe is not deploying, check a "Cmd: Reset" and "Cmd: Self-Test" and then
+ * check the wiring of the BROWN, RED and ORANGE wires.
+ *
+ * Note: If the trigger signal of your probe is not being recognized, it has been very often
+ * because the BLACK and WHITE wires needed to be swapped. They are not "interchangeable"
+ * like they would be with a real switch. So please check the wiring first.
+ *
+ * Settings for all BLTouch and clone probes:
+ */
+
+ // Safety: The probe needs time to recognize the command.
+ // Minimum command delay (ms). Enable and increase if needed.
+ //#define BLTOUCH_DELAY 500
/**
- * BLTouch V3.0 and newer smart series
- * For genuine BLTouch 3.0 sensors. Clones may be confused by 3.0 command angles. YMMV.
- * If the pin trigger is not detected, first try swapping the black and white wires then toggle this.
+ * Settings for BLTOUCH Classic 1.2, 1.3 or BLTouch Smart 1.0, 2.0, 2.2, 3.0, 3.1, and most clones:
*/
- #define BLTOUCH_FORCE_5V_MODE
-#endif
+
+ // Feature: Switch into SW mode after a deploy. It makes the output pulse longer. Can be useful
+ // in special cases, like noisy or filtered input configurations.
+ //#define BLTOUCH_FORCE_SW_MODE
+
+ /**
+ * Settings for BLTouch Smart 3.0 and 3.1
+ * Summary:
+ * - Voltage modes: 5V and OD (open drain - "logic voltage free") output modes
+ * - High-Speed mode
+ * - Disable LCD voltage options
+ */
+
+ /**
+ * Danger: Don't activate 5V mode unless attached to a 5V-tolerant controller!
+ * V3.0 or 3.1: Set default mode to 5V mode at Marlin startup.
+ * If disabled, OD mode is the hard-coded default on 3.0
+ * On startup, Marlin will compare its eeprom to this vale. If the selected mode
+ * differs, a mode set eeprom write will be completed at initialization.
+ * Use the option below to force an eeprom write to a V3.1 probe regardless.
+ */
+ #define BLTOUCH_SET_5V_MODE
+
+ /**
+ * Safety: Activate if connecting a probe with an unknown voltage mode.
+ * V3.0: Set a probe into mode selected above at Marlin startup. Required for 5V mode on 3.0
+ * V3.1: Force a probe with unknown mode into selected mode at Marlin startup ( = Probe EEPROM write )
+ * To preserve the life of the probe, use this once then turn it off and re-flash.
+ */
+ //#define BLTOUCH_FORCE_MODE_SET
+
+ /**
+ * Use "HIGH SPEED" mode for probing.
+ * Danger: Disable if your probe sometimes fails. Only suitable for stable well-adjusted systems.
+ * This feature was designed for Delta's with very fast Z moves however higher speed cartesians may function
+ * If the machine cannot raise the probe fast enough after a trigger, it may enter a fault state.
+ */
+ //#define BLTOUCH_HS_MODE
+
+ // Safety: Enable voltage mode settings in the LCD menu.
+ //#define BLTOUCH_LCD_VOLTAGE_MENU
+
+#endif // BLTOUCH
// A probe that is deployed and stowed with a solenoid pin (SOL1_PIN)
//#define SOLENOID_PROBE
@@ -867,23 +923,23 @@
//
/**
- * Z Probe to nozzle (X,Y) offset, relative to (0, 0).
- * X and Y offsets must be integers.
+ * Z Probe to nozzle (X,Y) offset, relative to (0, 0).
+ * X and Y offsets must be integers.
*
- * In the following example the X and Y offsets are both positive:
- * #define X_PROBE_OFFSET_FROM_EXTRUDER 10
- * #define Y_PROBE_OFFSET_FROM_EXTRUDER 10
+ * In the following example the X and Y offsets are both positive:
+ * #define X_PROBE_OFFSET_FROM_EXTRUDER 10
+ * #define Y_PROBE_OFFSET_FROM_EXTRUDER 10
*
- * +-- BACK ---+
- * | |
- * L | (+) P | R <-- probe (20,20)
- * E | | I
- * F | (-) N (+) | G <-- nozzle (10,10)
- * T | | H
- * | (-) | T
- * | |
- * O-- FRONT --+
- * (0,0)
+ * +-- BACK ---+
+ * | |
+ * L | (+) P | R <-- probe (20,20)
+ * E | | I
+ * F | (-) N (+) | G <-- nozzle (10,10)
+ * T | | H
+ * | (-) | T
+ * | |
+ * O-- FRONT --+
+ * (0,0)
*/
#define X_PROBE_OFFSET_FROM_EXTRUDER 10 // X offset: -left +right [of the nozzle]
#define Y_PROBE_OFFSET_FROM_EXTRUDER 10 // Y offset: -front +behind [the nozzle]
@@ -2099,6 +2155,10 @@
#define NEOPIXEL_IS_SEQUENTIAL // Sequential display for temperature change - LED by LED. Disable to change all LEDs at once.
#define NEOPIXEL_BRIGHTNESS 127 // Initial brightness (0-255)
//#define NEOPIXEL_STARTUP_TEST // Cycle through colors at startup
+
+ // Use a single Neopixel LED for static (background) lighting
+ //#define NEOPIXEL_BKGD_LED_INDEX 0 // Index of the LED to use
+ //#define NEOPIXEL_BKGD_COLOR { 255, 255, 255, 0 } // R, G, B, W
#endif
/**
diff --git a/config/examples/Creality/Ender-4/Configuration_adv.h b/config/examples/Creality/Ender-4/Configuration_adv.h
index b01b8fca1d..4eff61d0fc 100644
--- a/config/examples/Creality/Ender-4/Configuration_adv.h
+++ b/config/examples/Creality/Ender-4/Configuration_adv.h
@@ -382,10 +382,6 @@
#endif
#endif
-//===========================================================================
-//============================ Mechanical Settings ==========================
-//===========================================================================
-
// @section homing
// If you want endstops to stay on (by default) even when not homing
@@ -745,6 +741,7 @@
* A (A shifted) B (B shifted) IC
* Smoothie 0x2C (0x58) 0x2D (0x5A) MCP4451
* AZTEEG_X3_PRO 0x2C (0x58) 0x2E (0x5C) MCP4451
+ * AZTEEG_X5_MINI 0x2C (0x58) 0x2E (0x5C) MCP4451
* AZTEEG_X5_MINI_WIFI 0x58 0x5C MCP4451
* MIGHTYBOARD_REVE 0x2F (0x5E) MCP4018
*/
diff --git a/config/examples/Einstart-S/Configuration.h b/config/examples/Einstart-S/Configuration.h
index 1fbeefa04d..6f915ed4e2 100644
--- a/config/examples/Einstart-S/Configuration.h
+++ b/config/examples/Einstart-S/Configuration.h
@@ -837,15 +837,71 @@
*/
//#define BLTOUCH
#if ENABLED(BLTOUCH)
- //#define BLTOUCH_DELAY 500 // Minimum Command delay (ms). Enable and increase if needed
+ /**
+ * Either: Use the defaults (recommended) or: For special purposes, use the following DEFINES
+ * Do not activate settings that the probe might not understand. Clones might misunderstand
+ * advanced commands.
+ *
+ * Note: If the probe is not deploying, check a "Cmd: Reset" and "Cmd: Self-Test" and then
+ * check the wiring of the BROWN, RED and ORANGE wires.
+ *
+ * Note: If the trigger signal of your probe is not being recognized, it has been very often
+ * because the BLACK and WHITE wires needed to be swapped. They are not "interchangeable"
+ * like they would be with a real switch. So please check the wiring first.
+ *
+ * Settings for all BLTouch and clone probes:
+ */
+
+ // Safety: The probe needs time to recognize the command.
+ // Minimum command delay (ms). Enable and increase if needed.
+ //#define BLTOUCH_DELAY 500
/**
- * BLTouch V3.0 and newer smart series
- * For genuine BLTouch 3.0 sensors. Clones may be confused by 3.0 command angles. YMMV.
- * If the pin trigger is not detected, first try swapping the black and white wires then toggle this.
+ * Settings for BLTOUCH Classic 1.2, 1.3 or BLTouch Smart 1.0, 2.0, 2.2, 3.0, 3.1, and most clones:
*/
- //#define BLTOUCH_FORCE_5V_MODE
-#endif
+
+ // Feature: Switch into SW mode after a deploy. It makes the output pulse longer. Can be useful
+ // in special cases, like noisy or filtered input configurations.
+ //#define BLTOUCH_FORCE_SW_MODE
+
+ /**
+ * Settings for BLTouch Smart 3.0 and 3.1
+ * Summary:
+ * - Voltage modes: 5V and OD (open drain - "logic voltage free") output modes
+ * - High-Speed mode
+ * - Disable LCD voltage options
+ */
+
+ /**
+ * Danger: Don't activate 5V mode unless attached to a 5V-tolerant controller!
+ * V3.0 or 3.1: Set default mode to 5V mode at Marlin startup.
+ * If disabled, OD mode is the hard-coded default on 3.0
+ * On startup, Marlin will compare its eeprom to this vale. If the selected mode
+ * differs, a mode set eeprom write will be completed at initialization.
+ * Use the option below to force an eeprom write to a V3.1 probe regardless.
+ */
+ //#define BLTOUCH_SET_5V_MODE
+
+ /**
+ * Safety: Activate if connecting a probe with an unknown voltage mode.
+ * V3.0: Set a probe into mode selected above at Marlin startup. Required for 5V mode on 3.0
+ * V3.1: Force a probe with unknown mode into selected mode at Marlin startup ( = Probe EEPROM write )
+ * To preserve the life of the probe, use this once then turn it off and re-flash.
+ */
+ //#define BLTOUCH_FORCE_MODE_SET
+
+ /**
+ * Use "HIGH SPEED" mode for probing.
+ * Danger: Disable if your probe sometimes fails. Only suitable for stable well-adjusted systems.
+ * This feature was designed for Delta's with very fast Z moves however higher speed cartesians may function
+ * If the machine cannot raise the probe fast enough after a trigger, it may enter a fault state.
+ */
+ //#define BLTOUCH_HS_MODE
+
+ // Safety: Enable voltage mode settings in the LCD menu.
+ //#define BLTOUCH_LCD_VOLTAGE_MENU
+
+#endif // BLTOUCH
// A probe that is deployed and stowed with a solenoid pin (SOL1_PIN)
//#define SOLENOID_PROBE
@@ -866,23 +922,23 @@
//
/**
- * Z Probe to nozzle (X,Y) offset, relative to (0, 0).
- * X and Y offsets must be integers.
+ * Z Probe to nozzle (X,Y) offset, relative to (0, 0).
+ * X and Y offsets must be integers.
*
- * In the following example the X and Y offsets are both positive:
- * #define X_PROBE_OFFSET_FROM_EXTRUDER 10
- * #define Y_PROBE_OFFSET_FROM_EXTRUDER 10
+ * In the following example the X and Y offsets are both positive:
+ * #define X_PROBE_OFFSET_FROM_EXTRUDER 10
+ * #define Y_PROBE_OFFSET_FROM_EXTRUDER 10
*
- * +-- BACK ---+
- * | |
- * L | (+) P | R <-- probe (20,20)
- * E | | I
- * F | (-) N (+) | G <-- nozzle (10,10)
- * T | | H
- * | (-) | T
- * | |
- * O-- FRONT --+
- * (0,0)
+ * +-- BACK ---+
+ * | |
+ * L | (+) P | R <-- probe (20,20)
+ * E | | I
+ * F | (-) N (+) | G <-- nozzle (10,10)
+ * T | | H
+ * | (-) | T
+ * | |
+ * O-- FRONT --+
+ * (0,0)
*/
#define X_PROBE_OFFSET_FROM_EXTRUDER 10 // X offset: -left +right [of the nozzle]
#define Y_PROBE_OFFSET_FROM_EXTRUDER 10 // Y offset: -front +behind [the nozzle]
@@ -2093,6 +2149,10 @@
#define NEOPIXEL_IS_SEQUENTIAL // Sequential display for temperature change - LED by LED. Disable to change all LEDs at once.
#define NEOPIXEL_BRIGHTNESS 127 // Initial brightness (0-255)
//#define NEOPIXEL_STARTUP_TEST // Cycle through colors at startup
+
+ // Use a single Neopixel LED for static (background) lighting
+ //#define NEOPIXEL_BKGD_LED_INDEX 0 // Index of the LED to use
+ //#define NEOPIXEL_BKGD_COLOR { 255, 255, 255, 0 } // R, G, B, W
#endif
/**
diff --git a/config/examples/Einstart-S/Configuration_adv.h b/config/examples/Einstart-S/Configuration_adv.h
index 5a15ddd21b..e1c7047501 100644
--- a/config/examples/Einstart-S/Configuration_adv.h
+++ b/config/examples/Einstart-S/Configuration_adv.h
@@ -382,10 +382,6 @@
#endif
#endif
-//===========================================================================
-//============================ Mechanical Settings ==========================
-//===========================================================================
-
// @section homing
// If you want endstops to stay on (by default) even when not homing
@@ -745,6 +741,7 @@
* A (A shifted) B (B shifted) IC
* Smoothie 0x2C (0x58) 0x2D (0x5A) MCP4451
* AZTEEG_X3_PRO 0x2C (0x58) 0x2E (0x5C) MCP4451
+ * AZTEEG_X5_MINI 0x2C (0x58) 0x2E (0x5C) MCP4451
* AZTEEG_X5_MINI_WIFI 0x58 0x5C MCP4451
* MIGHTYBOARD_REVE 0x2F (0x5E) MCP4018
*/
diff --git a/config/examples/Felix/Configuration.h b/config/examples/Felix/Configuration.h
index 2e8bdd3509..758cf13c8c 100644
--- a/config/examples/Felix/Configuration.h
+++ b/config/examples/Felix/Configuration.h
@@ -810,15 +810,71 @@
*/
//#define BLTOUCH
#if ENABLED(BLTOUCH)
- //#define BLTOUCH_DELAY 500 // Minimum Command delay (ms). Enable and increase if needed
+ /**
+ * Either: Use the defaults (recommended) or: For special purposes, use the following DEFINES
+ * Do not activate settings that the probe might not understand. Clones might misunderstand
+ * advanced commands.
+ *
+ * Note: If the probe is not deploying, check a "Cmd: Reset" and "Cmd: Self-Test" and then
+ * check the wiring of the BROWN, RED and ORANGE wires.
+ *
+ * Note: If the trigger signal of your probe is not being recognized, it has been very often
+ * because the BLACK and WHITE wires needed to be swapped. They are not "interchangeable"
+ * like they would be with a real switch. So please check the wiring first.
+ *
+ * Settings for all BLTouch and clone probes:
+ */
+
+ // Safety: The probe needs time to recognize the command.
+ // Minimum command delay (ms). Enable and increase if needed.
+ //#define BLTOUCH_DELAY 500
/**
- * BLTouch V3.0 and newer smart series
- * For genuine BLTouch 3.0 sensors. Clones may be confused by 3.0 command angles. YMMV.
- * If the pin trigger is not detected, first try swapping the black and white wires then toggle this.
+ * Settings for BLTOUCH Classic 1.2, 1.3 or BLTouch Smart 1.0, 2.0, 2.2, 3.0, 3.1, and most clones:
*/
- //#define BLTOUCH_FORCE_5V_MODE
-#endif
+
+ // Feature: Switch into SW mode after a deploy. It makes the output pulse longer. Can be useful
+ // in special cases, like noisy or filtered input configurations.
+ //#define BLTOUCH_FORCE_SW_MODE
+
+ /**
+ * Settings for BLTouch Smart 3.0 and 3.1
+ * Summary:
+ * - Voltage modes: 5V and OD (open drain - "logic voltage free") output modes
+ * - High-Speed mode
+ * - Disable LCD voltage options
+ */
+
+ /**
+ * Danger: Don't activate 5V mode unless attached to a 5V-tolerant controller!
+ * V3.0 or 3.1: Set default mode to 5V mode at Marlin startup.
+ * If disabled, OD mode is the hard-coded default on 3.0
+ * On startup, Marlin will compare its eeprom to this vale. If the selected mode
+ * differs, a mode set eeprom write will be completed at initialization.
+ * Use the option below to force an eeprom write to a V3.1 probe regardless.
+ */
+ //#define BLTOUCH_SET_5V_MODE
+
+ /**
+ * Safety: Activate if connecting a probe with an unknown voltage mode.
+ * V3.0: Set a probe into mode selected above at Marlin startup. Required for 5V mode on 3.0
+ * V3.1: Force a probe with unknown mode into selected mode at Marlin startup ( = Probe EEPROM write )
+ * To preserve the life of the probe, use this once then turn it off and re-flash.
+ */
+ //#define BLTOUCH_FORCE_MODE_SET
+
+ /**
+ * Use "HIGH SPEED" mode for probing.
+ * Danger: Disable if your probe sometimes fails. Only suitable for stable well-adjusted systems.
+ * This feature was designed for Delta's with very fast Z moves however higher speed cartesians may function
+ * If the machine cannot raise the probe fast enough after a trigger, it may enter a fault state.
+ */
+ //#define BLTOUCH_HS_MODE
+
+ // Safety: Enable voltage mode settings in the LCD menu.
+ //#define BLTOUCH_LCD_VOLTAGE_MENU
+
+#endif // BLTOUCH
// A probe that is deployed and stowed with a solenoid pin (SOL1_PIN)
//#define SOLENOID_PROBE
@@ -839,23 +895,23 @@
//
/**
- * Z Probe to nozzle (X,Y) offset, relative to (0, 0).
- * X and Y offsets must be integers.
+ * Z Probe to nozzle (X,Y) offset, relative to (0, 0).
+ * X and Y offsets must be integers.
*
- * In the following example the X and Y offsets are both positive:
- * #define X_PROBE_OFFSET_FROM_EXTRUDER 10
- * #define Y_PROBE_OFFSET_FROM_EXTRUDER 10
+ * In the following example the X and Y offsets are both positive:
+ * #define X_PROBE_OFFSET_FROM_EXTRUDER 10
+ * #define Y_PROBE_OFFSET_FROM_EXTRUDER 10
*
- * +-- BACK ---+
- * | |
- * L | (+) P | R <-- probe (20,20)
- * E | | I
- * F | (-) N (+) | G <-- nozzle (10,10)
- * T | | H
- * | (-) | T
- * | |
- * O-- FRONT --+
- * (0,0)
+ * +-- BACK ---+
+ * | |
+ * L | (+) P | R <-- probe (20,20)
+ * E | | I
+ * F | (-) N (+) | G <-- nozzle (10,10)
+ * T | | H
+ * | (-) | T
+ * | |
+ * O-- FRONT --+
+ * (0,0)
*/
#define X_PROBE_OFFSET_FROM_EXTRUDER -25 // X offset: -left +right [of the nozzle]
#define Y_PROBE_OFFSET_FROM_EXTRUDER -29 // Y offset: -front +behind [the nozzle]
@@ -2071,6 +2127,10 @@
#define NEOPIXEL_IS_SEQUENTIAL // Sequential display for temperature change - LED by LED. Disable to change all LEDs at once.
#define NEOPIXEL_BRIGHTNESS 127 // Initial brightness (0-255)
//#define NEOPIXEL_STARTUP_TEST // Cycle through colors at startup
+
+ // Use a single Neopixel LED for static (background) lighting
+ //#define NEOPIXEL_BKGD_LED_INDEX 0 // Index of the LED to use
+ //#define NEOPIXEL_BKGD_COLOR { 255, 255, 255, 0 } // R, G, B, W
#endif
/**
diff --git a/config/examples/Felix/Configuration_adv.h b/config/examples/Felix/Configuration_adv.h
index 03bdafa5c7..5f42fbbc54 100644
--- a/config/examples/Felix/Configuration_adv.h
+++ b/config/examples/Felix/Configuration_adv.h
@@ -382,10 +382,6 @@
#endif
#endif
-//===========================================================================
-//============================ Mechanical Settings ==========================
-//===========================================================================
-
// @section homing
// If you want endstops to stay on (by default) even when not homing
@@ -745,6 +741,7 @@
* A (A shifted) B (B shifted) IC
* Smoothie 0x2C (0x58) 0x2D (0x5A) MCP4451
* AZTEEG_X3_PRO 0x2C (0x58) 0x2E (0x5C) MCP4451
+ * AZTEEG_X5_MINI 0x2C (0x58) 0x2E (0x5C) MCP4451
* AZTEEG_X5_MINI_WIFI 0x58 0x5C MCP4451
* MIGHTYBOARD_REVE 0x2F (0x5E) MCP4018
*/
diff --git a/config/examples/Felix/DUAL/Configuration.h b/config/examples/Felix/DUAL/Configuration.h
index dc4654bff9..6269947890 100644
--- a/config/examples/Felix/DUAL/Configuration.h
+++ b/config/examples/Felix/DUAL/Configuration.h
@@ -810,15 +810,71 @@
*/
//#define BLTOUCH
#if ENABLED(BLTOUCH)
- //#define BLTOUCH_DELAY 500 // Minimum Command delay (ms). Enable and increase if needed
+ /**
+ * Either: Use the defaults (recommended) or: For special purposes, use the following DEFINES
+ * Do not activate settings that the probe might not understand. Clones might misunderstand
+ * advanced commands.
+ *
+ * Note: If the probe is not deploying, check a "Cmd: Reset" and "Cmd: Self-Test" and then
+ * check the wiring of the BROWN, RED and ORANGE wires.
+ *
+ * Note: If the trigger signal of your probe is not being recognized, it has been very often
+ * because the BLACK and WHITE wires needed to be swapped. They are not "interchangeable"
+ * like they would be with a real switch. So please check the wiring first.
+ *
+ * Settings for all BLTouch and clone probes:
+ */
+
+ // Safety: The probe needs time to recognize the command.
+ // Minimum command delay (ms). Enable and increase if needed.
+ //#define BLTOUCH_DELAY 500
/**
- * BLTouch V3.0 and newer smart series
- * For genuine BLTouch 3.0 sensors. Clones may be confused by 3.0 command angles. YMMV.
- * If the pin trigger is not detected, first try swapping the black and white wires then toggle this.
+ * Settings for BLTOUCH Classic 1.2, 1.3 or BLTouch Smart 1.0, 2.0, 2.2, 3.0, 3.1, and most clones:
*/
- //#define BLTOUCH_FORCE_5V_MODE
-#endif
+
+ // Feature: Switch into SW mode after a deploy. It makes the output pulse longer. Can be useful
+ // in special cases, like noisy or filtered input configurations.
+ //#define BLTOUCH_FORCE_SW_MODE
+
+ /**
+ * Settings for BLTouch Smart 3.0 and 3.1
+ * Summary:
+ * - Voltage modes: 5V and OD (open drain - "logic voltage free") output modes
+ * - High-Speed mode
+ * - Disable LCD voltage options
+ */
+
+ /**
+ * Danger: Don't activate 5V mode unless attached to a 5V-tolerant controller!
+ * V3.0 or 3.1: Set default mode to 5V mode at Marlin startup.
+ * If disabled, OD mode is the hard-coded default on 3.0
+ * On startup, Marlin will compare its eeprom to this vale. If the selected mode
+ * differs, a mode set eeprom write will be completed at initialization.
+ * Use the option below to force an eeprom write to a V3.1 probe regardless.
+ */
+ //#define BLTOUCH_SET_5V_MODE
+
+ /**
+ * Safety: Activate if connecting a probe with an unknown voltage mode.
+ * V3.0: Set a probe into mode selected above at Marlin startup. Required for 5V mode on 3.0
+ * V3.1: Force a probe with unknown mode into selected mode at Marlin startup ( = Probe EEPROM write )
+ * To preserve the life of the probe, use this once then turn it off and re-flash.
+ */
+ //#define BLTOUCH_FORCE_MODE_SET
+
+ /**
+ * Use "HIGH SPEED" mode for probing.
+ * Danger: Disable if your probe sometimes fails. Only suitable for stable well-adjusted systems.
+ * This feature was designed for Delta's with very fast Z moves however higher speed cartesians may function
+ * If the machine cannot raise the probe fast enough after a trigger, it may enter a fault state.
+ */
+ //#define BLTOUCH_HS_MODE
+
+ // Safety: Enable voltage mode settings in the LCD menu.
+ //#define BLTOUCH_LCD_VOLTAGE_MENU
+
+#endif // BLTOUCH
// A probe that is deployed and stowed with a solenoid pin (SOL1_PIN)
//#define SOLENOID_PROBE
@@ -839,23 +895,23 @@
//
/**
- * Z Probe to nozzle (X,Y) offset, relative to (0, 0).
- * X and Y offsets must be integers.
+ * Z Probe to nozzle (X,Y) offset, relative to (0, 0).
+ * X and Y offsets must be integers.
*
- * In the following example the X and Y offsets are both positive:
- * #define X_PROBE_OFFSET_FROM_EXTRUDER 10
- * #define Y_PROBE_OFFSET_FROM_EXTRUDER 10
+ * In the following example the X and Y offsets are both positive:
+ * #define X_PROBE_OFFSET_FROM_EXTRUDER 10
+ * #define Y_PROBE_OFFSET_FROM_EXTRUDER 10
*
- * +-- BACK ---+
- * | |
- * L | (+) P | R <-- probe (20,20)
- * E | | I
- * F | (-) N (+) | G <-- nozzle (10,10)
- * T | | H
- * | (-) | T
- * | |
- * O-- FRONT --+
- * (0,0)
+ * +-- BACK ---+
+ * | |
+ * L | (+) P | R <-- probe (20,20)
+ * E | | I
+ * F | (-) N (+) | G <-- nozzle (10,10)
+ * T | | H
+ * | (-) | T
+ * | |
+ * O-- FRONT --+
+ * (0,0)
*/
#define X_PROBE_OFFSET_FROM_EXTRUDER -25 // X offset: -left +right [of the nozzle]
#define Y_PROBE_OFFSET_FROM_EXTRUDER -29 // Y offset: -front +behind [the nozzle]
@@ -2071,6 +2127,10 @@
#define NEOPIXEL_IS_SEQUENTIAL // Sequential display for temperature change - LED by LED. Disable to change all LEDs at once.
#define NEOPIXEL_BRIGHTNESS 127 // Initial brightness (0-255)
//#define NEOPIXEL_STARTUP_TEST // Cycle through colors at startup
+
+ // Use a single Neopixel LED for static (background) lighting
+ //#define NEOPIXEL_BKGD_LED_INDEX 0 // Index of the LED to use
+ //#define NEOPIXEL_BKGD_COLOR { 255, 255, 255, 0 } // R, G, B, W
#endif
/**
diff --git a/config/examples/FlashForge/CreatorPro/Configuration.h b/config/examples/FlashForge/CreatorPro/Configuration.h
index 5224617634..46a5c1b894 100644
--- a/config/examples/FlashForge/CreatorPro/Configuration.h
+++ b/config/examples/FlashForge/CreatorPro/Configuration.h
@@ -820,15 +820,71 @@
*/
//#define BLTOUCH
#if ENABLED(BLTOUCH)
- //#define BLTOUCH_DELAY 500 // Minimum Command delay (ms). Enable and increase if needed
+ /**
+ * Either: Use the defaults (recommended) or: For special purposes, use the following DEFINES
+ * Do not activate settings that the probe might not understand. Clones might misunderstand
+ * advanced commands.
+ *
+ * Note: If the probe is not deploying, check a "Cmd: Reset" and "Cmd: Self-Test" and then
+ * check the wiring of the BROWN, RED and ORANGE wires.
+ *
+ * Note: If the trigger signal of your probe is not being recognized, it has been very often
+ * because the BLACK and WHITE wires needed to be swapped. They are not "interchangeable"
+ * like they would be with a real switch. So please check the wiring first.
+ *
+ * Settings for all BLTouch and clone probes:
+ */
+
+ // Safety: The probe needs time to recognize the command.
+ // Minimum command delay (ms). Enable and increase if needed.
+ //#define BLTOUCH_DELAY 500
/**
- * BLTouch V3.0 and newer smart series
- * For genuine BLTouch 3.0 sensors. Clones may be confused by 3.0 command angles. YMMV.
- * If the pin trigger is not detected, first try swapping the black and white wires then toggle this.
+ * Settings for BLTOUCH Classic 1.2, 1.3 or BLTouch Smart 1.0, 2.0, 2.2, 3.0, 3.1, and most clones:
*/
- //#define BLTOUCH_FORCE_5V_MODE
-#endif
+
+ // Feature: Switch into SW mode after a deploy. It makes the output pulse longer. Can be useful
+ // in special cases, like noisy or filtered input configurations.
+ //#define BLTOUCH_FORCE_SW_MODE
+
+ /**
+ * Settings for BLTouch Smart 3.0 and 3.1
+ * Summary:
+ * - Voltage modes: 5V and OD (open drain - "logic voltage free") output modes
+ * - High-Speed mode
+ * - Disable LCD voltage options
+ */
+
+ /**
+ * Danger: Don't activate 5V mode unless attached to a 5V-tolerant controller!
+ * V3.0 or 3.1: Set default mode to 5V mode at Marlin startup.
+ * If disabled, OD mode is the hard-coded default on 3.0
+ * On startup, Marlin will compare its eeprom to this vale. If the selected mode
+ * differs, a mode set eeprom write will be completed at initialization.
+ * Use the option below to force an eeprom write to a V3.1 probe regardless.
+ */
+ //#define BLTOUCH_SET_5V_MODE
+
+ /**
+ * Safety: Activate if connecting a probe with an unknown voltage mode.
+ * V3.0: Set a probe into mode selected above at Marlin startup. Required for 5V mode on 3.0
+ * V3.1: Force a probe with unknown mode into selected mode at Marlin startup ( = Probe EEPROM write )
+ * To preserve the life of the probe, use this once then turn it off and re-flash.
+ */
+ //#define BLTOUCH_FORCE_MODE_SET
+
+ /**
+ * Use "HIGH SPEED" mode for probing.
+ * Danger: Disable if your probe sometimes fails. Only suitable for stable well-adjusted systems.
+ * This feature was designed for Delta's with very fast Z moves however higher speed cartesians may function
+ * If the machine cannot raise the probe fast enough after a trigger, it may enter a fault state.
+ */
+ //#define BLTOUCH_HS_MODE
+
+ // Safety: Enable voltage mode settings in the LCD menu.
+ //#define BLTOUCH_LCD_VOLTAGE_MENU
+
+#endif // BLTOUCH
// A probe that is deployed and stowed with a solenoid pin (SOL1_PIN)
//#define SOLENOID_PROBE
@@ -849,23 +905,23 @@
//
/**
- * Z Probe to nozzle (X,Y) offset, relative to (0, 0).
- * X and Y offsets must be integers.
+ * Z Probe to nozzle (X,Y) offset, relative to (0, 0).
+ * X and Y offsets must be integers.
*
- * In the following example the X and Y offsets are both positive:
- * #define X_PROBE_OFFSET_FROM_EXTRUDER 10
- * #define Y_PROBE_OFFSET_FROM_EXTRUDER 10
+ * In the following example the X and Y offsets are both positive:
+ * #define X_PROBE_OFFSET_FROM_EXTRUDER 10
+ * #define Y_PROBE_OFFSET_FROM_EXTRUDER 10
*
- * +-- BACK ---+
- * | |
- * L | (+) P | R <-- probe (20,20)
- * E | | I
- * F | (-) N (+) | G <-- nozzle (10,10)
- * T | | H
- * | (-) | T
- * | |
- * O-- FRONT --+
- * (0,0)
+ * +-- BACK ---+
+ * | |
+ * L | (+) P | R <-- probe (20,20)
+ * E | | I
+ * F | (-) N (+) | G <-- nozzle (10,10)
+ * T | | H
+ * | (-) | T
+ * | |
+ * O-- FRONT --+
+ * (0,0)
*/
#define X_PROBE_OFFSET_FROM_EXTRUDER 10 // X offset: -left +right [of the nozzle]
#define Y_PROBE_OFFSET_FROM_EXTRUDER 10 // Y offset: -front +behind [the nozzle]
@@ -2080,6 +2136,10 @@
#define NEOPIXEL_IS_SEQUENTIAL // Sequential display for temperature change - LED by LED. Disable to change all LEDs at once.
#define NEOPIXEL_BRIGHTNESS 127 // Initial brightness (0-255)
//#define NEOPIXEL_STARTUP_TEST // Cycle through colors at startup
+
+ // Use a single Neopixel LED for static (background) lighting
+ //#define NEOPIXEL_BKGD_LED_INDEX 0 // Index of the LED to use
+ //#define NEOPIXEL_BKGD_COLOR { 255, 255, 255, 0 } // R, G, B, W
#endif
/**
diff --git a/config/examples/FlashForge/CreatorPro/Configuration_adv.h b/config/examples/FlashForge/CreatorPro/Configuration_adv.h
index 0c62be5536..db4d51a9ce 100644
--- a/config/examples/FlashForge/CreatorPro/Configuration_adv.h
+++ b/config/examples/FlashForge/CreatorPro/Configuration_adv.h
@@ -382,10 +382,6 @@
#endif
#endif
-//===========================================================================
-//============================ Mechanical Settings ==========================
-//===========================================================================
-
// @section homing
// If you want endstops to stay on (by default) even when not homing
@@ -577,8 +573,11 @@
// @section lcd
-#if ENABLED(ULTIPANEL)
+#if EITHER(ULTIPANEL, EXTENSIBLE_UI)
#define MANUAL_FEEDRATE {50*60, 50*60, 4*60, 60} // Feedrates for manual moves along X, Y, Z, E from panel
+#endif
+
+#if ENABLED(ULTIPANEL)
#define MANUAL_E_MOVES_RELATIVE // Show LCD extruder moves as relative rather than absolute positions
//#define ULTIPANEL_FEEDMULTIPLY // Comment to disable setting feedrate multiplier via encoder
#endif
@@ -742,6 +741,7 @@
* A (A shifted) B (B shifted) IC
* Smoothie 0x2C (0x58) 0x2D (0x5A) MCP4451
* AZTEEG_X3_PRO 0x2C (0x58) 0x2E (0x5C) MCP4451
+ * AZTEEG_X5_MINI 0x2C (0x58) 0x2E (0x5C) MCP4451
* AZTEEG_X5_MINI_WIFI 0x58 0x5C MCP4451
* MIGHTYBOARD_REVE 0x2F (0x5E) MCP4018
*/
diff --git a/config/examples/FolgerTech/i3-2020/Configuration.h b/config/examples/FolgerTech/i3-2020/Configuration.h
index abf120a208..b8fa6b5488 100644
--- a/config/examples/FolgerTech/i3-2020/Configuration.h
+++ b/config/examples/FolgerTech/i3-2020/Configuration.h
@@ -834,15 +834,71 @@
*/
//#define BLTOUCH
#if ENABLED(BLTOUCH)
- //#define BLTOUCH_DELAY 500 // Minimum Command delay (ms). Enable and increase if needed
+ /**
+ * Either: Use the defaults (recommended) or: For special purposes, use the following DEFINES
+ * Do not activate settings that the probe might not understand. Clones might misunderstand
+ * advanced commands.
+ *
+ * Note: If the probe is not deploying, check a "Cmd: Reset" and "Cmd: Self-Test" and then
+ * check the wiring of the BROWN, RED and ORANGE wires.
+ *
+ * Note: If the trigger signal of your probe is not being recognized, it has been very often
+ * because the BLACK and WHITE wires needed to be swapped. They are not "interchangeable"
+ * like they would be with a real switch. So please check the wiring first.
+ *
+ * Settings for all BLTouch and clone probes:
+ */
+
+ // Safety: The probe needs time to recognize the command.
+ // Minimum command delay (ms). Enable and increase if needed.
+ //#define BLTOUCH_DELAY 500
/**
- * BLTouch V3.0 and newer smart series
- * For genuine BLTouch 3.0 sensors. Clones may be confused by 3.0 command angles. YMMV.
- * If the pin trigger is not detected, first try swapping the black and white wires then toggle this.
+ * Settings for BLTOUCH Classic 1.2, 1.3 or BLTouch Smart 1.0, 2.0, 2.2, 3.0, 3.1, and most clones:
*/
- //#define BLTOUCH_FORCE_5V_MODE
-#endif
+
+ // Feature: Switch into SW mode after a deploy. It makes the output pulse longer. Can be useful
+ // in special cases, like noisy or filtered input configurations.
+ //#define BLTOUCH_FORCE_SW_MODE
+
+ /**
+ * Settings for BLTouch Smart 3.0 and 3.1
+ * Summary:
+ * - Voltage modes: 5V and OD (open drain - "logic voltage free") output modes
+ * - High-Speed mode
+ * - Disable LCD voltage options
+ */
+
+ /**
+ * Danger: Don't activate 5V mode unless attached to a 5V-tolerant controller!
+ * V3.0 or 3.1: Set default mode to 5V mode at Marlin startup.
+ * If disabled, OD mode is the hard-coded default on 3.0
+ * On startup, Marlin will compare its eeprom to this vale. If the selected mode
+ * differs, a mode set eeprom write will be completed at initialization.
+ * Use the option below to force an eeprom write to a V3.1 probe regardless.
+ */
+ //#define BLTOUCH_SET_5V_MODE
+
+ /**
+ * Safety: Activate if connecting a probe with an unknown voltage mode.
+ * V3.0: Set a probe into mode selected above at Marlin startup. Required for 5V mode on 3.0
+ * V3.1: Force a probe with unknown mode into selected mode at Marlin startup ( = Probe EEPROM write )
+ * To preserve the life of the probe, use this once then turn it off and re-flash.
+ */
+ //#define BLTOUCH_FORCE_MODE_SET
+
+ /**
+ * Use "HIGH SPEED" mode for probing.
+ * Danger: Disable if your probe sometimes fails. Only suitable for stable well-adjusted systems.
+ * This feature was designed for Delta's with very fast Z moves however higher speed cartesians may function
+ * If the machine cannot raise the probe fast enough after a trigger, it may enter a fault state.
+ */
+ //#define BLTOUCH_HS_MODE
+
+ // Safety: Enable voltage mode settings in the LCD menu.
+ //#define BLTOUCH_LCD_VOLTAGE_MENU
+
+#endif // BLTOUCH
// A probe that is deployed and stowed with a solenoid pin (SOL1_PIN)
//#define SOLENOID_PROBE
@@ -863,23 +919,23 @@
//
/**
- * Z Probe to nozzle (X,Y) offset, relative to (0, 0).
- * X and Y offsets must be integers.
+ * Z Probe to nozzle (X,Y) offset, relative to (0, 0).
+ * X and Y offsets must be integers.
*
- * In the following example the X and Y offsets are both positive:
- * #define X_PROBE_OFFSET_FROM_EXTRUDER 10
- * #define Y_PROBE_OFFSET_FROM_EXTRUDER 10
+ * In the following example the X and Y offsets are both positive:
+ * #define X_PROBE_OFFSET_FROM_EXTRUDER 10
+ * #define Y_PROBE_OFFSET_FROM_EXTRUDER 10
*
- * +-- BACK ---+
- * | |
- * L | (+) P | R <-- probe (20,20)
- * E | | I
- * F | (-) N (+) | G <-- nozzle (10,10)
- * T | | H
- * | (-) | T
- * | |
- * O-- FRONT --+
- * (0,0)
+ * +-- BACK ---+
+ * | |
+ * L | (+) P | R <-- probe (20,20)
+ * E | | I
+ * F | (-) N (+) | G <-- nozzle (10,10)
+ * T | | H
+ * | (-) | T
+ * | |
+ * O-- FRONT --+
+ * (0,0)
*/
#define X_PROBE_OFFSET_FROM_EXTRUDER 38 // X offset: -left +right [of the nozzle]
#define Y_PROBE_OFFSET_FROM_EXTRUDER -7 // Y offset: -front +behind [the nozzle]
@@ -2095,6 +2151,10 @@
#define NEOPIXEL_IS_SEQUENTIAL // Sequential display for temperature change - LED by LED. Disable to change all LEDs at once.
#define NEOPIXEL_BRIGHTNESS 127 // Initial brightness (0-255)
//#define NEOPIXEL_STARTUP_TEST // Cycle through colors at startup
+
+ // Use a single Neopixel LED for static (background) lighting
+ //#define NEOPIXEL_BKGD_LED_INDEX 0 // Index of the LED to use
+ //#define NEOPIXEL_BKGD_COLOR { 255, 255, 255, 0 } // R, G, B, W
#endif
/**
diff --git a/config/examples/FolgerTech/i3-2020/Configuration_adv.h b/config/examples/FolgerTech/i3-2020/Configuration_adv.h
index 0caa02b440..fc8eb86ba4 100644
--- a/config/examples/FolgerTech/i3-2020/Configuration_adv.h
+++ b/config/examples/FolgerTech/i3-2020/Configuration_adv.h
@@ -382,10 +382,6 @@
#endif
#endif
-//===========================================================================
-//============================ Mechanical Settings ==========================
-//===========================================================================
-
// @section homing
// If you want endstops to stay on (by default) even when not homing
@@ -745,6 +741,7 @@
* A (A shifted) B (B shifted) IC
* Smoothie 0x2C (0x58) 0x2D (0x5A) MCP4451
* AZTEEG_X3_PRO 0x2C (0x58) 0x2E (0x5C) MCP4451
+ * AZTEEG_X5_MINI 0x2C (0x58) 0x2E (0x5C) MCP4451
* AZTEEG_X5_MINI_WIFI 0x58 0x5C MCP4451
* MIGHTYBOARD_REVE 0x2F (0x5E) MCP4018
*/
diff --git a/config/examples/Formbot/Raptor/Configuration.h b/config/examples/Formbot/Raptor/Configuration.h
index a70ee8629e..6daf03396c 100644
--- a/config/examples/Formbot/Raptor/Configuration.h
+++ b/config/examples/Formbot/Raptor/Configuration.h
@@ -911,15 +911,71 @@
*/
#define BLTOUCH
#if ENABLED(BLTOUCH)
- //#define BLTOUCH_DELAY 500 // Minimum Command delay (ms). Enable and increase if needed
+ /**
+ * Either: Use the defaults (recommended) or: For special purposes, use the following DEFINES
+ * Do not activate settings that the probe might not understand. Clones might misunderstand
+ * advanced commands.
+ *
+ * Note: If the probe is not deploying, check a "Cmd: Reset" and "Cmd: Self-Test" and then
+ * check the wiring of the BROWN, RED and ORANGE wires.
+ *
+ * Note: If the trigger signal of your probe is not being recognized, it has been very often
+ * because the BLACK and WHITE wires needed to be swapped. They are not "interchangeable"
+ * like they would be with a real switch. So please check the wiring first.
+ *
+ * Settings for all BLTouch and clone probes:
+ */
+
+ // Safety: The probe needs time to recognize the command.
+ // Minimum command delay (ms). Enable and increase if needed.
+ //#define BLTOUCH_DELAY 500
/**
- * BLTouch V3.0 and newer smart series
- * For genuine BLTouch 3.0 sensors. Clones may be confused by 3.0 command angles. YMMV.
- * If the pin trigger is not detected, first try swapping the black and white wires then toggle this.
+ * Settings for BLTOUCH Classic 1.2, 1.3 or BLTouch Smart 1.0, 2.0, 2.2, 3.0, 3.1, and most clones:
*/
- //#define BLTOUCH_FORCE_5V_MODE
-#endif
+
+ // Feature: Switch into SW mode after a deploy. It makes the output pulse longer. Can be useful
+ // in special cases, like noisy or filtered input configurations.
+ //#define BLTOUCH_FORCE_SW_MODE
+
+ /**
+ * Settings for BLTouch Smart 3.0 and 3.1
+ * Summary:
+ * - Voltage modes: 5V and OD (open drain - "logic voltage free") output modes
+ * - High-Speed mode
+ * - Disable LCD voltage options
+ */
+
+ /**
+ * Danger: Don't activate 5V mode unless attached to a 5V-tolerant controller!
+ * V3.0 or 3.1: Set default mode to 5V mode at Marlin startup.
+ * If disabled, OD mode is the hard-coded default on 3.0
+ * On startup, Marlin will compare its eeprom to this vale. If the selected mode
+ * differs, a mode set eeprom write will be completed at initialization.
+ * Use the option below to force an eeprom write to a V3.1 probe regardless.
+ */
+ //#define BLTOUCH_SET_5V_MODE
+
+ /**
+ * Safety: Activate if connecting a probe with an unknown voltage mode.
+ * V3.0: Set a probe into mode selected above at Marlin startup. Required for 5V mode on 3.0
+ * V3.1: Force a probe with unknown mode into selected mode at Marlin startup ( = Probe EEPROM write )
+ * To preserve the life of the probe, use this once then turn it off and re-flash.
+ */
+ //#define BLTOUCH_FORCE_MODE_SET
+
+ /**
+ * Use "HIGH SPEED" mode for probing.
+ * Danger: Disable if your probe sometimes fails. Only suitable for stable well-adjusted systems.
+ * This feature was designed for Delta's with very fast Z moves however higher speed cartesians may function
+ * If the machine cannot raise the probe fast enough after a trigger, it may enter a fault state.
+ */
+ //#define BLTOUCH_HS_MODE
+
+ // Safety: Enable voltage mode settings in the LCD menu.
+ //#define BLTOUCH_LCD_VOLTAGE_MENU
+
+#endif // BLTOUCH
// A probe that is deployed and stowed with a solenoid pin (SOL1_PIN)
//#define SOLENOID_PROBE
@@ -940,23 +996,23 @@
//
/**
- * Z Probe to nozzle (X,Y) offset, relative to (0, 0).
- * X and Y offsets must be integers.
+ * Z Probe to nozzle (X,Y) offset, relative to (0, 0).
+ * X and Y offsets must be integers.
*
- * In the following example the X and Y offsets are both positive:
- * #define X_PROBE_OFFSET_FROM_EXTRUDER 10
- * #define Y_PROBE_OFFSET_FROM_EXTRUDER 10
+ * In the following example the X and Y offsets are both positive:
+ * #define X_PROBE_OFFSET_FROM_EXTRUDER 10
+ * #define Y_PROBE_OFFSET_FROM_EXTRUDER 10
*
- * +-- BACK ---+
- * | |
- * L | (+) P | R <-- probe (20,20)
- * E | | I
- * F | (-) N (+) | G <-- nozzle (10,10)
- * T | | H
- * | (-) | T
- * | |
- * O-- FRONT --+
- * (0,0)
+ * +-- BACK ---+
+ * | |
+ * L | (+) P | R <-- probe (20,20)
+ * E | | I
+ * F | (-) N (+) | G <-- nozzle (10,10)
+ * T | | H
+ * | (-) | T
+ * | |
+ * O-- FRONT --+
+ * (0,0)
*/
#define X_PROBE_OFFSET_FROM_EXTRUDER -22 // X offset: -left +right [of the nozzle]
#define Y_PROBE_OFFSET_FROM_EXTRUDER 0 // Y offset: -front +behind [the nozzle]
@@ -2194,6 +2250,10 @@
#define NEOPIXEL_IS_SEQUENTIAL // Sequential display for temperature change - LED by LED. Disable to change all LEDs at once.
#define NEOPIXEL_BRIGHTNESS 127 // Initial brightness (0-255)
//#define NEOPIXEL_STARTUP_TEST // Cycle through colors at startup
+
+ // Use a single Neopixel LED for static (background) lighting
+ //#define NEOPIXEL_BKGD_LED_INDEX 0 // Index of the LED to use
+ //#define NEOPIXEL_BKGD_COLOR { 255, 255, 255, 0 } // R, G, B, W
#endif
/**
diff --git a/config/examples/Formbot/Raptor/Configuration_adv.h b/config/examples/Formbot/Raptor/Configuration_adv.h
index f7418ee67f..82617979c1 100644
--- a/config/examples/Formbot/Raptor/Configuration_adv.h
+++ b/config/examples/Formbot/Raptor/Configuration_adv.h
@@ -382,10 +382,6 @@
#endif
#endif
-//===========================================================================
-//============================ Mechanical Settings ==========================
-//===========================================================================
-
// @section homing
// If you want endstops to stay on (by default) even when not homing
@@ -745,6 +741,7 @@
* A (A shifted) B (B shifted) IC
* Smoothie 0x2C (0x58) 0x2D (0x5A) MCP4451
* AZTEEG_X3_PRO 0x2C (0x58) 0x2E (0x5C) MCP4451
+ * AZTEEG_X5_MINI 0x2C (0x58) 0x2E (0x5C) MCP4451
* AZTEEG_X5_MINI_WIFI 0x58 0x5C MCP4451
* MIGHTYBOARD_REVE 0x2F (0x5E) MCP4018
*/
diff --git a/config/examples/Formbot/T_Rex_2+/Configuration.h b/config/examples/Formbot/T_Rex_2+/Configuration.h
index e16b26ec32..14826cb109 100644
--- a/config/examples/Formbot/T_Rex_2+/Configuration.h
+++ b/config/examples/Formbot/T_Rex_2+/Configuration.h
@@ -857,15 +857,71 @@
*/
#define BLTOUCH
#if ENABLED(BLTOUCH)
- //#define BLTOUCH_DELAY 500 // Minimum Command delay (ms). Enable and increase if needed
+ /**
+ * Either: Use the defaults (recommended) or: For special purposes, use the following DEFINES
+ * Do not activate settings that the probe might not understand. Clones might misunderstand
+ * advanced commands.
+ *
+ * Note: If the probe is not deploying, check a "Cmd: Reset" and "Cmd: Self-Test" and then
+ * check the wiring of the BROWN, RED and ORANGE wires.
+ *
+ * Note: If the trigger signal of your probe is not being recognized, it has been very often
+ * because the BLACK and WHITE wires needed to be swapped. They are not "interchangeable"
+ * like they would be with a real switch. So please check the wiring first.
+ *
+ * Settings for all BLTouch and clone probes:
+ */
+
+ // Safety: The probe needs time to recognize the command.
+ // Minimum command delay (ms). Enable and increase if needed.
+ //#define BLTOUCH_DELAY 500
/**
- * BLTouch V3.0 and newer smart series
- * For genuine BLTouch 3.0 sensors. Clones may be confused by 3.0 command angles. YMMV.
- * If the pin trigger is not detected, first try swapping the black and white wires then toggle this.
+ * Settings for BLTOUCH Classic 1.2, 1.3 or BLTouch Smart 1.0, 2.0, 2.2, 3.0, 3.1, and most clones:
*/
- //#define BLTOUCH_FORCE_5V_MODE
-#endif
+
+ // Feature: Switch into SW mode after a deploy. It makes the output pulse longer. Can be useful
+ // in special cases, like noisy or filtered input configurations.
+ //#define BLTOUCH_FORCE_SW_MODE
+
+ /**
+ * Settings for BLTouch Smart 3.0 and 3.1
+ * Summary:
+ * - Voltage modes: 5V and OD (open drain - "logic voltage free") output modes
+ * - High-Speed mode
+ * - Disable LCD voltage options
+ */
+
+ /**
+ * Danger: Don't activate 5V mode unless attached to a 5V-tolerant controller!
+ * V3.0 or 3.1: Set default mode to 5V mode at Marlin startup.
+ * If disabled, OD mode is the hard-coded default on 3.0
+ * On startup, Marlin will compare its eeprom to this vale. If the selected mode
+ * differs, a mode set eeprom write will be completed at initialization.
+ * Use the option below to force an eeprom write to a V3.1 probe regardless.
+ */
+ //#define BLTOUCH_SET_5V_MODE
+
+ /**
+ * Safety: Activate if connecting a probe with an unknown voltage mode.
+ * V3.0: Set a probe into mode selected above at Marlin startup. Required for 5V mode on 3.0
+ * V3.1: Force a probe with unknown mode into selected mode at Marlin startup ( = Probe EEPROM write )
+ * To preserve the life of the probe, use this once then turn it off and re-flash.
+ */
+ //#define BLTOUCH_FORCE_MODE_SET
+
+ /**
+ * Use "HIGH SPEED" mode for probing.
+ * Danger: Disable if your probe sometimes fails. Only suitable for stable well-adjusted systems.
+ * This feature was designed for Delta's with very fast Z moves however higher speed cartesians may function
+ * If the machine cannot raise the probe fast enough after a trigger, it may enter a fault state.
+ */
+ //#define BLTOUCH_HS_MODE
+
+ // Safety: Enable voltage mode settings in the LCD menu.
+ //#define BLTOUCH_LCD_VOLTAGE_MENU
+
+#endif // BLTOUCH
// A probe that is deployed and stowed with a solenoid pin (SOL1_PIN)
@@ -887,23 +943,23 @@
//
/**
- * Z Probe to nozzle (X,Y) offset, relative to (0, 0).
- * X and Y offsets must be integers.
+ * Z Probe to nozzle (X,Y) offset, relative to (0, 0).
+ * X and Y offsets must be integers.
*
- * In the following example the X and Y offsets are both positive:
- * #define X_PROBE_OFFSET_FROM_EXTRUDER 10
- * #define Y_PROBE_OFFSET_FROM_EXTRUDER 10
+ * In the following example the X and Y offsets are both positive:
+ * #define X_PROBE_OFFSET_FROM_EXTRUDER 10
+ * #define Y_PROBE_OFFSET_FROM_EXTRUDER 10
*
- * +-- BACK ---+
- * | |
- * L | (+) P | R <-- probe (20,20)
- * E | | I
- * F | (-) N (+) | G <-- nozzle (10,10)
- * T | | H
- * | (-) | T
- * | |
- * O-- FRONT --+
- * (0,0)
+ * +-- BACK ---+
+ * | |
+ * L | (+) P | R <-- probe (20,20)
+ * E | | I
+ * F | (-) N (+) | G <-- nozzle (10,10)
+ * T | | H
+ * | (-) | T
+ * | |
+ * O-- FRONT --+
+ * (0,0)
*/
#define X_PROBE_OFFSET_FROM_EXTRUDER -3 // X offset: -left +right [of the nozzle]
#define Y_PROBE_OFFSET_FROM_EXTRUDER 31 // Y offset: -front +behind [the nozzle]
@@ -2124,6 +2180,10 @@
#define NEOPIXEL_IS_SEQUENTIAL // Sequential display for temperature change - LED by LED. Disable to change all LEDs at once.
#define NEOPIXEL_BRIGHTNESS 127 // Initial brightness (0-255)
//#define NEOPIXEL_STARTUP_TEST // Cycle through colors at startup
+
+ // Use a single Neopixel LED for static (background) lighting
+ //#define NEOPIXEL_BKGD_LED_INDEX 0 // Index of the LED to use
+ //#define NEOPIXEL_BKGD_COLOR { 255, 255, 255, 0 } // R, G, B, W
#endif
/**
diff --git a/config/examples/Formbot/T_Rex_2+/Configuration_adv.h b/config/examples/Formbot/T_Rex_2+/Configuration_adv.h
index 29776b3cc1..49dbaaa6be 100644
--- a/config/examples/Formbot/T_Rex_2+/Configuration_adv.h
+++ b/config/examples/Formbot/T_Rex_2+/Configuration_adv.h
@@ -386,10 +386,6 @@
#endif
#endif
-//===========================================================================
-//============================ Mechanical Settings ==========================
-//===========================================================================
-
// @section homing
// If you want endstops to stay on (by default) even when not homing
@@ -749,6 +745,7 @@
* A (A shifted) B (B shifted) IC
* Smoothie 0x2C (0x58) 0x2D (0x5A) MCP4451
* AZTEEG_X3_PRO 0x2C (0x58) 0x2E (0x5C) MCP4451
+ * AZTEEG_X5_MINI 0x2C (0x58) 0x2E (0x5C) MCP4451
* AZTEEG_X5_MINI_WIFI 0x58 0x5C MCP4451
* MIGHTYBOARD_REVE 0x2F (0x5E) MCP4018
*/
diff --git a/config/examples/Formbot/T_Rex_3/Configuration.h b/config/examples/Formbot/T_Rex_3/Configuration.h
index fe7fb271a6..e1ba05b0b8 100644
--- a/config/examples/Formbot/T_Rex_3/Configuration.h
+++ b/config/examples/Formbot/T_Rex_3/Configuration.h
@@ -844,15 +844,71 @@
*/
#define BLTOUCH
#if ENABLED(BLTOUCH)
- //#define BLTOUCH_DELAY 500 // Minimum Command delay (ms). Enable and increase if needed
+ /**
+ * Either: Use the defaults (recommended) or: For special purposes, use the following DEFINES
+ * Do not activate settings that the probe might not understand. Clones might misunderstand
+ * advanced commands.
+ *
+ * Note: If the probe is not deploying, check a "Cmd: Reset" and "Cmd: Self-Test" and then
+ * check the wiring of the BROWN, RED and ORANGE wires.
+ *
+ * Note: If the trigger signal of your probe is not being recognized, it has been very often
+ * because the BLACK and WHITE wires needed to be swapped. They are not "interchangeable"
+ * like they would be with a real switch. So please check the wiring first.
+ *
+ * Settings for all BLTouch and clone probes:
+ */
+
+ // Safety: The probe needs time to recognize the command.
+ // Minimum command delay (ms). Enable and increase if needed.
+ //#define BLTOUCH_DELAY 500
/**
- * BLTouch V3.0 and newer smart series
- * For genuine BLTouch 3.0 sensors. Clones may be confused by 3.0 command angles. YMMV.
- * If the pin trigger is not detected, first try swapping the black and white wires then toggle this.
+ * Settings for BLTOUCH Classic 1.2, 1.3 or BLTouch Smart 1.0, 2.0, 2.2, 3.0, 3.1, and most clones:
*/
- //#define BLTOUCH_FORCE_5V_MODE
-#endif
+
+ // Feature: Switch into SW mode after a deploy. It makes the output pulse longer. Can be useful
+ // in special cases, like noisy or filtered input configurations.
+ //#define BLTOUCH_FORCE_SW_MODE
+
+ /**
+ * Settings for BLTouch Smart 3.0 and 3.1
+ * Summary:
+ * - Voltage modes: 5V and OD (open drain - "logic voltage free") output modes
+ * - High-Speed mode
+ * - Disable LCD voltage options
+ */
+
+ /**
+ * Danger: Don't activate 5V mode unless attached to a 5V-tolerant controller!
+ * V3.0 or 3.1: Set default mode to 5V mode at Marlin startup.
+ * If disabled, OD mode is the hard-coded default on 3.0
+ * On startup, Marlin will compare its eeprom to this vale. If the selected mode
+ * differs, a mode set eeprom write will be completed at initialization.
+ * Use the option below to force an eeprom write to a V3.1 probe regardless.
+ */
+ //#define BLTOUCH_SET_5V_MODE
+
+ /**
+ * Safety: Activate if connecting a probe with an unknown voltage mode.
+ * V3.0: Set a probe into mode selected above at Marlin startup. Required for 5V mode on 3.0
+ * V3.1: Force a probe with unknown mode into selected mode at Marlin startup ( = Probe EEPROM write )
+ * To preserve the life of the probe, use this once then turn it off and re-flash.
+ */
+ //#define BLTOUCH_FORCE_MODE_SET
+
+ /**
+ * Use "HIGH SPEED" mode for probing.
+ * Danger: Disable if your probe sometimes fails. Only suitable for stable well-adjusted systems.
+ * This feature was designed for Delta's with very fast Z moves however higher speed cartesians may function
+ * If the machine cannot raise the probe fast enough after a trigger, it may enter a fault state.
+ */
+ //#define BLTOUCH_HS_MODE
+
+ // Safety: Enable voltage mode settings in the LCD menu.
+ //#define BLTOUCH_LCD_VOLTAGE_MENU
+
+#endif // BLTOUCH
// A probe that is deployed and stowed with a solenoid pin (SOL1_PIN)
//#define SOLENOID_PROBE
@@ -873,23 +929,23 @@
//
/**
- * Z Probe to nozzle (X,Y) offset, relative to (0, 0).
- * X and Y offsets must be integers.
+ * Z Probe to nozzle (X,Y) offset, relative to (0, 0).
+ * X and Y offsets must be integers.
*
- * In the following example the X and Y offsets are both positive:
- * #define X_PROBE_OFFSET_FROM_EXTRUDER 10
- * #define Y_PROBE_OFFSET_FROM_EXTRUDER 10
+ * In the following example the X and Y offsets are both positive:
+ * #define X_PROBE_OFFSET_FROM_EXTRUDER 10
+ * #define Y_PROBE_OFFSET_FROM_EXTRUDER 10
*
- * +-- BACK ---+
- * | |
- * L | (+) P | R <-- probe (20,20)
- * E | | I
- * F | (-) N (+) | G <-- nozzle (10,10)
- * T | | H
- * | (-) | T
- * | |
- * O-- FRONT --+
- * (0,0)
+ * +-- BACK ---+
+ * | |
+ * L | (+) P | R <-- probe (20,20)
+ * E | | I
+ * F | (-) N (+) | G <-- nozzle (10,10)
+ * T | | H
+ * | (-) | T
+ * | |
+ * O-- FRONT --+
+ * (0,0)
*/
#define X_PROBE_OFFSET_FROM_EXTRUDER -3 // X offset: -left +right [of the nozzle]
#define Y_PROBE_OFFSET_FROM_EXTRUDER 31 // Y offset: -front +behind [the nozzle]
@@ -2117,6 +2173,10 @@
#define NEOPIXEL_IS_SEQUENTIAL // Sequential display for temperature change - LED by LED. Disable to change all LEDs at once.
#define NEOPIXEL_BRIGHTNESS 127 // Initial brightness (0-255)
//#define NEOPIXEL_STARTUP_TEST // Cycle through colors at startup
+
+ // Use a single Neopixel LED for static (background) lighting
+ //#define NEOPIXEL_BKGD_LED_INDEX 0 // Index of the LED to use
+ //#define NEOPIXEL_BKGD_COLOR { 255, 255, 255, 0 } // R, G, B, W
#endif
/**
diff --git a/config/examples/Formbot/T_Rex_3/Configuration_adv.h b/config/examples/Formbot/T_Rex_3/Configuration_adv.h
index 5f81cfaf41..365e6c407c 100644
--- a/config/examples/Formbot/T_Rex_3/Configuration_adv.h
+++ b/config/examples/Formbot/T_Rex_3/Configuration_adv.h
@@ -386,10 +386,6 @@
#endif
#endif
-//===========================================================================
-//============================ Mechanical Settings ==========================
-//===========================================================================
-
// @section homing
// If you want endstops to stay on (by default) even when not homing
@@ -749,6 +745,7 @@
* A (A shifted) B (B shifted) IC
* Smoothie 0x2C (0x58) 0x2D (0x5A) MCP4451
* AZTEEG_X3_PRO 0x2C (0x58) 0x2E (0x5C) MCP4451
+ * AZTEEG_X5_MINI 0x2C (0x58) 0x2E (0x5C) MCP4451
* AZTEEG_X5_MINI_WIFI 0x58 0x5C MCP4451
* MIGHTYBOARD_REVE 0x2F (0x5E) MCP4018
*/
diff --git a/config/examples/Geeetech/A10M/Configuration.h b/config/examples/Geeetech/A10M/Configuration.h
index a0a25651dd..f68b271b1d 100644
--- a/config/examples/Geeetech/A10M/Configuration.h
+++ b/config/examples/Geeetech/A10M/Configuration.h
@@ -707,9 +707,9 @@
* M204 R Retract Acceleration
* M204 T Travel Acceleration
*/
-#define DEFAULT_ACCELERATION 500 // X, Y, Z and E acceleration for printing moves
-#define DEFAULT_RETRACT_ACCELERATION 500 // E acceleration for retracts
-#define DEFAULT_TRAVEL_ACCELERATION 500 // X, Y, Z acceleration for travel (non printing) moves
+#define DEFAULT_ACCELERATION 1000 // X, Y, Z and E acceleration for printing moves
+#define DEFAULT_RETRACT_ACCELERATION 2000 // E acceleration for retracts
+#define DEFAULT_TRAVEL_ACCELERATION 1000 // X, Y, Z acceleration for travel (non printing) moves
//
// Use Junction Deviation instead of traditional Jerk Limiting
@@ -811,15 +811,71 @@
*/
//#define BLTOUCH
#if ENABLED(BLTOUCH)
- //#define BLTOUCH_DELAY 500 // Minimum Command delay (ms). Enable and increase if needed
+ /**
+ * Either: Use the defaults (recommended) or: For special purposes, use the following DEFINES
+ * Do not activate settings that the probe might not understand. Clones might misunderstand
+ * advanced commands.
+ *
+ * Note: If the probe is not deploying, check a "Cmd: Reset" and "Cmd: Self-Test" and then
+ * check the wiring of the BROWN, RED and ORANGE wires.
+ *
+ * Note: If the trigger signal of your probe is not being recognized, it has been very often
+ * because the BLACK and WHITE wires needed to be swapped. They are not "interchangeable"
+ * like they would be with a real switch. So please check the wiring first.
+ *
+ * Settings for all BLTouch and clone probes:
+ */
+
+ // Safety: The probe needs time to recognize the command.
+ // Minimum command delay (ms). Enable and increase if needed.
+ #define BLTOUCH_DELAY 200
/**
- * BLTouch V3.0 and newer smart series
- * For genuine BLTouch 3.0 sensors. Clones may be confused by 3.0 command angles. YMMV.
- * If the pin trigger is not detected, first try swapping the black and white wires then toggle this.
+ * Settings for BLTOUCH Classic 1.2, 1.3 or BLTouch Smart 1.0, 2.0, 2.2, 3.0, 3.1, and most clones:
*/
- //#define BLTOUCH_FORCE_5V_MODE
-#endif
+
+ // Feature: Switch into SW mode after a deploy. It makes the output pulse longer. Can be useful
+ // in special cases, like noisy or filtered input configurations.
+ //#define BLTOUCH_FORCE_SW_MODE
+
+ /**
+ * Settings for BLTouch Smart 3.0 and 3.1
+ * Summary:
+ * - Voltage modes: 5V and OD (open drain - "logic voltage free") output modes
+ * - High-Speed mode
+ * - Disable LCD voltage options
+ */
+
+ /**
+ * Danger: Don't activate 5V mode unless attached to a 5V-tolerant controller!
+ * V3.0 or 3.1: Set default mode to 5V mode at Marlin startup.
+ * If disabled, OD mode is the hard-coded default on 3.0
+ * On startup, Marlin will compare its eeprom to this vale. If the selected mode
+ * differs, a mode set eeprom write will be completed at initialization.
+ * Use the option below to force an eeprom write to a V3.1 probe regardless.
+ */
+ //#define BLTOUCH_SET_5V_MODE
+
+ /**
+ * Safety: Activate if connecting a probe with an unknown voltage mode.
+ * V3.0: Set a probe into mode selected above at Marlin startup. Required for 5V mode on 3.0
+ * V3.1: Force a probe with unknown mode into selected mode at Marlin startup ( = Probe EEPROM write )
+ * To preserve the life of the probe, use this once then turn it off and re-flash.
+ */
+ //#define BLTOUCH_FORCE_MODE_SET
+
+ /**
+ * Use "HIGH SPEED" mode for probing.
+ * Danger: Disable if your probe sometimes fails. Only suitable for stable well-adjusted systems.
+ * This feature was designed for Delta's with very fast Z moves however higher speed cartesians may function
+ * If the machine cannot raise the probe fast enough after a trigger, it may enter a fault state.
+ */
+ #define BLTOUCH_HS_MODE
+
+ // Safety: Enable voltage mode settings in the LCD menu.
+ //#define BLTOUCH_LCD_VOLTAGE_MENU
+
+#endif // BLTOUCH
// A probe that is deployed and stowed with a solenoid pin (SOL1_PIN)
//#define SOLENOID_PROBE
@@ -840,27 +896,27 @@
//
/**
- * Z Probe to nozzle (X,Y) offset, relative to (0, 0).
- * X and Y offsets must be integers.
+ * Z Probe to nozzle (X,Y) offset, relative to (0, 0).
+ * X and Y offsets must be integers.
*
- * In the following example the X and Y offsets are both positive:
- * #define X_PROBE_OFFSET_FROM_EXTRUDER 10
- * #define Y_PROBE_OFFSET_FROM_EXTRUDER 10
+ * In the following example the X and Y offsets are both positive:
+ * #define X_PROBE_OFFSET_FROM_EXTRUDER 10
+ * #define Y_PROBE_OFFSET_FROM_EXTRUDER 10
*
- * +-- BACK ---+
- * | |
- * L | (+) P | R <-- probe (20,20)
- * E | | I
- * F | (-) N (+) | G <-- nozzle (10,10)
- * T | | H
- * | (-) | T
- * | |
- * O-- FRONT --+
- * (0,0)
+ * +-- BACK ---+
+ * | |
+ * L | (+) P | R <-- probe (20,20)
+ * E | | I
+ * F | (-) N (+) | G <-- nozzle (10,10)
+ * T | | H
+ * | (-) | T
+ * | |
+ * O-- FRONT --+
+ * (0,0)
*/
#define X_PROBE_OFFSET_FROM_EXTRUDER -37 // X offset: -left +right [of the nozzle]
#define Y_PROBE_OFFSET_FROM_EXTRUDER 0 // Y offset: -front +behind [the nozzle]
-#define Z_PROBE_OFFSET_FROM_EXTRUDER -0.5 // Z offset: -below +above [the nozzle]
+#define Z_PROBE_OFFSET_FROM_EXTRUDER -3.6 // Z offset: -below +above [the nozzle]
// Certain types of probes need to stay away from edges
#define MIN_PROBE_EDGE 10
@@ -893,16 +949,16 @@
* Example: `M851 Z-5` with a CLEARANCE of 4 => 9mm from bed to nozzle.
* But: `M851 Z+1` with a CLEARANCE of 2 => 2mm from bed to nozzle.
*/
-#define Z_CLEARANCE_DEPLOY_PROBE 10 // Z Clearance for Deploy/Stow
-#define Z_CLEARANCE_BETWEEN_PROBES 5 // Z Clearance between probe points
-#define Z_CLEARANCE_MULTI_PROBE 5 // Z Clearance between multiple probes
-//#define Z_AFTER_PROBING 5 // Z position after probing is done
+#define Z_CLEARANCE_DEPLOY_PROBE 5 // Z Clearance for Deploy/Stow
+#define Z_CLEARANCE_BETWEEN_PROBES 3 // Z Clearance between probe points
+#define Z_CLEARANCE_MULTI_PROBE 2 // Z Clearance between multiple probes
+#define Z_AFTER_PROBING 3 // Z position after probing is done
#define Z_PROBE_LOW_POINT -2 // Farthest distance below the trigger-point to go before stopping
// For M851 give a range for adjusting the Z probe offset
-#define Z_PROBE_OFFSET_RANGE_MIN -20
-#define Z_PROBE_OFFSET_RANGE_MAX 20
+#define Z_PROBE_OFFSET_RANGE_MIN -5
+#define Z_PROBE_OFFSET_RANGE_MAX -0.2
// Enable the M48 repeatability test to test probe accuracy
//#define Z_MIN_PROBE_REPEATABILITY_TEST
@@ -926,7 +982,7 @@
#endif
#define PROBING_FANS_OFF // Turn fans off when probing
//#define PROBING_STEPPERS_OFF // Turn steppers off (unless needed to hold position) when probing
-#define DELAY_BEFORE_PROBING 200 // (ms) To prevent vibrations from triggering piezo sensors
+#define DELAY_BEFORE_PROBING 100 // (ms) To prevent vibrations from triggering piezo sensors
// For Inverting Stepper Enable Pins (Active Low) use 0, Non Inverting (Active High) use 1
// :{ 0:'Low', 1:'High' }
@@ -1276,7 +1332,7 @@
#endif
// Homing speeds (mm/m)
-#define HOMING_FEEDRATE_XY (100*60)
+#define HOMING_FEEDRATE_XY (80*60)
#define HOMING_FEEDRATE_Z (20*60)
// Validate that endstops are triggered on homing moves
@@ -1414,7 +1470,7 @@
#if ENABLED(NOZZLE_PARK_FEATURE)
// Specify a park position as { X, Y, Z_raise }
- #define NOZZLE_PARK_POINT { 3, 3, 10 }
+ #define NOZZLE_PARK_POINT { 3, (Y_MAX_POS - 3), 10 }
#define NOZZLE_PARK_XY_FEEDRATE 100 // (mm/s) X and Y axes feedrate (also used for delta Z axis)
#define NOZZLE_PARK_Z_FEEDRATE 5 // (mm/s) Z axis feedrate (not used for delta printers)
#endif
@@ -1671,7 +1727,7 @@
//
// Note: Usually sold with a white PCB.
//
-//#define REPRAP_DISCOUNT_SMART_CONTROLLER
+#define REPRAP_DISCOUNT_SMART_CONTROLLER
//
// Original RADDS LCD Display+Encoder+SDCardReader
@@ -1687,7 +1743,7 @@
//
// ULTIPANEL as seen on Thingiverse.
//
-#define ULTIPANEL
+//#define ULTIPANEL
//
// PanelOne from T3P3 (via RAMPS 1.4 AUX2/AUX3)
@@ -2074,6 +2130,10 @@
#define NEOPIXEL_IS_SEQUENTIAL // Sequential display for temperature change - LED by LED. Disable to change all LEDs at once.
#define NEOPIXEL_BRIGHTNESS 127 // Initial brightness (0-255)
//#define NEOPIXEL_STARTUP_TEST // Cycle through colors at startup
+
+ // Use a single Neopixel LED for static (background) lighting
+ //#define NEOPIXEL_BKGD_LED_INDEX 0 // Index of the LED to use
+ //#define NEOPIXEL_BKGD_COLOR { 255, 255, 255, 0 } // R, G, B, W
#endif
/**
diff --git a/config/examples/Geeetech/A10M/Configuration_adv.h b/config/examples/Geeetech/A10M/Configuration_adv.h
index 8f0350b529..1dbfedbbf4 100644
--- a/config/examples/Geeetech/A10M/Configuration_adv.h
+++ b/config/examples/Geeetech/A10M/Configuration_adv.h
@@ -382,10 +382,6 @@
#endif
#endif
-//===========================================================================
-//============================ Mechanical Settings ==========================
-//===========================================================================
-
// @section homing
// If you want endstops to stay on (by default) even when not homing
@@ -745,6 +741,7 @@
* A (A shifted) B (B shifted) IC
* Smoothie 0x2C (0x58) 0x2D (0x5A) MCP4451
* AZTEEG_X3_PRO 0x2C (0x58) 0x2E (0x5C) MCP4451
+ * AZTEEG_X5_MINI 0x2C (0x58) 0x2E (0x5C) MCP4451
* AZTEEG_X5_MINI_WIFI 0x58 0x5C MCP4451
* MIGHTYBOARD_REVE 0x2F (0x5E) MCP4018
*/
@@ -990,13 +987,13 @@
*/
#if HAS_GRAPHICAL_LCD
// Show SD percentage next to the progress bar
- //#define DOGM_SD_PERCENT
+ #define DOGM_SD_PERCENT
// Enable to save many cycles by drawing a hollow frame on the Info Screen
#define XYZ_HOLLOW_FRAME
// Enable to save many cycles by drawing a hollow frame on Menu Screens
- #define MENU_HOLLOW_FRAME
+ //#define MENU_HOLLOW_FRAME
// A bigger font is available for edit items. Costs 3120 bytes of PROGMEM.
// Western only. Not available for Cyrillic, Kana, Turkish, Greek, or Chinese.
@@ -1042,11 +1039,11 @@
#define STATUS_HOTEND_INVERTED // Show solid nozzle bitmaps when heating (Requires STATUS_HOTEND_ANIM)
#define STATUS_HOTEND_ANIM // Use a second bitmap to indicate hotend heating
#define STATUS_BED_ANIM // Use a second bitmap to indicate bed heating
- //#define STATUS_ALT_BED_BITMAP // Use the alternative bed bitmap
- //#define STATUS_ALT_FAN_BITMAP // Use the alternative fan bitmap
- //#define STATUS_FAN_FRAMES 3 // :[0,1,2,3,4] Number of fan animation frames
- //#define STATUS_HEAT_PERCENT // Show heating in a progress bar
- //#define BOOT_MARLIN_LOGO_SMALL // Show a smaller Marlin logo on the Boot Screen (saving 399 bytes of flash)
+ #define STATUS_ALT_BED_BITMAP // Use the alternative bed bitmap
+ #define STATUS_ALT_FAN_BITMAP // Use the alternative fan bitmap
+ #define STATUS_FAN_FRAMES 3 // :[0,1,2,3,4] Number of fan animation frames
+ #define STATUS_HEAT_PERCENT // Show heating in a progress bar
+ #define BOOT_MARLIN_LOGO_SMALL // Show a smaller Marlin logo on the Boot Screen (saving 399 bytes of flash)
// Frivolous Game Options
//#define MARLIN_BRICKOUT
diff --git a/config/examples/Geeetech/A20M/Configuration.h b/config/examples/Geeetech/A20M/Configuration.h
index d107d2a6f7..c3e6006cbd 100644
--- a/config/examples/Geeetech/A20M/Configuration.h
+++ b/config/examples/Geeetech/A20M/Configuration.h
@@ -707,9 +707,9 @@
* M204 R Retract Acceleration
* M204 T Travel Acceleration
*/
-#define DEFAULT_ACCELERATION 500 // X, Y, Z and E acceleration for printing moves
-#define DEFAULT_RETRACT_ACCELERATION 500 // E acceleration for retracts
-#define DEFAULT_TRAVEL_ACCELERATION 500 // X, Y, Z acceleration for travel (non printing) moves
+#define DEFAULT_ACCELERATION 1000 // X, Y, Z and E acceleration for printing moves
+#define DEFAULT_RETRACT_ACCELERATION 2000 // E acceleration for retracts
+#define DEFAULT_TRAVEL_ACCELERATION 1000 // X, Y, Z acceleration for travel (non printing) moves
//
// Use Junction Deviation instead of traditional Jerk Limiting
@@ -811,15 +811,71 @@
*/
//#define BLTOUCH
#if ENABLED(BLTOUCH)
- //#define BLTOUCH_DELAY 500 // Minimum Command delay (ms). Enable and increase if needed
+ /**
+ * Either: Use the defaults (recommended) or: For special purposes, use the following DEFINES
+ * Do not activate settings that the probe might not understand. Clones might misunderstand
+ * advanced commands.
+ *
+ * Note: If the probe is not deploying, check a "Cmd: Reset" and "Cmd: Self-Test" and then
+ * check the wiring of the BROWN, RED and ORANGE wires.
+ *
+ * Note: If the trigger signal of your probe is not being recognized, it has been very often
+ * because the BLACK and WHITE wires needed to be swapped. They are not "interchangeable"
+ * like they would be with a real switch. So please check the wiring first.
+ *
+ * Settings for all BLTouch and clone probes:
+ */
+
+ // Safety: The probe needs time to recognize the command.
+ // Minimum command delay (ms). Enable and increase if needed.
+ #define BLTOUCH_DELAY 200
/**
- * BLTouch V3.0 and newer smart series
- * For genuine BLTouch 3.0 sensors. Clones may be confused by 3.0 command angles. YMMV.
- * If the pin trigger is not detected, first try swapping the black and white wires then toggle this.
+ * Settings for BLTOUCH Classic 1.2, 1.3 or BLTouch Smart 1.0, 2.0, 2.2, 3.0, 3.1, and most clones:
*/
- //#define BLTOUCH_FORCE_5V_MODE
-#endif
+
+ // Feature: Switch into SW mode after a deploy. It makes the output pulse longer. Can be useful
+ // in special cases, like noisy or filtered input configurations.
+ //#define BLTOUCH_FORCE_SW_MODE
+
+ /**
+ * Settings for BLTouch Smart 3.0 and 3.1
+ * Summary:
+ * - Voltage modes: 5V and OD (open drain - "logic voltage free") output modes
+ * - High-Speed mode
+ * - Disable LCD voltage options
+ */
+
+ /**
+ * Danger: Don't activate 5V mode unless attached to a 5V-tolerant controller!
+ * V3.0 or 3.1: Set default mode to 5V mode at Marlin startup.
+ * If disabled, OD mode is the hard-coded default on 3.0
+ * On startup, Marlin will compare its eeprom to this vale. If the selected mode
+ * differs, a mode set eeprom write will be completed at initialization.
+ * Use the option below to force an eeprom write to a V3.1 probe regardless.
+ */
+ //#define BLTOUCH_SET_5V_MODE
+
+ /**
+ * Safety: Activate if connecting a probe with an unknown voltage mode.
+ * V3.0: Set a probe into mode selected above at Marlin startup. Required for 5V mode on 3.0
+ * V3.1: Force a probe with unknown mode into selected mode at Marlin startup ( = Probe EEPROM write )
+ * To preserve the life of the probe, use this once then turn it off and re-flash.
+ */
+ //#define BLTOUCH_FORCE_MODE_SET
+
+ /**
+ * Use "HIGH SPEED" mode for probing.
+ * Danger: Disable if your probe sometimes fails. Only suitable for stable well-adjusted systems.
+ * This feature was designed for Delta's with very fast Z moves however higher speed cartesians may function
+ * If the machine cannot raise the probe fast enough after a trigger, it may enter a fault state.
+ */
+ #define BLTOUCH_HS_MODE
+
+ // Safety: Enable voltage mode settings in the LCD menu.
+ //#define BLTOUCH_LCD_VOLTAGE_MENU
+
+#endif // BLTOUCH
// A probe that is deployed and stowed with a solenoid pin (SOL1_PIN)
//#define SOLENOID_PROBE
@@ -840,27 +896,27 @@
//
/**
- * Z Probe to nozzle (X,Y) offset, relative to (0, 0).
- * X and Y offsets must be integers.
+ * Z Probe to nozzle (X,Y) offset, relative to (0, 0).
+ * X and Y offsets must be integers.
*
- * In the following example the X and Y offsets are both positive:
- * #define X_PROBE_OFFSET_FROM_EXTRUDER 10
- * #define Y_PROBE_OFFSET_FROM_EXTRUDER 10
+ * In the following example the X and Y offsets are both positive:
+ * #define X_PROBE_OFFSET_FROM_EXTRUDER 10
+ * #define Y_PROBE_OFFSET_FROM_EXTRUDER 10
*
- * +-- BACK ---+
- * | |
- * L | (+) P | R <-- probe (20,20)
- * E | | I
- * F | (-) N (+) | G <-- nozzle (10,10)
- * T | | H
- * | (-) | T
- * | |
- * O-- FRONT --+
- * (0,0)
+ * +-- BACK ---+
+ * | |
+ * L | (+) P | R <-- probe (20,20)
+ * E | | I
+ * F | (-) N (+) | G <-- nozzle (10,10)
+ * T | | H
+ * | (-) | T
+ * | |
+ * O-- FRONT --+
+ * (0,0)
*/
#define X_PROBE_OFFSET_FROM_EXTRUDER -37 // X offset: -left +right [of the nozzle]
#define Y_PROBE_OFFSET_FROM_EXTRUDER 0 // Y offset: -front +behind [the nozzle]
-#define Z_PROBE_OFFSET_FROM_EXTRUDER -0.5 // Z offset: -below +above [the nozzle]
+#define Z_PROBE_OFFSET_FROM_EXTRUDER -3.6 // Z offset: -below +above [the nozzle]
// Certain types of probes need to stay away from edges
#define MIN_PROBE_EDGE 10
@@ -893,16 +949,16 @@
* Example: `M851 Z-5` with a CLEARANCE of 4 => 9mm from bed to nozzle.
* But: `M851 Z+1` with a CLEARANCE of 2 => 2mm from bed to nozzle.
*/
-#define Z_CLEARANCE_DEPLOY_PROBE 10 // Z Clearance for Deploy/Stow
-#define Z_CLEARANCE_BETWEEN_PROBES 5 // Z Clearance between probe points
-#define Z_CLEARANCE_MULTI_PROBE 5 // Z Clearance between multiple probes
-//#define Z_AFTER_PROBING 5 // Z position after probing is done
+#define Z_CLEARANCE_DEPLOY_PROBE 5 // Z Clearance for Deploy/Stow
+#define Z_CLEARANCE_BETWEEN_PROBES 3 // Z Clearance between probe points
+#define Z_CLEARANCE_MULTI_PROBE 2 // Z Clearance between multiple probes
+#define Z_AFTER_PROBING 3 // Z position after probing is done
#define Z_PROBE_LOW_POINT -2 // Farthest distance below the trigger-point to go before stopping
// For M851 give a range for adjusting the Z probe offset
-#define Z_PROBE_OFFSET_RANGE_MIN -20
-#define Z_PROBE_OFFSET_RANGE_MAX 20
+#define Z_PROBE_OFFSET_RANGE_MIN -5
+#define Z_PROBE_OFFSET_RANGE_MAX -0.2
// Enable the M48 repeatability test to test probe accuracy
//#define Z_MIN_PROBE_REPEATABILITY_TEST
@@ -926,7 +982,7 @@
#endif
#define PROBING_FANS_OFF // Turn fans off when probing
//#define PROBING_STEPPERS_OFF // Turn steppers off (unless needed to hold position) when probing
-#define DELAY_BEFORE_PROBING 200 // (ms) To prevent vibrations from triggering piezo sensors
+#define DELAY_BEFORE_PROBING 100 // (ms) To prevent vibrations from triggering piezo sensors
// For Inverting Stepper Enable Pins (Active Low) use 0, Non Inverting (Active High) use 1
// :{ 0:'Low', 1:'High' }
@@ -1130,7 +1186,7 @@
/**
* Enable the G26 Mesh Validation Pattern tool.
*/
- //#define G26_MESH_VALIDATION
+ #define G26_MESH_VALIDATION
#if ENABLED(G26_MESH_VALIDATION)
#define MESH_TEST_NOZZLE_SIZE 0.4 // (mm) Diameter of primary nozzle.
#define MESH_TEST_LAYER_HEIGHT 0.2 // (mm) Default layer height for the G26 Mesh Validation Tool.
@@ -1144,7 +1200,7 @@
#if EITHER(AUTO_BED_LEVELING_LINEAR, AUTO_BED_LEVELING_BILINEAR)
// Set the number of grid points per dimension.
- #define GRID_MAX_POINTS_X 3
+ #define GRID_MAX_POINTS_X 5
#define GRID_MAX_POINTS_Y GRID_MAX_POINTS_X
// Set the boundaries for probing (where the probe can reach).
@@ -1223,12 +1279,11 @@
* Add a bed leveling sub-menu for ABL or MBL.
* Include a guided procedure if manual probing is enabled.
*/
-//#define LCD_BED_LEVELING
-
+#define LCD_BED_LEVELING
#if ENABLED(LCD_BED_LEVELING)
#define MESH_EDIT_Z_STEP 0.025 // (mm) Step size while manually probing Z axis.
#define LCD_PROBE_Z_RANGE 4 // (mm) Z Range centered on Z_MIN_POS for LCD Z adjustment
- //#define MESH_EDIT_MENU // Add a menu to edit mesh points
+ #define MESH_EDIT_MENU // Add a menu to edit mesh points
#endif
// Add a menu item to move between bed corners for manual bed adjustment
@@ -1276,7 +1331,7 @@
#endif
// Homing speeds (mm/m)
-#define HOMING_FEEDRATE_XY (100*60)
+#define HOMING_FEEDRATE_XY (80*60)
#define HOMING_FEEDRATE_Z (20*60)
// Validate that endstops are triggered on homing moves
@@ -1414,7 +1469,7 @@
#if ENABLED(NOZZLE_PARK_FEATURE)
// Specify a park position as { X, Y, Z_raise }
- #define NOZZLE_PARK_POINT { 3, 3, 10 }
+ #define NOZZLE_PARK_POINT { 3, (Y_MAX_POS - 3), 10 }
#define NOZZLE_PARK_XY_FEEDRATE 100 // (mm/s) X and Y axes feedrate (also used for delta Z axis)
#define NOZZLE_PARK_Z_FEEDRATE 5 // (mm/s) Z axis feedrate (not used for delta printers)
#endif
@@ -2078,6 +2133,10 @@
#define NEOPIXEL_IS_SEQUENTIAL // Sequential display for temperature change - LED by LED. Disable to change all LEDs at once.
#define NEOPIXEL_BRIGHTNESS 127 // Initial brightness (0-255)
//#define NEOPIXEL_STARTUP_TEST // Cycle through colors at startup
+
+ // Use a single Neopixel LED for static (background) lighting
+ //#define NEOPIXEL_BKGD_LED_INDEX 0 // Index of the LED to use
+ //#define NEOPIXEL_BKGD_COLOR { 255, 255, 255, 0 } // R, G, B, W
#endif
/**
diff --git a/config/examples/Geeetech/A20M/Configuration_adv.h b/config/examples/Geeetech/A20M/Configuration_adv.h
index 656a020e27..3eecc96981 100644
--- a/config/examples/Geeetech/A20M/Configuration_adv.h
+++ b/config/examples/Geeetech/A20M/Configuration_adv.h
@@ -382,10 +382,6 @@
#endif
#endif
-//===========================================================================
-//============================ Mechanical Settings ==========================
-//===========================================================================
-
// @section homing
// If you want endstops to stay on (by default) even when not homing
@@ -745,6 +741,7 @@
* A (A shifted) B (B shifted) IC
* Smoothie 0x2C (0x58) 0x2D (0x5A) MCP4451
* AZTEEG_X3_PRO 0x2C (0x58) 0x2E (0x5C) MCP4451
+ * AZTEEG_X5_MINI 0x2C (0x58) 0x2E (0x5C) MCP4451
* AZTEEG_X5_MINI_WIFI 0x58 0x5C MCP4451
* MIGHTYBOARD_REVE 0x2F (0x5E) MCP4018
*/
@@ -794,11 +791,11 @@
//#define LCD_SET_PROGRESS_MANUALLY
#if HAS_CHARACTER_LCD && HAS_PRINT_PROGRESS
- //#define LCD_PROGRESS_BAR // Show a progress bar on HD44780 LCDs for SD printing
+ #define LCD_PROGRESS_BAR // Show a progress bar on HD44780 LCDs for SD printing
#if ENABLED(LCD_PROGRESS_BAR)
#define PROGRESS_BAR_BAR_TIME 2000 // (ms) Amount of time to show the bar
#define PROGRESS_BAR_MSG_TIME 3000 // (ms) Amount of time to show the status message
- #define PROGRESS_MSG_EXPIRE 0 // (ms) Amount of time to retain the status message (0=forever)
+ #define PROGRESS_MSG_EXPIRE 180000 // (ms) Amount of time to retain the status message (0=forever)
//#define PROGRESS_MSG_ONCE // Show the message for MSG_TIME then clear it
//#define LCD_PROGRESS_BAR_TEST // Add a menu item to test the progress bar
#endif
@@ -990,13 +987,13 @@
*/
#if HAS_GRAPHICAL_LCD
// Show SD percentage next to the progress bar
- //#define DOGM_SD_PERCENT
+ #define DOGM_SD_PERCENT
// Enable to save many cycles by drawing a hollow frame on the Info Screen
#define XYZ_HOLLOW_FRAME
// Enable to save many cycles by drawing a hollow frame on Menu Screens
- #define MENU_HOLLOW_FRAME
+ //#define MENU_HOLLOW_FRAME
// A bigger font is available for edit items. Costs 3120 bytes of PROGMEM.
// Western only. Not available for Cyrillic, Kana, Turkish, Greek, or Chinese.
@@ -1042,11 +1039,11 @@
#define STATUS_HOTEND_INVERTED // Show solid nozzle bitmaps when heating (Requires STATUS_HOTEND_ANIM)
#define STATUS_HOTEND_ANIM // Use a second bitmap to indicate hotend heating
#define STATUS_BED_ANIM // Use a second bitmap to indicate bed heating
- //#define STATUS_ALT_BED_BITMAP // Use the alternative bed bitmap
- //#define STATUS_ALT_FAN_BITMAP // Use the alternative fan bitmap
- //#define STATUS_FAN_FRAMES 3 // :[0,1,2,3,4] Number of fan animation frames
- //#define STATUS_HEAT_PERCENT // Show heating in a progress bar
- //#define BOOT_MARLIN_LOGO_SMALL // Show a smaller Marlin logo on the Boot Screen (saving 399 bytes of flash)
+ #define STATUS_ALT_BED_BITMAP // Use the alternative bed bitmap
+ #define STATUS_ALT_FAN_BITMAP // Use the alternative fan bitmap
+ #define STATUS_FAN_FRAMES 3 // :[0,1,2,3,4] Number of fan animation frames
+ #define STATUS_HEAT_PERCENT // Show heating in a progress bar
+ #define BOOT_MARLIN_LOGO_SMALL // Show a smaller Marlin logo on the Boot Screen (saving 399 bytes of flash)
// Frivolous Game Options
//#define MARLIN_BRICKOUT
diff --git a/config/examples/Geeetech/GT2560/Configuration.h b/config/examples/Geeetech/GT2560/Configuration.h
index 0a03d3da72..af98fe9fbc 100644
--- a/config/examples/Geeetech/GT2560/Configuration.h
+++ b/config/examples/Geeetech/GT2560/Configuration.h
@@ -843,15 +843,71 @@
*/
//#define BLTOUCH
#if ENABLED(BLTOUCH)
- //#define BLTOUCH_DELAY 500 // Minimum Command delay (ms). Enable and increase if needed
+ /**
+ * Either: Use the defaults (recommended) or: For special purposes, use the following DEFINES
+ * Do not activate settings that the probe might not understand. Clones might misunderstand
+ * advanced commands.
+ *
+ * Note: If the probe is not deploying, check a "Cmd: Reset" and "Cmd: Self-Test" and then
+ * check the wiring of the BROWN, RED and ORANGE wires.
+ *
+ * Note: If the trigger signal of your probe is not being recognized, it has been very often
+ * because the BLACK and WHITE wires needed to be swapped. They are not "interchangeable"
+ * like they would be with a real switch. So please check the wiring first.
+ *
+ * Settings for all BLTouch and clone probes:
+ */
+
+ // Safety: The probe needs time to recognize the command.
+ // Minimum command delay (ms). Enable and increase if needed.
+ //#define BLTOUCH_DELAY 500
/**
- * BLTouch V3.0 and newer smart series
- * For genuine BLTouch 3.0 sensors. Clones may be confused by 3.0 command angles. YMMV.
- * If the pin trigger is not detected, first try swapping the black and white wires then toggle this.
+ * Settings for BLTOUCH Classic 1.2, 1.3 or BLTouch Smart 1.0, 2.0, 2.2, 3.0, 3.1, and most clones:
*/
- //#define BLTOUCH_FORCE_5V_MODE
-#endif
+
+ // Feature: Switch into SW mode after a deploy. It makes the output pulse longer. Can be useful
+ // in special cases, like noisy or filtered input configurations.
+ //#define BLTOUCH_FORCE_SW_MODE
+
+ /**
+ * Settings for BLTouch Smart 3.0 and 3.1
+ * Summary:
+ * - Voltage modes: 5V and OD (open drain - "logic voltage free") output modes
+ * - High-Speed mode
+ * - Disable LCD voltage options
+ */
+
+ /**
+ * Danger: Don't activate 5V mode unless attached to a 5V-tolerant controller!
+ * V3.0 or 3.1: Set default mode to 5V mode at Marlin startup.
+ * If disabled, OD mode is the hard-coded default on 3.0
+ * On startup, Marlin will compare its eeprom to this vale. If the selected mode
+ * differs, a mode set eeprom write will be completed at initialization.
+ * Use the option below to force an eeprom write to a V3.1 probe regardless.
+ */
+ //#define BLTOUCH_SET_5V_MODE
+
+ /**
+ * Safety: Activate if connecting a probe with an unknown voltage mode.
+ * V3.0: Set a probe into mode selected above at Marlin startup. Required for 5V mode on 3.0
+ * V3.1: Force a probe with unknown mode into selected mode at Marlin startup ( = Probe EEPROM write )
+ * To preserve the life of the probe, use this once then turn it off and re-flash.
+ */
+ //#define BLTOUCH_FORCE_MODE_SET
+
+ /**
+ * Use "HIGH SPEED" mode for probing.
+ * Danger: Disable if your probe sometimes fails. Only suitable for stable well-adjusted systems.
+ * This feature was designed for Delta's with very fast Z moves however higher speed cartesians may function
+ * If the machine cannot raise the probe fast enough after a trigger, it may enter a fault state.
+ */
+ //#define BLTOUCH_HS_MODE
+
+ // Safety: Enable voltage mode settings in the LCD menu.
+ //#define BLTOUCH_LCD_VOLTAGE_MENU
+
+#endif // BLTOUCH
// A probe that is deployed and stowed with a solenoid pin (SOL1_PIN)
//#define SOLENOID_PROBE
@@ -872,23 +928,23 @@
//
/**
- * Z Probe to nozzle (X,Y) offset, relative to (0, 0).
- * X and Y offsets must be integers.
+ * Z Probe to nozzle (X,Y) offset, relative to (0, 0).
+ * X and Y offsets must be integers.
*
- * In the following example the X and Y offsets are both positive:
- * #define X_PROBE_OFFSET_FROM_EXTRUDER 10
- * #define Y_PROBE_OFFSET_FROM_EXTRUDER 10
+ * In the following example the X and Y offsets are both positive:
+ * #define X_PROBE_OFFSET_FROM_EXTRUDER 10
+ * #define Y_PROBE_OFFSET_FROM_EXTRUDER 10
*
- * +-- BACK ---+
- * | |
- * L | (+) P | R <-- probe (20,20)
- * E | | I
- * F | (-) N (+) | G <-- nozzle (10,10)
- * T | | H
- * | (-) | T
- * | |
- * O-- FRONT --+
- * (0,0)
+ * +-- BACK ---+
+ * | |
+ * L | (+) P | R <-- probe (20,20)
+ * E | | I
+ * F | (-) N (+) | G <-- nozzle (10,10)
+ * T | | H
+ * | (-) | T
+ * | |
+ * O-- FRONT --+
+ * (0,0)
*/
#define X_PROBE_OFFSET_FROM_EXTRUDER 10 // X offset: -left +right [of the nozzle]
#define Y_PROBE_OFFSET_FROM_EXTRUDER 10 // Y offset: -front +behind [the nozzle]
@@ -2104,6 +2160,10 @@
#define NEOPIXEL_IS_SEQUENTIAL // Sequential display for temperature change - LED by LED. Disable to change all LEDs at once.
#define NEOPIXEL_BRIGHTNESS 127 // Initial brightness (0-255)
//#define NEOPIXEL_STARTUP_TEST // Cycle through colors at startup
+
+ // Use a single Neopixel LED for static (background) lighting
+ //#define NEOPIXEL_BKGD_LED_INDEX 0 // Index of the LED to use
+ //#define NEOPIXEL_BKGD_COLOR { 255, 255, 255, 0 } // R, G, B, W
#endif
/**
diff --git a/config/examples/Geeetech/I3_Pro_X-GT2560/Configuration.h b/config/examples/Geeetech/I3_Pro_X-GT2560/Configuration.h
index 2e9f3924c8..529bba8c60 100644
--- a/config/examples/Geeetech/I3_Pro_X-GT2560/Configuration.h
+++ b/config/examples/Geeetech/I3_Pro_X-GT2560/Configuration.h
@@ -850,23 +850,23 @@
//
/**
- * Z Probe to nozzle (X,Y) offset, relative to (0, 0).
- * X and Y offsets must be integers.
+ * Z Probe to nozzle (X,Y) offset, relative to (0, 0).
+ * X and Y offsets must be integers.
*
- * In the following example the X and Y offsets are both positive:
- * #define X_PROBE_OFFSET_FROM_EXTRUDER 10
- * #define Y_PROBE_OFFSET_FROM_EXTRUDER 10
+ * In the following example the X and Y offsets are both positive:
+ * #define X_PROBE_OFFSET_FROM_EXTRUDER 10
+ * #define Y_PROBE_OFFSET_FROM_EXTRUDER 10
*
- * +-- BACK ---+
- * | |
- * L | (+) P | R <-- probe (20,20)
- * E | | I
- * F | (-) N (+) | G <-- nozzle (10,10)
- * T | | H
- * | (-) | T
- * | |
- * O-- FRONT --+
- * (0,0)
+ * +-- BACK ---+
+ * | |
+ * L | (+) P | R <-- probe (20,20)
+ * E | | I
+ * F | (-) N (+) | G <-- nozzle (10,10)
+ * T | | H
+ * | (-) | T
+ * | |
+ * O-- FRONT --+
+ * (0,0)
*/
#define X_PROBE_OFFSET_FROM_EXTRUDER 10 // X offset: -left +right [of the nozzle]
#define Y_PROBE_OFFSET_FROM_EXTRUDER 10 // Y offset: -front +behind [the nozzle]
@@ -2082,6 +2082,10 @@
#define NEOPIXEL_IS_SEQUENTIAL // Sequential display for temperature change - LED by LED. Disable to change all LEDs at once.
#define NEOPIXEL_BRIGHTNESS 127 // Initial brightness (0-255)
//#define NEOPIXEL_STARTUP_TEST // Cycle through colors at startup
+
+ // Use a single Neopixel LED for static (background) lighting
+ //#define NEOPIXEL_BKGD_LED_INDEX 0 // Index of the LED to use
+ //#define NEOPIXEL_BKGD_COLOR { 255, 255, 255, 0 } // R, G, B, W
#endif
/**
diff --git a/config/examples/Geeetech/MeCreator2/Configuration.h b/config/examples/Geeetech/MeCreator2/Configuration.h
index c9af63dcf1..08f8234d90 100644
--- a/config/examples/Geeetech/MeCreator2/Configuration.h
+++ b/config/examples/Geeetech/MeCreator2/Configuration.h
@@ -835,15 +835,71 @@
*/
//#define BLTOUCH
#if ENABLED(BLTOUCH)
- //#define BLTOUCH_DELAY 500 // Minimum Command delay (ms). Enable and increase if needed
+ /**
+ * Either: Use the defaults (recommended) or: For special purposes, use the following DEFINES
+ * Do not activate settings that the probe might not understand. Clones might misunderstand
+ * advanced commands.
+ *
+ * Note: If the probe is not deploying, check a "Cmd: Reset" and "Cmd: Self-Test" and then
+ * check the wiring of the BROWN, RED and ORANGE wires.
+ *
+ * Note: If the trigger signal of your probe is not being recognized, it has been very often
+ * because the BLACK and WHITE wires needed to be swapped. They are not "interchangeable"
+ * like they would be with a real switch. So please check the wiring first.
+ *
+ * Settings for all BLTouch and clone probes:
+ */
+
+ // Safety: The probe needs time to recognize the command.
+ // Minimum command delay (ms). Enable and increase if needed.
+ //#define BLTOUCH_DELAY 500
/**
- * BLTouch V3.0 and newer smart series
- * For genuine BLTouch 3.0 sensors. Clones may be confused by 3.0 command angles. YMMV.
- * If the pin trigger is not detected, first try swapping the black and white wires then toggle this.
+ * Settings for BLTOUCH Classic 1.2, 1.3 or BLTouch Smart 1.0, 2.0, 2.2, 3.0, 3.1, and most clones:
*/
- //#define BLTOUCH_FORCE_5V_MODE
-#endif
+
+ // Feature: Switch into SW mode after a deploy. It makes the output pulse longer. Can be useful
+ // in special cases, like noisy or filtered input configurations.
+ //#define BLTOUCH_FORCE_SW_MODE
+
+ /**
+ * Settings for BLTouch Smart 3.0 and 3.1
+ * Summary:
+ * - Voltage modes: 5V and OD (open drain - "logic voltage free") output modes
+ * - High-Speed mode
+ * - Disable LCD voltage options
+ */
+
+ /**
+ * Danger: Don't activate 5V mode unless attached to a 5V-tolerant controller!
+ * V3.0 or 3.1: Set default mode to 5V mode at Marlin startup.
+ * If disabled, OD mode is the hard-coded default on 3.0
+ * On startup, Marlin will compare its eeprom to this vale. If the selected mode
+ * differs, a mode set eeprom write will be completed at initialization.
+ * Use the option below to force an eeprom write to a V3.1 probe regardless.
+ */
+ //#define BLTOUCH_SET_5V_MODE
+
+ /**
+ * Safety: Activate if connecting a probe with an unknown voltage mode.
+ * V3.0: Set a probe into mode selected above at Marlin startup. Required for 5V mode on 3.0
+ * V3.1: Force a probe with unknown mode into selected mode at Marlin startup ( = Probe EEPROM write )
+ * To preserve the life of the probe, use this once then turn it off and re-flash.
+ */
+ //#define BLTOUCH_FORCE_MODE_SET
+
+ /**
+ * Use "HIGH SPEED" mode for probing.
+ * Danger: Disable if your probe sometimes fails. Only suitable for stable well-adjusted systems.
+ * This feature was designed for Delta's with very fast Z moves however higher speed cartesians may function
+ * If the machine cannot raise the probe fast enough after a trigger, it may enter a fault state.
+ */
+ //#define BLTOUCH_HS_MODE
+
+ // Safety: Enable voltage mode settings in the LCD menu.
+ //#define BLTOUCH_LCD_VOLTAGE_MENU
+
+#endif // BLTOUCH
// A probe that is deployed and stowed with a solenoid pin (SOL1_PIN)
//#define SOLENOID_PROBE
@@ -864,23 +920,23 @@
//
/**
- * Z Probe to nozzle (X,Y) offset, relative to (0, 0).
- * X and Y offsets must be integers.
+ * Z Probe to nozzle (X,Y) offset, relative to (0, 0).
+ * X and Y offsets must be integers.
*
- * In the following example the X and Y offsets are both positive:
- * #define X_PROBE_OFFSET_FROM_EXTRUDER 10
- * #define Y_PROBE_OFFSET_FROM_EXTRUDER 10
+ * In the following example the X and Y offsets are both positive:
+ * #define X_PROBE_OFFSET_FROM_EXTRUDER 10
+ * #define Y_PROBE_OFFSET_FROM_EXTRUDER 10
*
- * +-- BACK ---+
- * | |
- * L | (+) P | R <-- probe (20,20)
- * E | | I
- * F | (-) N (+) | G <-- nozzle (10,10)
- * T | | H
- * | (-) | T
- * | |
- * O-- FRONT --+
- * (0,0)
+ * +-- BACK ---+
+ * | |
+ * L | (+) P | R <-- probe (20,20)
+ * E | | I
+ * F | (-) N (+) | G <-- nozzle (10,10)
+ * T | | H
+ * | (-) | T
+ * | |
+ * O-- FRONT --+
+ * (0,0)
*/
#define X_PROBE_OFFSET_FROM_EXTRUDER 10 // X offset: -left +right [of the nozzle]
#define Y_PROBE_OFFSET_FROM_EXTRUDER 10 // Y offset: -front +behind [the nozzle]
@@ -2096,6 +2152,10 @@
#define NEOPIXEL_IS_SEQUENTIAL // Sequential display for temperature change - LED by LED. Disable to change all LEDs at once.
#define NEOPIXEL_BRIGHTNESS 127 // Initial brightness (0-255)
//#define NEOPIXEL_STARTUP_TEST // Cycle through colors at startup
+
+ // Use a single Neopixel LED for static (background) lighting
+ //#define NEOPIXEL_BKGD_LED_INDEX 0 // Index of the LED to use
+ //#define NEOPIXEL_BKGD_COLOR { 255, 255, 255, 0 } // R, G, B, W
#endif
/**
diff --git a/config/examples/Geeetech/MeCreator2/Configuration_adv.h b/config/examples/Geeetech/MeCreator2/Configuration_adv.h
index 438cc2babb..a025f71d8c 100644
--- a/config/examples/Geeetech/MeCreator2/Configuration_adv.h
+++ b/config/examples/Geeetech/MeCreator2/Configuration_adv.h
@@ -382,10 +382,6 @@
#endif
#endif
-//===========================================================================
-//============================ Mechanical Settings ==========================
-//===========================================================================
-
// @section homing
// If you want endstops to stay on (by default) even when not homing
@@ -745,6 +741,7 @@
* A (A shifted) B (B shifted) IC
* Smoothie 0x2C (0x58) 0x2D (0x5A) MCP4451
* AZTEEG_X3_PRO 0x2C (0x58) 0x2E (0x5C) MCP4451
+ * AZTEEG_X5_MINI 0x2C (0x58) 0x2E (0x5C) MCP4451
* AZTEEG_X5_MINI_WIFI 0x58 0x5C MCP4451
* MIGHTYBOARD_REVE 0x2F (0x5E) MCP4018
*/
diff --git a/config/examples/Geeetech/Prusa i3 Pro B/bltouch/Configuration.h b/config/examples/Geeetech/Prusa i3 Pro B/bltouch/Configuration.h
index 3e9ab18fd3..c21dde26a6 100644
--- a/config/examples/Geeetech/Prusa i3 Pro B/bltouch/Configuration.h
+++ b/config/examples/Geeetech/Prusa i3 Pro B/bltouch/Configuration.h
@@ -848,15 +848,71 @@
*/
#define BLTOUCH
#if ENABLED(BLTOUCH)
- //#define BLTOUCH_DELAY 500 // Minimum Command delay (ms). Enable and increase if needed
+ /**
+ * Either: Use the defaults (recommended) or: For special purposes, use the following DEFINES
+ * Do not activate settings that the probe might not understand. Clones might misunderstand
+ * advanced commands.
+ *
+ * Note: If the probe is not deploying, check a "Cmd: Reset" and "Cmd: Self-Test" and then
+ * check the wiring of the BROWN, RED and ORANGE wires.
+ *
+ * Note: If the trigger signal of your probe is not being recognized, it has been very often
+ * because the BLACK and WHITE wires needed to be swapped. They are not "interchangeable"
+ * like they would be with a real switch. So please check the wiring first.
+ *
+ * Settings for all BLTouch and clone probes:
+ */
+
+ // Safety: The probe needs time to recognize the command.
+ // Minimum command delay (ms). Enable and increase if needed.
+ //#define BLTOUCH_DELAY 500
/**
- * BLTouch V3.0 and newer smart series
- * For genuine BLTouch 3.0 sensors. Clones may be confused by 3.0 command angles. YMMV.
- * If the pin trigger is not detected, first try swapping the black and white wires then toggle this.
+ * Settings for BLTOUCH Classic 1.2, 1.3 or BLTouch Smart 1.0, 2.0, 2.2, 3.0, 3.1, and most clones:
*/
- //#define BLTOUCH_FORCE_5V_MODE
-#endif
+
+ // Feature: Switch into SW mode after a deploy. It makes the output pulse longer. Can be useful
+ // in special cases, like noisy or filtered input configurations.
+ //#define BLTOUCH_FORCE_SW_MODE
+
+ /**
+ * Settings for BLTouch Smart 3.0 and 3.1
+ * Summary:
+ * - Voltage modes: 5V and OD (open drain - "logic voltage free") output modes
+ * - High-Speed mode
+ * - Disable LCD voltage options
+ */
+
+ /**
+ * Danger: Don't activate 5V mode unless attached to a 5V-tolerant controller!
+ * V3.0 or 3.1: Set default mode to 5V mode at Marlin startup.
+ * If disabled, OD mode is the hard-coded default on 3.0
+ * On startup, Marlin will compare its eeprom to this vale. If the selected mode
+ * differs, a mode set eeprom write will be completed at initialization.
+ * Use the option below to force an eeprom write to a V3.1 probe regardless.
+ */
+ //#define BLTOUCH_SET_5V_MODE
+
+ /**
+ * Safety: Activate if connecting a probe with an unknown voltage mode.
+ * V3.0: Set a probe into mode selected above at Marlin startup. Required for 5V mode on 3.0
+ * V3.1: Force a probe with unknown mode into selected mode at Marlin startup ( = Probe EEPROM write )
+ * To preserve the life of the probe, use this once then turn it off and re-flash.
+ */
+ //#define BLTOUCH_FORCE_MODE_SET
+
+ /**
+ * Use "HIGH SPEED" mode for probing.
+ * Danger: Disable if your probe sometimes fails. Only suitable for stable well-adjusted systems.
+ * This feature was designed for Delta's with very fast Z moves however higher speed cartesians may function
+ * If the machine cannot raise the probe fast enough after a trigger, it may enter a fault state.
+ */
+ //#define BLTOUCH_HS_MODE
+
+ // Safety: Enable voltage mode settings in the LCD menu.
+ //#define BLTOUCH_LCD_VOLTAGE_MENU
+
+#endif // BLTOUCH
// A probe that is deployed and stowed with a solenoid pin (SOL1_PIN)
//#define SOLENOID_PROBE
@@ -877,23 +933,23 @@
//
/**
- * Z Probe to nozzle (X,Y) offset, relative to (0, 0).
- * X and Y offsets must be integers.
+ * Z Probe to nozzle (X,Y) offset, relative to (0, 0).
+ * X and Y offsets must be integers.
*
- * In the following example the X and Y offsets are both positive:
- * #define X_PROBE_OFFSET_FROM_EXTRUDER 10
- * #define Y_PROBE_OFFSET_FROM_EXTRUDER 10
+ * In the following example the X and Y offsets are both positive:
+ * #define X_PROBE_OFFSET_FROM_EXTRUDER 10
+ * #define Y_PROBE_OFFSET_FROM_EXTRUDER 10
*
- * +-- BACK ---+
- * | |
- * L | (+) P | R <-- probe (20,20)
- * E | | I
- * F | (-) N (+) | G <-- nozzle (10,10)
- * T | | H
- * | (-) | T
- * | |
- * O-- FRONT --+
- * (0,0)
+ * +-- BACK ---+
+ * | |
+ * L | (+) P | R <-- probe (20,20)
+ * E | | I
+ * F | (-) N (+) | G <-- nozzle (10,10)
+ * T | | H
+ * | (-) | T
+ * | |
+ * O-- FRONT --+
+ * (0,0)
*/
#define X_PROBE_OFFSET_FROM_EXTRUDER 4 // X offset: -left +right [of the nozzle]
#define Y_PROBE_OFFSET_FROM_EXTRUDER -44 // Y offset: -front +behind [the nozzle]
@@ -2109,6 +2165,10 @@
#define NEOPIXEL_IS_SEQUENTIAL // Sequential display for temperature change - LED by LED. Disable to change all LEDs at once.
#define NEOPIXEL_BRIGHTNESS 127 // Initial brightness (0-255)
//#define NEOPIXEL_STARTUP_TEST // Cycle through colors at startup
+
+ // Use a single Neopixel LED for static (background) lighting
+ //#define NEOPIXEL_BKGD_LED_INDEX 0 // Index of the LED to use
+ //#define NEOPIXEL_BKGD_COLOR { 255, 255, 255, 0 } // R, G, B, W
#endif
/**
diff --git a/config/examples/Geeetech/Prusa i3 Pro B/noprobe/Configuration.h b/config/examples/Geeetech/Prusa i3 Pro B/noprobe/Configuration.h
index a22931c454..e31c8e1000 100644
--- a/config/examples/Geeetech/Prusa i3 Pro B/noprobe/Configuration.h
+++ b/config/examples/Geeetech/Prusa i3 Pro B/noprobe/Configuration.h
@@ -848,15 +848,71 @@
*/
//#define BLTOUCH
#if ENABLED(BLTOUCH)
- //#define BLTOUCH_DELAY 500 // Minimum Command delay (ms). Enable and increase if needed
+ /**
+ * Either: Use the defaults (recommended) or: For special purposes, use the following DEFINES
+ * Do not activate settings that the probe might not understand. Clones might misunderstand
+ * advanced commands.
+ *
+ * Note: If the probe is not deploying, check a "Cmd: Reset" and "Cmd: Self-Test" and then
+ * check the wiring of the BROWN, RED and ORANGE wires.
+ *
+ * Note: If the trigger signal of your probe is not being recognized, it has been very often
+ * because the BLACK and WHITE wires needed to be swapped. They are not "interchangeable"
+ * like they would be with a real switch. So please check the wiring first.
+ *
+ * Settings for all BLTouch and clone probes:
+ */
+
+ // Safety: The probe needs time to recognize the command.
+ // Minimum command delay (ms). Enable and increase if needed.
+ //#define BLTOUCH_DELAY 500
/**
- * BLTouch V3.0 and newer smart series
- * For genuine BLTouch 3.0 sensors. Clones may be confused by 3.0 command angles. YMMV.
- * If the pin trigger is not detected, first try swapping the black and white wires then toggle this.
+ * Settings for BLTOUCH Classic 1.2, 1.3 or BLTouch Smart 1.0, 2.0, 2.2, 3.0, 3.1, and most clones:
*/
- //#define BLTOUCH_FORCE_5V_MODE
-#endif
+
+ // Feature: Switch into SW mode after a deploy. It makes the output pulse longer. Can be useful
+ // in special cases, like noisy or filtered input configurations.
+ //#define BLTOUCH_FORCE_SW_MODE
+
+ /**
+ * Settings for BLTouch Smart 3.0 and 3.1
+ * Summary:
+ * - Voltage modes: 5V and OD (open drain - "logic voltage free") output modes
+ * - High-Speed mode
+ * - Disable LCD voltage options
+ */
+
+ /**
+ * Danger: Don't activate 5V mode unless attached to a 5V-tolerant controller!
+ * V3.0 or 3.1: Set default mode to 5V mode at Marlin startup.
+ * If disabled, OD mode is the hard-coded default on 3.0
+ * On startup, Marlin will compare its eeprom to this vale. If the selected mode
+ * differs, a mode set eeprom write will be completed at initialization.
+ * Use the option below to force an eeprom write to a V3.1 probe regardless.
+ */
+ //#define BLTOUCH_SET_5V_MODE
+
+ /**
+ * Safety: Activate if connecting a probe with an unknown voltage mode.
+ * V3.0: Set a probe into mode selected above at Marlin startup. Required for 5V mode on 3.0
+ * V3.1: Force a probe with unknown mode into selected mode at Marlin startup ( = Probe EEPROM write )
+ * To preserve the life of the probe, use this once then turn it off and re-flash.
+ */
+ //#define BLTOUCH_FORCE_MODE_SET
+
+ /**
+ * Use "HIGH SPEED" mode for probing.
+ * Danger: Disable if your probe sometimes fails. Only suitable for stable well-adjusted systems.
+ * This feature was designed for Delta's with very fast Z moves however higher speed cartesians may function
+ * If the machine cannot raise the probe fast enough after a trigger, it may enter a fault state.
+ */
+ //#define BLTOUCH_HS_MODE
+
+ // Safety: Enable voltage mode settings in the LCD menu.
+ //#define BLTOUCH_LCD_VOLTAGE_MENU
+
+#endif // BLTOUCH
// A probe that is deployed and stowed with a solenoid pin (SOL1_PIN)
//#define SOLENOID_PROBE
@@ -877,23 +933,23 @@
//
/**
- * Z Probe to nozzle (X,Y) offset, relative to (0, 0).
- * X and Y offsets must be integers.
+ * Z Probe to nozzle (X,Y) offset, relative to (0, 0).
+ * X and Y offsets must be integers.
*
- * In the following example the X and Y offsets are both positive:
- * #define X_PROBE_OFFSET_FROM_EXTRUDER 10
- * #define Y_PROBE_OFFSET_FROM_EXTRUDER 10
+ * In the following example the X and Y offsets are both positive:
+ * #define X_PROBE_OFFSET_FROM_EXTRUDER 10
+ * #define Y_PROBE_OFFSET_FROM_EXTRUDER 10
*
- * +-- BACK ---+
- * | |
- * L | (+) P | R <-- probe (20,20)
- * E | | I
- * F | (-) N (+) | G <-- nozzle (10,10)
- * T | | H
- * | (-) | T
- * | |
- * O-- FRONT --+
- * (0,0)
+ * +-- BACK ---+
+ * | |
+ * L | (+) P | R <-- probe (20,20)
+ * E | | I
+ * F | (-) N (+) | G <-- nozzle (10,10)
+ * T | | H
+ * | (-) | T
+ * | |
+ * O-- FRONT --+
+ * (0,0)
*/
#define X_PROBE_OFFSET_FROM_EXTRUDER 10 // X offset: -left +right [of the nozzle]
#define Y_PROBE_OFFSET_FROM_EXTRUDER 10 // Y offset: -front +behind [the nozzle]
@@ -2109,6 +2165,10 @@
#define NEOPIXEL_IS_SEQUENTIAL // Sequential display for temperature change - LED by LED. Disable to change all LEDs at once.
#define NEOPIXEL_BRIGHTNESS 127 // Initial brightness (0-255)
//#define NEOPIXEL_STARTUP_TEST // Cycle through colors at startup
+
+ // Use a single Neopixel LED for static (background) lighting
+ //#define NEOPIXEL_BKGD_LED_INDEX 0 // Index of the LED to use
+ //#define NEOPIXEL_BKGD_COLOR { 255, 255, 255, 0 } // R, G, B, W
#endif
/**
diff --git a/config/examples/Geeetech/Prusa i3 Pro C/Configuration.h b/config/examples/Geeetech/Prusa i3 Pro C/Configuration.h
index 580c51f872..ea0ad8fb50 100644
--- a/config/examples/Geeetech/Prusa i3 Pro C/Configuration.h
+++ b/config/examples/Geeetech/Prusa i3 Pro C/Configuration.h
@@ -828,15 +828,71 @@
*/
//#define BLTOUCH
#if ENABLED(BLTOUCH)
- //#define BLTOUCH_DELAY 500 // Minimum Command delay (ms). Enable and increase if needed
+ /**
+ * Either: Use the defaults (recommended) or: For special purposes, use the following DEFINES
+ * Do not activate settings that the probe might not understand. Clones might misunderstand
+ * advanced commands.
+ *
+ * Note: If the probe is not deploying, check a "Cmd: Reset" and "Cmd: Self-Test" and then
+ * check the wiring of the BROWN, RED and ORANGE wires.
+ *
+ * Note: If the trigger signal of your probe is not being recognized, it has been very often
+ * because the BLACK and WHITE wires needed to be swapped. They are not "interchangeable"
+ * like they would be with a real switch. So please check the wiring first.
+ *
+ * Settings for all BLTouch and clone probes:
+ */
+
+ // Safety: The probe needs time to recognize the command.
+ // Minimum command delay (ms). Enable and increase if needed.
+ //#define BLTOUCH_DELAY 500
/**
- * BLTouch V3.0 and newer smart series
- * For genuine BLTouch 3.0 sensors. Clones may be confused by 3.0 command angles. YMMV.
- * If the pin trigger is not detected, first try swapping the black and white wires then toggle this.
+ * Settings for BLTOUCH Classic 1.2, 1.3 or BLTouch Smart 1.0, 2.0, 2.2, 3.0, 3.1, and most clones:
*/
- //#define BLTOUCH_FORCE_5V_MODE
-#endif
+
+ // Feature: Switch into SW mode after a deploy. It makes the output pulse longer. Can be useful
+ // in special cases, like noisy or filtered input configurations.
+ //#define BLTOUCH_FORCE_SW_MODE
+
+ /**
+ * Settings for BLTouch Smart 3.0 and 3.1
+ * Summary:
+ * - Voltage modes: 5V and OD (open drain - "logic voltage free") output modes
+ * - High-Speed mode
+ * - Disable LCD voltage options
+ */
+
+ /**
+ * Danger: Don't activate 5V mode unless attached to a 5V-tolerant controller!
+ * V3.0 or 3.1: Set default mode to 5V mode at Marlin startup.
+ * If disabled, OD mode is the hard-coded default on 3.0
+ * On startup, Marlin will compare its eeprom to this vale. If the selected mode
+ * differs, a mode set eeprom write will be completed at initialization.
+ * Use the option below to force an eeprom write to a V3.1 probe regardless.
+ */
+ //#define BLTOUCH_SET_5V_MODE
+
+ /**
+ * Safety: Activate if connecting a probe with an unknown voltage mode.
+ * V3.0: Set a probe into mode selected above at Marlin startup. Required for 5V mode on 3.0
+ * V3.1: Force a probe with unknown mode into selected mode at Marlin startup ( = Probe EEPROM write )
+ * To preserve the life of the probe, use this once then turn it off and re-flash.
+ */
+ //#define BLTOUCH_FORCE_MODE_SET
+
+ /**
+ * Use "HIGH SPEED" mode for probing.
+ * Danger: Disable if your probe sometimes fails. Only suitable for stable well-adjusted systems.
+ * This feature was designed for Delta's with very fast Z moves however higher speed cartesians may function
+ * If the machine cannot raise the probe fast enough after a trigger, it may enter a fault state.
+ */
+ //#define BLTOUCH_HS_MODE
+
+ // Safety: Enable voltage mode settings in the LCD menu.
+ //#define BLTOUCH_LCD_VOLTAGE_MENU
+
+#endif // BLTOUCH
// A probe that is deployed and stowed with a solenoid pin (SOL1_PIN)
//#define SOLENOID_PROBE
@@ -857,23 +913,23 @@
//
/**
- * Z Probe to nozzle (X,Y) offset, relative to (0, 0).
- * X and Y offsets must be integers.
+ * Z Probe to nozzle (X,Y) offset, relative to (0, 0).
+ * X and Y offsets must be integers.
*
- * In the following example the X and Y offsets are both positive:
- * #define X_PROBE_OFFSET_FROM_EXTRUDER 10
- * #define Y_PROBE_OFFSET_FROM_EXTRUDER 10
+ * In the following example the X and Y offsets are both positive:
+ * #define X_PROBE_OFFSET_FROM_EXTRUDER 10
+ * #define Y_PROBE_OFFSET_FROM_EXTRUDER 10
*
- * +-- BACK ---+
- * | |
- * L | (+) P | R <-- probe (20,20)
- * E | | I
- * F | (-) N (+) | G <-- nozzle (10,10)
- * T | | H
- * | (-) | T
- * | |
- * O-- FRONT --+
- * (0,0)
+ * +-- BACK ---+
+ * | |
+ * L | (+) P | R <-- probe (20,20)
+ * E | | I
+ * F | (-) N (+) | G <-- nozzle (10,10)
+ * T | | H
+ * | (-) | T
+ * | |
+ * O-- FRONT --+
+ * (0,0)
*/
#define X_PROBE_OFFSET_FROM_EXTRUDER 10 // X offset: -left +right [of the nozzle]
#define Y_PROBE_OFFSET_FROM_EXTRUDER 10 // Y offset: -front +behind [the nozzle]
@@ -2089,6 +2145,10 @@
#define NEOPIXEL_IS_SEQUENTIAL // Sequential display for temperature change - LED by LED. Disable to change all LEDs at once.
#define NEOPIXEL_BRIGHTNESS 127 // Initial brightness (0-255)
//#define NEOPIXEL_STARTUP_TEST // Cycle through colors at startup
+
+ // Use a single Neopixel LED for static (background) lighting
+ //#define NEOPIXEL_BKGD_LED_INDEX 0 // Index of the LED to use
+ //#define NEOPIXEL_BKGD_COLOR { 255, 255, 255, 0 } // R, G, B, W
#endif
/**
diff --git a/config/examples/Geeetech/Prusa i3 Pro C/Configuration_adv.h b/config/examples/Geeetech/Prusa i3 Pro C/Configuration_adv.h
index 072b82c5ad..5fe36f34d5 100644
--- a/config/examples/Geeetech/Prusa i3 Pro C/Configuration_adv.h
+++ b/config/examples/Geeetech/Prusa i3 Pro C/Configuration_adv.h
@@ -382,10 +382,6 @@
#endif
#endif
-//===========================================================================
-//============================ Mechanical Settings ==========================
-//===========================================================================
-
// @section homing
// If you want endstops to stay on (by default) even when not homing
@@ -745,6 +741,7 @@
* A (A shifted) B (B shifted) IC
* Smoothie 0x2C (0x58) 0x2D (0x5A) MCP4451
* AZTEEG_X3_PRO 0x2C (0x58) 0x2E (0x5C) MCP4451
+ * AZTEEG_X5_MINI 0x2C (0x58) 0x2E (0x5C) MCP4451
* AZTEEG_X5_MINI_WIFI 0x58 0x5C MCP4451
* MIGHTYBOARD_REVE 0x2F (0x5E) MCP4018
*/
diff --git a/config/examples/Geeetech/Prusa i3 Pro W/Configuration.h b/config/examples/Geeetech/Prusa i3 Pro W/Configuration.h
index 11d0a32572..ecf6ac8f97 100644
--- a/config/examples/Geeetech/Prusa i3 Pro W/Configuration.h
+++ b/config/examples/Geeetech/Prusa i3 Pro W/Configuration.h
@@ -828,15 +828,71 @@
*/
//#define BLTOUCH
#if ENABLED(BLTOUCH)
- //#define BLTOUCH_DELAY 500 // Minimum Command delay (ms). Enable and increase if needed
+ /**
+ * Either: Use the defaults (recommended) or: For special purposes, use the following DEFINES
+ * Do not activate settings that the probe might not understand. Clones might misunderstand
+ * advanced commands.
+ *
+ * Note: If the probe is not deploying, check a "Cmd: Reset" and "Cmd: Self-Test" and then
+ * check the wiring of the BROWN, RED and ORANGE wires.
+ *
+ * Note: If the trigger signal of your probe is not being recognized, it has been very often
+ * because the BLACK and WHITE wires needed to be swapped. They are not "interchangeable"
+ * like they would be with a real switch. So please check the wiring first.
+ *
+ * Settings for all BLTouch and clone probes:
+ */
+
+ // Safety: The probe needs time to recognize the command.
+ // Minimum command delay (ms). Enable and increase if needed.
+ //#define BLTOUCH_DELAY 500
/**
- * BLTouch V3.0 and newer smart series
- * For genuine BLTouch 3.0 sensors. Clones may be confused by 3.0 command angles. YMMV.
- * If the pin trigger is not detected, first try swapping the black and white wires then toggle this.
+ * Settings for BLTOUCH Classic 1.2, 1.3 or BLTouch Smart 1.0, 2.0, 2.2, 3.0, 3.1, and most clones:
*/
- //#define BLTOUCH_FORCE_5V_MODE
-#endif
+
+ // Feature: Switch into SW mode after a deploy. It makes the output pulse longer. Can be useful
+ // in special cases, like noisy or filtered input configurations.
+ //#define BLTOUCH_FORCE_SW_MODE
+
+ /**
+ * Settings for BLTouch Smart 3.0 and 3.1
+ * Summary:
+ * - Voltage modes: 5V and OD (open drain - "logic voltage free") output modes
+ * - High-Speed mode
+ * - Disable LCD voltage options
+ */
+
+ /**
+ * Danger: Don't activate 5V mode unless attached to a 5V-tolerant controller!
+ * V3.0 or 3.1: Set default mode to 5V mode at Marlin startup.
+ * If disabled, OD mode is the hard-coded default on 3.0
+ * On startup, Marlin will compare its eeprom to this vale. If the selected mode
+ * differs, a mode set eeprom write will be completed at initialization.
+ * Use the option below to force an eeprom write to a V3.1 probe regardless.
+ */
+ //#define BLTOUCH_SET_5V_MODE
+
+ /**
+ * Safety: Activate if connecting a probe with an unknown voltage mode.
+ * V3.0: Set a probe into mode selected above at Marlin startup. Required for 5V mode on 3.0
+ * V3.1: Force a probe with unknown mode into selected mode at Marlin startup ( = Probe EEPROM write )
+ * To preserve the life of the probe, use this once then turn it off and re-flash.
+ */
+ //#define BLTOUCH_FORCE_MODE_SET
+
+ /**
+ * Use "HIGH SPEED" mode for probing.
+ * Danger: Disable if your probe sometimes fails. Only suitable for stable well-adjusted systems.
+ * This feature was designed for Delta's with very fast Z moves however higher speed cartesians may function
+ * If the machine cannot raise the probe fast enough after a trigger, it may enter a fault state.
+ */
+ //#define BLTOUCH_HS_MODE
+
+ // Safety: Enable voltage mode settings in the LCD menu.
+ //#define BLTOUCH_LCD_VOLTAGE_MENU
+
+#endif // BLTOUCH
// A probe that is deployed and stowed with a solenoid pin (SOL1_PIN)
//#define SOLENOID_PROBE
@@ -857,23 +913,23 @@
//
/**
- * Z Probe to nozzle (X,Y) offset, relative to (0, 0).
- * X and Y offsets must be integers.
+ * Z Probe to nozzle (X,Y) offset, relative to (0, 0).
+ * X and Y offsets must be integers.
*
- * In the following example the X and Y offsets are both positive:
- * #define X_PROBE_OFFSET_FROM_EXTRUDER 10
- * #define Y_PROBE_OFFSET_FROM_EXTRUDER 10
+ * In the following example the X and Y offsets are both positive:
+ * #define X_PROBE_OFFSET_FROM_EXTRUDER 10
+ * #define Y_PROBE_OFFSET_FROM_EXTRUDER 10
*
- * +-- BACK ---+
- * | |
- * L | (+) P | R <-- probe (20,20)
- * E | | I
- * F | (-) N (+) | G <-- nozzle (10,10)
- * T | | H
- * | (-) | T
- * | |
- * O-- FRONT --+
- * (0,0)
+ * +-- BACK ---+
+ * | |
+ * L | (+) P | R <-- probe (20,20)
+ * E | | I
+ * F | (-) N (+) | G <-- nozzle (10,10)
+ * T | | H
+ * | (-) | T
+ * | |
+ * O-- FRONT --+
+ * (0,0)
*/
#define X_PROBE_OFFSET_FROM_EXTRUDER 10 // X offset: -left +right [of the nozzle]
#define Y_PROBE_OFFSET_FROM_EXTRUDER 10 // Y offset: -front +behind [the nozzle]
@@ -2089,6 +2145,10 @@
#define NEOPIXEL_IS_SEQUENTIAL // Sequential display for temperature change - LED by LED. Disable to change all LEDs at once.
#define NEOPIXEL_BRIGHTNESS 127 // Initial brightness (0-255)
//#define NEOPIXEL_STARTUP_TEST // Cycle through colors at startup
+
+ // Use a single Neopixel LED for static (background) lighting
+ //#define NEOPIXEL_BKGD_LED_INDEX 0 // Index of the LED to use
+ //#define NEOPIXEL_BKGD_COLOR { 255, 255, 255, 0 } // R, G, B, W
#endif
/**
diff --git a/config/examples/Geeetech/Prusa i3 Pro W/Configuration_adv.h b/config/examples/Geeetech/Prusa i3 Pro W/Configuration_adv.h
index 072b82c5ad..5fe36f34d5 100644
--- a/config/examples/Geeetech/Prusa i3 Pro W/Configuration_adv.h
+++ b/config/examples/Geeetech/Prusa i3 Pro W/Configuration_adv.h
@@ -382,10 +382,6 @@
#endif
#endif
-//===========================================================================
-//============================ Mechanical Settings ==========================
-//===========================================================================
-
// @section homing
// If you want endstops to stay on (by default) even when not homing
@@ -745,6 +741,7 @@
* A (A shifted) B (B shifted) IC
* Smoothie 0x2C (0x58) 0x2D (0x5A) MCP4451
* AZTEEG_X3_PRO 0x2C (0x58) 0x2E (0x5C) MCP4451
+ * AZTEEG_X5_MINI 0x2C (0x58) 0x2E (0x5C) MCP4451
* AZTEEG_X5_MINI_WIFI 0x58 0x5C MCP4451
* MIGHTYBOARD_REVE 0x2F (0x5E) MCP4018
*/
diff --git a/config/examples/Infitary/i3-M508/Configuration.h b/config/examples/Infitary/i3-M508/Configuration.h
index da5b7adf0b..82d11add64 100644
--- a/config/examples/Infitary/i3-M508/Configuration.h
+++ b/config/examples/Infitary/i3-M508/Configuration.h
@@ -832,15 +832,71 @@
*/
//#define BLTOUCH
#if ENABLED(BLTOUCH)
- //#define BLTOUCH_DELAY 500 // Minimum Command delay (ms). Enable and increase if needed
+ /**
+ * Either: Use the defaults (recommended) or: For special purposes, use the following DEFINES
+ * Do not activate settings that the probe might not understand. Clones might misunderstand
+ * advanced commands.
+ *
+ * Note: If the probe is not deploying, check a "Cmd: Reset" and "Cmd: Self-Test" and then
+ * check the wiring of the BROWN, RED and ORANGE wires.
+ *
+ * Note: If the trigger signal of your probe is not being recognized, it has been very often
+ * because the BLACK and WHITE wires needed to be swapped. They are not "interchangeable"
+ * like they would be with a real switch. So please check the wiring first.
+ *
+ * Settings for all BLTouch and clone probes:
+ */
+
+ // Safety: The probe needs time to recognize the command.
+ // Minimum command delay (ms). Enable and increase if needed.
+ //#define BLTOUCH_DELAY 500
/**
- * BLTouch V3.0 and newer smart series
- * For genuine BLTouch 3.0 sensors. Clones may be confused by 3.0 command angles. YMMV.
- * If the pin trigger is not detected, first try swapping the black and white wires then toggle this.
+ * Settings for BLTOUCH Classic 1.2, 1.3 or BLTouch Smart 1.0, 2.0, 2.2, 3.0, 3.1, and most clones:
*/
- //#define BLTOUCH_FORCE_5V_MODE
-#endif
+
+ // Feature: Switch into SW mode after a deploy. It makes the output pulse longer. Can be useful
+ // in special cases, like noisy or filtered input configurations.
+ //#define BLTOUCH_FORCE_SW_MODE
+
+ /**
+ * Settings for BLTouch Smart 3.0 and 3.1
+ * Summary:
+ * - Voltage modes: 5V and OD (open drain - "logic voltage free") output modes
+ * - High-Speed mode
+ * - Disable LCD voltage options
+ */
+
+ /**
+ * Danger: Don't activate 5V mode unless attached to a 5V-tolerant controller!
+ * V3.0 or 3.1: Set default mode to 5V mode at Marlin startup.
+ * If disabled, OD mode is the hard-coded default on 3.0
+ * On startup, Marlin will compare its eeprom to this vale. If the selected mode
+ * differs, a mode set eeprom write will be completed at initialization.
+ * Use the option below to force an eeprom write to a V3.1 probe regardless.
+ */
+ //#define BLTOUCH_SET_5V_MODE
+
+ /**
+ * Safety: Activate if connecting a probe with an unknown voltage mode.
+ * V3.0: Set a probe into mode selected above at Marlin startup. Required for 5V mode on 3.0
+ * V3.1: Force a probe with unknown mode into selected mode at Marlin startup ( = Probe EEPROM write )
+ * To preserve the life of the probe, use this once then turn it off and re-flash.
+ */
+ //#define BLTOUCH_FORCE_MODE_SET
+
+ /**
+ * Use "HIGH SPEED" mode for probing.
+ * Danger: Disable if your probe sometimes fails. Only suitable for stable well-adjusted systems.
+ * This feature was designed for Delta's with very fast Z moves however higher speed cartesians may function
+ * If the machine cannot raise the probe fast enough after a trigger, it may enter a fault state.
+ */
+ //#define BLTOUCH_HS_MODE
+
+ // Safety: Enable voltage mode settings in the LCD menu.
+ //#define BLTOUCH_LCD_VOLTAGE_MENU
+
+#endif // BLTOUCH
// A probe that is deployed and stowed with a solenoid pin (SOL1_PIN)
//#define SOLENOID_PROBE
@@ -861,23 +917,23 @@
//
/**
- * Z Probe to nozzle (X,Y) offset, relative to (0, 0).
- * X and Y offsets must be integers.
+ * Z Probe to nozzle (X,Y) offset, relative to (0, 0).
+ * X and Y offsets must be integers.
*
- * In the following example the X and Y offsets are both positive:
- * #define X_PROBE_OFFSET_FROM_EXTRUDER 10
- * #define Y_PROBE_OFFSET_FROM_EXTRUDER 10
+ * In the following example the X and Y offsets are both positive:
+ * #define X_PROBE_OFFSET_FROM_EXTRUDER 10
+ * #define Y_PROBE_OFFSET_FROM_EXTRUDER 10
*
- * +-- BACK ---+
- * | |
- * L | (+) P | R <-- probe (20,20)
- * E | | I
- * F | (-) N (+) | G <-- nozzle (10,10)
- * T | | H
- * | (-) | T
- * | |
- * O-- FRONT --+
- * (0,0)
+ * +-- BACK ---+
+ * | |
+ * L | (+) P | R <-- probe (20,20)
+ * E | | I
+ * F | (-) N (+) | G <-- nozzle (10,10)
+ * T | | H
+ * | (-) | T
+ * | |
+ * O-- FRONT --+
+ * (0,0)
*/
#define X_PROBE_OFFSET_FROM_EXTRUDER 10 // X offset: -left +right [of the nozzle]
#define Y_PROBE_OFFSET_FROM_EXTRUDER 10 // Y offset: -front +behind [the nozzle]
@@ -2093,6 +2149,10 @@
#define NEOPIXEL_IS_SEQUENTIAL // Sequential display for temperature change - LED by LED. Disable to change all LEDs at once.
#define NEOPIXEL_BRIGHTNESS 127 // Initial brightness (0-255)
//#define NEOPIXEL_STARTUP_TEST // Cycle through colors at startup
+
+ // Use a single Neopixel LED for static (background) lighting
+ //#define NEOPIXEL_BKGD_LED_INDEX 0 // Index of the LED to use
+ //#define NEOPIXEL_BKGD_COLOR { 255, 255, 255, 0 } // R, G, B, W
#endif
/**
diff --git a/config/examples/Infitary/i3-M508/Configuration_adv.h b/config/examples/Infitary/i3-M508/Configuration_adv.h
index 58e91fe49b..80a8dc486e 100644
--- a/config/examples/Infitary/i3-M508/Configuration_adv.h
+++ b/config/examples/Infitary/i3-M508/Configuration_adv.h
@@ -382,10 +382,6 @@
#endif
#endif
-//===========================================================================
-//============================ Mechanical Settings ==========================
-//===========================================================================
-
// @section homing
// If you want endstops to stay on (by default) even when not homing
@@ -745,6 +741,7 @@
* A (A shifted) B (B shifted) IC
* Smoothie 0x2C (0x58) 0x2D (0x5A) MCP4451
* AZTEEG_X3_PRO 0x2C (0x58) 0x2E (0x5C) MCP4451
+ * AZTEEG_X5_MINI 0x2C (0x58) 0x2E (0x5C) MCP4451
* AZTEEG_X5_MINI_WIFI 0x58 0x5C MCP4451
* MIGHTYBOARD_REVE 0x2F (0x5E) MCP4018
*/
diff --git a/config/examples/JGAurora/A5/Configuration.h b/config/examples/JGAurora/A5/Configuration.h
index ec26bc97dd..cfb573eb85 100644
--- a/config/examples/JGAurora/A5/Configuration.h
+++ b/config/examples/JGAurora/A5/Configuration.h
@@ -840,15 +840,71 @@
*/
//#define BLTOUCH
#if ENABLED(BLTOUCH)
- //#define BLTOUCH_DELAY 500 // Minimum Command delay (ms). Enable and increase if needed
+ /**
+ * Either: Use the defaults (recommended) or: For special purposes, use the following DEFINES
+ * Do not activate settings that the probe might not understand. Clones might misunderstand
+ * advanced commands.
+ *
+ * Note: If the probe is not deploying, check a "Cmd: Reset" and "Cmd: Self-Test" and then
+ * check the wiring of the BROWN, RED and ORANGE wires.
+ *
+ * Note: If the trigger signal of your probe is not being recognized, it has been very often
+ * because the BLACK and WHITE wires needed to be swapped. They are not "interchangeable"
+ * like they would be with a real switch. So please check the wiring first.
+ *
+ * Settings for all BLTouch and clone probes:
+ */
+
+ // Safety: The probe needs time to recognize the command.
+ // Minimum command delay (ms). Enable and increase if needed.
+ //#define BLTOUCH_DELAY 500
/**
- * BLTouch V3.0 and newer smart series
- * For genuine BLTouch 3.0 sensors. Clones may be confused by 3.0 command angles. YMMV.
- * If the pin trigger is not detected, first try swapping the black and white wires then toggle this.
+ * Settings for BLTOUCH Classic 1.2, 1.3 or BLTouch Smart 1.0, 2.0, 2.2, 3.0, 3.1, and most clones:
*/
- //#define BLTOUCH_FORCE_5V_MODE
-#endif
+
+ // Feature: Switch into SW mode after a deploy. It makes the output pulse longer. Can be useful
+ // in special cases, like noisy or filtered input configurations.
+ //#define BLTOUCH_FORCE_SW_MODE
+
+ /**
+ * Settings for BLTouch Smart 3.0 and 3.1
+ * Summary:
+ * - Voltage modes: 5V and OD (open drain - "logic voltage free") output modes
+ * - High-Speed mode
+ * - Disable LCD voltage options
+ */
+
+ /**
+ * Danger: Don't activate 5V mode unless attached to a 5V-tolerant controller!
+ * V3.0 or 3.1: Set default mode to 5V mode at Marlin startup.
+ * If disabled, OD mode is the hard-coded default on 3.0
+ * On startup, Marlin will compare its eeprom to this vale. If the selected mode
+ * differs, a mode set eeprom write will be completed at initialization.
+ * Use the option below to force an eeprom write to a V3.1 probe regardless.
+ */
+ //#define BLTOUCH_SET_5V_MODE
+
+ /**
+ * Safety: Activate if connecting a probe with an unknown voltage mode.
+ * V3.0: Set a probe into mode selected above at Marlin startup. Required for 5V mode on 3.0
+ * V3.1: Force a probe with unknown mode into selected mode at Marlin startup ( = Probe EEPROM write )
+ * To preserve the life of the probe, use this once then turn it off and re-flash.
+ */
+ //#define BLTOUCH_FORCE_MODE_SET
+
+ /**
+ * Use "HIGH SPEED" mode for probing.
+ * Danger: Disable if your probe sometimes fails. Only suitable for stable well-adjusted systems.
+ * This feature was designed for Delta's with very fast Z moves however higher speed cartesians may function
+ * If the machine cannot raise the probe fast enough after a trigger, it may enter a fault state.
+ */
+ //#define BLTOUCH_HS_MODE
+
+ // Safety: Enable voltage mode settings in the LCD menu.
+ //#define BLTOUCH_LCD_VOLTAGE_MENU
+
+#endif // BLTOUCH
// A probe that is deployed and stowed with a solenoid pin (SOL1_PIN)
//#define SOLENOID_PROBE
@@ -869,23 +925,23 @@
//
/**
- * Z Probe to nozzle (X,Y) offset, relative to (0, 0).
- * X and Y offsets must be integers.
+ * Z Probe to nozzle (X,Y) offset, relative to (0, 0).
+ * X and Y offsets must be integers.
*
- * In the following example the X and Y offsets are both positive:
- * #define X_PROBE_OFFSET_FROM_EXTRUDER 10
- * #define Y_PROBE_OFFSET_FROM_EXTRUDER 10
+ * In the following example the X and Y offsets are both positive:
+ * #define X_PROBE_OFFSET_FROM_EXTRUDER 10
+ * #define Y_PROBE_OFFSET_FROM_EXTRUDER 10
*
- * +-- BACK ---+
- * | |
- * L | (+) P | R <-- probe (20,20)
- * E | | I
- * F | (-) N (+) | G <-- nozzle (10,10)
- * T | | H
- * | (-) | T
- * | |
- * O-- FRONT --+
- * (0,0)
+ * +-- BACK ---+
+ * | |
+ * L | (+) P | R <-- probe (20,20)
+ * E | | I
+ * F | (-) N (+) | G <-- nozzle (10,10)
+ * T | | H
+ * | (-) | T
+ * | |
+ * O-- FRONT --+
+ * (0,0)
*/
#define X_PROBE_OFFSET_FROM_EXTRUDER 10 // X offset: -left +right [of the nozzle]
#define Y_PROBE_OFFSET_FROM_EXTRUDER 10 // Y offset: -front +behind [the nozzle]
@@ -2101,6 +2157,10 @@
#define NEOPIXEL_IS_SEQUENTIAL // Sequential display for temperature change - LED by LED. Disable to change all LEDs at once.
#define NEOPIXEL_BRIGHTNESS 127 // Initial brightness (0-255)
//#define NEOPIXEL_STARTUP_TEST // Cycle through colors at startup
+
+ // Use a single Neopixel LED for static (background) lighting
+ //#define NEOPIXEL_BKGD_LED_INDEX 0 // Index of the LED to use
+ //#define NEOPIXEL_BKGD_COLOR { 255, 255, 255, 0 } // R, G, B, W
#endif
/**
diff --git a/config/examples/JGAurora/A5/Configuration_adv.h b/config/examples/JGAurora/A5/Configuration_adv.h
index 00f80ecea8..5d5265608d 100644
--- a/config/examples/JGAurora/A5/Configuration_adv.h
+++ b/config/examples/JGAurora/A5/Configuration_adv.h
@@ -382,10 +382,6 @@
#endif
#endif
-//===========================================================================
-//============================ Mechanical Settings ==========================
-//===========================================================================
-
// @section homing
// If you want endstops to stay on (by default) even when not homing
@@ -577,8 +573,11 @@
// @section lcd
-#if ENABLED(ULTIPANEL)
+#if EITHER(ULTIPANEL, EXTENSIBLE_UI)
#define MANUAL_FEEDRATE {80*60, 80*60, 12*60, 60} // Feedrates for manual moves along X, Y, Z, E from panel
+#endif
+
+#if ENABLED(ULTIPANEL)
#define MANUAL_E_MOVES_RELATIVE // Show LCD extruder moves as relative rather than absolute positions
#define ULTIPANEL_FEEDMULTIPLY // Comment to disable setting feedrate multiplier via encoder
#endif
@@ -742,6 +741,7 @@
* A (A shifted) B (B shifted) IC
* Smoothie 0x2C (0x58) 0x2D (0x5A) MCP4451
* AZTEEG_X3_PRO 0x2C (0x58) 0x2E (0x5C) MCP4451
+ * AZTEEG_X5_MINI 0x2C (0x58) 0x2E (0x5C) MCP4451
* AZTEEG_X5_MINI_WIFI 0x58 0x5C MCP4451
* MIGHTYBOARD_REVE 0x2F (0x5E) MCP4018
*/
diff --git a/config/examples/MakerParts/Configuration.h b/config/examples/MakerParts/Configuration.h
index 1846765d2b..4169aa3740 100644
--- a/config/examples/MakerParts/Configuration.h
+++ b/config/examples/MakerParts/Configuration.h
@@ -848,15 +848,71 @@
*/
//#define BLTOUCH
#if ENABLED(BLTOUCH)
- //#define BLTOUCH_DELAY 500 // Minimum Command delay (ms). Enable and increase if needed
+ /**
+ * Either: Use the defaults (recommended) or: For special purposes, use the following DEFINES
+ * Do not activate settings that the probe might not understand. Clones might misunderstand
+ * advanced commands.
+ *
+ * Note: If the probe is not deploying, check a "Cmd: Reset" and "Cmd: Self-Test" and then
+ * check the wiring of the BROWN, RED and ORANGE wires.
+ *
+ * Note: If the trigger signal of your probe is not being recognized, it has been very often
+ * because the BLACK and WHITE wires needed to be swapped. They are not "interchangeable"
+ * like they would be with a real switch. So please check the wiring first.
+ *
+ * Settings for all BLTouch and clone probes:
+ */
+
+ // Safety: The probe needs time to recognize the command.
+ // Minimum command delay (ms). Enable and increase if needed.
+ //#define BLTOUCH_DELAY 500
/**
- * BLTouch V3.0 and newer smart series
- * For genuine BLTouch 3.0 sensors. Clones may be confused by 3.0 command angles. YMMV.
- * If the pin trigger is not detected, first try swapping the black and white wires then toggle this.
+ * Settings for BLTOUCH Classic 1.2, 1.3 or BLTouch Smart 1.0, 2.0, 2.2, 3.0, 3.1, and most clones:
*/
- //#define BLTOUCH_FORCE_5V_MODE
-#endif
+
+ // Feature: Switch into SW mode after a deploy. It makes the output pulse longer. Can be useful
+ // in special cases, like noisy or filtered input configurations.
+ //#define BLTOUCH_FORCE_SW_MODE
+
+ /**
+ * Settings for BLTouch Smart 3.0 and 3.1
+ * Summary:
+ * - Voltage modes: 5V and OD (open drain - "logic voltage free") output modes
+ * - High-Speed mode
+ * - Disable LCD voltage options
+ */
+
+ /**
+ * Danger: Don't activate 5V mode unless attached to a 5V-tolerant controller!
+ * V3.0 or 3.1: Set default mode to 5V mode at Marlin startup.
+ * If disabled, OD mode is the hard-coded default on 3.0
+ * On startup, Marlin will compare its eeprom to this vale. If the selected mode
+ * differs, a mode set eeprom write will be completed at initialization.
+ * Use the option below to force an eeprom write to a V3.1 probe regardless.
+ */
+ //#define BLTOUCH_SET_5V_MODE
+
+ /**
+ * Safety: Activate if connecting a probe with an unknown voltage mode.
+ * V3.0: Set a probe into mode selected above at Marlin startup. Required for 5V mode on 3.0
+ * V3.1: Force a probe with unknown mode into selected mode at Marlin startup ( = Probe EEPROM write )
+ * To preserve the life of the probe, use this once then turn it off and re-flash.
+ */
+ //#define BLTOUCH_FORCE_MODE_SET
+
+ /**
+ * Use "HIGH SPEED" mode for probing.
+ * Danger: Disable if your probe sometimes fails. Only suitable for stable well-adjusted systems.
+ * This feature was designed for Delta's with very fast Z moves however higher speed cartesians may function
+ * If the machine cannot raise the probe fast enough after a trigger, it may enter a fault state.
+ */
+ //#define BLTOUCH_HS_MODE
+
+ // Safety: Enable voltage mode settings in the LCD menu.
+ //#define BLTOUCH_LCD_VOLTAGE_MENU
+
+#endif // BLTOUCH
// A probe that is deployed and stowed with a solenoid pin (SOL1_PIN)
//#define SOLENOID_PROBE
@@ -877,23 +933,23 @@
//
/**
- * Z Probe to nozzle (X,Y) offset, relative to (0, 0).
- * X and Y offsets must be integers.
+ * Z Probe to nozzle (X,Y) offset, relative to (0, 0).
+ * X and Y offsets must be integers.
*
- * In the following example the X and Y offsets are both positive:
- * #define X_PROBE_OFFSET_FROM_EXTRUDER 10
- * #define Y_PROBE_OFFSET_FROM_EXTRUDER 10
+ * In the following example the X and Y offsets are both positive:
+ * #define X_PROBE_OFFSET_FROM_EXTRUDER 10
+ * #define Y_PROBE_OFFSET_FROM_EXTRUDER 10
*
- * +-- BACK ---+
- * | |
- * L | (+) P | R <-- probe (20,20)
- * E | | I
- * F | (-) N (+) | G <-- nozzle (10,10)
- * T | | H
- * | (-) | T
- * | |
- * O-- FRONT --+
- * (0,0)
+ * +-- BACK ---+
+ * | |
+ * L | (+) P | R <-- probe (20,20)
+ * E | | I
+ * F | (-) N (+) | G <-- nozzle (10,10)
+ * T | | H
+ * | (-) | T
+ * | |
+ * O-- FRONT --+
+ * (0,0)
*/
#define X_PROBE_OFFSET_FROM_EXTRUDER 10 // X offset: -left +right [of the nozzle]
#define Y_PROBE_OFFSET_FROM_EXTRUDER 10 // Y offset: -front +behind [the nozzle]
@@ -2109,6 +2165,10 @@
#define NEOPIXEL_IS_SEQUENTIAL // Sequential display for temperature change - LED by LED. Disable to change all LEDs at once.
#define NEOPIXEL_BRIGHTNESS 127 // Initial brightness (0-255)
//#define NEOPIXEL_STARTUP_TEST // Cycle through colors at startup
+
+ // Use a single Neopixel LED for static (background) lighting
+ //#define NEOPIXEL_BKGD_LED_INDEX 0 // Index of the LED to use
+ //#define NEOPIXEL_BKGD_COLOR { 255, 255, 255, 0 } // R, G, B, W
#endif
/**
diff --git a/config/examples/MakerParts/Configuration_adv.h b/config/examples/MakerParts/Configuration_adv.h
index 05ee019c6b..ef652e012a 100644
--- a/config/examples/MakerParts/Configuration_adv.h
+++ b/config/examples/MakerParts/Configuration_adv.h
@@ -382,10 +382,6 @@
#endif
#endif
-//===========================================================================
-//============================ Mechanical Settings ==========================
-//===========================================================================
-
// @section homing
// If you want endstops to stay on (by default) even when not homing
@@ -745,6 +741,7 @@
* A (A shifted) B (B shifted) IC
* Smoothie 0x2C (0x58) 0x2D (0x5A) MCP4451
* AZTEEG_X3_PRO 0x2C (0x58) 0x2E (0x5C) MCP4451
+ * AZTEEG_X5_MINI 0x2C (0x58) 0x2E (0x5C) MCP4451
* AZTEEG_X5_MINI_WIFI 0x58 0x5C MCP4451
* MIGHTYBOARD_REVE 0x2F (0x5E) MCP4018
*/
diff --git a/config/examples/Malyan/M150/Configuration.h b/config/examples/Malyan/M150/Configuration.h
index 55396c055d..a723d9c012 100644
--- a/config/examples/Malyan/M150/Configuration.h
+++ b/config/examples/Malyan/M150/Configuration.h
@@ -848,15 +848,71 @@
*/
//#define BLTOUCH
#if ENABLED(BLTOUCH)
- //#define BLTOUCH_DELAY 500 // Minimum Command delay (ms). Enable and increase if needed
+ /**
+ * Either: Use the defaults (recommended) or: For special purposes, use the following DEFINES
+ * Do not activate settings that the probe might not understand. Clones might misunderstand
+ * advanced commands.
+ *
+ * Note: If the probe is not deploying, check a "Cmd: Reset" and "Cmd: Self-Test" and then
+ * check the wiring of the BROWN, RED and ORANGE wires.
+ *
+ * Note: If the trigger signal of your probe is not being recognized, it has been very often
+ * because the BLACK and WHITE wires needed to be swapped. They are not "interchangeable"
+ * like they would be with a real switch. So please check the wiring first.
+ *
+ * Settings for all BLTouch and clone probes:
+ */
+
+ // Safety: The probe needs time to recognize the command.
+ // Minimum command delay (ms). Enable and increase if needed.
+ //#define BLTOUCH_DELAY 500
/**
- * BLTouch V3.0 and newer smart series
- * For genuine BLTouch 3.0 sensors. Clones may be confused by 3.0 command angles. YMMV.
- * If the pin trigger is not detected, first try swapping the black and white wires then toggle this.
+ * Settings for BLTOUCH Classic 1.2, 1.3 or BLTouch Smart 1.0, 2.0, 2.2, 3.0, 3.1, and most clones:
*/
- //#define BLTOUCH_FORCE_5V_MODE
-#endif
+
+ // Feature: Switch into SW mode after a deploy. It makes the output pulse longer. Can be useful
+ // in special cases, like noisy or filtered input configurations.
+ //#define BLTOUCH_FORCE_SW_MODE
+
+ /**
+ * Settings for BLTouch Smart 3.0 and 3.1
+ * Summary:
+ * - Voltage modes: 5V and OD (open drain - "logic voltage free") output modes
+ * - High-Speed mode
+ * - Disable LCD voltage options
+ */
+
+ /**
+ * Danger: Don't activate 5V mode unless attached to a 5V-tolerant controller!
+ * V3.0 or 3.1: Set default mode to 5V mode at Marlin startup.
+ * If disabled, OD mode is the hard-coded default on 3.0
+ * On startup, Marlin will compare its eeprom to this vale. If the selected mode
+ * differs, a mode set eeprom write will be completed at initialization.
+ * Use the option below to force an eeprom write to a V3.1 probe regardless.
+ */
+ //#define BLTOUCH_SET_5V_MODE
+
+ /**
+ * Safety: Activate if connecting a probe with an unknown voltage mode.
+ * V3.0: Set a probe into mode selected above at Marlin startup. Required for 5V mode on 3.0
+ * V3.1: Force a probe with unknown mode into selected mode at Marlin startup ( = Probe EEPROM write )
+ * To preserve the life of the probe, use this once then turn it off and re-flash.
+ */
+ //#define BLTOUCH_FORCE_MODE_SET
+
+ /**
+ * Use "HIGH SPEED" mode for probing.
+ * Danger: Disable if your probe sometimes fails. Only suitable for stable well-adjusted systems.
+ * This feature was designed for Delta's with very fast Z moves however higher speed cartesians may function
+ * If the machine cannot raise the probe fast enough after a trigger, it may enter a fault state.
+ */
+ //#define BLTOUCH_HS_MODE
+
+ // Safety: Enable voltage mode settings in the LCD menu.
+ //#define BLTOUCH_LCD_VOLTAGE_MENU
+
+#endif // BLTOUCH
// A probe that is deployed and stowed with a solenoid pin (SOL1_PIN)
//#define SOLENOID_PROBE
@@ -877,23 +933,23 @@
//
/**
- * Z Probe to nozzle (X,Y) offset, relative to (0, 0).
- * X and Y offsets must be integers.
+ * Z Probe to nozzle (X,Y) offset, relative to (0, 0).
+ * X and Y offsets must be integers.
*
- * In the following example the X and Y offsets are both positive:
- * #define X_PROBE_OFFSET_FROM_EXTRUDER 10
- * #define Y_PROBE_OFFSET_FROM_EXTRUDER 10
+ * In the following example the X and Y offsets are both positive:
+ * #define X_PROBE_OFFSET_FROM_EXTRUDER 10
+ * #define Y_PROBE_OFFSET_FROM_EXTRUDER 10
*
- * +-- BACK ---+
- * | |
- * L | (+) P | R <-- probe (20,20)
- * E | | I
- * F | (-) N (+) | G <-- nozzle (10,10)
- * T | | H
- * | (-) | T
- * | |
- * O-- FRONT --+
- * (0,0)
+ * +-- BACK ---+
+ * | |
+ * L | (+) P | R <-- probe (20,20)
+ * E | | I
+ * F | (-) N (+) | G <-- nozzle (10,10)
+ * T | | H
+ * | (-) | T
+ * | |
+ * O-- FRONT --+
+ * (0,0)
*/
// Set for HoolyHoo's probe mount
@@ -2117,6 +2173,10 @@
#define NEOPIXEL_IS_SEQUENTIAL // Sequential display for temperature change - LED by LED. Disable to change all LEDs at once.
#define NEOPIXEL_BRIGHTNESS 127 // Initial brightness (0-255)
//#define NEOPIXEL_STARTUP_TEST // Cycle through colors at startup
+
+ // Use a single Neopixel LED for static (background) lighting
+ //#define NEOPIXEL_BKGD_LED_INDEX 0 // Index of the LED to use
+ //#define NEOPIXEL_BKGD_COLOR { 255, 255, 255, 0 } // R, G, B, W
#endif
/**
diff --git a/config/examples/Malyan/M150/Configuration_adv.h b/config/examples/Malyan/M150/Configuration_adv.h
index 4e7489990b..76f44fd859 100644
--- a/config/examples/Malyan/M150/Configuration_adv.h
+++ b/config/examples/Malyan/M150/Configuration_adv.h
@@ -382,10 +382,6 @@
#endif
#endif
-//===========================================================================
-//============================ Mechanical Settings ==========================
-//===========================================================================
-
// @section homing
// If you want endstops to stay on (by default) even when not homing
@@ -745,6 +741,7 @@
* A (A shifted) B (B shifted) IC
* Smoothie 0x2C (0x58) 0x2D (0x5A) MCP4451
* AZTEEG_X3_PRO 0x2C (0x58) 0x2E (0x5C) MCP4451
+ * AZTEEG_X5_MINI 0x2C (0x58) 0x2E (0x5C) MCP4451
* AZTEEG_X5_MINI_WIFI 0x58 0x5C MCP4451
* MIGHTYBOARD_REVE 0x2F (0x5E) MCP4018
*/
diff --git a/config/examples/Malyan/M200/Configuration.h b/config/examples/Malyan/M200/Configuration.h
index a4d17ed268..3921bd4c89 100644
--- a/config/examples/Malyan/M200/Configuration.h
+++ b/config/examples/Malyan/M200/Configuration.h
@@ -827,15 +827,71 @@
*/
//#define BLTOUCH
#if ENABLED(BLTOUCH)
- //#define BLTOUCH_DELAY 500 // Minimum Command delay (ms). Enable and increase if needed
+ /**
+ * Either: Use the defaults (recommended) or: For special purposes, use the following DEFINES
+ * Do not activate settings that the probe might not understand. Clones might misunderstand
+ * advanced commands.
+ *
+ * Note: If the probe is not deploying, check a "Cmd: Reset" and "Cmd: Self-Test" and then
+ * check the wiring of the BROWN, RED and ORANGE wires.
+ *
+ * Note: If the trigger signal of your probe is not being recognized, it has been very often
+ * because the BLACK and WHITE wires needed to be swapped. They are not "interchangeable"
+ * like they would be with a real switch. So please check the wiring first.
+ *
+ * Settings for all BLTouch and clone probes:
+ */
+
+ // Safety: The probe needs time to recognize the command.
+ // Minimum command delay (ms). Enable and increase if needed.
+ //#define BLTOUCH_DELAY 500
/**
- * BLTouch V3.0 and newer smart series
- * For genuine BLTouch 3.0 sensors. Clones may be confused by 3.0 command angles. YMMV.
- * If the pin trigger is not detected, first try swapping the black and white wires then toggle this.
+ * Settings for BLTOUCH Classic 1.2, 1.3 or BLTouch Smart 1.0, 2.0, 2.2, 3.0, 3.1, and most clones:
*/
- //#define BLTOUCH_FORCE_5V_MODE
-#endif
+
+ // Feature: Switch into SW mode after a deploy. It makes the output pulse longer. Can be useful
+ // in special cases, like noisy or filtered input configurations.
+ //#define BLTOUCH_FORCE_SW_MODE
+
+ /**
+ * Settings for BLTouch Smart 3.0 and 3.1
+ * Summary:
+ * - Voltage modes: 5V and OD (open drain - "logic voltage free") output modes
+ * - High-Speed mode
+ * - Disable LCD voltage options
+ */
+
+ /**
+ * Danger: Don't activate 5V mode unless attached to a 5V-tolerant controller!
+ * V3.0 or 3.1: Set default mode to 5V mode at Marlin startup.
+ * If disabled, OD mode is the hard-coded default on 3.0
+ * On startup, Marlin will compare its eeprom to this vale. If the selected mode
+ * differs, a mode set eeprom write will be completed at initialization.
+ * Use the option below to force an eeprom write to a V3.1 probe regardless.
+ */
+ //#define BLTOUCH_SET_5V_MODE
+
+ /**
+ * Safety: Activate if connecting a probe with an unknown voltage mode.
+ * V3.0: Set a probe into mode selected above at Marlin startup. Required for 5V mode on 3.0
+ * V3.1: Force a probe with unknown mode into selected mode at Marlin startup ( = Probe EEPROM write )
+ * To preserve the life of the probe, use this once then turn it off and re-flash.
+ */
+ //#define BLTOUCH_FORCE_MODE_SET
+
+ /**
+ * Use "HIGH SPEED" mode for probing.
+ * Danger: Disable if your probe sometimes fails. Only suitable for stable well-adjusted systems.
+ * This feature was designed for Delta's with very fast Z moves however higher speed cartesians may function
+ * If the machine cannot raise the probe fast enough after a trigger, it may enter a fault state.
+ */
+ //#define BLTOUCH_HS_MODE
+
+ // Safety: Enable voltage mode settings in the LCD menu.
+ //#define BLTOUCH_LCD_VOLTAGE_MENU
+
+#endif // BLTOUCH
// A probe that is deployed and stowed with a solenoid pin (SOL1_PIN)
//#define SOLENOID_PROBE
@@ -856,23 +912,23 @@
//
/**
- * Z Probe to nozzle (X,Y) offset, relative to (0, 0).
- * X and Y offsets must be integers.
+ * Z Probe to nozzle (X,Y) offset, relative to (0, 0).
+ * X and Y offsets must be integers.
*
- * In the following example the X and Y offsets are both positive:
- * #define X_PROBE_OFFSET_FROM_EXTRUDER 10
- * #define Y_PROBE_OFFSET_FROM_EXTRUDER 10
+ * In the following example the X and Y offsets are both positive:
+ * #define X_PROBE_OFFSET_FROM_EXTRUDER 10
+ * #define Y_PROBE_OFFSET_FROM_EXTRUDER 10
*
- * +-- BACK ---+
- * | |
- * L | (+) P | R <-- probe (20,20)
- * E | | I
- * F | (-) N (+) | G <-- nozzle (10,10)
- * T | | H
- * | (-) | T
- * | |
- * O-- FRONT --+
- * (0,0)
+ * +-- BACK ---+
+ * | |
+ * L | (+) P | R <-- probe (20,20)
+ * E | | I
+ * F | (-) N (+) | G <-- nozzle (10,10)
+ * T | | H
+ * | (-) | T
+ * | |
+ * O-- FRONT --+
+ * (0,0)
*/
#define X_PROBE_OFFSET_FROM_EXTRUDER 10 // X offset: -left +right [of the nozzle]
#define Y_PROBE_OFFSET_FROM_EXTRUDER 10 // Y offset: -front +behind [the nozzle]
@@ -2088,6 +2144,10 @@
#define NEOPIXEL_IS_SEQUENTIAL // Sequential display for temperature change - LED by LED. Disable to change all LEDs at once.
#define NEOPIXEL_BRIGHTNESS 127 // Initial brightness (0-255)
//#define NEOPIXEL_STARTUP_TEST // Cycle through colors at startup
+
+ // Use a single Neopixel LED for static (background) lighting
+ //#define NEOPIXEL_BKGD_LED_INDEX 0 // Index of the LED to use
+ //#define NEOPIXEL_BKGD_COLOR { 255, 255, 255, 0 } // R, G, B, W
#endif
/**
diff --git a/config/examples/Malyan/M200/Configuration_adv.h b/config/examples/Malyan/M200/Configuration_adv.h
index 4211655178..c7d91564d8 100644
--- a/config/examples/Malyan/M200/Configuration_adv.h
+++ b/config/examples/Malyan/M200/Configuration_adv.h
@@ -382,10 +382,6 @@
#endif
#endif
-//===========================================================================
-//============================ Mechanical Settings ==========================
-//===========================================================================
-
// @section homing
// If you want endstops to stay on (by default) even when not homing
@@ -745,6 +741,7 @@
* A (A shifted) B (B shifted) IC
* Smoothie 0x2C (0x58) 0x2D (0x5A) MCP4451
* AZTEEG_X3_PRO 0x2C (0x58) 0x2E (0x5C) MCP4451
+ * AZTEEG_X5_MINI 0x2C (0x58) 0x2E (0x5C) MCP4451
* AZTEEG_X5_MINI_WIFI 0x58 0x5C MCP4451
* MIGHTYBOARD_REVE 0x2F (0x5E) MCP4018
*/
diff --git a/config/examples/Micromake/C1/basic/Configuration.h b/config/examples/Micromake/C1/basic/Configuration.h
index 07556feb45..764c83c845 100644
--- a/config/examples/Micromake/C1/basic/Configuration.h
+++ b/config/examples/Micromake/C1/basic/Configuration.h
@@ -832,15 +832,71 @@
*/
//#define BLTOUCH
#if ENABLED(BLTOUCH)
- //#define BLTOUCH_DELAY 500 // Minimum Command delay (ms). Enable and increase if needed
+ /**
+ * Either: Use the defaults (recommended) or: For special purposes, use the following DEFINES
+ * Do not activate settings that the probe might not understand. Clones might misunderstand
+ * advanced commands.
+ *
+ * Note: If the probe is not deploying, check a "Cmd: Reset" and "Cmd: Self-Test" and then
+ * check the wiring of the BROWN, RED and ORANGE wires.
+ *
+ * Note: If the trigger signal of your probe is not being recognized, it has been very often
+ * because the BLACK and WHITE wires needed to be swapped. They are not "interchangeable"
+ * like they would be with a real switch. So please check the wiring first.
+ *
+ * Settings for all BLTouch and clone probes:
+ */
+
+ // Safety: The probe needs time to recognize the command.
+ // Minimum command delay (ms). Enable and increase if needed.
+ //#define BLTOUCH_DELAY 500
/**
- * BLTouch V3.0 and newer smart series
- * For genuine BLTouch 3.0 sensors. Clones may be confused by 3.0 command angles. YMMV.
- * If the pin trigger is not detected, first try swapping the black and white wires then toggle this.
+ * Settings for BLTOUCH Classic 1.2, 1.3 or BLTouch Smart 1.0, 2.0, 2.2, 3.0, 3.1, and most clones:
*/
- //#define BLTOUCH_FORCE_5V_MODE
-#endif
+
+ // Feature: Switch into SW mode after a deploy. It makes the output pulse longer. Can be useful
+ // in special cases, like noisy or filtered input configurations.
+ //#define BLTOUCH_FORCE_SW_MODE
+
+ /**
+ * Settings for BLTouch Smart 3.0 and 3.1
+ * Summary:
+ * - Voltage modes: 5V and OD (open drain - "logic voltage free") output modes
+ * - High-Speed mode
+ * - Disable LCD voltage options
+ */
+
+ /**
+ * Danger: Don't activate 5V mode unless attached to a 5V-tolerant controller!
+ * V3.0 or 3.1: Set default mode to 5V mode at Marlin startup.
+ * If disabled, OD mode is the hard-coded default on 3.0
+ * On startup, Marlin will compare its eeprom to this vale. If the selected mode
+ * differs, a mode set eeprom write will be completed at initialization.
+ * Use the option below to force an eeprom write to a V3.1 probe regardless.
+ */
+ //#define BLTOUCH_SET_5V_MODE
+
+ /**
+ * Safety: Activate if connecting a probe with an unknown voltage mode.
+ * V3.0: Set a probe into mode selected above at Marlin startup. Required for 5V mode on 3.0
+ * V3.1: Force a probe with unknown mode into selected mode at Marlin startup ( = Probe EEPROM write )
+ * To preserve the life of the probe, use this once then turn it off and re-flash.
+ */
+ //#define BLTOUCH_FORCE_MODE_SET
+
+ /**
+ * Use "HIGH SPEED" mode for probing.
+ * Danger: Disable if your probe sometimes fails. Only suitable for stable well-adjusted systems.
+ * This feature was designed for Delta's with very fast Z moves however higher speed cartesians may function
+ * If the machine cannot raise the probe fast enough after a trigger, it may enter a fault state.
+ */
+ //#define BLTOUCH_HS_MODE
+
+ // Safety: Enable voltage mode settings in the LCD menu.
+ //#define BLTOUCH_LCD_VOLTAGE_MENU
+
+#endif // BLTOUCH
// A probe that is deployed and stowed with a solenoid pin (SOL1_PIN)
//#define SOLENOID_PROBE
@@ -861,23 +917,23 @@
//
/**
- * Z Probe to nozzle (X,Y) offset, relative to (0, 0).
- * X and Y offsets must be integers.
+ * Z Probe to nozzle (X,Y) offset, relative to (0, 0).
+ * X and Y offsets must be integers.
*
- * In the following example the X and Y offsets are both positive:
- * #define X_PROBE_OFFSET_FROM_EXTRUDER 10
- * #define Y_PROBE_OFFSET_FROM_EXTRUDER 10
+ * In the following example the X and Y offsets are both positive:
+ * #define X_PROBE_OFFSET_FROM_EXTRUDER 10
+ * #define Y_PROBE_OFFSET_FROM_EXTRUDER 10
*
- * +-- BACK ---+
- * | |
- * L | (+) P | R <-- probe (20,20)
- * E | | I
- * F | (-) N (+) | G <-- nozzle (10,10)
- * T | | H
- * | (-) | T
- * | |
- * O-- FRONT --+
- * (0,0)
+ * +-- BACK ---+
+ * | |
+ * L | (+) P | R <-- probe (20,20)
+ * E | | I
+ * F | (-) N (+) | G <-- nozzle (10,10)
+ * T | | H
+ * | (-) | T
+ * | |
+ * O-- FRONT --+
+ * (0,0)
*/
#define X_PROBE_OFFSET_FROM_EXTRUDER 0 // X offset: -left +right [of the nozzle]
#define Y_PROBE_OFFSET_FROM_EXTRUDER 0 // Y offset: -front +behind [the nozzle]
@@ -2093,6 +2149,10 @@
#define NEOPIXEL_IS_SEQUENTIAL // Sequential display for temperature change - LED by LED. Disable to change all LEDs at once.
#define NEOPIXEL_BRIGHTNESS 127 // Initial brightness (0-255)
//#define NEOPIXEL_STARTUP_TEST // Cycle through colors at startup
+
+ // Use a single Neopixel LED for static (background) lighting
+ //#define NEOPIXEL_BKGD_LED_INDEX 0 // Index of the LED to use
+ //#define NEOPIXEL_BKGD_COLOR { 255, 255, 255, 0 } // R, G, B, W
#endif
/**
diff --git a/config/examples/Micromake/C1/enhanced/Configuration.h b/config/examples/Micromake/C1/enhanced/Configuration.h
index 5555d12276..9f44b63d40 100644
--- a/config/examples/Micromake/C1/enhanced/Configuration.h
+++ b/config/examples/Micromake/C1/enhanced/Configuration.h
@@ -832,15 +832,71 @@
*/
//#define BLTOUCH
#if ENABLED(BLTOUCH)
- //#define BLTOUCH_DELAY 500 // Minimum Command delay (ms). Enable and increase if needed
+ /**
+ * Either: Use the defaults (recommended) or: For special purposes, use the following DEFINES
+ * Do not activate settings that the probe might not understand. Clones might misunderstand
+ * advanced commands.
+ *
+ * Note: If the probe is not deploying, check a "Cmd: Reset" and "Cmd: Self-Test" and then
+ * check the wiring of the BROWN, RED and ORANGE wires.
+ *
+ * Note: If the trigger signal of your probe is not being recognized, it has been very often
+ * because the BLACK and WHITE wires needed to be swapped. They are not "interchangeable"
+ * like they would be with a real switch. So please check the wiring first.
+ *
+ * Settings for all BLTouch and clone probes:
+ */
+
+ // Safety: The probe needs time to recognize the command.
+ // Minimum command delay (ms). Enable and increase if needed.
+ //#define BLTOUCH_DELAY 500
/**
- * BLTouch V3.0 and newer smart series
- * For genuine BLTouch 3.0 sensors. Clones may be confused by 3.0 command angles. YMMV.
- * If the pin trigger is not detected, first try swapping the black and white wires then toggle this.
+ * Settings for BLTOUCH Classic 1.2, 1.3 or BLTouch Smart 1.0, 2.0, 2.2, 3.0, 3.1, and most clones:
*/
- //#define BLTOUCH_FORCE_5V_MODE
-#endif
+
+ // Feature: Switch into SW mode after a deploy. It makes the output pulse longer. Can be useful
+ // in special cases, like noisy or filtered input configurations.
+ //#define BLTOUCH_FORCE_SW_MODE
+
+ /**
+ * Settings for BLTouch Smart 3.0 and 3.1
+ * Summary:
+ * - Voltage modes: 5V and OD (open drain - "logic voltage free") output modes
+ * - High-Speed mode
+ * - Disable LCD voltage options
+ */
+
+ /**
+ * Danger: Don't activate 5V mode unless attached to a 5V-tolerant controller!
+ * V3.0 or 3.1: Set default mode to 5V mode at Marlin startup.
+ * If disabled, OD mode is the hard-coded default on 3.0
+ * On startup, Marlin will compare its eeprom to this vale. If the selected mode
+ * differs, a mode set eeprom write will be completed at initialization.
+ * Use the option below to force an eeprom write to a V3.1 probe regardless.
+ */
+ //#define BLTOUCH_SET_5V_MODE
+
+ /**
+ * Safety: Activate if connecting a probe with an unknown voltage mode.
+ * V3.0: Set a probe into mode selected above at Marlin startup. Required for 5V mode on 3.0
+ * V3.1: Force a probe with unknown mode into selected mode at Marlin startup ( = Probe EEPROM write )
+ * To preserve the life of the probe, use this once then turn it off and re-flash.
+ */
+ //#define BLTOUCH_FORCE_MODE_SET
+
+ /**
+ * Use "HIGH SPEED" mode for probing.
+ * Danger: Disable if your probe sometimes fails. Only suitable for stable well-adjusted systems.
+ * This feature was designed for Delta's with very fast Z moves however higher speed cartesians may function
+ * If the machine cannot raise the probe fast enough after a trigger, it may enter a fault state.
+ */
+ //#define BLTOUCH_HS_MODE
+
+ // Safety: Enable voltage mode settings in the LCD menu.
+ //#define BLTOUCH_LCD_VOLTAGE_MENU
+
+#endif // BLTOUCH
// A probe that is deployed and stowed with a solenoid pin (SOL1_PIN)
//#define SOLENOID_PROBE
@@ -861,23 +917,23 @@
//
/**
- * Z Probe to nozzle (X,Y) offset, relative to (0, 0).
- * X and Y offsets must be integers.
+ * Z Probe to nozzle (X,Y) offset, relative to (0, 0).
+ * X and Y offsets must be integers.
*
- * In the following example the X and Y offsets are both positive:
- * #define X_PROBE_OFFSET_FROM_EXTRUDER 10
- * #define Y_PROBE_OFFSET_FROM_EXTRUDER 10
+ * In the following example the X and Y offsets are both positive:
+ * #define X_PROBE_OFFSET_FROM_EXTRUDER 10
+ * #define Y_PROBE_OFFSET_FROM_EXTRUDER 10
*
- * +-- BACK ---+
- * | |
- * L | (+) P | R <-- probe (20,20)
- * E | | I
- * F | (-) N (+) | G <-- nozzle (10,10)
- * T | | H
- * | (-) | T
- * | |
- * O-- FRONT --+
- * (0,0)
+ * +-- BACK ---+
+ * | |
+ * L | (+) P | R <-- probe (20,20)
+ * E | | I
+ * F | (-) N (+) | G <-- nozzle (10,10)
+ * T | | H
+ * | (-) | T
+ * | |
+ * O-- FRONT --+
+ * (0,0)
*/
#define X_PROBE_OFFSET_FROM_EXTRUDER 0 // X offset: -left +right [of the nozzle]
#define Y_PROBE_OFFSET_FROM_EXTRUDER 0 // Y offset: -front +behind [the nozzle]
@@ -2093,6 +2149,10 @@
#define NEOPIXEL_IS_SEQUENTIAL // Sequential display for temperature change - LED by LED. Disable to change all LEDs at once.
#define NEOPIXEL_BRIGHTNESS 127 // Initial brightness (0-255)
//#define NEOPIXEL_STARTUP_TEST // Cycle through colors at startup
+
+ // Use a single Neopixel LED for static (background) lighting
+ //#define NEOPIXEL_BKGD_LED_INDEX 0 // Index of the LED to use
+ //#define NEOPIXEL_BKGD_COLOR { 255, 255, 255, 0 } // R, G, B, W
#endif
/**
diff --git a/config/examples/Micromake/C1/enhanced/Configuration_adv.h b/config/examples/Micromake/C1/enhanced/Configuration_adv.h
index bf159cd1fa..853f0a532b 100644
--- a/config/examples/Micromake/C1/enhanced/Configuration_adv.h
+++ b/config/examples/Micromake/C1/enhanced/Configuration_adv.h
@@ -382,10 +382,6 @@
#endif
#endif
-//===========================================================================
-//============================ Mechanical Settings ==========================
-//===========================================================================
-
// @section homing
// If you want endstops to stay on (by default) even when not homing
@@ -745,6 +741,7 @@
* A (A shifted) B (B shifted) IC
* Smoothie 0x2C (0x58) 0x2D (0x5A) MCP4451
* AZTEEG_X3_PRO 0x2C (0x58) 0x2E (0x5C) MCP4451
+ * AZTEEG_X5_MINI 0x2C (0x58) 0x2E (0x5C) MCP4451
* AZTEEG_X5_MINI_WIFI 0x58 0x5C MCP4451
* MIGHTYBOARD_REVE 0x2F (0x5E) MCP4018
*/
diff --git a/config/examples/Mks/Robin/Configuration.h b/config/examples/Mks/Robin/Configuration.h
index 0140f9b0eb..a295f48412 100644
--- a/config/examples/Mks/Robin/Configuration.h
+++ b/config/examples/Mks/Robin/Configuration.h
@@ -829,15 +829,71 @@
*/
//#define BLTOUCH
#if ENABLED(BLTOUCH)
- //#define BLTOUCH_DELAY 500 // Minimum Command delay (ms). Enable and increase if needed
+ /**
+ * Either: Use the defaults (recommended) or: For special purposes, use the following DEFINES
+ * Do not activate settings that the probe might not understand. Clones might misunderstand
+ * advanced commands.
+ *
+ * Note: If the probe is not deploying, check a "Cmd: Reset" and "Cmd: Self-Test" and then
+ * check the wiring of the BROWN, RED and ORANGE wires.
+ *
+ * Note: If the trigger signal of your probe is not being recognized, it has been very often
+ * because the BLACK and WHITE wires needed to be swapped. They are not "interchangeable"
+ * like they would be with a real switch. So please check the wiring first.
+ *
+ * Settings for all BLTouch and clone probes:
+ */
+
+ // Safety: The probe needs time to recognize the command.
+ // Minimum command delay (ms). Enable and increase if needed.
+ //#define BLTOUCH_DELAY 500
/**
- * BLTouch V3.0 and newer smart series
- * For genuine BLTouch 3.0 sensors. Clones may be confused by 3.0 command angles. YMMV.
- * If the pin trigger is not detected, first try swapping the black and white wires then toggle this.
+ * Settings for BLTOUCH Classic 1.2, 1.3 or BLTouch Smart 1.0, 2.0, 2.2, 3.0, 3.1, and most clones:
*/
- //#define BLTOUCH_FORCE_5V_MODE
-#endif
+
+ // Feature: Switch into SW mode after a deploy. It makes the output pulse longer. Can be useful
+ // in special cases, like noisy or filtered input configurations.
+ //#define BLTOUCH_FORCE_SW_MODE
+
+ /**
+ * Settings for BLTouch Smart 3.0 and 3.1
+ * Summary:
+ * - Voltage modes: 5V and OD (open drain - "logic voltage free") output modes
+ * - High-Speed mode
+ * - Disable LCD voltage options
+ */
+
+ /**
+ * Danger: Don't activate 5V mode unless attached to a 5V-tolerant controller!
+ * V3.0 or 3.1: Set default mode to 5V mode at Marlin startup.
+ * If disabled, OD mode is the hard-coded default on 3.0
+ * On startup, Marlin will compare its eeprom to this vale. If the selected mode
+ * differs, a mode set eeprom write will be completed at initialization.
+ * Use the option below to force an eeprom write to a V3.1 probe regardless.
+ */
+ //#define BLTOUCH_SET_5V_MODE
+
+ /**
+ * Safety: Activate if connecting a probe with an unknown voltage mode.
+ * V3.0: Set a probe into mode selected above at Marlin startup. Required for 5V mode on 3.0
+ * V3.1: Force a probe with unknown mode into selected mode at Marlin startup ( = Probe EEPROM write )
+ * To preserve the life of the probe, use this once then turn it off and re-flash.
+ */
+ //#define BLTOUCH_FORCE_MODE_SET
+
+ /**
+ * Use "HIGH SPEED" mode for probing.
+ * Danger: Disable if your probe sometimes fails. Only suitable for stable well-adjusted systems.
+ * This feature was designed for Delta's with very fast Z moves however higher speed cartesians may function
+ * If the machine cannot raise the probe fast enough after a trigger, it may enter a fault state.
+ */
+ //#define BLTOUCH_HS_MODE
+
+ // Safety: Enable voltage mode settings in the LCD menu.
+ //#define BLTOUCH_LCD_VOLTAGE_MENU
+
+#endif // BLTOUCH
// A probe that is deployed and stowed with a solenoid pin (SOL1_PIN)
//#define SOLENOID_PROBE
@@ -858,23 +914,23 @@
//
/**
- * Z Probe to nozzle (X,Y) offset, relative to (0, 0).
- * X and Y offsets must be integers.
+ * Z Probe to nozzle (X,Y) offset, relative to (0, 0).
+ * X and Y offsets must be integers.
*
- * In the following example the X and Y offsets are both positive:
- * #define X_PROBE_OFFSET_FROM_EXTRUDER 10
- * #define Y_PROBE_OFFSET_FROM_EXTRUDER 10
+ * In the following example the X and Y offsets are both positive:
+ * #define X_PROBE_OFFSET_FROM_EXTRUDER 10
+ * #define Y_PROBE_OFFSET_FROM_EXTRUDER 10
*
- * +-- BACK ---+
- * | |
- * L | (+) P | R <-- probe (20,20)
- * E | | I
- * F | (-) N (+) | G <-- nozzle (10,10)
- * T | | H
- * | (-) | T
- * | |
- * O-- FRONT --+
- * (0,0)
+ * +-- BACK ---+
+ * | |
+ * L | (+) P | R <-- probe (20,20)
+ * E | | I
+ * F | (-) N (+) | G <-- nozzle (10,10)
+ * T | | H
+ * | (-) | T
+ * | |
+ * O-- FRONT --+
+ * (0,0)
*/
#define X_PROBE_OFFSET_FROM_EXTRUDER 10 // X offset: -left +right [of the nozzle]
#define Y_PROBE_OFFSET_FROM_EXTRUDER 10 // Y offset: -front +behind [the nozzle]
@@ -2091,6 +2147,10 @@
#define NEOPIXEL_IS_SEQUENTIAL // Sequential display for temperature change - LED by LED. Disable to change all LEDs at once.
#define NEOPIXEL_BRIGHTNESS 127 // Initial brightness (0-255)
//#define NEOPIXEL_STARTUP_TEST // Cycle through colors at startup
+
+ // Use a single Neopixel LED for static (background) lighting
+ //#define NEOPIXEL_BKGD_LED_INDEX 0 // Index of the LED to use
+ //#define NEOPIXEL_BKGD_COLOR { 255, 255, 255, 0 } // R, G, B, W
#endif
/**
diff --git a/config/examples/Mks/Robin/Configuration_adv.h b/config/examples/Mks/Robin/Configuration_adv.h
index 6799d0df02..2570b95e36 100644
--- a/config/examples/Mks/Robin/Configuration_adv.h
+++ b/config/examples/Mks/Robin/Configuration_adv.h
@@ -382,10 +382,6 @@
#endif
#endif
-//===========================================================================
-//============================ Mechanical Settings ==========================
-//===========================================================================
-
// @section homing
// If you want endstops to stay on (by default) even when not homing
@@ -745,6 +741,7 @@
* A (A shifted) B (B shifted) IC
* Smoothie 0x2C (0x58) 0x2D (0x5A) MCP4451
* AZTEEG_X3_PRO 0x2C (0x58) 0x2E (0x5C) MCP4451
+ * AZTEEG_X5_MINI 0x2C (0x58) 0x2E (0x5C) MCP4451
* AZTEEG_X5_MINI_WIFI 0x58 0x5C MCP4451
* MIGHTYBOARD_REVE 0x2F (0x5E) MCP4018
*/
diff --git a/config/examples/Mks/Sbase/Configuration.h b/config/examples/Mks/Sbase/Configuration.h
index c9e9731c52..59be6ede75 100644
--- a/config/examples/Mks/Sbase/Configuration.h
+++ b/config/examples/Mks/Sbase/Configuration.h
@@ -828,15 +828,71 @@
*/
//#define BLTOUCH
#if ENABLED(BLTOUCH)
- //#define BLTOUCH_DELAY 500 // Minimum Command delay (ms). Enable and increase if needed
+ /**
+ * Either: Use the defaults (recommended) or: For special purposes, use the following DEFINES
+ * Do not activate settings that the probe might not understand. Clones might misunderstand
+ * advanced commands.
+ *
+ * Note: If the probe is not deploying, check a "Cmd: Reset" and "Cmd: Self-Test" and then
+ * check the wiring of the BROWN, RED and ORANGE wires.
+ *
+ * Note: If the trigger signal of your probe is not being recognized, it has been very often
+ * because the BLACK and WHITE wires needed to be swapped. They are not "interchangeable"
+ * like they would be with a real switch. So please check the wiring first.
+ *
+ * Settings for all BLTouch and clone probes:
+ */
+
+ // Safety: The probe needs time to recognize the command.
+ // Minimum command delay (ms). Enable and increase if needed.
+ //#define BLTOUCH_DELAY 500
/**
- * BLTouch V3.0 and newer smart series
- * For genuine BLTouch 3.0 sensors. Clones may be confused by 3.0 command angles. YMMV.
- * If the pin trigger is not detected, first try swapping the black and white wires then toggle this.
+ * Settings for BLTOUCH Classic 1.2, 1.3 or BLTouch Smart 1.0, 2.0, 2.2, 3.0, 3.1, and most clones:
*/
- //#define BLTOUCH_FORCE_5V_MODE
-#endif
+
+ // Feature: Switch into SW mode after a deploy. It makes the output pulse longer. Can be useful
+ // in special cases, like noisy or filtered input configurations.
+ //#define BLTOUCH_FORCE_SW_MODE
+
+ /**
+ * Settings for BLTouch Smart 3.0 and 3.1
+ * Summary:
+ * - Voltage modes: 5V and OD (open drain - "logic voltage free") output modes
+ * - High-Speed mode
+ * - Disable LCD voltage options
+ */
+
+ /**
+ * Danger: Don't activate 5V mode unless attached to a 5V-tolerant controller!
+ * V3.0 or 3.1: Set default mode to 5V mode at Marlin startup.
+ * If disabled, OD mode is the hard-coded default on 3.0
+ * On startup, Marlin will compare its eeprom to this vale. If the selected mode
+ * differs, a mode set eeprom write will be completed at initialization.
+ * Use the option below to force an eeprom write to a V3.1 probe regardless.
+ */
+ //#define BLTOUCH_SET_5V_MODE
+
+ /**
+ * Safety: Activate if connecting a probe with an unknown voltage mode.
+ * V3.0: Set a probe into mode selected above at Marlin startup. Required for 5V mode on 3.0
+ * V3.1: Force a probe with unknown mode into selected mode at Marlin startup ( = Probe EEPROM write )
+ * To preserve the life of the probe, use this once then turn it off and re-flash.
+ */
+ //#define BLTOUCH_FORCE_MODE_SET
+
+ /**
+ * Use "HIGH SPEED" mode for probing.
+ * Danger: Disable if your probe sometimes fails. Only suitable for stable well-adjusted systems.
+ * This feature was designed for Delta's with very fast Z moves however higher speed cartesians may function
+ * If the machine cannot raise the probe fast enough after a trigger, it may enter a fault state.
+ */
+ //#define BLTOUCH_HS_MODE
+
+ // Safety: Enable voltage mode settings in the LCD menu.
+ //#define BLTOUCH_LCD_VOLTAGE_MENU
+
+#endif // BLTOUCH
// A probe that is deployed and stowed with a solenoid pin (SOL1_PIN)
//#define SOLENOID_PROBE
@@ -857,23 +913,23 @@
//
/**
- * Z Probe to nozzle (X,Y) offset, relative to (0, 0).
- * X and Y offsets must be integers.
+ * Z Probe to nozzle (X,Y) offset, relative to (0, 0).
+ * X and Y offsets must be integers.
*
- * In the following example the X and Y offsets are both positive:
- * #define X_PROBE_OFFSET_FROM_EXTRUDER 10
- * #define Y_PROBE_OFFSET_FROM_EXTRUDER 10
+ * In the following example the X and Y offsets are both positive:
+ * #define X_PROBE_OFFSET_FROM_EXTRUDER 10
+ * #define Y_PROBE_OFFSET_FROM_EXTRUDER 10
*
- * +-- BACK ---+
- * | |
- * L | (+) P | R <-- probe (20,20)
- * E | | I
- * F | (-) N (+) | G <-- nozzle (10,10)
- * T | | H
- * | (-) | T
- * | |
- * O-- FRONT --+
- * (0,0)
+ * +-- BACK ---+
+ * | |
+ * L | (+) P | R <-- probe (20,20)
+ * E | | I
+ * F | (-) N (+) | G <-- nozzle (10,10)
+ * T | | H
+ * | (-) | T
+ * | |
+ * O-- FRONT --+
+ * (0,0)
*/
#define X_PROBE_OFFSET_FROM_EXTRUDER 32 // X offset: -left +right [of the nozzle]
#define Y_PROBE_OFFSET_FROM_EXTRUDER 5 // Y offset: -front +behind [the nozzle]
@@ -2089,6 +2145,10 @@
#define NEOPIXEL_IS_SEQUENTIAL // Sequential display for temperature change - LED by LED. Disable to change all LEDs at once.
#define NEOPIXEL_BRIGHTNESS 127 // Initial brightness (0-255)
//#define NEOPIXEL_STARTUP_TEST // Cycle through colors at startup
+
+ // Use a single Neopixel LED for static (background) lighting
+ //#define NEOPIXEL_BKGD_LED_INDEX 0 // Index of the LED to use
+ //#define NEOPIXEL_BKGD_COLOR { 255, 255, 255, 0 } // R, G, B, W
#endif
/**
diff --git a/config/examples/Mks/Sbase/Configuration_adv.h b/config/examples/Mks/Sbase/Configuration_adv.h
index 4a672e5223..941fd58b1e 100644
--- a/config/examples/Mks/Sbase/Configuration_adv.h
+++ b/config/examples/Mks/Sbase/Configuration_adv.h
@@ -382,10 +382,6 @@
#endif
#endif
-//===========================================================================
-//============================ Mechanical Settings ==========================
-//===========================================================================
-
// @section homing
// If you want endstops to stay on (by default) even when not homing
@@ -746,6 +742,7 @@
* A (A shifted) B (B shifted) IC
* Smoothie 0x2C (0x58) 0x2D (0x5A) MCP4451
* AZTEEG_X3_PRO 0x2C (0x58) 0x2E (0x5C) MCP4451
+ * AZTEEG_X5_MINI 0x2C (0x58) 0x2E (0x5C) MCP4451
* AZTEEG_X5_MINI_WIFI 0x58 0x5C MCP4451
* MIGHTYBOARD_REVE 0x2F (0x5E) MCP4018
*/
diff --git a/config/examples/Printrbot/PrintrboardG2/Configuration.h b/config/examples/Printrbot/PrintrboardG2/Configuration.h
index 005a576f1f..65714d0c77 100644
--- a/config/examples/Printrbot/PrintrboardG2/Configuration.h
+++ b/config/examples/Printrbot/PrintrboardG2/Configuration.h
@@ -836,15 +836,71 @@
*/
//#define BLTOUCH
#if ENABLED(BLTOUCH)
- //#define BLTOUCH_DELAY 500 // Minimum Command delay (ms). Enable and increase if needed
+ /**
+ * Either: Use the defaults (recommended) or: For special purposes, use the following DEFINES
+ * Do not activate settings that the probe might not understand. Clones might misunderstand
+ * advanced commands.
+ *
+ * Note: If the probe is not deploying, check a "Cmd: Reset" and "Cmd: Self-Test" and then
+ * check the wiring of the BROWN, RED and ORANGE wires.
+ *
+ * Note: If the trigger signal of your probe is not being recognized, it has been very often
+ * because the BLACK and WHITE wires needed to be swapped. They are not "interchangeable"
+ * like they would be with a real switch. So please check the wiring first.
+ *
+ * Settings for all BLTouch and clone probes:
+ */
+
+ // Safety: The probe needs time to recognize the command.
+ // Minimum command delay (ms). Enable and increase if needed.
+ //#define BLTOUCH_DELAY 500
/**
- * BLTouch V3.0 and newer smart series
- * For genuine BLTouch 3.0 sensors. Clones may be confused by 3.0 command angles. YMMV.
- * If the pin trigger is not detected, first try swapping the black and white wires then toggle this.
+ * Settings for BLTOUCH Classic 1.2, 1.3 or BLTouch Smart 1.0, 2.0, 2.2, 3.0, 3.1, and most clones:
*/
- //#define BLTOUCH_FORCE_5V_MODE
-#endif
+
+ // Feature: Switch into SW mode after a deploy. It makes the output pulse longer. Can be useful
+ // in special cases, like noisy or filtered input configurations.
+ //#define BLTOUCH_FORCE_SW_MODE
+
+ /**
+ * Settings for BLTouch Smart 3.0 and 3.1
+ * Summary:
+ * - Voltage modes: 5V and OD (open drain - "logic voltage free") output modes
+ * - High-Speed mode
+ * - Disable LCD voltage options
+ */
+
+ /**
+ * Danger: Don't activate 5V mode unless attached to a 5V-tolerant controller!
+ * V3.0 or 3.1: Set default mode to 5V mode at Marlin startup.
+ * If disabled, OD mode is the hard-coded default on 3.0
+ * On startup, Marlin will compare its eeprom to this vale. If the selected mode
+ * differs, a mode set eeprom write will be completed at initialization.
+ * Use the option below to force an eeprom write to a V3.1 probe regardless.
+ */
+ //#define BLTOUCH_SET_5V_MODE
+
+ /**
+ * Safety: Activate if connecting a probe with an unknown voltage mode.
+ * V3.0: Set a probe into mode selected above at Marlin startup. Required for 5V mode on 3.0
+ * V3.1: Force a probe with unknown mode into selected mode at Marlin startup ( = Probe EEPROM write )
+ * To preserve the life of the probe, use this once then turn it off and re-flash.
+ */
+ //#define BLTOUCH_FORCE_MODE_SET
+
+ /**
+ * Use "HIGH SPEED" mode for probing.
+ * Danger: Disable if your probe sometimes fails. Only suitable for stable well-adjusted systems.
+ * This feature was designed for Delta's with very fast Z moves however higher speed cartesians may function
+ * If the machine cannot raise the probe fast enough after a trigger, it may enter a fault state.
+ */
+ //#define BLTOUCH_HS_MODE
+
+ // Safety: Enable voltage mode settings in the LCD menu.
+ //#define BLTOUCH_LCD_VOLTAGE_MENU
+
+#endif // BLTOUCH
// A probe that is deployed and stowed with a solenoid pin (SOL1_PIN)
//#define SOLENOID_PROBE
@@ -865,23 +921,23 @@
//
/**
- * Z Probe to nozzle (X,Y) offset, relative to (0, 0).
- * X and Y offsets must be integers.
+ * Z Probe to nozzle (X,Y) offset, relative to (0, 0).
+ * X and Y offsets must be integers.
*
- * In the following example the X and Y offsets are both positive:
- * #define X_PROBE_OFFSET_FROM_EXTRUDER 10
- * #define Y_PROBE_OFFSET_FROM_EXTRUDER 10
+ * In the following example the X and Y offsets are both positive:
+ * #define X_PROBE_OFFSET_FROM_EXTRUDER 10
+ * #define Y_PROBE_OFFSET_FROM_EXTRUDER 10
*
- * +-- BACK ---+
- * | |
- * L | (+) P | R <-- probe (20,20)
- * E | | I
- * F | (-) N (+) | G <-- nozzle (10,10)
- * T | | H
- * | (-) | T
- * | |
- * O-- FRONT --+
- * (0,0)
+ * +-- BACK ---+
+ * | |
+ * L | (+) P | R <-- probe (20,20)
+ * E | | I
+ * F | (-) N (+) | G <-- nozzle (10,10)
+ * T | | H
+ * | (-) | T
+ * | |
+ * O-- FRONT --+
+ * (0,0)
*/
#define X_PROBE_OFFSET_FROM_EXTRUDER 10 // X offset: -left +right [of the nozzle]
#define Y_PROBE_OFFSET_FROM_EXTRUDER 10 // Y offset: -front +behind [the nozzle]
@@ -2092,11 +2148,15 @@
#define NEOPIXEL_LED
#if ENABLED(NEOPIXEL_LED)
#define NEOPIXEL_TYPE NEO_GRBW // NEO_GRBW / NEO_GRB - four/three channel driver type (defined in Adafruit_NeoPixel.h)
- #define NEOPIXEL_PIN 20 // LED driving pin
- #define NEOPIXEL_PIXELS 3 // Number of LEDs in the strip
+ #define NEOPIXEL_PIN 20 // LED driving pin
+ #define NEOPIXEL_PIXELS 3 // Number of LEDs in the strip
#define NEOPIXEL_IS_SEQUENTIAL // Sequential display for temperature change - LED by LED. Disable to change all LEDs at once.
#define NEOPIXEL_BRIGHTNESS 127 // Initial brightness (0-255)
- #define NEOPIXEL_STARTUP_TEST // Cycle through colors at startup
+ #define NEOPIXEL_STARTUP_TEST // Cycle through colors at startup
+
+ // Use a single Neopixel LED for static (background) lighting
+ //#define NEOPIXEL_BKGD_LED_INDEX 0 // Index of the LED to use
+ //#define NEOPIXEL_BKGD_COLOR { 255, 255, 255, 0 } // R, G, B, W
#endif
/**
diff --git a/config/examples/RapideLite/RL200/Configuration.h b/config/examples/RapideLite/RL200/Configuration.h
index 7373e0ca41..5718ec16d0 100644
--- a/config/examples/RapideLite/RL200/Configuration.h
+++ b/config/examples/RapideLite/RL200/Configuration.h
@@ -828,15 +828,71 @@
*/
//#define BLTOUCH
#if ENABLED(BLTOUCH)
- //#define BLTOUCH_DELAY 500 // Minimum Command delay (ms). Enable and increase if needed
+ /**
+ * Either: Use the defaults (recommended) or: For special purposes, use the following DEFINES
+ * Do not activate settings that the probe might not understand. Clones might misunderstand
+ * advanced commands.
+ *
+ * Note: If the probe is not deploying, check a "Cmd: Reset" and "Cmd: Self-Test" and then
+ * check the wiring of the BROWN, RED and ORANGE wires.
+ *
+ * Note: If the trigger signal of your probe is not being recognized, it has been very often
+ * because the BLACK and WHITE wires needed to be swapped. They are not "interchangeable"
+ * like they would be with a real switch. So please check the wiring first.
+ *
+ * Settings for all BLTouch and clone probes:
+ */
+
+ // Safety: The probe needs time to recognize the command.
+ // Minimum command delay (ms). Enable and increase if needed.
+ //#define BLTOUCH_DELAY 500
/**
- * BLTouch V3.0 and newer smart series
- * For genuine BLTouch 3.0 sensors. Clones may be confused by 3.0 command angles. YMMV.
- * If the pin trigger is not detected, first try swapping the black and white wires then toggle this.
+ * Settings for BLTOUCH Classic 1.2, 1.3 or BLTouch Smart 1.0, 2.0, 2.2, 3.0, 3.1, and most clones:
*/
- //#define BLTOUCH_FORCE_5V_MODE
-#endif
+
+ // Feature: Switch into SW mode after a deploy. It makes the output pulse longer. Can be useful
+ // in special cases, like noisy or filtered input configurations.
+ //#define BLTOUCH_FORCE_SW_MODE
+
+ /**
+ * Settings for BLTouch Smart 3.0 and 3.1
+ * Summary:
+ * - Voltage modes: 5V and OD (open drain - "logic voltage free") output modes
+ * - High-Speed mode
+ * - Disable LCD voltage options
+ */
+
+ /**
+ * Danger: Don't activate 5V mode unless attached to a 5V-tolerant controller!
+ * V3.0 or 3.1: Set default mode to 5V mode at Marlin startup.
+ * If disabled, OD mode is the hard-coded default on 3.0
+ * On startup, Marlin will compare its eeprom to this vale. If the selected mode
+ * differs, a mode set eeprom write will be completed at initialization.
+ * Use the option below to force an eeprom write to a V3.1 probe regardless.
+ */
+ //#define BLTOUCH_SET_5V_MODE
+
+ /**
+ * Safety: Activate if connecting a probe with an unknown voltage mode.
+ * V3.0: Set a probe into mode selected above at Marlin startup. Required for 5V mode on 3.0
+ * V3.1: Force a probe with unknown mode into selected mode at Marlin startup ( = Probe EEPROM write )
+ * To preserve the life of the probe, use this once then turn it off and re-flash.
+ */
+ //#define BLTOUCH_FORCE_MODE_SET
+
+ /**
+ * Use "HIGH SPEED" mode for probing.
+ * Danger: Disable if your probe sometimes fails. Only suitable for stable well-adjusted systems.
+ * This feature was designed for Delta's with very fast Z moves however higher speed cartesians may function
+ * If the machine cannot raise the probe fast enough after a trigger, it may enter a fault state.
+ */
+ //#define BLTOUCH_HS_MODE
+
+ // Safety: Enable voltage mode settings in the LCD menu.
+ //#define BLTOUCH_LCD_VOLTAGE_MENU
+
+#endif // BLTOUCH
// A probe that is deployed and stowed with a solenoid pin (SOL1_PIN)
//#define SOLENOID_PROBE
@@ -857,23 +913,23 @@
//
/**
- * Z Probe to nozzle (X,Y) offset, relative to (0, 0).
- * X and Y offsets must be integers.
+ * Z Probe to nozzle (X,Y) offset, relative to (0, 0).
+ * X and Y offsets must be integers.
*
- * In the following example the X and Y offsets are both positive:
- * #define X_PROBE_OFFSET_FROM_EXTRUDER 10
- * #define Y_PROBE_OFFSET_FROM_EXTRUDER 10
+ * In the following example the X and Y offsets are both positive:
+ * #define X_PROBE_OFFSET_FROM_EXTRUDER 10
+ * #define Y_PROBE_OFFSET_FROM_EXTRUDER 10
*
- * +-- BACK ---+
- * | |
- * L | (+) P | R <-- probe (20,20)
- * E | | I
- * F | (-) N (+) | G <-- nozzle (10,10)
- * T | | H
- * | (-) | T
- * | |
- * O-- FRONT --+
- * (0,0)
+ * +-- BACK ---+
+ * | |
+ * L | (+) P | R <-- probe (20,20)
+ * E | | I
+ * F | (-) N (+) | G <-- nozzle (10,10)
+ * T | | H
+ * | (-) | T
+ * | |
+ * O-- FRONT --+
+ * (0,0)
*/
#define X_PROBE_OFFSET_FROM_EXTRUDER 10 // X offset: -left +right [of the nozzle]
#define Y_PROBE_OFFSET_FROM_EXTRUDER 10 // Y offset: -front +behind [the nozzle]
@@ -2089,6 +2145,10 @@
#define NEOPIXEL_IS_SEQUENTIAL // Sequential display for temperature change - LED by LED. Disable to change all LEDs at once.
#define NEOPIXEL_BRIGHTNESS 127 // Initial brightness (0-255)
//#define NEOPIXEL_STARTUP_TEST // Cycle through colors at startup
+
+ // Use a single Neopixel LED for static (background) lighting
+ //#define NEOPIXEL_BKGD_LED_INDEX 0 // Index of the LED to use
+ //#define NEOPIXEL_BKGD_COLOR { 255, 255, 255, 0 } // R, G, B, W
#endif
/**
diff --git a/config/examples/RapideLite/RL200/Configuration_adv.h b/config/examples/RapideLite/RL200/Configuration_adv.h
index 18a2de5f80..cba493069f 100644
--- a/config/examples/RapideLite/RL200/Configuration_adv.h
+++ b/config/examples/RapideLite/RL200/Configuration_adv.h
@@ -382,10 +382,6 @@
#endif
#endif
-//===========================================================================
-//============================ Mechanical Settings ==========================
-//===========================================================================
-
// @section homing
// If you want endstops to stay on (by default) even when not homing
@@ -745,6 +741,7 @@
* A (A shifted) B (B shifted) IC
* Smoothie 0x2C (0x58) 0x2D (0x5A) MCP4451
* AZTEEG_X3_PRO 0x2C (0x58) 0x2E (0x5C) MCP4451
+ * AZTEEG_X5_MINI 0x2C (0x58) 0x2E (0x5C) MCP4451
* AZTEEG_X5_MINI_WIFI 0x58 0x5C MCP4451
* MIGHTYBOARD_REVE 0x2F (0x5E) MCP4018
*/
diff --git a/config/examples/RepRapPro/Huxley/Configuration.h b/config/examples/RepRapPro/Huxley/Configuration.h
index 3425b43a5c..7ae2ce5a61 100644
--- a/config/examples/RepRapPro/Huxley/Configuration.h
+++ b/config/examples/RepRapPro/Huxley/Configuration.h
@@ -868,15 +868,71 @@ Black rubber belt(MXL), 18 - tooth aluminium pulley : 87.489 step per mm (Huxley
*/
//#define BLTOUCH
#if ENABLED(BLTOUCH)
- //#define BLTOUCH_DELAY 500 // Minimum Command delay (ms). Enable and increase if needed
+ /**
+ * Either: Use the defaults (recommended) or: For special purposes, use the following DEFINES
+ * Do not activate settings that the probe might not understand. Clones might misunderstand
+ * advanced commands.
+ *
+ * Note: If the probe is not deploying, check a "Cmd: Reset" and "Cmd: Self-Test" and then
+ * check the wiring of the BROWN, RED and ORANGE wires.
+ *
+ * Note: If the trigger signal of your probe is not being recognized, it has been very often
+ * because the BLACK and WHITE wires needed to be swapped. They are not "interchangeable"
+ * like they would be with a real switch. So please check the wiring first.
+ *
+ * Settings for all BLTouch and clone probes:
+ */
+
+ // Safety: The probe needs time to recognize the command.
+ // Minimum command delay (ms). Enable and increase if needed.
+ //#define BLTOUCH_DELAY 500
/**
- * BLTouch V3.0 and newer smart series
- * For genuine BLTouch 3.0 sensors. Clones may be confused by 3.0 command angles. YMMV.
- * If the pin trigger is not detected, first try swapping the black and white wires then toggle this.
+ * Settings for BLTOUCH Classic 1.2, 1.3 or BLTouch Smart 1.0, 2.0, 2.2, 3.0, 3.1, and most clones:
*/
- //#define BLTOUCH_FORCE_5V_MODE
-#endif
+
+ // Feature: Switch into SW mode after a deploy. It makes the output pulse longer. Can be useful
+ // in special cases, like noisy or filtered input configurations.
+ //#define BLTOUCH_FORCE_SW_MODE
+
+ /**
+ * Settings for BLTouch Smart 3.0 and 3.1
+ * Summary:
+ * - Voltage modes: 5V and OD (open drain - "logic voltage free") output modes
+ * - High-Speed mode
+ * - Disable LCD voltage options
+ */
+
+ /**
+ * Danger: Don't activate 5V mode unless attached to a 5V-tolerant controller!
+ * V3.0 or 3.1: Set default mode to 5V mode at Marlin startup.
+ * If disabled, OD mode is the hard-coded default on 3.0
+ * On startup, Marlin will compare its eeprom to this vale. If the selected mode
+ * differs, a mode set eeprom write will be completed at initialization.
+ * Use the option below to force an eeprom write to a V3.1 probe regardless.
+ */
+ //#define BLTOUCH_SET_5V_MODE
+
+ /**
+ * Safety: Activate if connecting a probe with an unknown voltage mode.
+ * V3.0: Set a probe into mode selected above at Marlin startup. Required for 5V mode on 3.0
+ * V3.1: Force a probe with unknown mode into selected mode at Marlin startup ( = Probe EEPROM write )
+ * To preserve the life of the probe, use this once then turn it off and re-flash.
+ */
+ //#define BLTOUCH_FORCE_MODE_SET
+
+ /**
+ * Use "HIGH SPEED" mode for probing.
+ * Danger: Disable if your probe sometimes fails. Only suitable for stable well-adjusted systems.
+ * This feature was designed for Delta's with very fast Z moves however higher speed cartesians may function
+ * If the machine cannot raise the probe fast enough after a trigger, it may enter a fault state.
+ */
+ //#define BLTOUCH_HS_MODE
+
+ // Safety: Enable voltage mode settings in the LCD menu.
+ //#define BLTOUCH_LCD_VOLTAGE_MENU
+
+#endif // BLTOUCH
// A probe that is deployed and stowed with a solenoid pin (SOL1_PIN)
//#define SOLENOID_PROBE
@@ -897,23 +953,23 @@ Black rubber belt(MXL), 18 - tooth aluminium pulley : 87.489 step per mm (Huxley
//
/**
- * Z Probe to nozzle (X,Y) offset, relative to (0, 0).
- * X and Y offsets must be integers.
+ * Z Probe to nozzle (X,Y) offset, relative to (0, 0).
+ * X and Y offsets must be integers.
*
- * In the following example the X and Y offsets are both positive:
- * #define X_PROBE_OFFSET_FROM_EXTRUDER 10
- * #define Y_PROBE_OFFSET_FROM_EXTRUDER 10
+ * In the following example the X and Y offsets are both positive:
+ * #define X_PROBE_OFFSET_FROM_EXTRUDER 10
+ * #define Y_PROBE_OFFSET_FROM_EXTRUDER 10
*
- * +-- BACK ---+
- * | |
- * L | (+) P | R <-- probe (20,20)
- * E | | I
- * F | (-) N (+) | G <-- nozzle (10,10)
- * T | | H
- * | (-) | T
- * | |
- * O-- FRONT --+
- * (0,0)
+ * +-- BACK ---+
+ * | |
+ * L | (+) P | R <-- probe (20,20)
+ * E | | I
+ * F | (-) N (+) | G <-- nozzle (10,10)
+ * T | | H
+ * | (-) | T
+ * | |
+ * O-- FRONT --+
+ * (0,0)
*/
#define X_PROBE_OFFSET_FROM_EXTRUDER 10 // X offset: -left +right [of the nozzle]
#define Y_PROBE_OFFSET_FROM_EXTRUDER 10 // Y offset: -front +behind [the nozzle]
@@ -2138,6 +2194,10 @@ Black rubber belt(MXL), 18 - tooth aluminium pulley : 87.489 step per mm (Huxley
#define NEOPIXEL_IS_SEQUENTIAL // Sequential display for temperature change - LED by LED. Disable to change all LEDs at once.
#define NEOPIXEL_BRIGHTNESS 127 // Initial brightness (0-255)
//#define NEOPIXEL_STARTUP_TEST // Cycle through colors at startup
+
+ // Use a single Neopixel LED for static (background) lighting
+ //#define NEOPIXEL_BKGD_LED_INDEX 0 // Index of the LED to use
+ //#define NEOPIXEL_BKGD_COLOR { 255, 255, 255, 0 } // R, G, B, W
#endif
/**
diff --git a/config/examples/RepRapWorld/Megatronics/Configuration.h b/config/examples/RepRapWorld/Megatronics/Configuration.h
index 31df888e75..df65f1acff 100644
--- a/config/examples/RepRapWorld/Megatronics/Configuration.h
+++ b/config/examples/RepRapWorld/Megatronics/Configuration.h
@@ -828,15 +828,71 @@
*/
//#define BLTOUCH
#if ENABLED(BLTOUCH)
- //#define BLTOUCH_DELAY 500 // Minimum Command delay (ms). Enable and increase if needed
+ /**
+ * Either: Use the defaults (recommended) or: For special purposes, use the following DEFINES
+ * Do not activate settings that the probe might not understand. Clones might misunderstand
+ * advanced commands.
+ *
+ * Note: If the probe is not deploying, check a "Cmd: Reset" and "Cmd: Self-Test" and then
+ * check the wiring of the BROWN, RED and ORANGE wires.
+ *
+ * Note: If the trigger signal of your probe is not being recognized, it has been very often
+ * because the BLACK and WHITE wires needed to be swapped. They are not "interchangeable"
+ * like they would be with a real switch. So please check the wiring first.
+ *
+ * Settings for all BLTouch and clone probes:
+ */
+
+ // Safety: The probe needs time to recognize the command.
+ // Minimum command delay (ms). Enable and increase if needed.
+ //#define BLTOUCH_DELAY 500
/**
- * BLTouch V3.0 and newer smart series
- * For genuine BLTouch 3.0 sensors. Clones may be confused by 3.0 command angles. YMMV.
- * If the pin trigger is not detected, first try swapping the black and white wires then toggle this.
+ * Settings for BLTOUCH Classic 1.2, 1.3 or BLTouch Smart 1.0, 2.0, 2.2, 3.0, 3.1, and most clones:
*/
- //#define BLTOUCH_FORCE_5V_MODE
-#endif
+
+ // Feature: Switch into SW mode after a deploy. It makes the output pulse longer. Can be useful
+ // in special cases, like noisy or filtered input configurations.
+ //#define BLTOUCH_FORCE_SW_MODE
+
+ /**
+ * Settings for BLTouch Smart 3.0 and 3.1
+ * Summary:
+ * - Voltage modes: 5V and OD (open drain - "logic voltage free") output modes
+ * - High-Speed mode
+ * - Disable LCD voltage options
+ */
+
+ /**
+ * Danger: Don't activate 5V mode unless attached to a 5V-tolerant controller!
+ * V3.0 or 3.1: Set default mode to 5V mode at Marlin startup.
+ * If disabled, OD mode is the hard-coded default on 3.0
+ * On startup, Marlin will compare its eeprom to this vale. If the selected mode
+ * differs, a mode set eeprom write will be completed at initialization.
+ * Use the option below to force an eeprom write to a V3.1 probe regardless.
+ */
+ //#define BLTOUCH_SET_5V_MODE
+
+ /**
+ * Safety: Activate if connecting a probe with an unknown voltage mode.
+ * V3.0: Set a probe into mode selected above at Marlin startup. Required for 5V mode on 3.0
+ * V3.1: Force a probe with unknown mode into selected mode at Marlin startup ( = Probe EEPROM write )
+ * To preserve the life of the probe, use this once then turn it off and re-flash.
+ */
+ //#define BLTOUCH_FORCE_MODE_SET
+
+ /**
+ * Use "HIGH SPEED" mode for probing.
+ * Danger: Disable if your probe sometimes fails. Only suitable for stable well-adjusted systems.
+ * This feature was designed for Delta's with very fast Z moves however higher speed cartesians may function
+ * If the machine cannot raise the probe fast enough after a trigger, it may enter a fault state.
+ */
+ //#define BLTOUCH_HS_MODE
+
+ // Safety: Enable voltage mode settings in the LCD menu.
+ //#define BLTOUCH_LCD_VOLTAGE_MENU
+
+#endif // BLTOUCH
// A probe that is deployed and stowed with a solenoid pin (SOL1_PIN)
//#define SOLENOID_PROBE
@@ -857,23 +913,23 @@
//
/**
- * Z Probe to nozzle (X,Y) offset, relative to (0, 0).
- * X and Y offsets must be integers.
+ * Z Probe to nozzle (X,Y) offset, relative to (0, 0).
+ * X and Y offsets must be integers.
*
- * In the following example the X and Y offsets are both positive:
- * #define X_PROBE_OFFSET_FROM_EXTRUDER 10
- * #define Y_PROBE_OFFSET_FROM_EXTRUDER 10
+ * In the following example the X and Y offsets are both positive:
+ * #define X_PROBE_OFFSET_FROM_EXTRUDER 10
+ * #define Y_PROBE_OFFSET_FROM_EXTRUDER 10
*
- * +-- BACK ---+
- * | |
- * L | (+) P | R <-- probe (20,20)
- * E | | I
- * F | (-) N (+) | G <-- nozzle (10,10)
- * T | | H
- * | (-) | T
- * | |
- * O-- FRONT --+
- * (0,0)
+ * +-- BACK ---+
+ * | |
+ * L | (+) P | R <-- probe (20,20)
+ * E | | I
+ * F | (-) N (+) | G <-- nozzle (10,10)
+ * T | | H
+ * | (-) | T
+ * | |
+ * O-- FRONT --+
+ * (0,0)
*/
#define X_PROBE_OFFSET_FROM_EXTRUDER -25 // X offset: -left +right [of the nozzle]
#define Y_PROBE_OFFSET_FROM_EXTRUDER -29 // Y offset: -front +behind [the nozzle]
@@ -2089,6 +2145,10 @@
#define NEOPIXEL_IS_SEQUENTIAL // Sequential display for temperature change - LED by LED. Disable to change all LEDs at once.
#define NEOPIXEL_BRIGHTNESS 127 // Initial brightness (0-255)
//#define NEOPIXEL_STARTUP_TEST // Cycle through colors at startup
+
+ // Use a single Neopixel LED for static (background) lighting
+ //#define NEOPIXEL_BKGD_LED_INDEX 0 // Index of the LED to use
+ //#define NEOPIXEL_BKGD_COLOR { 255, 255, 255, 0 } // R, G, B, W
#endif
/**
diff --git a/config/examples/RigidBot/Configuration.h b/config/examples/RigidBot/Configuration.h
index eb423d5ab1..ea7f255bbe 100644
--- a/config/examples/RigidBot/Configuration.h
+++ b/config/examples/RigidBot/Configuration.h
@@ -826,15 +826,71 @@
*/
//#define BLTOUCH
#if ENABLED(BLTOUCH)
- //#define BLTOUCH_DELAY 500 // Minimum Command delay (ms). Enable and increase if needed
+ /**
+ * Either: Use the defaults (recommended) or: For special purposes, use the following DEFINES
+ * Do not activate settings that the probe might not understand. Clones might misunderstand
+ * advanced commands.
+ *
+ * Note: If the probe is not deploying, check a "Cmd: Reset" and "Cmd: Self-Test" and then
+ * check the wiring of the BROWN, RED and ORANGE wires.
+ *
+ * Note: If the trigger signal of your probe is not being recognized, it has been very often
+ * because the BLACK and WHITE wires needed to be swapped. They are not "interchangeable"
+ * like they would be with a real switch. So please check the wiring first.
+ *
+ * Settings for all BLTouch and clone probes:
+ */
+
+ // Safety: The probe needs time to recognize the command.
+ // Minimum command delay (ms). Enable and increase if needed.
+ //#define BLTOUCH_DELAY 500
/**
- * BLTouch V3.0 and newer smart series
- * For genuine BLTouch 3.0 sensors. Clones may be confused by 3.0 command angles. YMMV.
- * If the pin trigger is not detected, first try swapping the black and white wires then toggle this.
+ * Settings for BLTOUCH Classic 1.2, 1.3 or BLTouch Smart 1.0, 2.0, 2.2, 3.0, 3.1, and most clones:
*/
- //#define BLTOUCH_FORCE_5V_MODE
-#endif
+
+ // Feature: Switch into SW mode after a deploy. It makes the output pulse longer. Can be useful
+ // in special cases, like noisy or filtered input configurations.
+ //#define BLTOUCH_FORCE_SW_MODE
+
+ /**
+ * Settings for BLTouch Smart 3.0 and 3.1
+ * Summary:
+ * - Voltage modes: 5V and OD (open drain - "logic voltage free") output modes
+ * - High-Speed mode
+ * - Disable LCD voltage options
+ */
+
+ /**
+ * Danger: Don't activate 5V mode unless attached to a 5V-tolerant controller!
+ * V3.0 or 3.1: Set default mode to 5V mode at Marlin startup.
+ * If disabled, OD mode is the hard-coded default on 3.0
+ * On startup, Marlin will compare its eeprom to this vale. If the selected mode
+ * differs, a mode set eeprom write will be completed at initialization.
+ * Use the option below to force an eeprom write to a V3.1 probe regardless.
+ */
+ //#define BLTOUCH_SET_5V_MODE
+
+ /**
+ * Safety: Activate if connecting a probe with an unknown voltage mode.
+ * V3.0: Set a probe into mode selected above at Marlin startup. Required for 5V mode on 3.0
+ * V3.1: Force a probe with unknown mode into selected mode at Marlin startup ( = Probe EEPROM write )
+ * To preserve the life of the probe, use this once then turn it off and re-flash.
+ */
+ //#define BLTOUCH_FORCE_MODE_SET
+
+ /**
+ * Use "HIGH SPEED" mode for probing.
+ * Danger: Disable if your probe sometimes fails. Only suitable for stable well-adjusted systems.
+ * This feature was designed for Delta's with very fast Z moves however higher speed cartesians may function
+ * If the machine cannot raise the probe fast enough after a trigger, it may enter a fault state.
+ */
+ //#define BLTOUCH_HS_MODE
+
+ // Safety: Enable voltage mode settings in the LCD menu.
+ //#define BLTOUCH_LCD_VOLTAGE_MENU
+
+#endif // BLTOUCH
// A probe that is deployed and stowed with a solenoid pin (SOL1_PIN)
//#define SOLENOID_PROBE
@@ -855,23 +911,23 @@
//
/**
- * Z Probe to nozzle (X,Y) offset, relative to (0, 0).
- * X and Y offsets must be integers.
+ * Z Probe to nozzle (X,Y) offset, relative to (0, 0).
+ * X and Y offsets must be integers.
*
- * In the following example the X and Y offsets are both positive:
- * #define X_PROBE_OFFSET_FROM_EXTRUDER 10
- * #define Y_PROBE_OFFSET_FROM_EXTRUDER 10
+ * In the following example the X and Y offsets are both positive:
+ * #define X_PROBE_OFFSET_FROM_EXTRUDER 10
+ * #define Y_PROBE_OFFSET_FROM_EXTRUDER 10
*
- * +-- BACK ---+
- * | |
- * L | (+) P | R <-- probe (20,20)
- * E | | I
- * F | (-) N (+) | G <-- nozzle (10,10)
- * T | | H
- * | (-) | T
- * | |
- * O-- FRONT --+
- * (0,0)
+ * +-- BACK ---+
+ * | |
+ * L | (+) P | R <-- probe (20,20)
+ * E | | I
+ * F | (-) N (+) | G <-- nozzle (10,10)
+ * T | | H
+ * | (-) | T
+ * | |
+ * O-- FRONT --+
+ * (0,0)
*/
#define X_PROBE_OFFSET_FROM_EXTRUDER -25 // X offset: -left +right [of the nozzle]
#define Y_PROBE_OFFSET_FROM_EXTRUDER -29 // Y offset: -front +behind [the nozzle]
@@ -2089,6 +2145,10 @@
#define NEOPIXEL_IS_SEQUENTIAL // Sequential display for temperature change - LED by LED. Disable to change all LEDs at once.
#define NEOPIXEL_BRIGHTNESS 127 // Initial brightness (0-255)
//#define NEOPIXEL_STARTUP_TEST // Cycle through colors at startup
+
+ // Use a single Neopixel LED for static (background) lighting
+ //#define NEOPIXEL_BKGD_LED_INDEX 0 // Index of the LED to use
+ //#define NEOPIXEL_BKGD_COLOR { 255, 255, 255, 0 } // R, G, B, W
#endif
/**
diff --git a/config/examples/RigidBot/Configuration_adv.h b/config/examples/RigidBot/Configuration_adv.h
index a9858fd38e..742838a255 100644
--- a/config/examples/RigidBot/Configuration_adv.h
+++ b/config/examples/RigidBot/Configuration_adv.h
@@ -382,10 +382,6 @@
#endif
#endif
-//===========================================================================
-//============================ Mechanical Settings ==========================
-//===========================================================================
-
// @section homing
// If you want endstops to stay on (by default) even when not homing
@@ -745,6 +741,7 @@
* A (A shifted) B (B shifted) IC
* Smoothie 0x2C (0x58) 0x2D (0x5A) MCP4451
* AZTEEG_X3_PRO 0x2C (0x58) 0x2E (0x5C) MCP4451
+ * AZTEEG_X5_MINI 0x2C (0x58) 0x2E (0x5C) MCP4451
* AZTEEG_X5_MINI_WIFI 0x58 0x5C MCP4451
* MIGHTYBOARD_REVE 0x2F (0x5E) MCP4018
*/
diff --git a/config/examples/SCARA/Configuration.h b/config/examples/SCARA/Configuration.h
index 4f1d49111b..46c998ebac 100644
--- a/config/examples/SCARA/Configuration.h
+++ b/config/examples/SCARA/Configuration.h
@@ -841,15 +841,71 @@
*/
//#define BLTOUCH
#if ENABLED(BLTOUCH)
- //#define BLTOUCH_DELAY 500 // Minimum Command delay (ms). Enable and increase if needed
+ /**
+ * Either: Use the defaults (recommended) or: For special purposes, use the following DEFINES
+ * Do not activate settings that the probe might not understand. Clones might misunderstand
+ * advanced commands.
+ *
+ * Note: If the probe is not deploying, check a "Cmd: Reset" and "Cmd: Self-Test" and then
+ * check the wiring of the BROWN, RED and ORANGE wires.
+ *
+ * Note: If the trigger signal of your probe is not being recognized, it has been very often
+ * because the BLACK and WHITE wires needed to be swapped. They are not "interchangeable"
+ * like they would be with a real switch. So please check the wiring first.
+ *
+ * Settings for all BLTouch and clone probes:
+ */
+
+ // Safety: The probe needs time to recognize the command.
+ // Minimum command delay (ms). Enable and increase if needed.
+ //#define BLTOUCH_DELAY 500
/**
- * BLTouch V3.0 and newer smart series
- * For genuine BLTouch 3.0 sensors. Clones may be confused by 3.0 command angles. YMMV.
- * If the pin trigger is not detected, first try swapping the black and white wires then toggle this.
+ * Settings for BLTOUCH Classic 1.2, 1.3 or BLTouch Smart 1.0, 2.0, 2.2, 3.0, 3.1, and most clones:
*/
- //#define BLTOUCH_FORCE_5V_MODE
-#endif
+
+ // Feature: Switch into SW mode after a deploy. It makes the output pulse longer. Can be useful
+ // in special cases, like noisy or filtered input configurations.
+ //#define BLTOUCH_FORCE_SW_MODE
+
+ /**
+ * Settings for BLTouch Smart 3.0 and 3.1
+ * Summary:
+ * - Voltage modes: 5V and OD (open drain - "logic voltage free") output modes
+ * - High-Speed mode
+ * - Disable LCD voltage options
+ */
+
+ /**
+ * Danger: Don't activate 5V mode unless attached to a 5V-tolerant controller!
+ * V3.0 or 3.1: Set default mode to 5V mode at Marlin startup.
+ * If disabled, OD mode is the hard-coded default on 3.0
+ * On startup, Marlin will compare its eeprom to this vale. If the selected mode
+ * differs, a mode set eeprom write will be completed at initialization.
+ * Use the option below to force an eeprom write to a V3.1 probe regardless.
+ */
+ //#define BLTOUCH_SET_5V_MODE
+
+ /**
+ * Safety: Activate if connecting a probe with an unknown voltage mode.
+ * V3.0: Set a probe into mode selected above at Marlin startup. Required for 5V mode on 3.0
+ * V3.1: Force a probe with unknown mode into selected mode at Marlin startup ( = Probe EEPROM write )
+ * To preserve the life of the probe, use this once then turn it off and re-flash.
+ */
+ //#define BLTOUCH_FORCE_MODE_SET
+
+ /**
+ * Use "HIGH SPEED" mode for probing.
+ * Danger: Disable if your probe sometimes fails. Only suitable for stable well-adjusted systems.
+ * This feature was designed for Delta's with very fast Z moves however higher speed cartesians may function
+ * If the machine cannot raise the probe fast enough after a trigger, it may enter a fault state.
+ */
+ //#define BLTOUCH_HS_MODE
+
+ // Safety: Enable voltage mode settings in the LCD menu.
+ //#define BLTOUCH_LCD_VOLTAGE_MENU
+
+#endif // BLTOUCH
// A probe that is deployed and stowed with a solenoid pin (SOL1_PIN)
//#define SOLENOID_PROBE
@@ -870,23 +926,23 @@
//
/**
- * Z Probe to nozzle (X,Y) offset, relative to (0, 0).
- * X and Y offsets must be integers.
+ * Z Probe to nozzle (X,Y) offset, relative to (0, 0).
+ * X and Y offsets must be integers.
*
- * In the following example the X and Y offsets are both positive:
- * #define X_PROBE_OFFSET_FROM_EXTRUDER 10
- * #define Y_PROBE_OFFSET_FROM_EXTRUDER 10
+ * In the following example the X and Y offsets are both positive:
+ * #define X_PROBE_OFFSET_FROM_EXTRUDER 10
+ * #define Y_PROBE_OFFSET_FROM_EXTRUDER 10
*
- * +-- BACK ---+
- * | |
- * L | (+) P | R <-- probe (20,20)
- * E | | I
- * F | (-) N (+) | G <-- nozzle (10,10)
- * T | | H
- * | (-) | T
- * | |
- * O-- FRONT --+
- * (0,0)
+ * +-- BACK ---+
+ * | |
+ * L | (+) P | R <-- probe (20,20)
+ * E | | I
+ * F | (-) N (+) | G <-- nozzle (10,10)
+ * T | | H
+ * | (-) | T
+ * | |
+ * O-- FRONT --+
+ * (0,0)
*/
#define X_PROBE_OFFSET_FROM_EXTRUDER -25 // X offset: -left +right [of the nozzle]
#define Y_PROBE_OFFSET_FROM_EXTRUDER -29 // Y offset: -front +behind [the nozzle]
@@ -2102,6 +2158,10 @@
#define NEOPIXEL_IS_SEQUENTIAL // Sequential display for temperature change - LED by LED. Disable to change all LEDs at once.
#define NEOPIXEL_BRIGHTNESS 127 // Initial brightness (0-255)
//#define NEOPIXEL_STARTUP_TEST // Cycle through colors at startup
+
+ // Use a single Neopixel LED for static (background) lighting
+ //#define NEOPIXEL_BKGD_LED_INDEX 0 // Index of the LED to use
+ //#define NEOPIXEL_BKGD_COLOR { 255, 255, 255, 0 } // R, G, B, W
#endif
/**
diff --git a/config/examples/SCARA/Configuration_adv.h b/config/examples/SCARA/Configuration_adv.h
index b58848792c..3611b2f5fa 100644
--- a/config/examples/SCARA/Configuration_adv.h
+++ b/config/examples/SCARA/Configuration_adv.h
@@ -382,10 +382,6 @@
#endif
#endif
-//===========================================================================
-//============================ Mechanical Settings ==========================
-//===========================================================================
-
// @section homing
// If you want endstops to stay on (by default) even when not homing
@@ -577,8 +573,11 @@
// @section lcd
-#if ENABLED(ULTIPANEL)
+#if EITHER(ULTIPANEL, EXTENSIBLE_UI)
#define MANUAL_FEEDRATE {50*60, 50*60, 10*60, 60} // Feedrates for manual moves along X, Y, Z, E from panel
+#endif
+
+#if ENABLED(ULTIPANEL)
#define MANUAL_E_MOVES_RELATIVE // Show LCD extruder moves as relative rather than absolute positions
#define ULTIPANEL_FEEDMULTIPLY // Comment to disable setting feedrate multiplier via encoder
#endif
@@ -742,6 +741,7 @@
* A (A shifted) B (B shifted) IC
* Smoothie 0x2C (0x58) 0x2D (0x5A) MCP4451
* AZTEEG_X3_PRO 0x2C (0x58) 0x2E (0x5C) MCP4451
+ * AZTEEG_X5_MINI 0x2C (0x58) 0x2E (0x5C) MCP4451
* AZTEEG_X5_MINI_WIFI 0x58 0x5C MCP4451
* MIGHTYBOARD_REVE 0x2F (0x5E) MCP4018
*/
diff --git a/config/examples/STM32/Black_STM32F407VET6/Configuration.h b/config/examples/STM32/Black_STM32F407VET6/Configuration.h
index eb5af29aa3..e6698a6225 100644
--- a/config/examples/STM32/Black_STM32F407VET6/Configuration.h
+++ b/config/examples/STM32/Black_STM32F407VET6/Configuration.h
@@ -828,15 +828,71 @@
*/
//#define BLTOUCH
#if ENABLED(BLTOUCH)
- //#define BLTOUCH_DELAY 500 // Minimum Command delay (ms). Enable and increase if needed
+ /**
+ * Either: Use the defaults (recommended) or: For special purposes, use the following DEFINES
+ * Do not activate settings that the probe might not understand. Clones might misunderstand
+ * advanced commands.
+ *
+ * Note: If the probe is not deploying, check a "Cmd: Reset" and "Cmd: Self-Test" and then
+ * check the wiring of the BROWN, RED and ORANGE wires.
+ *
+ * Note: If the trigger signal of your probe is not being recognized, it has been very often
+ * because the BLACK and WHITE wires needed to be swapped. They are not "interchangeable"
+ * like they would be with a real switch. So please check the wiring first.
+ *
+ * Settings for all BLTouch and clone probes:
+ */
+
+ // Safety: The probe needs time to recognize the command.
+ // Minimum command delay (ms). Enable and increase if needed.
+ //#define BLTOUCH_DELAY 500
/**
- * BLTouch V3.0 and newer smart series
- * For genuine BLTouch 3.0 sensors. Clones may be confused by 3.0 command angles. YMMV.
- * If the pin trigger is not detected, first try swapping the black and white wires then toggle this.
+ * Settings for BLTOUCH Classic 1.2, 1.3 or BLTouch Smart 1.0, 2.0, 2.2, 3.0, 3.1, and most clones:
*/
- //#define BLTOUCH_FORCE_5V_MODE
-#endif
+
+ // Feature: Switch into SW mode after a deploy. It makes the output pulse longer. Can be useful
+ // in special cases, like noisy or filtered input configurations.
+ //#define BLTOUCH_FORCE_SW_MODE
+
+ /**
+ * Settings for BLTouch Smart 3.0 and 3.1
+ * Summary:
+ * - Voltage modes: 5V and OD (open drain - "logic voltage free") output modes
+ * - High-Speed mode
+ * - Disable LCD voltage options
+ */
+
+ /**
+ * Danger: Don't activate 5V mode unless attached to a 5V-tolerant controller!
+ * V3.0 or 3.1: Set default mode to 5V mode at Marlin startup.
+ * If disabled, OD mode is the hard-coded default on 3.0
+ * On startup, Marlin will compare its eeprom to this vale. If the selected mode
+ * differs, a mode set eeprom write will be completed at initialization.
+ * Use the option below to force an eeprom write to a V3.1 probe regardless.
+ */
+ //#define BLTOUCH_SET_5V_MODE
+
+ /**
+ * Safety: Activate if connecting a probe with an unknown voltage mode.
+ * V3.0: Set a probe into mode selected above at Marlin startup. Required for 5V mode on 3.0
+ * V3.1: Force a probe with unknown mode into selected mode at Marlin startup ( = Probe EEPROM write )
+ * To preserve the life of the probe, use this once then turn it off and re-flash.
+ */
+ //#define BLTOUCH_FORCE_MODE_SET
+
+ /**
+ * Use "HIGH SPEED" mode for probing.
+ * Danger: Disable if your probe sometimes fails. Only suitable for stable well-adjusted systems.
+ * This feature was designed for Delta's with very fast Z moves however higher speed cartesians may function
+ * If the machine cannot raise the probe fast enough after a trigger, it may enter a fault state.
+ */
+ //#define BLTOUCH_HS_MODE
+
+ // Safety: Enable voltage mode settings in the LCD menu.
+ //#define BLTOUCH_LCD_VOLTAGE_MENU
+
+#endif // BLTOUCH
// A probe that is deployed and stowed with a solenoid pin (SOL1_PIN)
//#define SOLENOID_PROBE
@@ -857,23 +913,23 @@
//
/**
- * Z Probe to nozzle (X,Y) offset, relative to (0, 0).
- * X and Y offsets must be integers.
+ * Z Probe to nozzle (X,Y) offset, relative to (0, 0).
+ * X and Y offsets must be integers.
*
- * In the following example the X and Y offsets are both positive:
- * #define X_PROBE_OFFSET_FROM_EXTRUDER 10
- * #define Y_PROBE_OFFSET_FROM_EXTRUDER 10
+ * In the following example the X and Y offsets are both positive:
+ * #define X_PROBE_OFFSET_FROM_EXTRUDER 10
+ * #define Y_PROBE_OFFSET_FROM_EXTRUDER 10
*
- * +-- BACK ---+
- * | |
- * L | (+) P | R <-- probe (20,20)
- * E | | I
- * F | (-) N (+) | G <-- nozzle (10,10)
- * T | | H
- * | (-) | T
- * | |
- * O-- FRONT --+
- * (0,0)
+ * +-- BACK ---+
+ * | |
+ * L | (+) P | R <-- probe (20,20)
+ * E | | I
+ * F | (-) N (+) | G <-- nozzle (10,10)
+ * T | | H
+ * | (-) | T
+ * | |
+ * O-- FRONT --+
+ * (0,0)
*/
#define X_PROBE_OFFSET_FROM_EXTRUDER 10 // X offset: -left +right [of the nozzle]
#define Y_PROBE_OFFSET_FROM_EXTRUDER 10 // Y offset: -front +behind [the nozzle]
@@ -2089,6 +2145,10 @@
#define NEOPIXEL_IS_SEQUENTIAL // Sequential display for temperature change - LED by LED. Disable to change all LEDs at once.
#define NEOPIXEL_BRIGHTNESS 127 // Initial brightness (0-255)
//#define NEOPIXEL_STARTUP_TEST // Cycle through colors at startup
+
+ // Use a single Neopixel LED for static (background) lighting
+ //#define NEOPIXEL_BKGD_LED_INDEX 0 // Index of the LED to use
+ //#define NEOPIXEL_BKGD_COLOR { 255, 255, 255, 0 } // R, G, B, W
#endif
/**
diff --git a/config/examples/STM32/Black_STM32F407VET6/Configuration_adv.h b/config/examples/STM32/Black_STM32F407VET6/Configuration_adv.h
index 1a978afade..9e5d418360 100644
--- a/config/examples/STM32/Black_STM32F407VET6/Configuration_adv.h
+++ b/config/examples/STM32/Black_STM32F407VET6/Configuration_adv.h
@@ -382,10 +382,6 @@
#endif
#endif
-//===========================================================================
-//============================ Mechanical Settings ==========================
-//===========================================================================
-
// @section homing
// If you want endstops to stay on (by default) even when not homing
@@ -577,8 +573,11 @@
// @section lcd
-#if ENABLED(ULTIPANEL)
+#if EITHER(ULTIPANEL, EXTENSIBLE_UI)
#define MANUAL_FEEDRATE {50*60, 50*60, 4*60, 60} // Feedrates for manual moves along X, Y, Z, E from panel
+#endif
+
+#if ENABLED(ULTIPANEL)
#define MANUAL_E_MOVES_RELATIVE // Show LCD extruder moves as relative rather than absolute positions
#define ULTIPANEL_FEEDMULTIPLY // Comment to disable setting feedrate multiplier via encoder
#endif
@@ -742,6 +741,7 @@
* A (A shifted) B (B shifted) IC
* Smoothie 0x2C (0x58) 0x2D (0x5A) MCP4451
* AZTEEG_X3_PRO 0x2C (0x58) 0x2E (0x5C) MCP4451
+ * AZTEEG_X5_MINI 0x2C (0x58) 0x2E (0x5C) MCP4451
* AZTEEG_X5_MINI_WIFI 0x58 0x5C MCP4451
* MIGHTYBOARD_REVE 0x2F (0x5E) MCP4018
*/
diff --git a/config/examples/STM32/STM32F10/Configuration.h b/config/examples/STM32/STM32F10/Configuration.h
index d7580be612..ed98a9dad8 100644
--- a/config/examples/STM32/STM32F10/Configuration.h
+++ b/config/examples/STM32/STM32F10/Configuration.h
@@ -830,15 +830,71 @@
*/
//#define BLTOUCH
#if ENABLED(BLTOUCH)
- //#define BLTOUCH_DELAY 500 // Minimum Command delay (ms). Enable and increase if needed
+ /**
+ * Either: Use the defaults (recommended) or: For special purposes, use the following DEFINES
+ * Do not activate settings that the probe might not understand. Clones might misunderstand
+ * advanced commands.
+ *
+ * Note: If the probe is not deploying, check a "Cmd: Reset" and "Cmd: Self-Test" and then
+ * check the wiring of the BROWN, RED and ORANGE wires.
+ *
+ * Note: If the trigger signal of your probe is not being recognized, it has been very often
+ * because the BLACK and WHITE wires needed to be swapped. They are not "interchangeable"
+ * like they would be with a real switch. So please check the wiring first.
+ *
+ * Settings for all BLTouch and clone probes:
+ */
+
+ // Safety: The probe needs time to recognize the command.
+ // Minimum command delay (ms). Enable and increase if needed.
+ //#define BLTOUCH_DELAY 500
/**
- * BLTouch V3.0 and newer smart series
- * For genuine BLTouch 3.0 sensors. Clones may be confused by 3.0 command angles. YMMV.
- * If the pin trigger is not detected, first try swapping the black and white wires then toggle this.
+ * Settings for BLTOUCH Classic 1.2, 1.3 or BLTouch Smart 1.0, 2.0, 2.2, 3.0, 3.1, and most clones:
*/
- //#define BLTOUCH_FORCE_5V_MODE
-#endif
+
+ // Feature: Switch into SW mode after a deploy. It makes the output pulse longer. Can be useful
+ // in special cases, like noisy or filtered input configurations.
+ //#define BLTOUCH_FORCE_SW_MODE
+
+ /**
+ * Settings for BLTouch Smart 3.0 and 3.1
+ * Summary:
+ * - Voltage modes: 5V and OD (open drain - "logic voltage free") output modes
+ * - High-Speed mode
+ * - Disable LCD voltage options
+ */
+
+ /**
+ * Danger: Don't activate 5V mode unless attached to a 5V-tolerant controller!
+ * V3.0 or 3.1: Set default mode to 5V mode at Marlin startup.
+ * If disabled, OD mode is the hard-coded default on 3.0
+ * On startup, Marlin will compare its eeprom to this vale. If the selected mode
+ * differs, a mode set eeprom write will be completed at initialization.
+ * Use the option below to force an eeprom write to a V3.1 probe regardless.
+ */
+ //#define BLTOUCH_SET_5V_MODE
+
+ /**
+ * Safety: Activate if connecting a probe with an unknown voltage mode.
+ * V3.0: Set a probe into mode selected above at Marlin startup. Required for 5V mode on 3.0
+ * V3.1: Force a probe with unknown mode into selected mode at Marlin startup ( = Probe EEPROM write )
+ * To preserve the life of the probe, use this once then turn it off and re-flash.
+ */
+ //#define BLTOUCH_FORCE_MODE_SET
+
+ /**
+ * Use "HIGH SPEED" mode for probing.
+ * Danger: Disable if your probe sometimes fails. Only suitable for stable well-adjusted systems.
+ * This feature was designed for Delta's with very fast Z moves however higher speed cartesians may function
+ * If the machine cannot raise the probe fast enough after a trigger, it may enter a fault state.
+ */
+ //#define BLTOUCH_HS_MODE
+
+ // Safety: Enable voltage mode settings in the LCD menu.
+ //#define BLTOUCH_LCD_VOLTAGE_MENU
+
+#endif // BLTOUCH
// A probe that is deployed and stowed with a solenoid pin (SOL1_PIN)
//#define SOLENOID_PROBE
@@ -859,23 +915,23 @@
//
/**
- * Z Probe to nozzle (X,Y) offset, relative to (0, 0).
- * X and Y offsets must be integers.
+ * Z Probe to nozzle (X,Y) offset, relative to (0, 0).
+ * X and Y offsets must be integers.
*
- * In the following example the X and Y offsets are both positive:
- * #define X_PROBE_OFFSET_FROM_EXTRUDER 10
- * #define Y_PROBE_OFFSET_FROM_EXTRUDER 10
+ * In the following example the X and Y offsets are both positive:
+ * #define X_PROBE_OFFSET_FROM_EXTRUDER 10
+ * #define Y_PROBE_OFFSET_FROM_EXTRUDER 10
*
- * +-- BACK ---+
- * | |
- * L | (+) P | R <-- probe (20,20)
- * E | | I
- * F | (-) N (+) | G <-- nozzle (10,10)
- * T | | H
- * | (-) | T
- * | |
- * O-- FRONT --+
- * (0,0)
+ * +-- BACK ---+
+ * | |
+ * L | (+) P | R <-- probe (20,20)
+ * E | | I
+ * F | (-) N (+) | G <-- nozzle (10,10)
+ * T | | H
+ * | (-) | T
+ * | |
+ * O-- FRONT --+
+ * (0,0)
*/
#define X_PROBE_OFFSET_FROM_EXTRUDER -25 // X offset: -left +right [of the nozzle]
#define Y_PROBE_OFFSET_FROM_EXTRUDER -29 // Y offset: -front +behind [the nozzle]
@@ -2091,6 +2147,10 @@
#define NEOPIXEL_IS_SEQUENTIAL // Sequential display for temperature change - LED by LED. Disable to change all LEDs at once.
#define NEOPIXEL_BRIGHTNESS 127 // Initial brightness (0-255)
//#define NEOPIXEL_STARTUP_TEST // Cycle through colors at startup
+
+ // Use a single Neopixel LED for static (background) lighting
+ //#define NEOPIXEL_BKGD_LED_INDEX 0 // Index of the LED to use
+ //#define NEOPIXEL_BKGD_COLOR { 255, 255, 255, 0 } // R, G, B, W
#endif
/**
diff --git a/config/examples/STM32/STM32F4/Configuration.h b/config/examples/STM32/STM32F4/Configuration.h
index 32c606f084..07f140c19b 100644
--- a/config/examples/STM32/STM32F4/Configuration.h
+++ b/config/examples/STM32/STM32F4/Configuration.h
@@ -828,15 +828,71 @@
*/
//#define BLTOUCH
#if ENABLED(BLTOUCH)
- //#define BLTOUCH_DELAY 500 // Minimum Command delay (ms). Enable and increase if needed
+ /**
+ * Either: Use the defaults (recommended) or: For special purposes, use the following DEFINES
+ * Do not activate settings that the probe might not understand. Clones might misunderstand
+ * advanced commands.
+ *
+ * Note: If the probe is not deploying, check a "Cmd: Reset" and "Cmd: Self-Test" and then
+ * check the wiring of the BROWN, RED and ORANGE wires.
+ *
+ * Note: If the trigger signal of your probe is not being recognized, it has been very often
+ * because the BLACK and WHITE wires needed to be swapped. They are not "interchangeable"
+ * like they would be with a real switch. So please check the wiring first.
+ *
+ * Settings for all BLTouch and clone probes:
+ */
+
+ // Safety: The probe needs time to recognize the command.
+ // Minimum command delay (ms). Enable and increase if needed.
+ //#define BLTOUCH_DELAY 500
/**
- * BLTouch V3.0 and newer smart series
- * For genuine BLTouch 3.0 sensors. Clones may be confused by 3.0 command angles. YMMV.
- * If the pin trigger is not detected, first try swapping the black and white wires then toggle this.
+ * Settings for BLTOUCH Classic 1.2, 1.3 or BLTouch Smart 1.0, 2.0, 2.2, 3.0, 3.1, and most clones:
*/
- //#define BLTOUCH_FORCE_5V_MODE
-#endif
+
+ // Feature: Switch into SW mode after a deploy. It makes the output pulse longer. Can be useful
+ // in special cases, like noisy or filtered input configurations.
+ //#define BLTOUCH_FORCE_SW_MODE
+
+ /**
+ * Settings for BLTouch Smart 3.0 and 3.1
+ * Summary:
+ * - Voltage modes: 5V and OD (open drain - "logic voltage free") output modes
+ * - High-Speed mode
+ * - Disable LCD voltage options
+ */
+
+ /**
+ * Danger: Don't activate 5V mode unless attached to a 5V-tolerant controller!
+ * V3.0 or 3.1: Set default mode to 5V mode at Marlin startup.
+ * If disabled, OD mode is the hard-coded default on 3.0
+ * On startup, Marlin will compare its eeprom to this vale. If the selected mode
+ * differs, a mode set eeprom write will be completed at initialization.
+ * Use the option below to force an eeprom write to a V3.1 probe regardless.
+ */
+ //#define BLTOUCH_SET_5V_MODE
+
+ /**
+ * Safety: Activate if connecting a probe with an unknown voltage mode.
+ * V3.0: Set a probe into mode selected above at Marlin startup. Required for 5V mode on 3.0
+ * V3.1: Force a probe with unknown mode into selected mode at Marlin startup ( = Probe EEPROM write )
+ * To preserve the life of the probe, use this once then turn it off and re-flash.
+ */
+ //#define BLTOUCH_FORCE_MODE_SET
+
+ /**
+ * Use "HIGH SPEED" mode for probing.
+ * Danger: Disable if your probe sometimes fails. Only suitable for stable well-adjusted systems.
+ * This feature was designed for Delta's with very fast Z moves however higher speed cartesians may function
+ * If the machine cannot raise the probe fast enough after a trigger, it may enter a fault state.
+ */
+ //#define BLTOUCH_HS_MODE
+
+ // Safety: Enable voltage mode settings in the LCD menu.
+ //#define BLTOUCH_LCD_VOLTAGE_MENU
+
+#endif // BLTOUCH
// A probe that is deployed and stowed with a solenoid pin (SOL1_PIN)
//#define SOLENOID_PROBE
@@ -857,23 +913,23 @@
//
/**
- * Z Probe to nozzle (X,Y) offset, relative to (0, 0).
- * X and Y offsets must be integers.
+ * Z Probe to nozzle (X,Y) offset, relative to (0, 0).
+ * X and Y offsets must be integers.
*
- * In the following example the X and Y offsets are both positive:
- * #define X_PROBE_OFFSET_FROM_EXTRUDER 10
- * #define Y_PROBE_OFFSET_FROM_EXTRUDER 10
+ * In the following example the X and Y offsets are both positive:
+ * #define X_PROBE_OFFSET_FROM_EXTRUDER 10
+ * #define Y_PROBE_OFFSET_FROM_EXTRUDER 10
*
- * +-- BACK ---+
- * | |
- * L | (+) P | R <-- probe (20,20)
- * E | | I
- * F | (-) N (+) | G <-- nozzle (10,10)
- * T | | H
- * | (-) | T
- * | |
- * O-- FRONT --+
- * (0,0)
+ * +-- BACK ---+
+ * | |
+ * L | (+) P | R <-- probe (20,20)
+ * E | | I
+ * F | (-) N (+) | G <-- nozzle (10,10)
+ * T | | H
+ * | (-) | T
+ * | |
+ * O-- FRONT --+
+ * (0,0)
*/
#define X_PROBE_OFFSET_FROM_EXTRUDER 10 // X offset: -left +right [of the nozzle]
#define Y_PROBE_OFFSET_FROM_EXTRUDER 10 // Y offset: -front +behind [the nozzle]
@@ -2089,6 +2145,10 @@
#define NEOPIXEL_IS_SEQUENTIAL // Sequential display for temperature change - LED by LED. Disable to change all LEDs at once.
#define NEOPIXEL_BRIGHTNESS 127 // Initial brightness (0-255)
//#define NEOPIXEL_STARTUP_TEST // Cycle through colors at startup
+
+ // Use a single Neopixel LED for static (background) lighting
+ //#define NEOPIXEL_BKGD_LED_INDEX 0 // Index of the LED to use
+ //#define NEOPIXEL_BKGD_COLOR { 255, 255, 255, 0 } // R, G, B, W
#endif
/**
diff --git a/config/examples/STM32/stm32f103ret6/Configuration.h b/config/examples/STM32/stm32f103ret6/Configuration.h
index 0090dbb6ee..be99c96901 100644
--- a/config/examples/STM32/stm32f103ret6/Configuration.h
+++ b/config/examples/STM32/stm32f103ret6/Configuration.h
@@ -830,15 +830,71 @@
*/
//#define BLTOUCH
#if ENABLED(BLTOUCH)
- //#define BLTOUCH_DELAY 500 // Minimum Command delay (ms). Enable and increase if needed
+ /**
+ * Either: Use the defaults (recommended) or: For special purposes, use the following DEFINES
+ * Do not activate settings that the probe might not understand. Clones might misunderstand
+ * advanced commands.
+ *
+ * Note: If the probe is not deploying, check a "Cmd: Reset" and "Cmd: Self-Test" and then
+ * check the wiring of the BROWN, RED and ORANGE wires.
+ *
+ * Note: If the trigger signal of your probe is not being recognized, it has been very often
+ * because the BLACK and WHITE wires needed to be swapped. They are not "interchangeable"
+ * like they would be with a real switch. So please check the wiring first.
+ *
+ * Settings for all BLTouch and clone probes:
+ */
+
+ // Safety: The probe needs time to recognize the command.
+ // Minimum command delay (ms). Enable and increase if needed.
+ //#define BLTOUCH_DELAY 500
/**
- * BLTouch V3.0 and newer smart series
- * For genuine BLTouch 3.0 sensors. Clones may be confused by 3.0 command angles. YMMV.
- * If the pin trigger is not detected, first try swapping the black and white wires then toggle this.
+ * Settings for BLTOUCH Classic 1.2, 1.3 or BLTouch Smart 1.0, 2.0, 2.2, 3.0, 3.1, and most clones:
*/
- //#define BLTOUCH_FORCE_5V_MODE
-#endif
+
+ // Feature: Switch into SW mode after a deploy. It makes the output pulse longer. Can be useful
+ // in special cases, like noisy or filtered input configurations.
+ //#define BLTOUCH_FORCE_SW_MODE
+
+ /**
+ * Settings for BLTouch Smart 3.0 and 3.1
+ * Summary:
+ * - Voltage modes: 5V and OD (open drain - "logic voltage free") output modes
+ * - High-Speed mode
+ * - Disable LCD voltage options
+ */
+
+ /**
+ * Danger: Don't activate 5V mode unless attached to a 5V-tolerant controller!
+ * V3.0 or 3.1: Set default mode to 5V mode at Marlin startup.
+ * If disabled, OD mode is the hard-coded default on 3.0
+ * On startup, Marlin will compare its eeprom to this vale. If the selected mode
+ * differs, a mode set eeprom write will be completed at initialization.
+ * Use the option below to force an eeprom write to a V3.1 probe regardless.
+ */
+ //#define BLTOUCH_SET_5V_MODE
+
+ /**
+ * Safety: Activate if connecting a probe with an unknown voltage mode.
+ * V3.0: Set a probe into mode selected above at Marlin startup. Required for 5V mode on 3.0
+ * V3.1: Force a probe with unknown mode into selected mode at Marlin startup ( = Probe EEPROM write )
+ * To preserve the life of the probe, use this once then turn it off and re-flash.
+ */
+ //#define BLTOUCH_FORCE_MODE_SET
+
+ /**
+ * Use "HIGH SPEED" mode for probing.
+ * Danger: Disable if your probe sometimes fails. Only suitable for stable well-adjusted systems.
+ * This feature was designed for Delta's with very fast Z moves however higher speed cartesians may function
+ * If the machine cannot raise the probe fast enough after a trigger, it may enter a fault state.
+ */
+ //#define BLTOUCH_HS_MODE
+
+ // Safety: Enable voltage mode settings in the LCD menu.
+ //#define BLTOUCH_LCD_VOLTAGE_MENU
+
+#endif // BLTOUCH
// A probe that is deployed and stowed with a solenoid pin (SOL1_PIN)
//#define SOLENOID_PROBE
@@ -859,23 +915,23 @@
//
/**
- * Z Probe to nozzle (X,Y) offset, relative to (0, 0).
- * X and Y offsets must be integers.
+ * Z Probe to nozzle (X,Y) offset, relative to (0, 0).
+ * X and Y offsets must be integers.
*
- * In the following example the X and Y offsets are both positive:
- * #define X_PROBE_OFFSET_FROM_EXTRUDER 10
- * #define Y_PROBE_OFFSET_FROM_EXTRUDER 10
+ * In the following example the X and Y offsets are both positive:
+ * #define X_PROBE_OFFSET_FROM_EXTRUDER 10
+ * #define Y_PROBE_OFFSET_FROM_EXTRUDER 10
*
- * +-- BACK ---+
- * | |
- * L | (+) P | R <-- probe (20,20)
- * E | | I
- * F | (-) N (+) | G <-- nozzle (10,10)
- * T | | H
- * | (-) | T
- * | |
- * O-- FRONT --+
- * (0,0)
+ * +-- BACK ---+
+ * | |
+ * L | (+) P | R <-- probe (20,20)
+ * E | | I
+ * F | (-) N (+) | G <-- nozzle (10,10)
+ * T | | H
+ * | (-) | T
+ * | |
+ * O-- FRONT --+
+ * (0,0)
*/
#define X_PROBE_OFFSET_FROM_EXTRUDER -25 // X offset: -left +right [of the nozzle]
#define Y_PROBE_OFFSET_FROM_EXTRUDER -29 // Y offset: -front +behind [the nozzle]
@@ -2091,6 +2147,10 @@
#define NEOPIXEL_IS_SEQUENTIAL // Sequential display for temperature change - LED by LED. Disable to change all LEDs at once.
#define NEOPIXEL_BRIGHTNESS 127 // Initial brightness (0-255)
//#define NEOPIXEL_STARTUP_TEST // Cycle through colors at startup
+
+ // Use a single Neopixel LED for static (background) lighting
+ //#define NEOPIXEL_BKGD_LED_INDEX 0 // Index of the LED to use
+ //#define NEOPIXEL_BKGD_COLOR { 255, 255, 255, 0 } // R, G, B, W
#endif
/**
diff --git a/config/examples/Sanguinololu/Configuration.h b/config/examples/Sanguinololu/Configuration.h
index 93f187ff4e..464d58bc0c 100644
--- a/config/examples/Sanguinololu/Configuration.h
+++ b/config/examples/Sanguinololu/Configuration.h
@@ -859,15 +859,71 @@
*/
//#define BLTOUCH
#if ENABLED(BLTOUCH)
- //#define BLTOUCH_DELAY 500 // Minimum Command delay (ms). Enable and increase if needed
+ /**
+ * Either: Use the defaults (recommended) or: For special purposes, use the following DEFINES
+ * Do not activate settings that the probe might not understand. Clones might misunderstand
+ * advanced commands.
+ *
+ * Note: If the probe is not deploying, check a "Cmd: Reset" and "Cmd: Self-Test" and then
+ * check the wiring of the BROWN, RED and ORANGE wires.
+ *
+ * Note: If the trigger signal of your probe is not being recognized, it has been very often
+ * because the BLACK and WHITE wires needed to be swapped. They are not "interchangeable"
+ * like they would be with a real switch. So please check the wiring first.
+ *
+ * Settings for all BLTouch and clone probes:
+ */
+
+ // Safety: The probe needs time to recognize the command.
+ // Minimum command delay (ms). Enable and increase if needed.
+ //#define BLTOUCH_DELAY 500
/**
- * BLTouch V3.0 and newer smart series
- * For genuine BLTouch 3.0 sensors. Clones may be confused by 3.0 command angles. YMMV.
- * If the pin trigger is not detected, first try swapping the black and white wires then toggle this.
+ * Settings for BLTOUCH Classic 1.2, 1.3 or BLTouch Smart 1.0, 2.0, 2.2, 3.0, 3.1, and most clones:
*/
- //#define BLTOUCH_FORCE_5V_MODE
-#endif
+
+ // Feature: Switch into SW mode after a deploy. It makes the output pulse longer. Can be useful
+ // in special cases, like noisy or filtered input configurations.
+ //#define BLTOUCH_FORCE_SW_MODE
+
+ /**
+ * Settings for BLTouch Smart 3.0 and 3.1
+ * Summary:
+ * - Voltage modes: 5V and OD (open drain - "logic voltage free") output modes
+ * - High-Speed mode
+ * - Disable LCD voltage options
+ */
+
+ /**
+ * Danger: Don't activate 5V mode unless attached to a 5V-tolerant controller!
+ * V3.0 or 3.1: Set default mode to 5V mode at Marlin startup.
+ * If disabled, OD mode is the hard-coded default on 3.0
+ * On startup, Marlin will compare its eeprom to this vale. If the selected mode
+ * differs, a mode set eeprom write will be completed at initialization.
+ * Use the option below to force an eeprom write to a V3.1 probe regardless.
+ */
+ //#define BLTOUCH_SET_5V_MODE
+
+ /**
+ * Safety: Activate if connecting a probe with an unknown voltage mode.
+ * V3.0: Set a probe into mode selected above at Marlin startup. Required for 5V mode on 3.0
+ * V3.1: Force a probe with unknown mode into selected mode at Marlin startup ( = Probe EEPROM write )
+ * To preserve the life of the probe, use this once then turn it off and re-flash.
+ */
+ //#define BLTOUCH_FORCE_MODE_SET
+
+ /**
+ * Use "HIGH SPEED" mode for probing.
+ * Danger: Disable if your probe sometimes fails. Only suitable for stable well-adjusted systems.
+ * This feature was designed for Delta's with very fast Z moves however higher speed cartesians may function
+ * If the machine cannot raise the probe fast enough after a trigger, it may enter a fault state.
+ */
+ //#define BLTOUCH_HS_MODE
+
+ // Safety: Enable voltage mode settings in the LCD menu.
+ //#define BLTOUCH_LCD_VOLTAGE_MENU
+
+#endif // BLTOUCH
// A probe that is deployed and stowed with a solenoid pin (SOL1_PIN)
//#define SOLENOID_PROBE
@@ -888,23 +944,23 @@
//
/**
- * Z Probe to nozzle (X,Y) offset, relative to (0, 0).
- * X and Y offsets must be integers.
+ * Z Probe to nozzle (X,Y) offset, relative to (0, 0).
+ * X and Y offsets must be integers.
*
- * In the following example the X and Y offsets are both positive:
- * #define X_PROBE_OFFSET_FROM_EXTRUDER 10
- * #define Y_PROBE_OFFSET_FROM_EXTRUDER 10
+ * In the following example the X and Y offsets are both positive:
+ * #define X_PROBE_OFFSET_FROM_EXTRUDER 10
+ * #define Y_PROBE_OFFSET_FROM_EXTRUDER 10
*
- * +-- BACK ---+
- * | |
- * L | (+) P | R <-- probe (20,20)
- * E | | I
- * F | (-) N (+) | G <-- nozzle (10,10)
- * T | | H
- * | (-) | T
- * | |
- * O-- FRONT --+
- * (0,0)
+ * +-- BACK ---+
+ * | |
+ * L | (+) P | R <-- probe (20,20)
+ * E | | I
+ * F | (-) N (+) | G <-- nozzle (10,10)
+ * T | | H
+ * | (-) | T
+ * | |
+ * O-- FRONT --+
+ * (0,0)
*/
#define X_PROBE_OFFSET_FROM_EXTRUDER 10 // X offset: -left +right [of the nozzle]
#define Y_PROBE_OFFSET_FROM_EXTRUDER 10 // Y offset: -front +behind [the nozzle]
@@ -2120,6 +2176,10 @@
#define NEOPIXEL_IS_SEQUENTIAL // Sequential display for temperature change - LED by LED. Disable to change all LEDs at once.
#define NEOPIXEL_BRIGHTNESS 127 // Initial brightness (0-255)
//#define NEOPIXEL_STARTUP_TEST // Cycle through colors at startup
+
+ // Use a single Neopixel LED for static (background) lighting
+ //#define NEOPIXEL_BKGD_LED_INDEX 0 // Index of the LED to use
+ //#define NEOPIXEL_BKGD_COLOR { 255, 255, 255, 0 } // R, G, B, W
#endif
/**
diff --git a/config/examples/Sanguinololu/Configuration_adv.h b/config/examples/Sanguinololu/Configuration_adv.h
index a5099391f6..b0a5d0d667 100644
--- a/config/examples/Sanguinololu/Configuration_adv.h
+++ b/config/examples/Sanguinololu/Configuration_adv.h
@@ -382,10 +382,6 @@
#endif
#endif
-//===========================================================================
-//============================ Mechanical Settings ==========================
-//===========================================================================
-
// @section homing
// If you want endstops to stay on (by default) even when not homing
@@ -745,6 +741,7 @@
* A (A shifted) B (B shifted) IC
* Smoothie 0x2C (0x58) 0x2D (0x5A) MCP4451
* AZTEEG_X3_PRO 0x2C (0x58) 0x2E (0x5C) MCP4451
+ * AZTEEG_X5_MINI 0x2C (0x58) 0x2E (0x5C) MCP4451
* AZTEEG_X5_MINI_WIFI 0x58 0x5C MCP4451
* MIGHTYBOARD_REVE 0x2F (0x5E) MCP4018
*/
diff --git a/config/examples/TheBorg/Configuration.h b/config/examples/TheBorg/Configuration.h
index 7fc477ea77..d9b2d41af1 100644
--- a/config/examples/TheBorg/Configuration.h
+++ b/config/examples/TheBorg/Configuration.h
@@ -828,15 +828,71 @@
*/
//#define BLTOUCH
#if ENABLED(BLTOUCH)
- //#define BLTOUCH_DELAY 500 // Minimum Command delay (ms). Enable and increase if needed
+ /**
+ * Either: Use the defaults (recommended) or: For special purposes, use the following DEFINES
+ * Do not activate settings that the probe might not understand. Clones might misunderstand
+ * advanced commands.
+ *
+ * Note: If the probe is not deploying, check a "Cmd: Reset" and "Cmd: Self-Test" and then
+ * check the wiring of the BROWN, RED and ORANGE wires.
+ *
+ * Note: If the trigger signal of your probe is not being recognized, it has been very often
+ * because the BLACK and WHITE wires needed to be swapped. They are not "interchangeable"
+ * like they would be with a real switch. So please check the wiring first.
+ *
+ * Settings for all BLTouch and clone probes:
+ */
+
+ // Safety: The probe needs time to recognize the command.
+ // Minimum command delay (ms). Enable and increase if needed.
+ //#define BLTOUCH_DELAY 500
/**
- * BLTouch V3.0 and newer smart series
- * For genuine BLTouch 3.0 sensors. Clones may be confused by 3.0 command angles. YMMV.
- * If the pin trigger is not detected, first try swapping the black and white wires then toggle this.
+ * Settings for BLTOUCH Classic 1.2, 1.3 or BLTouch Smart 1.0, 2.0, 2.2, 3.0, 3.1, and most clones:
*/
- //#define BLTOUCH_FORCE_5V_MODE
-#endif
+
+ // Feature: Switch into SW mode after a deploy. It makes the output pulse longer. Can be useful
+ // in special cases, like noisy or filtered input configurations.
+ //#define BLTOUCH_FORCE_SW_MODE
+
+ /**
+ * Settings for BLTouch Smart 3.0 and 3.1
+ * Summary:
+ * - Voltage modes: 5V and OD (open drain - "logic voltage free") output modes
+ * - High-Speed mode
+ * - Disable LCD voltage options
+ */
+
+ /**
+ * Danger: Don't activate 5V mode unless attached to a 5V-tolerant controller!
+ * V3.0 or 3.1: Set default mode to 5V mode at Marlin startup.
+ * If disabled, OD mode is the hard-coded default on 3.0
+ * On startup, Marlin will compare its eeprom to this vale. If the selected mode
+ * differs, a mode set eeprom write will be completed at initialization.
+ * Use the option below to force an eeprom write to a V3.1 probe regardless.
+ */
+ //#define BLTOUCH_SET_5V_MODE
+
+ /**
+ * Safety: Activate if connecting a probe with an unknown voltage mode.
+ * V3.0: Set a probe into mode selected above at Marlin startup. Required for 5V mode on 3.0
+ * V3.1: Force a probe with unknown mode into selected mode at Marlin startup ( = Probe EEPROM write )
+ * To preserve the life of the probe, use this once then turn it off and re-flash.
+ */
+ //#define BLTOUCH_FORCE_MODE_SET
+
+ /**
+ * Use "HIGH SPEED" mode for probing.
+ * Danger: Disable if your probe sometimes fails. Only suitable for stable well-adjusted systems.
+ * This feature was designed for Delta's with very fast Z moves however higher speed cartesians may function
+ * If the machine cannot raise the probe fast enough after a trigger, it may enter a fault state.
+ */
+ //#define BLTOUCH_HS_MODE
+
+ // Safety: Enable voltage mode settings in the LCD menu.
+ //#define BLTOUCH_LCD_VOLTAGE_MENU
+
+#endif // BLTOUCH
// A probe that is deployed and stowed with a solenoid pin (SOL1_PIN)
//#define SOLENOID_PROBE
@@ -857,23 +913,23 @@
//
/**
- * Z Probe to nozzle (X,Y) offset, relative to (0, 0).
- * X and Y offsets must be integers.
+ * Z Probe to nozzle (X,Y) offset, relative to (0, 0).
+ * X and Y offsets must be integers.
*
- * In the following example the X and Y offsets are both positive:
- * #define X_PROBE_OFFSET_FROM_EXTRUDER 10
- * #define Y_PROBE_OFFSET_FROM_EXTRUDER 10
+ * In the following example the X and Y offsets are both positive:
+ * #define X_PROBE_OFFSET_FROM_EXTRUDER 10
+ * #define Y_PROBE_OFFSET_FROM_EXTRUDER 10
*
- * +-- BACK ---+
- * | |
- * L | (+) P | R <-- probe (20,20)
- * E | | I
- * F | (-) N (+) | G <-- nozzle (10,10)
- * T | | H
- * | (-) | T
- * | |
- * O-- FRONT --+
- * (0,0)
+ * +-- BACK ---+
+ * | |
+ * L | (+) P | R <-- probe (20,20)
+ * E | | I
+ * F | (-) N (+) | G <-- nozzle (10,10)
+ * T | | H
+ * | (-) | T
+ * | |
+ * O-- FRONT --+
+ * (0,0)
*/
#define X_PROBE_OFFSET_FROM_EXTRUDER 32 // X offset: -left +right [of the nozzle]
#define Y_PROBE_OFFSET_FROM_EXTRUDER 5 // Y offset: -front +behind [the nozzle]
@@ -2089,6 +2145,10 @@
#define NEOPIXEL_IS_SEQUENTIAL // Sequential display for temperature change - LED by LED. Disable to change all LEDs at once.
#define NEOPIXEL_BRIGHTNESS 127 // Initial brightness (0-255)
//#define NEOPIXEL_STARTUP_TEST // Cycle through colors at startup
+
+ // Use a single Neopixel LED for static (background) lighting
+ //#define NEOPIXEL_BKGD_LED_INDEX 0 // Index of the LED to use
+ //#define NEOPIXEL_BKGD_COLOR { 255, 255, 255, 0 } // R, G, B, W
#endif
/**
diff --git a/config/examples/TheBorg/Configuration_adv.h b/config/examples/TheBorg/Configuration_adv.h
index 2b69e488cd..ddb75ec463 100644
--- a/config/examples/TheBorg/Configuration_adv.h
+++ b/config/examples/TheBorg/Configuration_adv.h
@@ -382,10 +382,6 @@
#endif
#endif
-//===========================================================================
-//============================ Mechanical Settings ==========================
-//===========================================================================
-
// @section homing
// If you want endstops to stay on (by default) even when not homing
@@ -745,6 +741,7 @@
* A (A shifted) B (B shifted) IC
* Smoothie 0x2C (0x58) 0x2D (0x5A) MCP4451
* AZTEEG_X3_PRO 0x2C (0x58) 0x2E (0x5C) MCP4451
+ * AZTEEG_X5_MINI 0x2C (0x58) 0x2E (0x5C) MCP4451
* AZTEEG_X5_MINI_WIFI 0x58 0x5C MCP4451
* MIGHTYBOARD_REVE 0x2F (0x5E) MCP4018
*/
diff --git a/config/examples/TinyBoy2/Configuration.h b/config/examples/TinyBoy2/Configuration.h
index 70fcc0626c..18cd42da3f 100644
--- a/config/examples/TinyBoy2/Configuration.h
+++ b/config/examples/TinyBoy2/Configuration.h
@@ -879,15 +879,71 @@
*/
//#define BLTOUCH
#if ENABLED(BLTOUCH)
- //#define BLTOUCH_DELAY 500 // Minimum Command delay (ms). Enable and increase if needed
+ /**
+ * Either: Use the defaults (recommended) or: For special purposes, use the following DEFINES
+ * Do not activate settings that the probe might not understand. Clones might misunderstand
+ * advanced commands.
+ *
+ * Note: If the probe is not deploying, check a "Cmd: Reset" and "Cmd: Self-Test" and then
+ * check the wiring of the BROWN, RED and ORANGE wires.
+ *
+ * Note: If the trigger signal of your probe is not being recognized, it has been very often
+ * because the BLACK and WHITE wires needed to be swapped. They are not "interchangeable"
+ * like they would be with a real switch. So please check the wiring first.
+ *
+ * Settings for all BLTouch and clone probes:
+ */
+
+ // Safety: The probe needs time to recognize the command.
+ // Minimum command delay (ms). Enable and increase if needed.
+ //#define BLTOUCH_DELAY 500
/**
- * BLTouch V3.0 and newer smart series
- * For genuine BLTouch 3.0 sensors. Clones may be confused by 3.0 command angles. YMMV.
- * If the pin trigger is not detected, first try swapping the black and white wires then toggle this.
+ * Settings for BLTOUCH Classic 1.2, 1.3 or BLTouch Smart 1.0, 2.0, 2.2, 3.0, 3.1, and most clones:
*/
- //#define BLTOUCH_FORCE_5V_MODE
-#endif
+
+ // Feature: Switch into SW mode after a deploy. It makes the output pulse longer. Can be useful
+ // in special cases, like noisy or filtered input configurations.
+ //#define BLTOUCH_FORCE_SW_MODE
+
+ /**
+ * Settings for BLTouch Smart 3.0 and 3.1
+ * Summary:
+ * - Voltage modes: 5V and OD (open drain - "logic voltage free") output modes
+ * - High-Speed mode
+ * - Disable LCD voltage options
+ */
+
+ /**
+ * Danger: Don't activate 5V mode unless attached to a 5V-tolerant controller!
+ * V3.0 or 3.1: Set default mode to 5V mode at Marlin startup.
+ * If disabled, OD mode is the hard-coded default on 3.0
+ * On startup, Marlin will compare its eeprom to this vale. If the selected mode
+ * differs, a mode set eeprom write will be completed at initialization.
+ * Use the option below to force an eeprom write to a V3.1 probe regardless.
+ */
+ //#define BLTOUCH_SET_5V_MODE
+
+ /**
+ * Safety: Activate if connecting a probe with an unknown voltage mode.
+ * V3.0: Set a probe into mode selected above at Marlin startup. Required for 5V mode on 3.0
+ * V3.1: Force a probe with unknown mode into selected mode at Marlin startup ( = Probe EEPROM write )
+ * To preserve the life of the probe, use this once then turn it off and re-flash.
+ */
+ //#define BLTOUCH_FORCE_MODE_SET
+
+ /**
+ * Use "HIGH SPEED" mode for probing.
+ * Danger: Disable if your probe sometimes fails. Only suitable for stable well-adjusted systems.
+ * This feature was designed for Delta's with very fast Z moves however higher speed cartesians may function
+ * If the machine cannot raise the probe fast enough after a trigger, it may enter a fault state.
+ */
+ //#define BLTOUCH_HS_MODE
+
+ // Safety: Enable voltage mode settings in the LCD menu.
+ //#define BLTOUCH_LCD_VOLTAGE_MENU
+
+#endif // BLTOUCH
// A probe that is deployed and stowed with a solenoid pin (SOL1_PIN)
//#define SOLENOID_PROBE
@@ -908,23 +964,23 @@
//
/**
- * Z Probe to nozzle (X,Y) offset, relative to (0, 0).
- * X and Y offsets must be integers.
+ * Z Probe to nozzle (X,Y) offset, relative to (0, 0).
+ * X and Y offsets must be integers.
*
- * In the following example the X and Y offsets are both positive:
- * #define X_PROBE_OFFSET_FROM_EXTRUDER 10
- * #define Y_PROBE_OFFSET_FROM_EXTRUDER 10
+ * In the following example the X and Y offsets are both positive:
+ * #define X_PROBE_OFFSET_FROM_EXTRUDER 10
+ * #define Y_PROBE_OFFSET_FROM_EXTRUDER 10
*
- * +-- BACK ---+
- * | |
- * L | (+) P | R <-- probe (20,20)
- * E | | I
- * F | (-) N (+) | G <-- nozzle (10,10)
- * T | | H
- * | (-) | T
- * | |
- * O-- FRONT --+
- * (0,0)
+ * +-- BACK ---+
+ * | |
+ * L | (+) P | R <-- probe (20,20)
+ * E | | I
+ * F | (-) N (+) | G <-- nozzle (10,10)
+ * T | | H
+ * | (-) | T
+ * | |
+ * O-- FRONT --+
+ * (0,0)
*/
#define X_PROBE_OFFSET_FROM_EXTRUDER 34 // X offset: -left +right [of the nozzle]
#define Y_PROBE_OFFSET_FROM_EXTRUDER 15 // Y offset: -front +behind [the nozzle]
@@ -2145,6 +2201,10 @@
#define NEOPIXEL_IS_SEQUENTIAL // Sequential display for temperature change - LED by LED. Disable to change all LEDs at once.
#define NEOPIXEL_BRIGHTNESS 127 // Initial brightness (0-255)
//#define NEOPIXEL_STARTUP_TEST // Cycle through colors at startup
+
+ // Use a single Neopixel LED for static (background) lighting
+ //#define NEOPIXEL_BKGD_LED_INDEX 0 // Index of the LED to use
+ //#define NEOPIXEL_BKGD_COLOR { 255, 255, 255, 0 } // R, G, B, W
#endif
/**
diff --git a/config/examples/TinyBoy2/Configuration_adv.h b/config/examples/TinyBoy2/Configuration_adv.h
index 95c48add82..b450e4a2e3 100644
--- a/config/examples/TinyBoy2/Configuration_adv.h
+++ b/config/examples/TinyBoy2/Configuration_adv.h
@@ -382,10 +382,6 @@
#endif
#endif
-//===========================================================================
-//============================ Mechanical Settings ==========================
-//===========================================================================
-
// @section homing
// If you want endstops to stay on (by default) even when not homing
@@ -745,6 +741,7 @@
* A (A shifted) B (B shifted) IC
* Smoothie 0x2C (0x58) 0x2D (0x5A) MCP4451
* AZTEEG_X3_PRO 0x2C (0x58) 0x2E (0x5C) MCP4451
+ * AZTEEG_X5_MINI 0x2C (0x58) 0x2E (0x5C) MCP4451
* AZTEEG_X5_MINI_WIFI 0x58 0x5C MCP4451
* MIGHTYBOARD_REVE 0x2F (0x5E) MCP4018
*/
diff --git a/config/examples/Tronxy/X1/Configuration.h b/config/examples/Tronxy/X1/Configuration.h
index 485d23a062..762500386b 100644
--- a/config/examples/Tronxy/X1/Configuration.h
+++ b/config/examples/Tronxy/X1/Configuration.h
@@ -828,15 +828,71 @@
*/
//#define BLTOUCH
#if ENABLED(BLTOUCH)
- //#define BLTOUCH_DELAY 500 // Minimum Command delay (ms). Enable and increase if needed
+ /**
+ * Either: Use the defaults (recommended) or: For special purposes, use the following DEFINES
+ * Do not activate settings that the probe might not understand. Clones might misunderstand
+ * advanced commands.
+ *
+ * Note: If the probe is not deploying, check a "Cmd: Reset" and "Cmd: Self-Test" and then
+ * check the wiring of the BROWN, RED and ORANGE wires.
+ *
+ * Note: If the trigger signal of your probe is not being recognized, it has been very often
+ * because the BLACK and WHITE wires needed to be swapped. They are not "interchangeable"
+ * like they would be with a real switch. So please check the wiring first.
+ *
+ * Settings for all BLTouch and clone probes:
+ */
+
+ // Safety: The probe needs time to recognize the command.
+ // Minimum command delay (ms). Enable and increase if needed.
+ //#define BLTOUCH_DELAY 500
/**
- * BLTouch V3.0 and newer smart series
- * For genuine BLTouch 3.0 sensors. Clones may be confused by 3.0 command angles. YMMV.
- * If the pin trigger is not detected, first try swapping the black and white wires then toggle this.
+ * Settings for BLTOUCH Classic 1.2, 1.3 or BLTouch Smart 1.0, 2.0, 2.2, 3.0, 3.1, and most clones:
*/
- //#define BLTOUCH_FORCE_5V_MODE
-#endif
+
+ // Feature: Switch into SW mode after a deploy. It makes the output pulse longer. Can be useful
+ // in special cases, like noisy or filtered input configurations.
+ //#define BLTOUCH_FORCE_SW_MODE
+
+ /**
+ * Settings for BLTouch Smart 3.0 and 3.1
+ * Summary:
+ * - Voltage modes: 5V and OD (open drain - "logic voltage free") output modes
+ * - High-Speed mode
+ * - Disable LCD voltage options
+ */
+
+ /**
+ * Danger: Don't activate 5V mode unless attached to a 5V-tolerant controller!
+ * V3.0 or 3.1: Set default mode to 5V mode at Marlin startup.
+ * If disabled, OD mode is the hard-coded default on 3.0
+ * On startup, Marlin will compare its eeprom to this vale. If the selected mode
+ * differs, a mode set eeprom write will be completed at initialization.
+ * Use the option below to force an eeprom write to a V3.1 probe regardless.
+ */
+ //#define BLTOUCH_SET_5V_MODE
+
+ /**
+ * Safety: Activate if connecting a probe with an unknown voltage mode.
+ * V3.0: Set a probe into mode selected above at Marlin startup. Required for 5V mode on 3.0
+ * V3.1: Force a probe with unknown mode into selected mode at Marlin startup ( = Probe EEPROM write )
+ * To preserve the life of the probe, use this once then turn it off and re-flash.
+ */
+ //#define BLTOUCH_FORCE_MODE_SET
+
+ /**
+ * Use "HIGH SPEED" mode for probing.
+ * Danger: Disable if your probe sometimes fails. Only suitable for stable well-adjusted systems.
+ * This feature was designed for Delta's with very fast Z moves however higher speed cartesians may function
+ * If the machine cannot raise the probe fast enough after a trigger, it may enter a fault state.
+ */
+ //#define BLTOUCH_HS_MODE
+
+ // Safety: Enable voltage mode settings in the LCD menu.
+ //#define BLTOUCH_LCD_VOLTAGE_MENU
+
+#endif // BLTOUCH
// A probe that is deployed and stowed with a solenoid pin (SOL1_PIN)
//#define SOLENOID_PROBE
@@ -857,23 +913,23 @@
//
/**
- * Z Probe to nozzle (X,Y) offset, relative to (0, 0).
- * X and Y offsets must be integers.
+ * Z Probe to nozzle (X,Y) offset, relative to (0, 0).
+ * X and Y offsets must be integers.
*
- * In the following example the X and Y offsets are both positive:
- * #define X_PROBE_OFFSET_FROM_EXTRUDER 10
- * #define Y_PROBE_OFFSET_FROM_EXTRUDER 10
+ * In the following example the X and Y offsets are both positive:
+ * #define X_PROBE_OFFSET_FROM_EXTRUDER 10
+ * #define Y_PROBE_OFFSET_FROM_EXTRUDER 10
*
- * +-- BACK ---+
- * | |
- * L | (+) P | R <-- probe (20,20)
- * E | | I
- * F | (-) N (+) | G <-- nozzle (10,10)
- * T | | H
- * | (-) | T
- * | |
- * O-- FRONT --+
- * (0,0)
+ * +-- BACK ---+
+ * | |
+ * L | (+) P | R <-- probe (20,20)
+ * E | | I
+ * F | (-) N (+) | G <-- nozzle (10,10)
+ * T | | H
+ * | (-) | T
+ * | |
+ * O-- FRONT --+
+ * (0,0)
*/
#define X_PROBE_OFFSET_FROM_EXTRUDER 10 // X offset: -left +right [of the nozzle]
#define Y_PROBE_OFFSET_FROM_EXTRUDER 10 // Y offset: -front +behind [the nozzle]
@@ -2089,6 +2145,10 @@
#define NEOPIXEL_IS_SEQUENTIAL // Sequential display for temperature change - LED by LED. Disable to change all LEDs at once.
#define NEOPIXEL_BRIGHTNESS 127 // Initial brightness (0-255)
//#define NEOPIXEL_STARTUP_TEST // Cycle through colors at startup
+
+ // Use a single Neopixel LED for static (background) lighting
+ //#define NEOPIXEL_BKGD_LED_INDEX 0 // Index of the LED to use
+ //#define NEOPIXEL_BKGD_COLOR { 255, 255, 255, 0 } // R, G, B, W
#endif
/**
diff --git a/config/examples/Tronxy/X3A/Configuration.h b/config/examples/Tronxy/X3A/Configuration.h
index 171b3fd161..bb4ec62546 100644
--- a/config/examples/Tronxy/X3A/Configuration.h
+++ b/config/examples/Tronxy/X3A/Configuration.h
@@ -828,15 +828,71 @@
*/
//#define BLTOUCH
#if ENABLED(BLTOUCH)
- //#define BLTOUCH_DELAY 500 // Minimum Command delay (ms). Enable and increase if needed
+ /**
+ * Either: Use the defaults (recommended) or: For special purposes, use the following DEFINES
+ * Do not activate settings that the probe might not understand. Clones might misunderstand
+ * advanced commands.
+ *
+ * Note: If the probe is not deploying, check a "Cmd: Reset" and "Cmd: Self-Test" and then
+ * check the wiring of the BROWN, RED and ORANGE wires.
+ *
+ * Note: If the trigger signal of your probe is not being recognized, it has been very often
+ * because the BLACK and WHITE wires needed to be swapped. They are not "interchangeable"
+ * like they would be with a real switch. So please check the wiring first.
+ *
+ * Settings for all BLTouch and clone probes:
+ */
+
+ // Safety: The probe needs time to recognize the command.
+ // Minimum command delay (ms). Enable and increase if needed.
+ //#define BLTOUCH_DELAY 500
/**
- * BLTouch V3.0 and newer smart series
- * For genuine BLTouch 3.0 sensors. Clones may be confused by 3.0 command angles. YMMV.
- * If the pin trigger is not detected, first try swapping the black and white wires then toggle this.
+ * Settings for BLTOUCH Classic 1.2, 1.3 or BLTouch Smart 1.0, 2.0, 2.2, 3.0, 3.1, and most clones:
*/
- //#define BLTOUCH_FORCE_5V_MODE
-#endif
+
+ // Feature: Switch into SW mode after a deploy. It makes the output pulse longer. Can be useful
+ // in special cases, like noisy or filtered input configurations.
+ //#define BLTOUCH_FORCE_SW_MODE
+
+ /**
+ * Settings for BLTouch Smart 3.0 and 3.1
+ * Summary:
+ * - Voltage modes: 5V and OD (open drain - "logic voltage free") output modes
+ * - High-Speed mode
+ * - Disable LCD voltage options
+ */
+
+ /**
+ * Danger: Don't activate 5V mode unless attached to a 5V-tolerant controller!
+ * V3.0 or 3.1: Set default mode to 5V mode at Marlin startup.
+ * If disabled, OD mode is the hard-coded default on 3.0
+ * On startup, Marlin will compare its eeprom to this vale. If the selected mode
+ * differs, a mode set eeprom write will be completed at initialization.
+ * Use the option below to force an eeprom write to a V3.1 probe regardless.
+ */
+ //#define BLTOUCH_SET_5V_MODE
+
+ /**
+ * Safety: Activate if connecting a probe with an unknown voltage mode.
+ * V3.0: Set a probe into mode selected above at Marlin startup. Required for 5V mode on 3.0
+ * V3.1: Force a probe with unknown mode into selected mode at Marlin startup ( = Probe EEPROM write )
+ * To preserve the life of the probe, use this once then turn it off and re-flash.
+ */
+ //#define BLTOUCH_FORCE_MODE_SET
+
+ /**
+ * Use "HIGH SPEED" mode for probing.
+ * Danger: Disable if your probe sometimes fails. Only suitable for stable well-adjusted systems.
+ * This feature was designed for Delta's with very fast Z moves however higher speed cartesians may function
+ * If the machine cannot raise the probe fast enough after a trigger, it may enter a fault state.
+ */
+ //#define BLTOUCH_HS_MODE
+
+ // Safety: Enable voltage mode settings in the LCD menu.
+ //#define BLTOUCH_LCD_VOLTAGE_MENU
+
+#endif // BLTOUCH
// A probe that is deployed and stowed with a solenoid pin (SOL1_PIN)
//#define SOLENOID_PROBE
@@ -857,23 +913,23 @@
//
/**
- * Z Probe to nozzle (X,Y) offset, relative to (0, 0).
- * X and Y offsets must be integers.
+ * Z Probe to nozzle (X,Y) offset, relative to (0, 0).
+ * X and Y offsets must be integers.
*
- * In the following example the X and Y offsets are both positive:
- * #define X_PROBE_OFFSET_FROM_EXTRUDER 10
- * #define Y_PROBE_OFFSET_FROM_EXTRUDER 10
+ * In the following example the X and Y offsets are both positive:
+ * #define X_PROBE_OFFSET_FROM_EXTRUDER 10
+ * #define Y_PROBE_OFFSET_FROM_EXTRUDER 10
*
- * +-- BACK ---+
- * | |
- * L | (+) P | R <-- probe (20,20)
- * E | | I
- * F | (-) N (+) | G <-- nozzle (10,10)
- * T | | H
- * | (-) | T
- * | |
- * O-- FRONT --+
- * (0,0)
+ * +-- BACK ---+
+ * | |
+ * L | (+) P | R <-- probe (20,20)
+ * E | | I
+ * F | (-) N (+) | G <-- nozzle (10,10)
+ * T | | H
+ * | (-) | T
+ * | |
+ * O-- FRONT --+
+ * (0,0)
*/
#define X_PROBE_OFFSET_FROM_EXTRUDER -32 // X offset: -left +right [of the nozzle]
#define Y_PROBE_OFFSET_FROM_EXTRUDER -10 // Y offset: -front +behind [the nozzle]
@@ -2093,6 +2149,10 @@
#define NEOPIXEL_IS_SEQUENTIAL // Sequential display for temperature change - LED by LED. Disable to change all LEDs at once.
#define NEOPIXEL_BRIGHTNESS 127 // Initial brightness (0-255)
//#define NEOPIXEL_STARTUP_TEST // Cycle through colors at startup
+
+ // Use a single Neopixel LED for static (background) lighting
+ //#define NEOPIXEL_BKGD_LED_INDEX 0 // Index of the LED to use
+ //#define NEOPIXEL_BKGD_COLOR { 255, 255, 255, 0 } // R, G, B, W
#endif
/**
diff --git a/config/examples/Tronxy/X3A/Configuration_adv.h b/config/examples/Tronxy/X3A/Configuration_adv.h
index 26e74390ed..5902f554ef 100644
--- a/config/examples/Tronxy/X3A/Configuration_adv.h
+++ b/config/examples/Tronxy/X3A/Configuration_adv.h
@@ -382,10 +382,6 @@
#endif
#endif
-//===========================================================================
-//============================ Mechanical Settings ==========================
-//===========================================================================
-
// @section homing
// If you want endstops to stay on (by default) even when not homing
@@ -745,6 +741,7 @@
* A (A shifted) B (B shifted) IC
* Smoothie 0x2C (0x58) 0x2D (0x5A) MCP4451
* AZTEEG_X3_PRO 0x2C (0x58) 0x2E (0x5C) MCP4451
+ * AZTEEG_X5_MINI 0x2C (0x58) 0x2E (0x5C) MCP4451
* AZTEEG_X5_MINI_WIFI 0x58 0x5C MCP4451
* MIGHTYBOARD_REVE 0x2F (0x5E) MCP4018
*/
diff --git a/config/examples/Tronxy/X5S-2E/Configuration.h b/config/examples/Tronxy/X5S-2E/Configuration.h
index c6f0e485b1..d74013daeb 100644
--- a/config/examples/Tronxy/X5S-2E/Configuration.h
+++ b/config/examples/Tronxy/X5S-2E/Configuration.h
@@ -849,15 +849,71 @@
*/
//#define BLTOUCH
#if ENABLED(BLTOUCH)
- //#define BLTOUCH_DELAY 500 // Minimum Command delay (ms). Enable and increase if needed
+ /**
+ * Either: Use the defaults (recommended) or: For special purposes, use the following DEFINES
+ * Do not activate settings that the probe might not understand. Clones might misunderstand
+ * advanced commands.
+ *
+ * Note: If the probe is not deploying, check a "Cmd: Reset" and "Cmd: Self-Test" and then
+ * check the wiring of the BROWN, RED and ORANGE wires.
+ *
+ * Note: If the trigger signal of your probe is not being recognized, it has been very often
+ * because the BLACK and WHITE wires needed to be swapped. They are not "interchangeable"
+ * like they would be with a real switch. So please check the wiring first.
+ *
+ * Settings for all BLTouch and clone probes:
+ */
+
+ // Safety: The probe needs time to recognize the command.
+ // Minimum command delay (ms). Enable and increase if needed.
+ //#define BLTOUCH_DELAY 500
/**
- * BLTouch V3.0 and newer smart series
- * For genuine BLTouch 3.0 sensors. Clones may be confused by 3.0 command angles. YMMV.
- * If the pin trigger is not detected, first try swapping the black and white wires then toggle this.
+ * Settings for BLTOUCH Classic 1.2, 1.3 or BLTouch Smart 1.0, 2.0, 2.2, 3.0, 3.1, and most clones:
*/
- //#define BLTOUCH_FORCE_5V_MODE
-#endif
+
+ // Feature: Switch into SW mode after a deploy. It makes the output pulse longer. Can be useful
+ // in special cases, like noisy or filtered input configurations.
+ //#define BLTOUCH_FORCE_SW_MODE
+
+ /**
+ * Settings for BLTouch Smart 3.0 and 3.1
+ * Summary:
+ * - Voltage modes: 5V and OD (open drain - "logic voltage free") output modes
+ * - High-Speed mode
+ * - Disable LCD voltage options
+ */
+
+ /**
+ * Danger: Don't activate 5V mode unless attached to a 5V-tolerant controller!
+ * V3.0 or 3.1: Set default mode to 5V mode at Marlin startup.
+ * If disabled, OD mode is the hard-coded default on 3.0
+ * On startup, Marlin will compare its eeprom to this vale. If the selected mode
+ * differs, a mode set eeprom write will be completed at initialization.
+ * Use the option below to force an eeprom write to a V3.1 probe regardless.
+ */
+ //#define BLTOUCH_SET_5V_MODE
+
+ /**
+ * Safety: Activate if connecting a probe with an unknown voltage mode.
+ * V3.0: Set a probe into mode selected above at Marlin startup. Required for 5V mode on 3.0
+ * V3.1: Force a probe with unknown mode into selected mode at Marlin startup ( = Probe EEPROM write )
+ * To preserve the life of the probe, use this once then turn it off and re-flash.
+ */
+ //#define BLTOUCH_FORCE_MODE_SET
+
+ /**
+ * Use "HIGH SPEED" mode for probing.
+ * Danger: Disable if your probe sometimes fails. Only suitable for stable well-adjusted systems.
+ * This feature was designed for Delta's with very fast Z moves however higher speed cartesians may function
+ * If the machine cannot raise the probe fast enough after a trigger, it may enter a fault state.
+ */
+ //#define BLTOUCH_HS_MODE
+
+ // Safety: Enable voltage mode settings in the LCD menu.
+ //#define BLTOUCH_LCD_VOLTAGE_MENU
+
+#endif // BLTOUCH
// A probe that is deployed and stowed with a solenoid pin (SOL1_PIN)
//#define SOLENOID_PROBE
@@ -878,23 +934,23 @@
//
/**
- * Z Probe to nozzle (X,Y) offset, relative to (0, 0).
- * X and Y offsets must be integers.
+ * Z Probe to nozzle (X,Y) offset, relative to (0, 0).
+ * X and Y offsets must be integers.
*
- * In the following example the X and Y offsets are both positive:
- * #define X_PROBE_OFFSET_FROM_EXTRUDER 10
- * #define Y_PROBE_OFFSET_FROM_EXTRUDER 10
+ * In the following example the X and Y offsets are both positive:
+ * #define X_PROBE_OFFSET_FROM_EXTRUDER 10
+ * #define Y_PROBE_OFFSET_FROM_EXTRUDER 10
*
- * +-- BACK ---+
- * | |
- * L | (+) P | R <-- probe (20,20)
- * E | | I
- * F | (-) N (+) | G <-- nozzle (10,10)
- * T | | H
- * | (-) | T
- * | |
- * O-- FRONT --+
- * (0,0)
+ * +-- BACK ---+
+ * | |
+ * L | (+) P | R <-- probe (20,20)
+ * E | | I
+ * F | (-) N (+) | G <-- nozzle (10,10)
+ * T | | H
+ * | (-) | T
+ * | |
+ * O-- FRONT --+
+ * (0,0)
*/
#define X_PROBE_OFFSET_FROM_EXTRUDER 10 // X offset: -left +right [of the nozzle]
#define Y_PROBE_OFFSET_FROM_EXTRUDER 10 // Y offset: -front +behind [the nozzle]
@@ -2110,6 +2166,10 @@
#define NEOPIXEL_IS_SEQUENTIAL // Sequential display for temperature change - LED by LED. Disable to change all LEDs at once.
#define NEOPIXEL_BRIGHTNESS 127 // Initial brightness (0-255)
//#define NEOPIXEL_STARTUP_TEST // Cycle through colors at startup
+
+ // Use a single Neopixel LED for static (background) lighting
+ //#define NEOPIXEL_BKGD_LED_INDEX 0 // Index of the LED to use
+ //#define NEOPIXEL_BKGD_COLOR { 255, 255, 255, 0 } // R, G, B, W
#endif
/**
diff --git a/config/examples/Tronxy/X5S-2E/Configuration_adv.h b/config/examples/Tronxy/X5S-2E/Configuration_adv.h
index a876f31eb3..d0098289c8 100644
--- a/config/examples/Tronxy/X5S-2E/Configuration_adv.h
+++ b/config/examples/Tronxy/X5S-2E/Configuration_adv.h
@@ -382,10 +382,6 @@
#endif
#endif
-//===========================================================================
-//============================ Mechanical Settings ==========================
-//===========================================================================
-
// @section homing
// If you want endstops to stay on (by default) even when not homing
@@ -745,6 +741,7 @@
* A (A shifted) B (B shifted) IC
* Smoothie 0x2C (0x58) 0x2D (0x5A) MCP4451
* AZTEEG_X3_PRO 0x2C (0x58) 0x2E (0x5C) MCP4451
+ * AZTEEG_X5_MINI 0x2C (0x58) 0x2E (0x5C) MCP4451
* AZTEEG_X5_MINI_WIFI 0x58 0x5C MCP4451
* MIGHTYBOARD_REVE 0x2F (0x5E) MCP4018
*/
diff --git a/config/examples/Tronxy/X5S/Configuration.h b/config/examples/Tronxy/X5S/Configuration.h
index 1044b51526..c6ba3ca2bf 100644
--- a/config/examples/Tronxy/X5S/Configuration.h
+++ b/config/examples/Tronxy/X5S/Configuration.h
@@ -827,15 +827,71 @@
*/
//#define BLTOUCH
#if ENABLED(BLTOUCH)
- //#define BLTOUCH_DELAY 500 // Minimum Command delay (ms). Enable and increase if needed
+ /**
+ * Either: Use the defaults (recommended) or: For special purposes, use the following DEFINES
+ * Do not activate settings that the probe might not understand. Clones might misunderstand
+ * advanced commands.
+ *
+ * Note: If the probe is not deploying, check a "Cmd: Reset" and "Cmd: Self-Test" and then
+ * check the wiring of the BROWN, RED and ORANGE wires.
+ *
+ * Note: If the trigger signal of your probe is not being recognized, it has been very often
+ * because the BLACK and WHITE wires needed to be swapped. They are not "interchangeable"
+ * like they would be with a real switch. So please check the wiring first.
+ *
+ * Settings for all BLTouch and clone probes:
+ */
+
+ // Safety: The probe needs time to recognize the command.
+ // Minimum command delay (ms). Enable and increase if needed.
+ //#define BLTOUCH_DELAY 500
/**
- * BLTouch V3.0 and newer smart series
- * For genuine BLTouch 3.0 sensors. Clones may be confused by 3.0 command angles. YMMV.
- * If the pin trigger is not detected, first try swapping the black and white wires then toggle this.
+ * Settings for BLTOUCH Classic 1.2, 1.3 or BLTouch Smart 1.0, 2.0, 2.2, 3.0, 3.1, and most clones:
*/
- //#define BLTOUCH_FORCE_5V_MODE
-#endif
+
+ // Feature: Switch into SW mode after a deploy. It makes the output pulse longer. Can be useful
+ // in special cases, like noisy or filtered input configurations.
+ //#define BLTOUCH_FORCE_SW_MODE
+
+ /**
+ * Settings for BLTouch Smart 3.0 and 3.1
+ * Summary:
+ * - Voltage modes: 5V and OD (open drain - "logic voltage free") output modes
+ * - High-Speed mode
+ * - Disable LCD voltage options
+ */
+
+ /**
+ * Danger: Don't activate 5V mode unless attached to a 5V-tolerant controller!
+ * V3.0 or 3.1: Set default mode to 5V mode at Marlin startup.
+ * If disabled, OD mode is the hard-coded default on 3.0
+ * On startup, Marlin will compare its eeprom to this vale. If the selected mode
+ * differs, a mode set eeprom write will be completed at initialization.
+ * Use the option below to force an eeprom write to a V3.1 probe regardless.
+ */
+ //#define BLTOUCH_SET_5V_MODE
+
+ /**
+ * Safety: Activate if connecting a probe with an unknown voltage mode.
+ * V3.0: Set a probe into mode selected above at Marlin startup. Required for 5V mode on 3.0
+ * V3.1: Force a probe with unknown mode into selected mode at Marlin startup ( = Probe EEPROM write )
+ * To preserve the life of the probe, use this once then turn it off and re-flash.
+ */
+ //#define BLTOUCH_FORCE_MODE_SET
+
+ /**
+ * Use "HIGH SPEED" mode for probing.
+ * Danger: Disable if your probe sometimes fails. Only suitable for stable well-adjusted systems.
+ * This feature was designed for Delta's with very fast Z moves however higher speed cartesians may function
+ * If the machine cannot raise the probe fast enough after a trigger, it may enter a fault state.
+ */
+ //#define BLTOUCH_HS_MODE
+
+ // Safety: Enable voltage mode settings in the LCD menu.
+ //#define BLTOUCH_LCD_VOLTAGE_MENU
+
+#endif // BLTOUCH
// A probe that is deployed and stowed with a solenoid pin (SOL1_PIN)
//#define SOLENOID_PROBE
@@ -856,23 +912,23 @@
//
/**
- * Z Probe to nozzle (X,Y) offset, relative to (0, 0).
- * X and Y offsets must be integers.
+ * Z Probe to nozzle (X,Y) offset, relative to (0, 0).
+ * X and Y offsets must be integers.
*
- * In the following example the X and Y offsets are both positive:
- * #define X_PROBE_OFFSET_FROM_EXTRUDER 10
- * #define Y_PROBE_OFFSET_FROM_EXTRUDER 10
+ * In the following example the X and Y offsets are both positive:
+ * #define X_PROBE_OFFSET_FROM_EXTRUDER 10
+ * #define Y_PROBE_OFFSET_FROM_EXTRUDER 10
*
- * +-- BACK ---+
- * | |
- * L | (+) P | R <-- probe (20,20)
- * E | | I
- * F | (-) N (+) | G <-- nozzle (10,10)
- * T | | H
- * | (-) | T
- * | |
- * O-- FRONT --+
- * (0,0)
+ * +-- BACK ---+
+ * | |
+ * L | (+) P | R <-- probe (20,20)
+ * E | | I
+ * F | (-) N (+) | G <-- nozzle (10,10)
+ * T | | H
+ * | (-) | T
+ * | |
+ * O-- FRONT --+
+ * (0,0)
*/
#define X_PROBE_OFFSET_FROM_EXTRUDER -45 // X offset: -left +right [of the nozzle]
#define Y_PROBE_OFFSET_FROM_EXTRUDER -55 // Y offset: -front +behind [the nozzle]
@@ -2088,6 +2144,10 @@
#define NEOPIXEL_IS_SEQUENTIAL // Sequential display for temperature change - LED by LED. Disable to change all LEDs at once.
#define NEOPIXEL_BRIGHTNESS 127 // Initial brightness (0-255)
//#define NEOPIXEL_STARTUP_TEST // Cycle through colors at startup
+
+ // Use a single Neopixel LED for static (background) lighting
+ //#define NEOPIXEL_BKGD_LED_INDEX 0 // Index of the LED to use
+ //#define NEOPIXEL_BKGD_COLOR { 255, 255, 255, 0 } // R, G, B, W
#endif
/**
diff --git a/config/examples/Tronxy/XY100/Configuration.h b/config/examples/Tronxy/XY100/Configuration.h
index 1187f96610..025ec00f59 100644
--- a/config/examples/Tronxy/XY100/Configuration.h
+++ b/config/examples/Tronxy/XY100/Configuration.h
@@ -839,15 +839,71 @@
*/
//#define BLTOUCH
#if ENABLED(BLTOUCH)
- //#define BLTOUCH_DELAY 500 // Minimum Command delay (ms). Enable and increase if needed
+ /**
+ * Either: Use the defaults (recommended) or: For special purposes, use the following DEFINES
+ * Do not activate settings that the probe might not understand. Clones might misunderstand
+ * advanced commands.
+ *
+ * Note: If the probe is not deploying, check a "Cmd: Reset" and "Cmd: Self-Test" and then
+ * check the wiring of the BROWN, RED and ORANGE wires.
+ *
+ * Note: If the trigger signal of your probe is not being recognized, it has been very often
+ * because the BLACK and WHITE wires needed to be swapped. They are not "interchangeable"
+ * like they would be with a real switch. So please check the wiring first.
+ *
+ * Settings for all BLTouch and clone probes:
+ */
+
+ // Safety: The probe needs time to recognize the command.
+ // Minimum command delay (ms). Enable and increase if needed.
+ //#define BLTOUCH_DELAY 500
/**
- * BLTouch V3.0 and newer smart series
- * For genuine BLTouch 3.0 sensors. Clones may be confused by 3.0 command angles. YMMV.
- * If the pin trigger is not detected, first try swapping the black and white wires then toggle this.
+ * Settings for BLTOUCH Classic 1.2, 1.3 or BLTouch Smart 1.0, 2.0, 2.2, 3.0, 3.1, and most clones:
*/
- //#define BLTOUCH_FORCE_5V_MODE
-#endif
+
+ // Feature: Switch into SW mode after a deploy. It makes the output pulse longer. Can be useful
+ // in special cases, like noisy or filtered input configurations.
+ //#define BLTOUCH_FORCE_SW_MODE
+
+ /**
+ * Settings for BLTouch Smart 3.0 and 3.1
+ * Summary:
+ * - Voltage modes: 5V and OD (open drain - "logic voltage free") output modes
+ * - High-Speed mode
+ * - Disable LCD voltage options
+ */
+
+ /**
+ * Danger: Don't activate 5V mode unless attached to a 5V-tolerant controller!
+ * V3.0 or 3.1: Set default mode to 5V mode at Marlin startup.
+ * If disabled, OD mode is the hard-coded default on 3.0
+ * On startup, Marlin will compare its eeprom to this vale. If the selected mode
+ * differs, a mode set eeprom write will be completed at initialization.
+ * Use the option below to force an eeprom write to a V3.1 probe regardless.
+ */
+ //#define BLTOUCH_SET_5V_MODE
+
+ /**
+ * Safety: Activate if connecting a probe with an unknown voltage mode.
+ * V3.0: Set a probe into mode selected above at Marlin startup. Required for 5V mode on 3.0
+ * V3.1: Force a probe with unknown mode into selected mode at Marlin startup ( = Probe EEPROM write )
+ * To preserve the life of the probe, use this once then turn it off and re-flash.
+ */
+ //#define BLTOUCH_FORCE_MODE_SET
+
+ /**
+ * Use "HIGH SPEED" mode for probing.
+ * Danger: Disable if your probe sometimes fails. Only suitable for stable well-adjusted systems.
+ * This feature was designed for Delta's with very fast Z moves however higher speed cartesians may function
+ * If the machine cannot raise the probe fast enough after a trigger, it may enter a fault state.
+ */
+ //#define BLTOUCH_HS_MODE
+
+ // Safety: Enable voltage mode settings in the LCD menu.
+ //#define BLTOUCH_LCD_VOLTAGE_MENU
+
+#endif // BLTOUCH
// A probe that is deployed and stowed with a solenoid pin (SOL1_PIN)
//#define SOLENOID_PROBE
@@ -868,23 +924,23 @@
//
/**
- * Z Probe to nozzle (X,Y) offset, relative to (0, 0).
- * X and Y offsets must be integers.
+ * Z Probe to nozzle (X,Y) offset, relative to (0, 0).
+ * X and Y offsets must be integers.
*
- * In the following example the X and Y offsets are both positive:
- * #define X_PROBE_OFFSET_FROM_EXTRUDER 10
- * #define Y_PROBE_OFFSET_FROM_EXTRUDER 10
+ * In the following example the X and Y offsets are both positive:
+ * #define X_PROBE_OFFSET_FROM_EXTRUDER 10
+ * #define Y_PROBE_OFFSET_FROM_EXTRUDER 10
*
- * +-- BACK ---+
- * | |
- * L | (+) P | R <-- probe (20,20)
- * E | | I
- * F | (-) N (+) | G <-- nozzle (10,10)
- * T | | H
- * | (-) | T
- * | |
- * O-- FRONT --+
- * (0,0)
+ * +-- BACK ---+
+ * | |
+ * L | (+) P | R <-- probe (20,20)
+ * E | | I
+ * F | (-) N (+) | G <-- nozzle (10,10)
+ * T | | H
+ * | (-) | T
+ * | |
+ * O-- FRONT --+
+ * (0,0)
*/
#define X_PROBE_OFFSET_FROM_EXTRUDER 10 // X offset: -left +right [of the nozzle]
#define Y_PROBE_OFFSET_FROM_EXTRUDER 10 // Y offset: -front +behind [the nozzle]
@@ -2100,6 +2156,10 @@
#define NEOPIXEL_IS_SEQUENTIAL // Sequential display for temperature change - LED by LED. Disable to change all LEDs at once.
#define NEOPIXEL_BRIGHTNESS 127 // Initial brightness (0-255)
//#define NEOPIXEL_STARTUP_TEST // Cycle through colors at startup
+
+ // Use a single Neopixel LED for static (background) lighting
+ //#define NEOPIXEL_BKGD_LED_INDEX 0 // Index of the LED to use
+ //#define NEOPIXEL_BKGD_COLOR { 255, 255, 255, 0 } // R, G, B, W
#endif
/**
diff --git a/config/examples/UltiMachine/Archim1/Configuration.h b/config/examples/UltiMachine/Archim1/Configuration.h
index 86c476c392..e4beb53ea5 100644
--- a/config/examples/UltiMachine/Archim1/Configuration.h
+++ b/config/examples/UltiMachine/Archim1/Configuration.h
@@ -828,15 +828,71 @@
*/
//#define BLTOUCH
#if ENABLED(BLTOUCH)
- //#define BLTOUCH_DELAY 500 // Minimum Command delay (ms). Enable and increase if needed
+ /**
+ * Either: Use the defaults (recommended) or: For special purposes, use the following DEFINES
+ * Do not activate settings that the probe might not understand. Clones might misunderstand
+ * advanced commands.
+ *
+ * Note: If the probe is not deploying, check a "Cmd: Reset" and "Cmd: Self-Test" and then
+ * check the wiring of the BROWN, RED and ORANGE wires.
+ *
+ * Note: If the trigger signal of your probe is not being recognized, it has been very often
+ * because the BLACK and WHITE wires needed to be swapped. They are not "interchangeable"
+ * like they would be with a real switch. So please check the wiring first.
+ *
+ * Settings for all BLTouch and clone probes:
+ */
+
+ // Safety: The probe needs time to recognize the command.
+ // Minimum command delay (ms). Enable and increase if needed.
+ //#define BLTOUCH_DELAY 500
/**
- * BLTouch V3.0 and newer smart series
- * For genuine BLTouch 3.0 sensors. Clones may be confused by 3.0 command angles. YMMV.
- * If the pin trigger is not detected, first try swapping the black and white wires then toggle this.
+ * Settings for BLTOUCH Classic 1.2, 1.3 or BLTouch Smart 1.0, 2.0, 2.2, 3.0, 3.1, and most clones:
*/
- //#define BLTOUCH_FORCE_5V_MODE
-#endif
+
+ // Feature: Switch into SW mode after a deploy. It makes the output pulse longer. Can be useful
+ // in special cases, like noisy or filtered input configurations.
+ //#define BLTOUCH_FORCE_SW_MODE
+
+ /**
+ * Settings for BLTouch Smart 3.0 and 3.1
+ * Summary:
+ * - Voltage modes: 5V and OD (open drain - "logic voltage free") output modes
+ * - High-Speed mode
+ * - Disable LCD voltage options
+ */
+
+ /**
+ * Danger: Don't activate 5V mode unless attached to a 5V-tolerant controller!
+ * V3.0 or 3.1: Set default mode to 5V mode at Marlin startup.
+ * If disabled, OD mode is the hard-coded default on 3.0
+ * On startup, Marlin will compare its eeprom to this vale. If the selected mode
+ * differs, a mode set eeprom write will be completed at initialization.
+ * Use the option below to force an eeprom write to a V3.1 probe regardless.
+ */
+ //#define BLTOUCH_SET_5V_MODE
+
+ /**
+ * Safety: Activate if connecting a probe with an unknown voltage mode.
+ * V3.0: Set a probe into mode selected above at Marlin startup. Required for 5V mode on 3.0
+ * V3.1: Force a probe with unknown mode into selected mode at Marlin startup ( = Probe EEPROM write )
+ * To preserve the life of the probe, use this once then turn it off and re-flash.
+ */
+ //#define BLTOUCH_FORCE_MODE_SET
+
+ /**
+ * Use "HIGH SPEED" mode for probing.
+ * Danger: Disable if your probe sometimes fails. Only suitable for stable well-adjusted systems.
+ * This feature was designed for Delta's with very fast Z moves however higher speed cartesians may function
+ * If the machine cannot raise the probe fast enough after a trigger, it may enter a fault state.
+ */
+ //#define BLTOUCH_HS_MODE
+
+ // Safety: Enable voltage mode settings in the LCD menu.
+ //#define BLTOUCH_LCD_VOLTAGE_MENU
+
+#endif // BLTOUCH
// A probe that is deployed and stowed with a solenoid pin (SOL1_PIN)
//#define SOLENOID_PROBE
@@ -857,23 +913,23 @@
//
/**
- * Z Probe to nozzle (X,Y) offset, relative to (0, 0).
- * X and Y offsets must be integers.
+ * Z Probe to nozzle (X,Y) offset, relative to (0, 0).
+ * X and Y offsets must be integers.
*
- * In the following example the X and Y offsets are both positive:
- * #define X_PROBE_OFFSET_FROM_EXTRUDER 10
- * #define Y_PROBE_OFFSET_FROM_EXTRUDER 10
+ * In the following example the X and Y offsets are both positive:
+ * #define X_PROBE_OFFSET_FROM_EXTRUDER 10
+ * #define Y_PROBE_OFFSET_FROM_EXTRUDER 10
*
- * +-- BACK ---+
- * | |
- * L | (+) P | R <-- probe (20,20)
- * E | | I
- * F | (-) N (+) | G <-- nozzle (10,10)
- * T | | H
- * | (-) | T
- * | |
- * O-- FRONT --+
- * (0,0)
+ * +-- BACK ---+
+ * | |
+ * L | (+) P | R <-- probe (20,20)
+ * E | | I
+ * F | (-) N (+) | G <-- nozzle (10,10)
+ * T | | H
+ * | (-) | T
+ * | |
+ * O-- FRONT --+
+ * (0,0)
*/
#define X_PROBE_OFFSET_FROM_EXTRUDER 10 // X offset: -left +right [of the nozzle]
#define Y_PROBE_OFFSET_FROM_EXTRUDER 10 // Y offset: -front +behind [the nozzle]
@@ -2089,6 +2145,10 @@
#define NEOPIXEL_IS_SEQUENTIAL // Sequential display for temperature change - LED by LED. Disable to change all LEDs at once.
#define NEOPIXEL_BRIGHTNESS 127 // Initial brightness (0-255)
//#define NEOPIXEL_STARTUP_TEST // Cycle through colors at startup
+
+ // Use a single Neopixel LED for static (background) lighting
+ //#define NEOPIXEL_BKGD_LED_INDEX 0 // Index of the LED to use
+ //#define NEOPIXEL_BKGD_COLOR { 255, 255, 255, 0 } // R, G, B, W
#endif
/**
diff --git a/config/examples/UltiMachine/Archim1/Configuration_adv.h b/config/examples/UltiMachine/Archim1/Configuration_adv.h
index 8249046bf8..0a1b274ccc 100644
--- a/config/examples/UltiMachine/Archim1/Configuration_adv.h
+++ b/config/examples/UltiMachine/Archim1/Configuration_adv.h
@@ -382,10 +382,6 @@
#endif
#endif
-//===========================================================================
-//============================ Mechanical Settings ==========================
-//===========================================================================
-
// @section homing
// If you want endstops to stay on (by default) even when not homing
@@ -745,6 +741,7 @@
* A (A shifted) B (B shifted) IC
* Smoothie 0x2C (0x58) 0x2D (0x5A) MCP4451
* AZTEEG_X3_PRO 0x2C (0x58) 0x2E (0x5C) MCP4451
+ * AZTEEG_X5_MINI 0x2C (0x58) 0x2E (0x5C) MCP4451
* AZTEEG_X5_MINI_WIFI 0x58 0x5C MCP4451
* MIGHTYBOARD_REVE 0x2F (0x5E) MCP4018
*/
diff --git a/config/examples/UltiMachine/Archim2/Configuration.h b/config/examples/UltiMachine/Archim2/Configuration.h
index 53b4e36150..c4763f256a 100644
--- a/config/examples/UltiMachine/Archim2/Configuration.h
+++ b/config/examples/UltiMachine/Archim2/Configuration.h
@@ -828,15 +828,71 @@
*/
//#define BLTOUCH
#if ENABLED(BLTOUCH)
- //#define BLTOUCH_DELAY 500 // Minimum Command delay (ms). Enable and increase if needed
+ /**
+ * Either: Use the defaults (recommended) or: For special purposes, use the following DEFINES
+ * Do not activate settings that the probe might not understand. Clones might misunderstand
+ * advanced commands.
+ *
+ * Note: If the probe is not deploying, check a "Cmd: Reset" and "Cmd: Self-Test" and then
+ * check the wiring of the BROWN, RED and ORANGE wires.
+ *
+ * Note: If the trigger signal of your probe is not being recognized, it has been very often
+ * because the BLACK and WHITE wires needed to be swapped. They are not "interchangeable"
+ * like they would be with a real switch. So please check the wiring first.
+ *
+ * Settings for all BLTouch and clone probes:
+ */
+
+ // Safety: The probe needs time to recognize the command.
+ // Minimum command delay (ms). Enable and increase if needed.
+ //#define BLTOUCH_DELAY 500
/**
- * BLTouch V3.0 and newer smart series
- * For genuine BLTouch 3.0 sensors. Clones may be confused by 3.0 command angles. YMMV.
- * If the pin trigger is not detected, first try swapping the black and white wires then toggle this.
+ * Settings for BLTOUCH Classic 1.2, 1.3 or BLTouch Smart 1.0, 2.0, 2.2, 3.0, 3.1, and most clones:
*/
- //#define BLTOUCH_FORCE_5V_MODE
-#endif
+
+ // Feature: Switch into SW mode after a deploy. It makes the output pulse longer. Can be useful
+ // in special cases, like noisy or filtered input configurations.
+ //#define BLTOUCH_FORCE_SW_MODE
+
+ /**
+ * Settings for BLTouch Smart 3.0 and 3.1
+ * Summary:
+ * - Voltage modes: 5V and OD (open drain - "logic voltage free") output modes
+ * - High-Speed mode
+ * - Disable LCD voltage options
+ */
+
+ /**
+ * Danger: Don't activate 5V mode unless attached to a 5V-tolerant controller!
+ * V3.0 or 3.1: Set default mode to 5V mode at Marlin startup.
+ * If disabled, OD mode is the hard-coded default on 3.0
+ * On startup, Marlin will compare its eeprom to this vale. If the selected mode
+ * differs, a mode set eeprom write will be completed at initialization.
+ * Use the option below to force an eeprom write to a V3.1 probe regardless.
+ */
+ //#define BLTOUCH_SET_5V_MODE
+
+ /**
+ * Safety: Activate if connecting a probe with an unknown voltage mode.
+ * V3.0: Set a probe into mode selected above at Marlin startup. Required for 5V mode on 3.0
+ * V3.1: Force a probe with unknown mode into selected mode at Marlin startup ( = Probe EEPROM write )
+ * To preserve the life of the probe, use this once then turn it off and re-flash.
+ */
+ //#define BLTOUCH_FORCE_MODE_SET
+
+ /**
+ * Use "HIGH SPEED" mode for probing.
+ * Danger: Disable if your probe sometimes fails. Only suitable for stable well-adjusted systems.
+ * This feature was designed for Delta's with very fast Z moves however higher speed cartesians may function
+ * If the machine cannot raise the probe fast enough after a trigger, it may enter a fault state.
+ */
+ //#define BLTOUCH_HS_MODE
+
+ // Safety: Enable voltage mode settings in the LCD menu.
+ //#define BLTOUCH_LCD_VOLTAGE_MENU
+
+#endif // BLTOUCH
// A probe that is deployed and stowed with a solenoid pin (SOL1_PIN)
//#define SOLENOID_PROBE
@@ -857,23 +913,23 @@
//
/**
- * Z Probe to nozzle (X,Y) offset, relative to (0, 0).
- * X and Y offsets must be integers.
+ * Z Probe to nozzle (X,Y) offset, relative to (0, 0).
+ * X and Y offsets must be integers.
*
- * In the following example the X and Y offsets are both positive:
- * #define X_PROBE_OFFSET_FROM_EXTRUDER 10
- * #define Y_PROBE_OFFSET_FROM_EXTRUDER 10
+ * In the following example the X and Y offsets are both positive:
+ * #define X_PROBE_OFFSET_FROM_EXTRUDER 10
+ * #define Y_PROBE_OFFSET_FROM_EXTRUDER 10
*
- * +-- BACK ---+
- * | |
- * L | (+) P | R <-- probe (20,20)
- * E | | I
- * F | (-) N (+) | G <-- nozzle (10,10)
- * T | | H
- * | (-) | T
- * | |
- * O-- FRONT --+
- * (0,0)
+ * +-- BACK ---+
+ * | |
+ * L | (+) P | R <-- probe (20,20)
+ * E | | I
+ * F | (-) N (+) | G <-- nozzle (10,10)
+ * T | | H
+ * | (-) | T
+ * | |
+ * O-- FRONT --+
+ * (0,0)
*/
#define X_PROBE_OFFSET_FROM_EXTRUDER 10 // X offset: -left +right [of the nozzle]
#define Y_PROBE_OFFSET_FROM_EXTRUDER 10 // Y offset: -front +behind [the nozzle]
@@ -2089,6 +2145,10 @@
#define NEOPIXEL_IS_SEQUENTIAL // Sequential display for temperature change - LED by LED. Disable to change all LEDs at once.
#define NEOPIXEL_BRIGHTNESS 127 // Initial brightness (0-255)
//#define NEOPIXEL_STARTUP_TEST // Cycle through colors at startup
+
+ // Use a single Neopixel LED for static (background) lighting
+ //#define NEOPIXEL_BKGD_LED_INDEX 0 // Index of the LED to use
+ //#define NEOPIXEL_BKGD_COLOR { 255, 255, 255, 0 } // R, G, B, W
#endif
/**
diff --git a/config/examples/UltiMachine/Archim2/Configuration_adv.h b/config/examples/UltiMachine/Archim2/Configuration_adv.h
index 99515bf98f..3c607001cb 100644
--- a/config/examples/UltiMachine/Archim2/Configuration_adv.h
+++ b/config/examples/UltiMachine/Archim2/Configuration_adv.h
@@ -382,10 +382,6 @@
#endif
#endif
-//===========================================================================
-//============================ Mechanical Settings ==========================
-//===========================================================================
-
// @section homing
// If you want endstops to stay on (by default) even when not homing
@@ -745,6 +741,7 @@
* A (A shifted) B (B shifted) IC
* Smoothie 0x2C (0x58) 0x2D (0x5A) MCP4451
* AZTEEG_X3_PRO 0x2C (0x58) 0x2E (0x5C) MCP4451
+ * AZTEEG_X5_MINI 0x2C (0x58) 0x2E (0x5C) MCP4451
* AZTEEG_X5_MINI_WIFI 0x58 0x5C MCP4451
* MIGHTYBOARD_REVE 0x2F (0x5E) MCP4018
*/
diff --git a/config/examples/VORONDesign/Configuration.h b/config/examples/VORONDesign/Configuration.h
index 3007ab374b..d97c0ffe7c 100644
--- a/config/examples/VORONDesign/Configuration.h
+++ b/config/examples/VORONDesign/Configuration.h
@@ -837,15 +837,71 @@
*/
//#define BLTOUCH
#if ENABLED(BLTOUCH)
- //#define BLTOUCH_DELAY 500 // Minimum Command delay (ms). Enable and increase if needed
+ /**
+ * Either: Use the defaults (recommended) or: For special purposes, use the following DEFINES
+ * Do not activate settings that the probe might not understand. Clones might misunderstand
+ * advanced commands.
+ *
+ * Note: If the probe is not deploying, check a "Cmd: Reset" and "Cmd: Self-Test" and then
+ * check the wiring of the BROWN, RED and ORANGE wires.
+ *
+ * Note: If the trigger signal of your probe is not being recognized, it has been very often
+ * because the BLACK and WHITE wires needed to be swapped. They are not "interchangeable"
+ * like they would be with a real switch. So please check the wiring first.
+ *
+ * Settings for all BLTouch and clone probes:
+ */
+
+ // Safety: The probe needs time to recognize the command.
+ // Minimum command delay (ms). Enable and increase if needed.
+ //#define BLTOUCH_DELAY 500
/**
- * BLTouch V3.0 and newer smart series
- * For genuine BLTouch 3.0 sensors. Clones may be confused by 3.0 command angles. YMMV.
- * If the pin trigger is not detected, first try swapping the black and white wires then toggle this.
+ * Settings for BLTOUCH Classic 1.2, 1.3 or BLTouch Smart 1.0, 2.0, 2.2, 3.0, 3.1, and most clones:
*/
- //#define BLTOUCH_FORCE_5V_MODE
-#endif
+
+ // Feature: Switch into SW mode after a deploy. It makes the output pulse longer. Can be useful
+ // in special cases, like noisy or filtered input configurations.
+ //#define BLTOUCH_FORCE_SW_MODE
+
+ /**
+ * Settings for BLTouch Smart 3.0 and 3.1
+ * Summary:
+ * - Voltage modes: 5V and OD (open drain - "logic voltage free") output modes
+ * - High-Speed mode
+ * - Disable LCD voltage options
+ */
+
+ /**
+ * Danger: Don't activate 5V mode unless attached to a 5V-tolerant controller!
+ * V3.0 or 3.1: Set default mode to 5V mode at Marlin startup.
+ * If disabled, OD mode is the hard-coded default on 3.0
+ * On startup, Marlin will compare its eeprom to this vale. If the selected mode
+ * differs, a mode set eeprom write will be completed at initialization.
+ * Use the option below to force an eeprom write to a V3.1 probe regardless.
+ */
+ //#define BLTOUCH_SET_5V_MODE
+
+ /**
+ * Safety: Activate if connecting a probe with an unknown voltage mode.
+ * V3.0: Set a probe into mode selected above at Marlin startup. Required for 5V mode on 3.0
+ * V3.1: Force a probe with unknown mode into selected mode at Marlin startup ( = Probe EEPROM write )
+ * To preserve the life of the probe, use this once then turn it off and re-flash.
+ */
+ //#define BLTOUCH_FORCE_MODE_SET
+
+ /**
+ * Use "HIGH SPEED" mode for probing.
+ * Danger: Disable if your probe sometimes fails. Only suitable for stable well-adjusted systems.
+ * This feature was designed for Delta's with very fast Z moves however higher speed cartesians may function
+ * If the machine cannot raise the probe fast enough after a trigger, it may enter a fault state.
+ */
+ //#define BLTOUCH_HS_MODE
+
+ // Safety: Enable voltage mode settings in the LCD menu.
+ //#define BLTOUCH_LCD_VOLTAGE_MENU
+
+#endif // BLTOUCH
// A probe that is deployed and stowed with a solenoid pin (SOL1_PIN)
//#define SOLENOID_PROBE
@@ -866,23 +922,23 @@
//
/**
- * Z Probe to nozzle (X,Y) offset, relative to (0, 0).
- * X and Y offsets must be integers.
+ * Z Probe to nozzle (X,Y) offset, relative to (0, 0).
+ * X and Y offsets must be integers.
*
- * In the following example the X and Y offsets are both positive:
- * #define X_PROBE_OFFSET_FROM_EXTRUDER 10
- * #define Y_PROBE_OFFSET_FROM_EXTRUDER 10
+ * In the following example the X and Y offsets are both positive:
+ * #define X_PROBE_OFFSET_FROM_EXTRUDER 10
+ * #define Y_PROBE_OFFSET_FROM_EXTRUDER 10
*
- * +-- BACK ---+
- * | |
- * L | (+) P | R <-- probe (20,20)
- * E | | I
- * F | (-) N (+) | G <-- nozzle (10,10)
- * T | | H
- * | (-) | T
- * | |
- * O-- FRONT --+
- * (0,0)
+ * +-- BACK ---+
+ * | |
+ * L | (+) P | R <-- probe (20,20)
+ * E | | I
+ * F | (-) N (+) | G <-- nozzle (10,10)
+ * T | | H
+ * | (-) | T
+ * | |
+ * O-- FRONT --+
+ * (0,0)
*/
#define X_PROBE_OFFSET_FROM_EXTRUDER 0 // X offset: -left +right [of the nozzle]
#define Y_PROBE_OFFSET_FROM_EXTRUDER 0 // Y offset: -front +behind [the nozzle]
@@ -2098,6 +2154,10 @@
#define NEOPIXEL_IS_SEQUENTIAL // Sequential display for temperature change - LED by LED. Disable to change all LEDs at once.
#define NEOPIXEL_BRIGHTNESS 127 // Initial brightness (0-255)
//#define NEOPIXEL_STARTUP_TEST // Cycle through colors at startup
+
+ // Use a single Neopixel LED for static (background) lighting
+ //#define NEOPIXEL_BKGD_LED_INDEX 0 // Index of the LED to use
+ //#define NEOPIXEL_BKGD_COLOR { 255, 255, 255, 0 } // R, G, B, W
#endif
/**
diff --git a/config/examples/VORONDesign/Configuration_adv.h b/config/examples/VORONDesign/Configuration_adv.h
index 301c989859..53f56c8cf5 100644
--- a/config/examples/VORONDesign/Configuration_adv.h
+++ b/config/examples/VORONDesign/Configuration_adv.h
@@ -382,10 +382,6 @@
#endif
#endif
-//===========================================================================
-//============================ Mechanical Settings ==========================
-//===========================================================================
-
// @section homing
// If you want endstops to stay on (by default) even when not homing
@@ -745,6 +741,7 @@
* A (A shifted) B (B shifted) IC
* Smoothie 0x2C (0x58) 0x2D (0x5A) MCP4451
* AZTEEG_X3_PRO 0x2C (0x58) 0x2E (0x5C) MCP4451
+ * AZTEEG_X5_MINI 0x2C (0x58) 0x2E (0x5C) MCP4451
* AZTEEG_X5_MINI_WIFI 0x58 0x5C MCP4451
* MIGHTYBOARD_REVE 0x2F (0x5E) MCP4018
*/
diff --git a/config/examples/Velleman/K8200/Configuration.h b/config/examples/Velleman/K8200/Configuration.h
index 6ed9553330..ae1de59384 100644
--- a/config/examples/Velleman/K8200/Configuration.h
+++ b/config/examples/Velleman/K8200/Configuration.h
@@ -857,15 +857,71 @@
*/
//#define BLTOUCH
#if ENABLED(BLTOUCH)
- //#define BLTOUCH_DELAY 500 // Minimum Command delay (ms). Enable and increase if needed
+ /**
+ * Either: Use the defaults (recommended) or: For special purposes, use the following DEFINES
+ * Do not activate settings that the probe might not understand. Clones might misunderstand
+ * advanced commands.
+ *
+ * Note: If the probe is not deploying, check a "Cmd: Reset" and "Cmd: Self-Test" and then
+ * check the wiring of the BROWN, RED and ORANGE wires.
+ *
+ * Note: If the trigger signal of your probe is not being recognized, it has been very often
+ * because the BLACK and WHITE wires needed to be swapped. They are not "interchangeable"
+ * like they would be with a real switch. So please check the wiring first.
+ *
+ * Settings for all BLTouch and clone probes:
+ */
+
+ // Safety: The probe needs time to recognize the command.
+ // Minimum command delay (ms). Enable and increase if needed.
+ //#define BLTOUCH_DELAY 500
/**
- * BLTouch V3.0 and newer smart series
- * For genuine BLTouch 3.0 sensors. Clones may be confused by 3.0 command angles. YMMV.
- * If the pin trigger is not detected, first try swapping the black and white wires then toggle this.
+ * Settings for BLTOUCH Classic 1.2, 1.3 or BLTouch Smart 1.0, 2.0, 2.2, 3.0, 3.1, and most clones:
*/
- //#define BLTOUCH_FORCE_5V_MODE
-#endif
+
+ // Feature: Switch into SW mode after a deploy. It makes the output pulse longer. Can be useful
+ // in special cases, like noisy or filtered input configurations.
+ //#define BLTOUCH_FORCE_SW_MODE
+
+ /**
+ * Settings for BLTouch Smart 3.0 and 3.1
+ * Summary:
+ * - Voltage modes: 5V and OD (open drain - "logic voltage free") output modes
+ * - High-Speed mode
+ * - Disable LCD voltage options
+ */
+
+ /**
+ * Danger: Don't activate 5V mode unless attached to a 5V-tolerant controller!
+ * V3.0 or 3.1: Set default mode to 5V mode at Marlin startup.
+ * If disabled, OD mode is the hard-coded default on 3.0
+ * On startup, Marlin will compare its eeprom to this vale. If the selected mode
+ * differs, a mode set eeprom write will be completed at initialization.
+ * Use the option below to force an eeprom write to a V3.1 probe regardless.
+ */
+ //#define BLTOUCH_SET_5V_MODE
+
+ /**
+ * Safety: Activate if connecting a probe with an unknown voltage mode.
+ * V3.0: Set a probe into mode selected above at Marlin startup. Required for 5V mode on 3.0
+ * V3.1: Force a probe with unknown mode into selected mode at Marlin startup ( = Probe EEPROM write )
+ * To preserve the life of the probe, use this once then turn it off and re-flash.
+ */
+ //#define BLTOUCH_FORCE_MODE_SET
+
+ /**
+ * Use "HIGH SPEED" mode for probing.
+ * Danger: Disable if your probe sometimes fails. Only suitable for stable well-adjusted systems.
+ * This feature was designed for Delta's with very fast Z moves however higher speed cartesians may function
+ * If the machine cannot raise the probe fast enough after a trigger, it may enter a fault state.
+ */
+ //#define BLTOUCH_HS_MODE
+
+ // Safety: Enable voltage mode settings in the LCD menu.
+ //#define BLTOUCH_LCD_VOLTAGE_MENU
+
+#endif // BLTOUCH
// A probe that is deployed and stowed with a solenoid pin (SOL1_PIN)
//#define SOLENOID_PROBE
@@ -886,23 +942,23 @@
//
/**
- * Z Probe to nozzle (X,Y) offset, relative to (0, 0).
- * X and Y offsets must be integers.
+ * Z Probe to nozzle (X,Y) offset, relative to (0, 0).
+ * X and Y offsets must be integers.
*
- * In the following example the X and Y offsets are both positive:
- * #define X_PROBE_OFFSET_FROM_EXTRUDER 10
- * #define Y_PROBE_OFFSET_FROM_EXTRUDER 10
+ * In the following example the X and Y offsets are both positive:
+ * #define X_PROBE_OFFSET_FROM_EXTRUDER 10
+ * #define Y_PROBE_OFFSET_FROM_EXTRUDER 10
*
- * +-- BACK ---+
- * | |
- * L | (+) P | R <-- probe (20,20)
- * E | | I
- * F | (-) N (+) | G <-- nozzle (10,10)
- * T | | H
- * | (-) | T
- * | |
- * O-- FRONT --+
- * (0,0)
+ * +-- BACK ---+
+ * | |
+ * L | (+) P | R <-- probe (20,20)
+ * E | | I
+ * F | (-) N (+) | G <-- nozzle (10,10)
+ * T | | H
+ * | (-) | T
+ * | |
+ * O-- FRONT --+
+ * (0,0)
*/
#define X_PROBE_OFFSET_FROM_EXTRUDER 10 // X offset: -left +right [of the nozzle]
#define Y_PROBE_OFFSET_FROM_EXTRUDER 10 // Y offset: -front +behind [the nozzle]
@@ -2124,6 +2180,10 @@
#define NEOPIXEL_IS_SEQUENTIAL // Sequential display for temperature change - LED by LED. Disable to change all LEDs at once.
#define NEOPIXEL_BRIGHTNESS 127 // Initial brightness (0-255)
//#define NEOPIXEL_STARTUP_TEST // Cycle through colors at startup
+
+ // Use a single Neopixel LED for static (background) lighting
+ //#define NEOPIXEL_BKGD_LED_INDEX 0 // Index of the LED to use
+ //#define NEOPIXEL_BKGD_COLOR { 255, 255, 255, 0 } // R, G, B, W
#endif
/**
diff --git a/config/examples/Velleman/K8200/Configuration_adv.h b/config/examples/Velleman/K8200/Configuration_adv.h
index 3124c5b1cc..c77371268c 100644
--- a/config/examples/Velleman/K8200/Configuration_adv.h
+++ b/config/examples/Velleman/K8200/Configuration_adv.h
@@ -395,10 +395,6 @@
#endif
#endif
-//===========================================================================
-//============================ Mechanical Settings ==========================
-//===========================================================================
-
// @section homing
// If you want endstops to stay on (by default) even when not homing
@@ -758,6 +754,7 @@
* A (A shifted) B (B shifted) IC
* Smoothie 0x2C (0x58) 0x2D (0x5A) MCP4451
* AZTEEG_X3_PRO 0x2C (0x58) 0x2E (0x5C) MCP4451
+ * AZTEEG_X5_MINI 0x2C (0x58) 0x2E (0x5C) MCP4451
* AZTEEG_X5_MINI_WIFI 0x58 0x5C MCP4451
* MIGHTYBOARD_REVE 0x2F (0x5E) MCP4018
*/
diff --git a/config/examples/Velleman/K8400/Configuration.h b/config/examples/Velleman/K8400/Configuration.h
index 4eb6c5efb2..3c2a633d64 100644
--- a/config/examples/Velleman/K8400/Configuration.h
+++ b/config/examples/Velleman/K8400/Configuration.h
@@ -828,15 +828,71 @@
*/
//#define BLTOUCH
#if ENABLED(BLTOUCH)
- //#define BLTOUCH_DELAY 500 // Minimum Command delay (ms). Enable and increase if needed
+ /**
+ * Either: Use the defaults (recommended) or: For special purposes, use the following DEFINES
+ * Do not activate settings that the probe might not understand. Clones might misunderstand
+ * advanced commands.
+ *
+ * Note: If the probe is not deploying, check a "Cmd: Reset" and "Cmd: Self-Test" and then
+ * check the wiring of the BROWN, RED and ORANGE wires.
+ *
+ * Note: If the trigger signal of your probe is not being recognized, it has been very often
+ * because the BLACK and WHITE wires needed to be swapped. They are not "interchangeable"
+ * like they would be with a real switch. So please check the wiring first.
+ *
+ * Settings for all BLTouch and clone probes:
+ */
+
+ // Safety: The probe needs time to recognize the command.
+ // Minimum command delay (ms). Enable and increase if needed.
+ //#define BLTOUCH_DELAY 500
/**
- * BLTouch V3.0 and newer smart series
- * For genuine BLTouch 3.0 sensors. Clones may be confused by 3.0 command angles. YMMV.
- * If the pin trigger is not detected, first try swapping the black and white wires then toggle this.
+ * Settings for BLTOUCH Classic 1.2, 1.3 or BLTouch Smart 1.0, 2.0, 2.2, 3.0, 3.1, and most clones:
*/
- //#define BLTOUCH_FORCE_5V_MODE
-#endif
+
+ // Feature: Switch into SW mode after a deploy. It makes the output pulse longer. Can be useful
+ // in special cases, like noisy or filtered input configurations.
+ //#define BLTOUCH_FORCE_SW_MODE
+
+ /**
+ * Settings for BLTouch Smart 3.0 and 3.1
+ * Summary:
+ * - Voltage modes: 5V and OD (open drain - "logic voltage free") output modes
+ * - High-Speed mode
+ * - Disable LCD voltage options
+ */
+
+ /**
+ * Danger: Don't activate 5V mode unless attached to a 5V-tolerant controller!
+ * V3.0 or 3.1: Set default mode to 5V mode at Marlin startup.
+ * If disabled, OD mode is the hard-coded default on 3.0
+ * On startup, Marlin will compare its eeprom to this vale. If the selected mode
+ * differs, a mode set eeprom write will be completed at initialization.
+ * Use the option below to force an eeprom write to a V3.1 probe regardless.
+ */
+ //#define BLTOUCH_SET_5V_MODE
+
+ /**
+ * Safety: Activate if connecting a probe with an unknown voltage mode.
+ * V3.0: Set a probe into mode selected above at Marlin startup. Required for 5V mode on 3.0
+ * V3.1: Force a probe with unknown mode into selected mode at Marlin startup ( = Probe EEPROM write )
+ * To preserve the life of the probe, use this once then turn it off and re-flash.
+ */
+ //#define BLTOUCH_FORCE_MODE_SET
+
+ /**
+ * Use "HIGH SPEED" mode for probing.
+ * Danger: Disable if your probe sometimes fails. Only suitable for stable well-adjusted systems.
+ * This feature was designed for Delta's with very fast Z moves however higher speed cartesians may function
+ * If the machine cannot raise the probe fast enough after a trigger, it may enter a fault state.
+ */
+ //#define BLTOUCH_HS_MODE
+
+ // Safety: Enable voltage mode settings in the LCD menu.
+ //#define BLTOUCH_LCD_VOLTAGE_MENU
+
+#endif // BLTOUCH
// A probe that is deployed and stowed with a solenoid pin (SOL1_PIN)
//#define SOLENOID_PROBE
@@ -857,23 +913,23 @@
//
/**
- * Z Probe to nozzle (X,Y) offset, relative to (0, 0).
- * X and Y offsets must be integers.
+ * Z Probe to nozzle (X,Y) offset, relative to (0, 0).
+ * X and Y offsets must be integers.
*
- * In the following example the X and Y offsets are both positive:
- * #define X_PROBE_OFFSET_FROM_EXTRUDER 10
- * #define Y_PROBE_OFFSET_FROM_EXTRUDER 10
+ * In the following example the X and Y offsets are both positive:
+ * #define X_PROBE_OFFSET_FROM_EXTRUDER 10
+ * #define Y_PROBE_OFFSET_FROM_EXTRUDER 10
*
- * +-- BACK ---+
- * | |
- * L | (+) P | R <-- probe (20,20)
- * E | | I
- * F | (-) N (+) | G <-- nozzle (10,10)
- * T | | H
- * | (-) | T
- * | |
- * O-- FRONT --+
- * (0,0)
+ * +-- BACK ---+
+ * | |
+ * L | (+) P | R <-- probe (20,20)
+ * E | | I
+ * F | (-) N (+) | G <-- nozzle (10,10)
+ * T | | H
+ * | (-) | T
+ * | |
+ * O-- FRONT --+
+ * (0,0)
*/
#define X_PROBE_OFFSET_FROM_EXTRUDER 10 // X offset: -left +right [of the nozzle]
#define Y_PROBE_OFFSET_FROM_EXTRUDER 10 // Y offset: -front +behind [the nozzle]
@@ -2090,6 +2146,10 @@
#define NEOPIXEL_IS_SEQUENTIAL // Sequential display for temperature change - LED by LED. Disable to change all LEDs at once.
#define NEOPIXEL_BRIGHTNESS 127 // Initial brightness (0-255)
//#define NEOPIXEL_STARTUP_TEST // Cycle through colors at startup
+
+ // Use a single Neopixel LED for static (background) lighting
+ //#define NEOPIXEL_BKGD_LED_INDEX 0 // Index of the LED to use
+ //#define NEOPIXEL_BKGD_COLOR { 255, 255, 255, 0 } // R, G, B, W
#endif
/**
diff --git a/config/examples/Velleman/K8400/Configuration_adv.h b/config/examples/Velleman/K8400/Configuration_adv.h
index 51938770b5..526fbad123 100644
--- a/config/examples/Velleman/K8400/Configuration_adv.h
+++ b/config/examples/Velleman/K8400/Configuration_adv.h
@@ -382,10 +382,6 @@
#endif
#endif
-//===========================================================================
-//============================ Mechanical Settings ==========================
-//===========================================================================
-
// @section homing
// If you want endstops to stay on (by default) even when not homing
@@ -745,6 +741,7 @@
* A (A shifted) B (B shifted) IC
* Smoothie 0x2C (0x58) 0x2D (0x5A) MCP4451
* AZTEEG_X3_PRO 0x2C (0x58) 0x2E (0x5C) MCP4451
+ * AZTEEG_X5_MINI 0x2C (0x58) 0x2E (0x5C) MCP4451
* AZTEEG_X5_MINI_WIFI 0x58 0x5C MCP4451
* MIGHTYBOARD_REVE 0x2F (0x5E) MCP4018
*/
diff --git a/config/examples/Velleman/K8400/Dual-head/Configuration.h b/config/examples/Velleman/K8400/Dual-head/Configuration.h
index 3334cfb5b7..cc9d04a912 100644
--- a/config/examples/Velleman/K8400/Dual-head/Configuration.h
+++ b/config/examples/Velleman/K8400/Dual-head/Configuration.h
@@ -828,15 +828,71 @@
*/
//#define BLTOUCH
#if ENABLED(BLTOUCH)
- //#define BLTOUCH_DELAY 500 // Minimum Command delay (ms). Enable and increase if needed
+ /**
+ * Either: Use the defaults (recommended) or: For special purposes, use the following DEFINES
+ * Do not activate settings that the probe might not understand. Clones might misunderstand
+ * advanced commands.
+ *
+ * Note: If the probe is not deploying, check a "Cmd: Reset" and "Cmd: Self-Test" and then
+ * check the wiring of the BROWN, RED and ORANGE wires.
+ *
+ * Note: If the trigger signal of your probe is not being recognized, it has been very often
+ * because the BLACK and WHITE wires needed to be swapped. They are not "interchangeable"
+ * like they would be with a real switch. So please check the wiring first.
+ *
+ * Settings for all BLTouch and clone probes:
+ */
+
+ // Safety: The probe needs time to recognize the command.
+ // Minimum command delay (ms). Enable and increase if needed.
+ //#define BLTOUCH_DELAY 500
/**
- * BLTouch V3.0 and newer smart series
- * For genuine BLTouch 3.0 sensors. Clones may be confused by 3.0 command angles. YMMV.
- * If the pin trigger is not detected, first try swapping the black and white wires then toggle this.
+ * Settings for BLTOUCH Classic 1.2, 1.3 or BLTouch Smart 1.0, 2.0, 2.2, 3.0, 3.1, and most clones:
*/
- //#define BLTOUCH_FORCE_5V_MODE
-#endif
+
+ // Feature: Switch into SW mode after a deploy. It makes the output pulse longer. Can be useful
+ // in special cases, like noisy or filtered input configurations.
+ //#define BLTOUCH_FORCE_SW_MODE
+
+ /**
+ * Settings for BLTouch Smart 3.0 and 3.1
+ * Summary:
+ * - Voltage modes: 5V and OD (open drain - "logic voltage free") output modes
+ * - High-Speed mode
+ * - Disable LCD voltage options
+ */
+
+ /**
+ * Danger: Don't activate 5V mode unless attached to a 5V-tolerant controller!
+ * V3.0 or 3.1: Set default mode to 5V mode at Marlin startup.
+ * If disabled, OD mode is the hard-coded default on 3.0
+ * On startup, Marlin will compare its eeprom to this vale. If the selected mode
+ * differs, a mode set eeprom write will be completed at initialization.
+ * Use the option below to force an eeprom write to a V3.1 probe regardless.
+ */
+ //#define BLTOUCH_SET_5V_MODE
+
+ /**
+ * Safety: Activate if connecting a probe with an unknown voltage mode.
+ * V3.0: Set a probe into mode selected above at Marlin startup. Required for 5V mode on 3.0
+ * V3.1: Force a probe with unknown mode into selected mode at Marlin startup ( = Probe EEPROM write )
+ * To preserve the life of the probe, use this once then turn it off and re-flash.
+ */
+ //#define BLTOUCH_FORCE_MODE_SET
+
+ /**
+ * Use "HIGH SPEED" mode for probing.
+ * Danger: Disable if your probe sometimes fails. Only suitable for stable well-adjusted systems.
+ * This feature was designed for Delta's with very fast Z moves however higher speed cartesians may function
+ * If the machine cannot raise the probe fast enough after a trigger, it may enter a fault state.
+ */
+ //#define BLTOUCH_HS_MODE
+
+ // Safety: Enable voltage mode settings in the LCD menu.
+ //#define BLTOUCH_LCD_VOLTAGE_MENU
+
+#endif // BLTOUCH
// A probe that is deployed and stowed with a solenoid pin (SOL1_PIN)
//#define SOLENOID_PROBE
@@ -857,23 +913,23 @@
//
/**
- * Z Probe to nozzle (X,Y) offset, relative to (0, 0).
- * X and Y offsets must be integers.
+ * Z Probe to nozzle (X,Y) offset, relative to (0, 0).
+ * X and Y offsets must be integers.
*
- * In the following example the X and Y offsets are both positive:
- * #define X_PROBE_OFFSET_FROM_EXTRUDER 10
- * #define Y_PROBE_OFFSET_FROM_EXTRUDER 10
+ * In the following example the X and Y offsets are both positive:
+ * #define X_PROBE_OFFSET_FROM_EXTRUDER 10
+ * #define Y_PROBE_OFFSET_FROM_EXTRUDER 10
*
- * +-- BACK ---+
- * | |
- * L | (+) P | R <-- probe (20,20)
- * E | | I
- * F | (-) N (+) | G <-- nozzle (10,10)
- * T | | H
- * | (-) | T
- * | |
- * O-- FRONT --+
- * (0,0)
+ * +-- BACK ---+
+ * | |
+ * L | (+) P | R <-- probe (20,20)
+ * E | | I
+ * F | (-) N (+) | G <-- nozzle (10,10)
+ * T | | H
+ * | (-) | T
+ * | |
+ * O-- FRONT --+
+ * (0,0)
*/
#define X_PROBE_OFFSET_FROM_EXTRUDER 10 // X offset: -left +right [of the nozzle]
#define Y_PROBE_OFFSET_FROM_EXTRUDER 10 // Y offset: -front +behind [the nozzle]
@@ -2090,6 +2146,10 @@
#define NEOPIXEL_IS_SEQUENTIAL // Sequential display for temperature change - LED by LED. Disable to change all LEDs at once.
#define NEOPIXEL_BRIGHTNESS 127 // Initial brightness (0-255)
//#define NEOPIXEL_STARTUP_TEST // Cycle through colors at startup
+
+ // Use a single Neopixel LED for static (background) lighting
+ //#define NEOPIXEL_BKGD_LED_INDEX 0 // Index of the LED to use
+ //#define NEOPIXEL_BKGD_COLOR { 255, 255, 255, 0 } // R, G, B, W
#endif
/**
diff --git a/config/examples/WASP/PowerWASP/Configuration.h b/config/examples/WASP/PowerWASP/Configuration.h
index 44be26a90c..a0f6d3782e 100644
--- a/config/examples/WASP/PowerWASP/Configuration.h
+++ b/config/examples/WASP/PowerWASP/Configuration.h
@@ -847,15 +847,71 @@
*/
//#define BLTOUCH
#if ENABLED(BLTOUCH)
- //#define BLTOUCH_DELAY 500 // Minimum Command delay (ms). Enable and increase if needed
+ /**
+ * Either: Use the defaults (recommended) or: For special purposes, use the following DEFINES
+ * Do not activate settings that the probe might not understand. Clones might misunderstand
+ * advanced commands.
+ *
+ * Note: If the probe is not deploying, check a "Cmd: Reset" and "Cmd: Self-Test" and then
+ * check the wiring of the BROWN, RED and ORANGE wires.
+ *
+ * Note: If the trigger signal of your probe is not being recognized, it has been very often
+ * because the BLACK and WHITE wires needed to be swapped. They are not "interchangeable"
+ * like they would be with a real switch. So please check the wiring first.
+ *
+ * Settings for all BLTouch and clone probes:
+ */
+
+ // Safety: The probe needs time to recognize the command.
+ // Minimum command delay (ms). Enable and increase if needed.
+ //#define BLTOUCH_DELAY 500
/**
- * BLTouch V3.0 and newer smart series
- * For genuine BLTouch 3.0 sensors. Clones may be confused by 3.0 command angles. YMMV.
- * If the pin trigger is not detected, first try swapping the black and white wires then toggle this.
+ * Settings for BLTOUCH Classic 1.2, 1.3 or BLTouch Smart 1.0, 2.0, 2.2, 3.0, 3.1, and most clones:
*/
- //#define BLTOUCH_FORCE_5V_MODE
-#endif
+
+ // Feature: Switch into SW mode after a deploy. It makes the output pulse longer. Can be useful
+ // in special cases, like noisy or filtered input configurations.
+ //#define BLTOUCH_FORCE_SW_MODE
+
+ /**
+ * Settings for BLTouch Smart 3.0 and 3.1
+ * Summary:
+ * - Voltage modes: 5V and OD (open drain - "logic voltage free") output modes
+ * - High-Speed mode
+ * - Disable LCD voltage options
+ */
+
+ /**
+ * Danger: Don't activate 5V mode unless attached to a 5V-tolerant controller!
+ * V3.0 or 3.1: Set default mode to 5V mode at Marlin startup.
+ * If disabled, OD mode is the hard-coded default on 3.0
+ * On startup, Marlin will compare its eeprom to this vale. If the selected mode
+ * differs, a mode set eeprom write will be completed at initialization.
+ * Use the option below to force an eeprom write to a V3.1 probe regardless.
+ */
+ //#define BLTOUCH_SET_5V_MODE
+
+ /**
+ * Safety: Activate if connecting a probe with an unknown voltage mode.
+ * V3.0: Set a probe into mode selected above at Marlin startup. Required for 5V mode on 3.0
+ * V3.1: Force a probe with unknown mode into selected mode at Marlin startup ( = Probe EEPROM write )
+ * To preserve the life of the probe, use this once then turn it off and re-flash.
+ */
+ //#define BLTOUCH_FORCE_MODE_SET
+
+ /**
+ * Use "HIGH SPEED" mode for probing.
+ * Danger: Disable if your probe sometimes fails. Only suitable for stable well-adjusted systems.
+ * This feature was designed for Delta's with very fast Z moves however higher speed cartesians may function
+ * If the machine cannot raise the probe fast enough after a trigger, it may enter a fault state.
+ */
+ //#define BLTOUCH_HS_MODE
+
+ // Safety: Enable voltage mode settings in the LCD menu.
+ //#define BLTOUCH_LCD_VOLTAGE_MENU
+
+#endif // BLTOUCH
// A probe that is deployed and stowed with a solenoid pin (SOL1_PIN)
//#define SOLENOID_PROBE
@@ -876,23 +932,23 @@
//
/**
- * Z Probe to nozzle (X,Y) offset, relative to (0, 0).
- * X and Y offsets must be integers.
+ * Z Probe to nozzle (X,Y) offset, relative to (0, 0).
+ * X and Y offsets must be integers.
*
- * In the following example the X and Y offsets are both positive:
- * #define X_PROBE_OFFSET_FROM_EXTRUDER 10
- * #define Y_PROBE_OFFSET_FROM_EXTRUDER 10
+ * In the following example the X and Y offsets are both positive:
+ * #define X_PROBE_OFFSET_FROM_EXTRUDER 10
+ * #define Y_PROBE_OFFSET_FROM_EXTRUDER 10
*
- * +-- BACK ---+
- * | |
- * L | (+) P | R <-- probe (20,20)
- * E | | I
- * F | (-) N (+) | G <-- nozzle (10,10)
- * T | | H
- * | (-) | T
- * | |
- * O-- FRONT --+
- * (0,0)
+ * +-- BACK ---+
+ * | |
+ * L | (+) P | R <-- probe (20,20)
+ * E | | I
+ * F | (-) N (+) | G <-- nozzle (10,10)
+ * T | | H
+ * | (-) | T
+ * | |
+ * O-- FRONT --+
+ * (0,0)
*/
#define X_PROBE_OFFSET_FROM_EXTRUDER 10 // X offset: -left +right [of the nozzle]
#define Y_PROBE_OFFSET_FROM_EXTRUDER 10 // Y offset: -front +behind [the nozzle]
@@ -2108,6 +2164,10 @@
#define NEOPIXEL_IS_SEQUENTIAL // Sequential display for temperature change - LED by LED. Disable to change all LEDs at once.
#define NEOPIXEL_BRIGHTNESS 127 // Initial brightness (0-255)
//#define NEOPIXEL_STARTUP_TEST // Cycle through colors at startup
+
+ // Use a single Neopixel LED for static (background) lighting
+ //#define NEOPIXEL_BKGD_LED_INDEX 0 // Index of the LED to use
+ //#define NEOPIXEL_BKGD_COLOR { 255, 255, 255, 0 } // R, G, B, W
#endif
/**
diff --git a/config/examples/WASP/PowerWASP/Configuration_adv.h b/config/examples/WASP/PowerWASP/Configuration_adv.h
index ff4096699a..b345972ec8 100644
--- a/config/examples/WASP/PowerWASP/Configuration_adv.h
+++ b/config/examples/WASP/PowerWASP/Configuration_adv.h
@@ -382,10 +382,6 @@
#endif
#endif
-//===========================================================================
-//============================ Mechanical Settings ==========================
-//===========================================================================
-
// @section homing
// If you want endstops to stay on (by default) even when not homing
@@ -745,6 +741,7 @@
* A (A shifted) B (B shifted) IC
* Smoothie 0x2C (0x58) 0x2D (0x5A) MCP4451
* AZTEEG_X3_PRO 0x2C (0x58) 0x2E (0x5C) MCP4451
+ * AZTEEG_X5_MINI 0x2C (0x58) 0x2E (0x5C) MCP4451
* AZTEEG_X5_MINI_WIFI 0x58 0x5C MCP4451
* MIGHTYBOARD_REVE 0x2F (0x5E) MCP4018
*/
diff --git a/config/examples/Wanhao/Duplicator 6/Configuration.h b/config/examples/Wanhao/Duplicator 6/Configuration.h
index 1baf5e0608..1c94e69744 100644
--- a/config/examples/Wanhao/Duplicator 6/Configuration.h
+++ b/config/examples/Wanhao/Duplicator 6/Configuration.h
@@ -838,15 +838,71 @@
*/
//#define BLTOUCH
#if ENABLED(BLTOUCH)
- //#define BLTOUCH_DELAY 500 // Minimum Command delay (ms). Enable and increase if needed
+ /**
+ * Either: Use the defaults (recommended) or: For special purposes, use the following DEFINES
+ * Do not activate settings that the probe might not understand. Clones might misunderstand
+ * advanced commands.
+ *
+ * Note: If the probe is not deploying, check a "Cmd: Reset" and "Cmd: Self-Test" and then
+ * check the wiring of the BROWN, RED and ORANGE wires.
+ *
+ * Note: If the trigger signal of your probe is not being recognized, it has been very often
+ * because the BLACK and WHITE wires needed to be swapped. They are not "interchangeable"
+ * like they would be with a real switch. So please check the wiring first.
+ *
+ * Settings for all BLTouch and clone probes:
+ */
+
+ // Safety: The probe needs time to recognize the command.
+ // Minimum command delay (ms). Enable and increase if needed.
+ //#define BLTOUCH_DELAY 500
/**
- * BLTouch V3.0 and newer smart series
- * For genuine BLTouch 3.0 sensors. Clones may be confused by 3.0 command angles. YMMV.
- * If the pin trigger is not detected, first try swapping the black and white wires then toggle this.
+ * Settings for BLTOUCH Classic 1.2, 1.3 or BLTouch Smart 1.0, 2.0, 2.2, 3.0, 3.1, and most clones:
*/
- //#define BLTOUCH_FORCE_5V_MODE
-#endif
+
+ // Feature: Switch into SW mode after a deploy. It makes the output pulse longer. Can be useful
+ // in special cases, like noisy or filtered input configurations.
+ //#define BLTOUCH_FORCE_SW_MODE
+
+ /**
+ * Settings for BLTouch Smart 3.0 and 3.1
+ * Summary:
+ * - Voltage modes: 5V and OD (open drain - "logic voltage free") output modes
+ * - High-Speed mode
+ * - Disable LCD voltage options
+ */
+
+ /**
+ * Danger: Don't activate 5V mode unless attached to a 5V-tolerant controller!
+ * V3.0 or 3.1: Set default mode to 5V mode at Marlin startup.
+ * If disabled, OD mode is the hard-coded default on 3.0
+ * On startup, Marlin will compare its eeprom to this vale. If the selected mode
+ * differs, a mode set eeprom write will be completed at initialization.
+ * Use the option below to force an eeprom write to a V3.1 probe regardless.
+ */
+ //#define BLTOUCH_SET_5V_MODE
+
+ /**
+ * Safety: Activate if connecting a probe with an unknown voltage mode.
+ * V3.0: Set a probe into mode selected above at Marlin startup. Required for 5V mode on 3.0
+ * V3.1: Force a probe with unknown mode into selected mode at Marlin startup ( = Probe EEPROM write )
+ * To preserve the life of the probe, use this once then turn it off and re-flash.
+ */
+ //#define BLTOUCH_FORCE_MODE_SET
+
+ /**
+ * Use "HIGH SPEED" mode for probing.
+ * Danger: Disable if your probe sometimes fails. Only suitable for stable well-adjusted systems.
+ * This feature was designed for Delta's with very fast Z moves however higher speed cartesians may function
+ * If the machine cannot raise the probe fast enough after a trigger, it may enter a fault state.
+ */
+ //#define BLTOUCH_HS_MODE
+
+ // Safety: Enable voltage mode settings in the LCD menu.
+ //#define BLTOUCH_LCD_VOLTAGE_MENU
+
+#endif // BLTOUCH
// A probe that is deployed and stowed with a solenoid pin (SOL1_PIN)
//#define SOLENOID_PROBE
@@ -867,23 +923,23 @@
//
/**
- * Z Probe to nozzle (X,Y) offset, relative to (0, 0).
- * X and Y offsets must be integers.
+ * Z Probe to nozzle (X,Y) offset, relative to (0, 0).
+ * X and Y offsets must be integers.
*
- * In the following example the X and Y offsets are both positive:
- * #define X_PROBE_OFFSET_FROM_EXTRUDER 10
- * #define Y_PROBE_OFFSET_FROM_EXTRUDER 10
+ * In the following example the X and Y offsets are both positive:
+ * #define X_PROBE_OFFSET_FROM_EXTRUDER 10
+ * #define Y_PROBE_OFFSET_FROM_EXTRUDER 10
*
- * +-- BACK ---+
- * | |
- * L | (+) P | R <-- probe (20,20)
- * E | | I
- * F | (-) N (+) | G <-- nozzle (10,10)
- * T | | H
- * | (-) | T
- * | |
- * O-- FRONT --+
- * (0,0)
+ * +-- BACK ---+
+ * | |
+ * L | (+) P | R <-- probe (20,20)
+ * E | | I
+ * F | (-) N (+) | G <-- nozzle (10,10)
+ * T | | H
+ * | (-) | T
+ * | |
+ * O-- FRONT --+
+ * (0,0)
*/
#define X_PROBE_OFFSET_FROM_EXTRUDER 10 // X offset: -left +right [of the nozzle]
#define Y_PROBE_OFFSET_FROM_EXTRUDER 10 // Y offset: -front +behind [the nozzle]
@@ -2102,6 +2158,10 @@
#define NEOPIXEL_IS_SEQUENTIAL // Sequential display for temperature change - LED by LED. Disable to change all LEDs at once.
#define NEOPIXEL_BRIGHTNESS 127 // Initial brightness (0-255)
//#define NEOPIXEL_STARTUP_TEST // Cycle through colors at startup
+
+ // Use a single Neopixel LED for static (background) lighting
+ //#define NEOPIXEL_BKGD_LED_INDEX 0 // Index of the LED to use
+ //#define NEOPIXEL_BKGD_COLOR { 255, 255, 255, 0 } // R, G, B, W
#endif
/**
diff --git a/config/examples/Wanhao/Duplicator 6/Configuration_adv.h b/config/examples/Wanhao/Duplicator 6/Configuration_adv.h
index 17b98d56b9..0781d52906 100644
--- a/config/examples/Wanhao/Duplicator 6/Configuration_adv.h
+++ b/config/examples/Wanhao/Duplicator 6/Configuration_adv.h
@@ -382,10 +382,6 @@
#endif
#endif
-//===========================================================================
-//============================ Mechanical Settings ==========================
-//===========================================================================
-
// @section homing
// If you want endstops to stay on (by default) even when not homing
@@ -577,8 +573,11 @@
// @section lcd
-#if ENABLED(ULTIPANEL)
+#if EITHER(ULTIPANEL, EXTENSIBLE_UI)
#define MANUAL_FEEDRATE {70*60, 70*60, 15*60, 6*60} // Feedrates for manual moves along X, Y, Z, E from panel
+#endif
+
+#if ENABLED(ULTIPANEL)
#define MANUAL_E_MOVES_RELATIVE // Show LCD extruder moves as relative rather than absolute positions
#define ULTIPANEL_FEEDMULTIPLY // Comment to disable setting feedrate multiplier via encoder
#endif
@@ -744,6 +743,7 @@
* A (A shifted) B (B shifted) IC
* Smoothie 0x2C (0x58) 0x2D (0x5A) MCP4451
* AZTEEG_X3_PRO 0x2C (0x58) 0x2E (0x5C) MCP4451
+ * AZTEEG_X5_MINI 0x2C (0x58) 0x2E (0x5C) MCP4451
* AZTEEG_X5_MINI_WIFI 0x58 0x5C MCP4451
* MIGHTYBOARD_REVE 0x2F (0x5E) MCP4018
*/
diff --git a/config/examples/adafruit/ST7565/Configuration.h b/config/examples/adafruit/ST7565/Configuration.h
index 47e8d3565a..713e7c4f8e 100644
--- a/config/examples/adafruit/ST7565/Configuration.h
+++ b/config/examples/adafruit/ST7565/Configuration.h
@@ -828,15 +828,71 @@
*/
//#define BLTOUCH
#if ENABLED(BLTOUCH)
- //#define BLTOUCH_DELAY 500 // Minimum Command delay (ms). Enable and increase if needed
+ /**
+ * Either: Use the defaults (recommended) or: For special purposes, use the following DEFINES
+ * Do not activate settings that the probe might not understand. Clones might misunderstand
+ * advanced commands.
+ *
+ * Note: If the probe is not deploying, check a "Cmd: Reset" and "Cmd: Self-Test" and then
+ * check the wiring of the BROWN, RED and ORANGE wires.
+ *
+ * Note: If the trigger signal of your probe is not being recognized, it has been very often
+ * because the BLACK and WHITE wires needed to be swapped. They are not "interchangeable"
+ * like they would be with a real switch. So please check the wiring first.
+ *
+ * Settings for all BLTouch and clone probes:
+ */
+
+ // Safety: The probe needs time to recognize the command.
+ // Minimum command delay (ms). Enable and increase if needed.
+ //#define BLTOUCH_DELAY 500
/**
- * BLTouch V3.0 and newer smart series
- * For genuine BLTouch 3.0 sensors. Clones may be confused by 3.0 command angles. YMMV.
- * If the pin trigger is not detected, first try swapping the black and white wires then toggle this.
+ * Settings for BLTOUCH Classic 1.2, 1.3 or BLTouch Smart 1.0, 2.0, 2.2, 3.0, 3.1, and most clones:
*/
- //#define BLTOUCH_FORCE_5V_MODE
-#endif
+
+ // Feature: Switch into SW mode after a deploy. It makes the output pulse longer. Can be useful
+ // in special cases, like noisy or filtered input configurations.
+ //#define BLTOUCH_FORCE_SW_MODE
+
+ /**
+ * Settings for BLTouch Smart 3.0 and 3.1
+ * Summary:
+ * - Voltage modes: 5V and OD (open drain - "logic voltage free") output modes
+ * - High-Speed mode
+ * - Disable LCD voltage options
+ */
+
+ /**
+ * Danger: Don't activate 5V mode unless attached to a 5V-tolerant controller!
+ * V3.0 or 3.1: Set default mode to 5V mode at Marlin startup.
+ * If disabled, OD mode is the hard-coded default on 3.0
+ * On startup, Marlin will compare its eeprom to this vale. If the selected mode
+ * differs, a mode set eeprom write will be completed at initialization.
+ * Use the option below to force an eeprom write to a V3.1 probe regardless.
+ */
+ //#define BLTOUCH_SET_5V_MODE
+
+ /**
+ * Safety: Activate if connecting a probe with an unknown voltage mode.
+ * V3.0: Set a probe into mode selected above at Marlin startup. Required for 5V mode on 3.0
+ * V3.1: Force a probe with unknown mode into selected mode at Marlin startup ( = Probe EEPROM write )
+ * To preserve the life of the probe, use this once then turn it off and re-flash.
+ */
+ //#define BLTOUCH_FORCE_MODE_SET
+
+ /**
+ * Use "HIGH SPEED" mode for probing.
+ * Danger: Disable if your probe sometimes fails. Only suitable for stable well-adjusted systems.
+ * This feature was designed for Delta's with very fast Z moves however higher speed cartesians may function
+ * If the machine cannot raise the probe fast enough after a trigger, it may enter a fault state.
+ */
+ //#define BLTOUCH_HS_MODE
+
+ // Safety: Enable voltage mode settings in the LCD menu.
+ //#define BLTOUCH_LCD_VOLTAGE_MENU
+
+#endif // BLTOUCH
// A probe that is deployed and stowed with a solenoid pin (SOL1_PIN)
//#define SOLENOID_PROBE
@@ -857,23 +913,23 @@
//
/**
- * Z Probe to nozzle (X,Y) offset, relative to (0, 0).
- * X and Y offsets must be integers.
+ * Z Probe to nozzle (X,Y) offset, relative to (0, 0).
+ * X and Y offsets must be integers.
*
- * In the following example the X and Y offsets are both positive:
- * #define X_PROBE_OFFSET_FROM_EXTRUDER 10
- * #define Y_PROBE_OFFSET_FROM_EXTRUDER 10
+ * In the following example the X and Y offsets are both positive:
+ * #define X_PROBE_OFFSET_FROM_EXTRUDER 10
+ * #define Y_PROBE_OFFSET_FROM_EXTRUDER 10
*
- * +-- BACK ---+
- * | |
- * L | (+) P | R <-- probe (20,20)
- * E | | I
- * F | (-) N (+) | G <-- nozzle (10,10)
- * T | | H
- * | (-) | T
- * | |
- * O-- FRONT --+
- * (0,0)
+ * +-- BACK ---+
+ * | |
+ * L | (+) P | R <-- probe (20,20)
+ * E | | I
+ * F | (-) N (+) | G <-- nozzle (10,10)
+ * T | | H
+ * | (-) | T
+ * | |
+ * O-- FRONT --+
+ * (0,0)
*/
#define X_PROBE_OFFSET_FROM_EXTRUDER -25 // X offset: -left +right [of the nozzle]
#define Y_PROBE_OFFSET_FROM_EXTRUDER -29 // Y offset: -front +behind [the nozzle]
@@ -2089,6 +2145,10 @@
#define NEOPIXEL_IS_SEQUENTIAL // Sequential display for temperature change - LED by LED. Disable to change all LEDs at once.
#define NEOPIXEL_BRIGHTNESS 127 // Initial brightness (0-255)
//#define NEOPIXEL_STARTUP_TEST // Cycle through colors at startup
+
+ // Use a single Neopixel LED for static (background) lighting
+ //#define NEOPIXEL_BKGD_LED_INDEX 0 // Index of the LED to use
+ //#define NEOPIXEL_BKGD_COLOR { 255, 255, 255, 0 } // R, G, B, W
#endif
/**
diff --git a/config/examples/delta/Anycubic/Kossel/Configuration.h b/config/examples/delta/Anycubic/Kossel/Configuration.h
index 3b0006240f..c1c4d553a4 100644
--- a/config/examples/delta/Anycubic/Kossel/Configuration.h
+++ b/config/examples/delta/Anycubic/Kossel/Configuration.h
@@ -964,15 +964,71 @@
*/
//#define BLTOUCH
#if ENABLED(BLTOUCH)
- //#define BLTOUCH_DELAY 500 // Minimum Command delay (ms). Enable and increase if needed
+ /**
+ * Either: Use the defaults (recommended) or: For special purposes, use the following DEFINES
+ * Do not activate settings that the probe might not understand. Clones might misunderstand
+ * advanced commands.
+ *
+ * Note: If the probe is not deploying, check a "Cmd: Reset" and "Cmd: Self-Test" and then
+ * check the wiring of the BROWN, RED and ORANGE wires.
+ *
+ * Note: If the trigger signal of your probe is not being recognized, it has been very often
+ * because the BLACK and WHITE wires needed to be swapped. They are not "interchangeable"
+ * like they would be with a real switch. So please check the wiring first.
+ *
+ * Settings for all BLTouch and clone probes:
+ */
+
+ // Safety: The probe needs time to recognize the command.
+ // Minimum command delay (ms). Enable and increase if needed.
+ //#define BLTOUCH_DELAY 500
/**
- * BLTouch V3.0 and newer smart series
- * For genuine BLTouch 3.0 sensors. Clones may be confused by 3.0 command angles. YMMV.
- * If the pin trigger is not detected, first try swapping the black and white wires then toggle this.
+ * Settings for BLTOUCH Classic 1.2, 1.3 or BLTouch Smart 1.0, 2.0, 2.2, 3.0, 3.1, and most clones:
*/
- //#define BLTOUCH_FORCE_5V_MODE
-#endif
+
+ // Feature: Switch into SW mode after a deploy. It makes the output pulse longer. Can be useful
+ // in special cases, like noisy or filtered input configurations.
+ //#define BLTOUCH_FORCE_SW_MODE
+
+ /**
+ * Settings for BLTouch Smart 3.0 and 3.1
+ * Summary:
+ * - Voltage modes: 5V and OD (open drain - "logic voltage free") output modes
+ * - High-Speed mode
+ * - Disable LCD voltage options
+ */
+
+ /**
+ * Danger: Don't activate 5V mode unless attached to a 5V-tolerant controller!
+ * V3.0 or 3.1: Set default mode to 5V mode at Marlin startup.
+ * If disabled, OD mode is the hard-coded default on 3.0
+ * On startup, Marlin will compare its eeprom to this vale. If the selected mode
+ * differs, a mode set eeprom write will be completed at initialization.
+ * Use the option below to force an eeprom write to a V3.1 probe regardless.
+ */
+ //#define BLTOUCH_SET_5V_MODE
+
+ /**
+ * Safety: Activate if connecting a probe with an unknown voltage mode.
+ * V3.0: Set a probe into mode selected above at Marlin startup. Required for 5V mode on 3.0
+ * V3.1: Force a probe with unknown mode into selected mode at Marlin startup ( = Probe EEPROM write )
+ * To preserve the life of the probe, use this once then turn it off and re-flash.
+ */
+ //#define BLTOUCH_FORCE_MODE_SET
+
+ /**
+ * Use "HIGH SPEED" mode for probing.
+ * Danger: Disable if your probe sometimes fails. Only suitable for stable well-adjusted systems.
+ * This feature was designed for Delta's with very fast Z moves however higher speed cartesians may function
+ * If the machine cannot raise the probe fast enough after a trigger, it may enter a fault state.
+ */
+ //#define BLTOUCH_HS_MODE
+
+ // Safety: Enable voltage mode settings in the LCD menu.
+ //#define BLTOUCH_LCD_VOLTAGE_MENU
+
+#endif // BLTOUCH
// A probe that is deployed and stowed with a solenoid pin (SOL1_PIN)
//#define SOLENOID_PROBE
@@ -1036,23 +1092,23 @@
#endif // Z_PROBE_ALLEN_KEY
/**
- * Z Probe to nozzle (X,Y) offset, relative to (0, 0).
- * X and Y offsets must be integers.
+ * Z Probe to nozzle (X,Y) offset, relative to (0, 0).
+ * X and Y offsets must be integers.
*
- * In the following example the X and Y offsets are both positive:
- * #define X_PROBE_OFFSET_FROM_EXTRUDER 10
- * #define Y_PROBE_OFFSET_FROM_EXTRUDER 10
+ * In the following example the X and Y offsets are both positive:
+ * #define X_PROBE_OFFSET_FROM_EXTRUDER 10
+ * #define Y_PROBE_OFFSET_FROM_EXTRUDER 10
*
- * +-- BACK ---+
- * | |
- * L | (+) P | R <-- probe (20,20)
- * E | | I
- * F | (-) N (+) | G <-- nozzle (10,10)
- * T | | H
- * | (-) | T
- * | |
- * O-- FRONT --+
- * (0,0)
+ * +-- BACK ---+
+ * | |
+ * L | (+) P | R <-- probe (20,20)
+ * E | | I
+ * F | (-) N (+) | G <-- nozzle (10,10)
+ * T | | H
+ * | (-) | T
+ * | |
+ * O-- FRONT --+
+ * (0,0)
*/
#define X_PROBE_OFFSET_FROM_EXTRUDER 0 // X offset: -left +right [of the nozzle]
#define Y_PROBE_OFFSET_FROM_EXTRUDER 0 // Y offset: -front +behind [the nozzle]
@@ -2276,6 +2332,10 @@
#define NEOPIXEL_IS_SEQUENTIAL // Sequential display for temperature change - LED by LED. Disable to change all LEDs at once.
#define NEOPIXEL_BRIGHTNESS 127 // Initial brightness (0-255)
//#define NEOPIXEL_STARTUP_TEST // Cycle through colors at startup
+
+ // Use a single Neopixel LED for static (background) lighting
+ //#define NEOPIXEL_BKGD_LED_INDEX 0 // Index of the LED to use
+ //#define NEOPIXEL_BKGD_COLOR { 255, 255, 255, 0 } // R, G, B, W
#endif
/**
diff --git a/config/examples/delta/Anycubic/Kossel/Configuration_adv.h b/config/examples/delta/Anycubic/Kossel/Configuration_adv.h
index 12feb146d8..d9b6b12831 100644
--- a/config/examples/delta/Anycubic/Kossel/Configuration_adv.h
+++ b/config/examples/delta/Anycubic/Kossel/Configuration_adv.h
@@ -382,10 +382,6 @@
#endif
#endif
-//===========================================================================
-//============================ Mechanical Settings ==========================
-//===========================================================================
-
// @section homing
// If you want endstops to stay on (by default) even when not homing
@@ -744,6 +740,7 @@
* A (A shifted) B (B shifted) IC
* Smoothie 0x2C (0x58) 0x2D (0x5A) MCP4451
* AZTEEG_X3_PRO 0x2C (0x58) 0x2E (0x5C) MCP4451
+ * AZTEEG_X5_MINI 0x2C (0x58) 0x2E (0x5C) MCP4451
* AZTEEG_X5_MINI_WIFI 0x58 0x5C MCP4451
* MIGHTYBOARD_REVE 0x2F (0x5E) MCP4018
*/
diff --git a/config/examples/delta/FLSUN/auto_calibrate/Configuration.h b/config/examples/delta/FLSUN/auto_calibrate/Configuration.h
index c69412b498..f2e52f2529 100644
--- a/config/examples/delta/FLSUN/auto_calibrate/Configuration.h
+++ b/config/examples/delta/FLSUN/auto_calibrate/Configuration.h
@@ -910,15 +910,71 @@
*/
//#define BLTOUCH
#if ENABLED(BLTOUCH)
- //#define BLTOUCH_DELAY 500 // Minimum Command delay (ms). Enable and increase if needed
+ /**
+ * Either: Use the defaults (recommended) or: For special purposes, use the following DEFINES
+ * Do not activate settings that the probe might not understand. Clones might misunderstand
+ * advanced commands.
+ *
+ * Note: If the probe is not deploying, check a "Cmd: Reset" and "Cmd: Self-Test" and then
+ * check the wiring of the BROWN, RED and ORANGE wires.
+ *
+ * Note: If the trigger signal of your probe is not being recognized, it has been very often
+ * because the BLACK and WHITE wires needed to be swapped. They are not "interchangeable"
+ * like they would be with a real switch. So please check the wiring first.
+ *
+ * Settings for all BLTouch and clone probes:
+ */
+
+ // Safety: The probe needs time to recognize the command.
+ // Minimum command delay (ms). Enable and increase if needed.
+ //#define BLTOUCH_DELAY 500
/**
- * BLTouch V3.0 and newer smart series
- * For genuine BLTouch 3.0 sensors. Clones may be confused by 3.0 command angles. YMMV.
- * If the pin trigger is not detected, first try swapping the black and white wires then toggle this.
+ * Settings for BLTOUCH Classic 1.2, 1.3 or BLTouch Smart 1.0, 2.0, 2.2, 3.0, 3.1, and most clones:
*/
- //#define BLTOUCH_FORCE_5V_MODE
-#endif
+
+ // Feature: Switch into SW mode after a deploy. It makes the output pulse longer. Can be useful
+ // in special cases, like noisy or filtered input configurations.
+ //#define BLTOUCH_FORCE_SW_MODE
+
+ /**
+ * Settings for BLTouch Smart 3.0 and 3.1
+ * Summary:
+ * - Voltage modes: 5V and OD (open drain - "logic voltage free") output modes
+ * - High-Speed mode
+ * - Disable LCD voltage options
+ */
+
+ /**
+ * Danger: Don't activate 5V mode unless attached to a 5V-tolerant controller!
+ * V3.0 or 3.1: Set default mode to 5V mode at Marlin startup.
+ * If disabled, OD mode is the hard-coded default on 3.0
+ * On startup, Marlin will compare its eeprom to this vale. If the selected mode
+ * differs, a mode set eeprom write will be completed at initialization.
+ * Use the option below to force an eeprom write to a V3.1 probe regardless.
+ */
+ //#define BLTOUCH_SET_5V_MODE
+
+ /**
+ * Safety: Activate if connecting a probe with an unknown voltage mode.
+ * V3.0: Set a probe into mode selected above at Marlin startup. Required for 5V mode on 3.0
+ * V3.1: Force a probe with unknown mode into selected mode at Marlin startup ( = Probe EEPROM write )
+ * To preserve the life of the probe, use this once then turn it off and re-flash.
+ */
+ //#define BLTOUCH_FORCE_MODE_SET
+
+ /**
+ * Use "HIGH SPEED" mode for probing.
+ * Danger: Disable if your probe sometimes fails. Only suitable for stable well-adjusted systems.
+ * This feature was designed for Delta's with very fast Z moves however higher speed cartesians may function
+ * If the machine cannot raise the probe fast enough after a trigger, it may enter a fault state.
+ */
+ //#define BLTOUCH_HS_MODE
+
+ // Safety: Enable voltage mode settings in the LCD menu.
+ //#define BLTOUCH_LCD_VOLTAGE_MENU
+
+#endif // BLTOUCH
// A probe that is deployed and stowed with a solenoid pin (SOL1_PIN)
//#define SOLENOID_PROBE
@@ -985,23 +1041,23 @@
#endif // Z_PROBE_ALLEN_KEY
/**
- * Z Probe to nozzle (X,Y) offset, relative to (0, 0).
- * X and Y offsets must be integers.
+ * Z Probe to nozzle (X,Y) offset, relative to (0, 0).
+ * X and Y offsets must be integers.
*
- * In the following example the X and Y offsets are both positive:
- * #define X_PROBE_OFFSET_FROM_EXTRUDER 10
- * #define Y_PROBE_OFFSET_FROM_EXTRUDER 10
+ * In the following example the X and Y offsets are both positive:
+ * #define X_PROBE_OFFSET_FROM_EXTRUDER 10
+ * #define Y_PROBE_OFFSET_FROM_EXTRUDER 10
*
- * +-- BACK ---+
- * | |
- * L | (+) P | R <-- probe (20,20)
- * E | | I
- * F | (-) N (+) | G <-- nozzle (10,10)
- * T | | H
- * | (-) | T
- * | |
- * O-- FRONT --+
- * (0,0)
+ * +-- BACK ---+
+ * | |
+ * L | (+) P | R <-- probe (20,20)
+ * E | | I
+ * F | (-) N (+) | G <-- nozzle (10,10)
+ * T | | H
+ * | (-) | T
+ * | |
+ * O-- FRONT --+
+ * (0,0)
*/
#define X_PROBE_OFFSET_FROM_EXTRUDER 0 // X offset: -left +right [of the nozzle]
#define Y_PROBE_OFFSET_FROM_EXTRUDER 0 // Y offset: -front +behind [the nozzle]
@@ -2217,6 +2273,10 @@
#define NEOPIXEL_IS_SEQUENTIAL // Sequential display for temperature change - LED by LED. Disable to change all LEDs at once.
#define NEOPIXEL_BRIGHTNESS 127 // Initial brightness (0-255)
//#define NEOPIXEL_STARTUP_TEST // Cycle through colors at startup
+
+ // Use a single Neopixel LED for static (background) lighting
+ //#define NEOPIXEL_BKGD_LED_INDEX 0 // Index of the LED to use
+ //#define NEOPIXEL_BKGD_COLOR { 255, 255, 255, 0 } // R, G, B, W
#endif
/**
diff --git a/config/examples/delta/FLSUN/auto_calibrate/Configuration_adv.h b/config/examples/delta/FLSUN/auto_calibrate/Configuration_adv.h
index 1e22594afc..6a98f5967e 100644
--- a/config/examples/delta/FLSUN/auto_calibrate/Configuration_adv.h
+++ b/config/examples/delta/FLSUN/auto_calibrate/Configuration_adv.h
@@ -382,10 +382,6 @@
#endif
#endif
-//===========================================================================
-//============================ Mechanical Settings ==========================
-//===========================================================================
-
// @section homing
// If you want endstops to stay on (by default) even when not homing
@@ -744,6 +740,7 @@
* A (A shifted) B (B shifted) IC
* Smoothie 0x2C (0x58) 0x2D (0x5A) MCP4451
* AZTEEG_X3_PRO 0x2C (0x58) 0x2E (0x5C) MCP4451
+ * AZTEEG_X5_MINI 0x2C (0x58) 0x2E (0x5C) MCP4451
* AZTEEG_X5_MINI_WIFI 0x58 0x5C MCP4451
* MIGHTYBOARD_REVE 0x2F (0x5E) MCP4018
*/
diff --git a/config/examples/delta/FLSUN/kossel/Configuration.h b/config/examples/delta/FLSUN/kossel/Configuration.h
index b21b374aef..5e1abe90c5 100644
--- a/config/examples/delta/FLSUN/kossel/Configuration.h
+++ b/config/examples/delta/FLSUN/kossel/Configuration.h
@@ -910,15 +910,71 @@
*/
//#define BLTOUCH
#if ENABLED(BLTOUCH)
- //#define BLTOUCH_DELAY 500 // Minimum Command delay (ms). Enable and increase if needed
+ /**
+ * Either: Use the defaults (recommended) or: For special purposes, use the following DEFINES
+ * Do not activate settings that the probe might not understand. Clones might misunderstand
+ * advanced commands.
+ *
+ * Note: If the probe is not deploying, check a "Cmd: Reset" and "Cmd: Self-Test" and then
+ * check the wiring of the BROWN, RED and ORANGE wires.
+ *
+ * Note: If the trigger signal of your probe is not being recognized, it has been very often
+ * because the BLACK and WHITE wires needed to be swapped. They are not "interchangeable"
+ * like they would be with a real switch. So please check the wiring first.
+ *
+ * Settings for all BLTouch and clone probes:
+ */
+
+ // Safety: The probe needs time to recognize the command.
+ // Minimum command delay (ms). Enable and increase if needed.
+ //#define BLTOUCH_DELAY 500
/**
- * BLTouch V3.0 and newer smart series
- * For genuine BLTouch 3.0 sensors. Clones may be confused by 3.0 command angles. YMMV.
- * If the pin trigger is not detected, first try swapping the black and white wires then toggle this.
+ * Settings for BLTOUCH Classic 1.2, 1.3 or BLTouch Smart 1.0, 2.0, 2.2, 3.0, 3.1, and most clones:
*/
- //#define BLTOUCH_FORCE_5V_MODE
-#endif
+
+ // Feature: Switch into SW mode after a deploy. It makes the output pulse longer. Can be useful
+ // in special cases, like noisy or filtered input configurations.
+ //#define BLTOUCH_FORCE_SW_MODE
+
+ /**
+ * Settings for BLTouch Smart 3.0 and 3.1
+ * Summary:
+ * - Voltage modes: 5V and OD (open drain - "logic voltage free") output modes
+ * - High-Speed mode
+ * - Disable LCD voltage options
+ */
+
+ /**
+ * Danger: Don't activate 5V mode unless attached to a 5V-tolerant controller!
+ * V3.0 or 3.1: Set default mode to 5V mode at Marlin startup.
+ * If disabled, OD mode is the hard-coded default on 3.0
+ * On startup, Marlin will compare its eeprom to this vale. If the selected mode
+ * differs, a mode set eeprom write will be completed at initialization.
+ * Use the option below to force an eeprom write to a V3.1 probe regardless.
+ */
+ //#define BLTOUCH_SET_5V_MODE
+
+ /**
+ * Safety: Activate if connecting a probe with an unknown voltage mode.
+ * V3.0: Set a probe into mode selected above at Marlin startup. Required for 5V mode on 3.0
+ * V3.1: Force a probe with unknown mode into selected mode at Marlin startup ( = Probe EEPROM write )
+ * To preserve the life of the probe, use this once then turn it off and re-flash.
+ */
+ //#define BLTOUCH_FORCE_MODE_SET
+
+ /**
+ * Use "HIGH SPEED" mode for probing.
+ * Danger: Disable if your probe sometimes fails. Only suitable for stable well-adjusted systems.
+ * This feature was designed for Delta's with very fast Z moves however higher speed cartesians may function
+ * If the machine cannot raise the probe fast enough after a trigger, it may enter a fault state.
+ */
+ //#define BLTOUCH_HS_MODE
+
+ // Safety: Enable voltage mode settings in the LCD menu.
+ //#define BLTOUCH_LCD_VOLTAGE_MENU
+
+#endif // BLTOUCH
// A probe that is deployed and stowed with a solenoid pin (SOL1_PIN)
//#define SOLENOID_PROBE
@@ -984,23 +1040,23 @@
#endif // Z_PROBE_ALLEN_KEY
/**
- * Z Probe to nozzle (X,Y) offset, relative to (0, 0).
- * X and Y offsets must be integers.
+ * Z Probe to nozzle (X,Y) offset, relative to (0, 0).
+ * X and Y offsets must be integers.
*
- * In the following example the X and Y offsets are both positive:
- * #define X_PROBE_OFFSET_FROM_EXTRUDER 10
- * #define Y_PROBE_OFFSET_FROM_EXTRUDER 10
+ * In the following example the X and Y offsets are both positive:
+ * #define X_PROBE_OFFSET_FROM_EXTRUDER 10
+ * #define Y_PROBE_OFFSET_FROM_EXTRUDER 10
*
- * +-- BACK ---+
- * | |
- * L | (+) P | R <-- probe (20,20)
- * E | | I
- * F | (-) N (+) | G <-- nozzle (10,10)
- * T | | H
- * | (-) | T
- * | |
- * O-- FRONT --+
- * (0,0)
+ * +-- BACK ---+
+ * | |
+ * L | (+) P | R <-- probe (20,20)
+ * E | | I
+ * F | (-) N (+) | G <-- nozzle (10,10)
+ * T | | H
+ * | (-) | T
+ * | |
+ * O-- FRONT --+
+ * (0,0)
*/
#define X_PROBE_OFFSET_FROM_EXTRUDER 0 // X offset: -left +right [of the nozzle]
#define Y_PROBE_OFFSET_FROM_EXTRUDER 0 // Y offset: -front +behind [the nozzle]
@@ -2216,6 +2272,10 @@
#define NEOPIXEL_IS_SEQUENTIAL // Sequential display for temperature change - LED by LED. Disable to change all LEDs at once.
#define NEOPIXEL_BRIGHTNESS 127 // Initial brightness (0-255)
//#define NEOPIXEL_STARTUP_TEST // Cycle through colors at startup
+
+ // Use a single Neopixel LED for static (background) lighting
+ //#define NEOPIXEL_BKGD_LED_INDEX 0 // Index of the LED to use
+ //#define NEOPIXEL_BKGD_COLOR { 255, 255, 255, 0 } // R, G, B, W
#endif
/**
diff --git a/config/examples/delta/FLSUN/kossel/Configuration_adv.h b/config/examples/delta/FLSUN/kossel/Configuration_adv.h
index 1e22594afc..6a98f5967e 100644
--- a/config/examples/delta/FLSUN/kossel/Configuration_adv.h
+++ b/config/examples/delta/FLSUN/kossel/Configuration_adv.h
@@ -382,10 +382,6 @@
#endif
#endif
-//===========================================================================
-//============================ Mechanical Settings ==========================
-//===========================================================================
-
// @section homing
// If you want endstops to stay on (by default) even when not homing
@@ -744,6 +740,7 @@
* A (A shifted) B (B shifted) IC
* Smoothie 0x2C (0x58) 0x2D (0x5A) MCP4451
* AZTEEG_X3_PRO 0x2C (0x58) 0x2E (0x5C) MCP4451
+ * AZTEEG_X5_MINI 0x2C (0x58) 0x2E (0x5C) MCP4451
* AZTEEG_X5_MINI_WIFI 0x58 0x5C MCP4451
* MIGHTYBOARD_REVE 0x2F (0x5E) MCP4018
*/
diff --git a/config/examples/delta/FLSUN/kossel_mini/Configuration.h b/config/examples/delta/FLSUN/kossel_mini/Configuration.h
index 81ae7f6828..b956be5a9f 100644
--- a/config/examples/delta/FLSUN/kossel_mini/Configuration.h
+++ b/config/examples/delta/FLSUN/kossel_mini/Configuration.h
@@ -910,15 +910,71 @@
*/
//#define BLTOUCH
#if ENABLED(BLTOUCH)
- //#define BLTOUCH_DELAY 500 // Minimum Command delay (ms). Enable and increase if needed
+ /**
+ * Either: Use the defaults (recommended) or: For special purposes, use the following DEFINES
+ * Do not activate settings that the probe might not understand. Clones might misunderstand
+ * advanced commands.
+ *
+ * Note: If the probe is not deploying, check a "Cmd: Reset" and "Cmd: Self-Test" and then
+ * check the wiring of the BROWN, RED and ORANGE wires.
+ *
+ * Note: If the trigger signal of your probe is not being recognized, it has been very often
+ * because the BLACK and WHITE wires needed to be swapped. They are not "interchangeable"
+ * like they would be with a real switch. So please check the wiring first.
+ *
+ * Settings for all BLTouch and clone probes:
+ */
+
+ // Safety: The probe needs time to recognize the command.
+ // Minimum command delay (ms). Enable and increase if needed.
+ //#define BLTOUCH_DELAY 500
/**
- * BLTouch V3.0 and newer smart series
- * For genuine BLTouch 3.0 sensors. Clones may be confused by 3.0 command angles. YMMV.
- * If the pin trigger is not detected, first try swapping the black and white wires then toggle this.
+ * Settings for BLTOUCH Classic 1.2, 1.3 or BLTouch Smart 1.0, 2.0, 2.2, 3.0, 3.1, and most clones:
*/
- //#define BLTOUCH_FORCE_5V_MODE
-#endif
+
+ // Feature: Switch into SW mode after a deploy. It makes the output pulse longer. Can be useful
+ // in special cases, like noisy or filtered input configurations.
+ //#define BLTOUCH_FORCE_SW_MODE
+
+ /**
+ * Settings for BLTouch Smart 3.0 and 3.1
+ * Summary:
+ * - Voltage modes: 5V and OD (open drain - "logic voltage free") output modes
+ * - High-Speed mode
+ * - Disable LCD voltage options
+ */
+
+ /**
+ * Danger: Don't activate 5V mode unless attached to a 5V-tolerant controller!
+ * V3.0 or 3.1: Set default mode to 5V mode at Marlin startup.
+ * If disabled, OD mode is the hard-coded default on 3.0
+ * On startup, Marlin will compare its eeprom to this vale. If the selected mode
+ * differs, a mode set eeprom write will be completed at initialization.
+ * Use the option below to force an eeprom write to a V3.1 probe regardless.
+ */
+ //#define BLTOUCH_SET_5V_MODE
+
+ /**
+ * Safety: Activate if connecting a probe with an unknown voltage mode.
+ * V3.0: Set a probe into mode selected above at Marlin startup. Required for 5V mode on 3.0
+ * V3.1: Force a probe with unknown mode into selected mode at Marlin startup ( = Probe EEPROM write )
+ * To preserve the life of the probe, use this once then turn it off and re-flash.
+ */
+ //#define BLTOUCH_FORCE_MODE_SET
+
+ /**
+ * Use "HIGH SPEED" mode for probing.
+ * Danger: Disable if your probe sometimes fails. Only suitable for stable well-adjusted systems.
+ * This feature was designed for Delta's with very fast Z moves however higher speed cartesians may function
+ * If the machine cannot raise the probe fast enough after a trigger, it may enter a fault state.
+ */
+ //#define BLTOUCH_HS_MODE
+
+ // Safety: Enable voltage mode settings in the LCD menu.
+ //#define BLTOUCH_LCD_VOLTAGE_MENU
+
+#endif // BLTOUCH
// A probe that is deployed and stowed with a solenoid pin (SOL1_PIN)
//#define SOLENOID_PROBE
@@ -984,23 +1040,23 @@
#endif // Z_PROBE_ALLEN_KEY
/**
- * Z Probe to nozzle (X,Y) offset, relative to (0, 0).
- * X and Y offsets must be integers.
+ * Z Probe to nozzle (X,Y) offset, relative to (0, 0).
+ * X and Y offsets must be integers.
*
- * In the following example the X and Y offsets are both positive:
- * #define X_PROBE_OFFSET_FROM_EXTRUDER 10
- * #define Y_PROBE_OFFSET_FROM_EXTRUDER 10
+ * In the following example the X and Y offsets are both positive:
+ * #define X_PROBE_OFFSET_FROM_EXTRUDER 10
+ * #define Y_PROBE_OFFSET_FROM_EXTRUDER 10
*
- * +-- BACK ---+
- * | |
- * L | (+) P | R <-- probe (20,20)
- * E | | I
- * F | (-) N (+) | G <-- nozzle (10,10)
- * T | | H
- * | (-) | T
- * | |
- * O-- FRONT --+
- * (0,0)
+ * +-- BACK ---+
+ * | |
+ * L | (+) P | R <-- probe (20,20)
+ * E | | I
+ * F | (-) N (+) | G <-- nozzle (10,10)
+ * T | | H
+ * | (-) | T
+ * | |
+ * O-- FRONT --+
+ * (0,0)
*/
#define X_PROBE_OFFSET_FROM_EXTRUDER 0 // X offset: -left +right [of the nozzle]
#define Y_PROBE_OFFSET_FROM_EXTRUDER 0 // Y offset: -front +behind [the nozzle]
@@ -2216,6 +2272,10 @@
#define NEOPIXEL_IS_SEQUENTIAL // Sequential display for temperature change - LED by LED. Disable to change all LEDs at once.
#define NEOPIXEL_BRIGHTNESS 127 // Initial brightness (0-255)
//#define NEOPIXEL_STARTUP_TEST // Cycle through colors at startup
+
+ // Use a single Neopixel LED for static (background) lighting
+ //#define NEOPIXEL_BKGD_LED_INDEX 0 // Index of the LED to use
+ //#define NEOPIXEL_BKGD_COLOR { 255, 255, 255, 0 } // R, G, B, W
#endif
/**
diff --git a/config/examples/delta/FLSUN/kossel_mini/Configuration_adv.h b/config/examples/delta/FLSUN/kossel_mini/Configuration_adv.h
index e0487a9f9b..8ca43673fb 100644
--- a/config/examples/delta/FLSUN/kossel_mini/Configuration_adv.h
+++ b/config/examples/delta/FLSUN/kossel_mini/Configuration_adv.h
@@ -382,10 +382,6 @@
#endif
#endif
-//===========================================================================
-//============================ Mechanical Settings ==========================
-//===========================================================================
-
// @section homing
// If you want endstops to stay on (by default) even when not homing
@@ -744,6 +740,7 @@
* A (A shifted) B (B shifted) IC
* Smoothie 0x2C (0x58) 0x2D (0x5A) MCP4451
* AZTEEG_X3_PRO 0x2C (0x58) 0x2E (0x5C) MCP4451
+ * AZTEEG_X5_MINI 0x2C (0x58) 0x2E (0x5C) MCP4451
* AZTEEG_X5_MINI_WIFI 0x58 0x5C MCP4451
* MIGHTYBOARD_REVE 0x2F (0x5E) MCP4018
*/
diff --git a/config/examples/delta/Geeetech/Rostock 301/Configuration.h b/config/examples/delta/Geeetech/Rostock 301/Configuration.h
index 6eef6ee49b..703b9ffac1 100644
--- a/config/examples/delta/Geeetech/Rostock 301/Configuration.h
+++ b/config/examples/delta/Geeetech/Rostock 301/Configuration.h
@@ -900,15 +900,71 @@
*/
//#define BLTOUCH
#if ENABLED(BLTOUCH)
- //#define BLTOUCH_DELAY 500 // Minimum Command delay (ms). Enable and increase if needed
+ /**
+ * Either: Use the defaults (recommended) or: For special purposes, use the following DEFINES
+ * Do not activate settings that the probe might not understand. Clones might misunderstand
+ * advanced commands.
+ *
+ * Note: If the probe is not deploying, check a "Cmd: Reset" and "Cmd: Self-Test" and then
+ * check the wiring of the BROWN, RED and ORANGE wires.
+ *
+ * Note: If the trigger signal of your probe is not being recognized, it has been very often
+ * because the BLACK and WHITE wires needed to be swapped. They are not "interchangeable"
+ * like they would be with a real switch. So please check the wiring first.
+ *
+ * Settings for all BLTouch and clone probes:
+ */
+
+ // Safety: The probe needs time to recognize the command.
+ // Minimum command delay (ms). Enable and increase if needed.
+ //#define BLTOUCH_DELAY 500
/**
- * BLTouch V3.0 and newer smart series
- * For genuine BLTouch 3.0 sensors. Clones may be confused by 3.0 command angles. YMMV.
- * If the pin trigger is not detected, first try swapping the black and white wires then toggle this.
+ * Settings for BLTOUCH Classic 1.2, 1.3 or BLTouch Smart 1.0, 2.0, 2.2, 3.0, 3.1, and most clones:
*/
- //#define BLTOUCH_FORCE_5V_MODE
-#endif
+
+ // Feature: Switch into SW mode after a deploy. It makes the output pulse longer. Can be useful
+ // in special cases, like noisy or filtered input configurations.
+ //#define BLTOUCH_FORCE_SW_MODE
+
+ /**
+ * Settings for BLTouch Smart 3.0 and 3.1
+ * Summary:
+ * - Voltage modes: 5V and OD (open drain - "logic voltage free") output modes
+ * - High-Speed mode
+ * - Disable LCD voltage options
+ */
+
+ /**
+ * Danger: Don't activate 5V mode unless attached to a 5V-tolerant controller!
+ * V3.0 or 3.1: Set default mode to 5V mode at Marlin startup.
+ * If disabled, OD mode is the hard-coded default on 3.0
+ * On startup, Marlin will compare its eeprom to this vale. If the selected mode
+ * differs, a mode set eeprom write will be completed at initialization.
+ * Use the option below to force an eeprom write to a V3.1 probe regardless.
+ */
+ //#define BLTOUCH_SET_5V_MODE
+
+ /**
+ * Safety: Activate if connecting a probe with an unknown voltage mode.
+ * V3.0: Set a probe into mode selected above at Marlin startup. Required for 5V mode on 3.0
+ * V3.1: Force a probe with unknown mode into selected mode at Marlin startup ( = Probe EEPROM write )
+ * To preserve the life of the probe, use this once then turn it off and re-flash.
+ */
+ //#define BLTOUCH_FORCE_MODE_SET
+
+ /**
+ * Use "HIGH SPEED" mode for probing.
+ * Danger: Disable if your probe sometimes fails. Only suitable for stable well-adjusted systems.
+ * This feature was designed for Delta's with very fast Z moves however higher speed cartesians may function
+ * If the machine cannot raise the probe fast enough after a trigger, it may enter a fault state.
+ */
+ //#define BLTOUCH_HS_MODE
+
+ // Safety: Enable voltage mode settings in the LCD menu.
+ //#define BLTOUCH_LCD_VOLTAGE_MENU
+
+#endif // BLTOUCH
// A probe that is deployed and stowed with a solenoid pin (SOL1_PIN)
//#define SOLENOID_PROBE
@@ -972,23 +1028,23 @@
#endif // Z_PROBE_ALLEN_KEY
/**
- * Z Probe to nozzle (X,Y) offset, relative to (0, 0).
- * X and Y offsets must be integers.
+ * Z Probe to nozzle (X,Y) offset, relative to (0, 0).
+ * X and Y offsets must be integers.
*
- * In the following example the X and Y offsets are both positive:
- * #define X_PROBE_OFFSET_FROM_EXTRUDER 10
- * #define Y_PROBE_OFFSET_FROM_EXTRUDER 10
+ * In the following example the X and Y offsets are both positive:
+ * #define X_PROBE_OFFSET_FROM_EXTRUDER 10
+ * #define Y_PROBE_OFFSET_FROM_EXTRUDER 10
*
- * +-- BACK ---+
- * | |
- * L | (+) P | R <-- probe (20,20)
- * E | | I
- * F | (-) N (+) | G <-- nozzle (10,10)
- * T | | H
- * | (-) | T
- * | |
- * O-- FRONT --+
- * (0,0)
+ * +-- BACK ---+
+ * | |
+ * L | (+) P | R <-- probe (20,20)
+ * E | | I
+ * F | (-) N (+) | G <-- nozzle (10,10)
+ * T | | H
+ * | (-) | T
+ * | |
+ * O-- FRONT --+
+ * (0,0)
*/
#define X_PROBE_OFFSET_FROM_EXTRUDER 0 // X offset: -left +right [of the nozzle]
#define Y_PROBE_OFFSET_FROM_EXTRUDER -10 // Y offset: -front +behind [the nozzle]
@@ -2204,6 +2260,10 @@
#define NEOPIXEL_IS_SEQUENTIAL // Sequential display for temperature change - LED by LED. Disable to change all LEDs at once.
#define NEOPIXEL_BRIGHTNESS 127 // Initial brightness (0-255)
//#define NEOPIXEL_STARTUP_TEST // Cycle through colors at startup
+
+ // Use a single Neopixel LED for static (background) lighting
+ //#define NEOPIXEL_BKGD_LED_INDEX 0 // Index of the LED to use
+ //#define NEOPIXEL_BKGD_COLOR { 255, 255, 255, 0 } // R, G, B, W
#endif
/**
diff --git a/config/examples/delta/Geeetech/Rostock 301/Configuration_adv.h b/config/examples/delta/Geeetech/Rostock 301/Configuration_adv.h
index e0487a9f9b..8ca43673fb 100644
--- a/config/examples/delta/Geeetech/Rostock 301/Configuration_adv.h
+++ b/config/examples/delta/Geeetech/Rostock 301/Configuration_adv.h
@@ -382,10 +382,6 @@
#endif
#endif
-//===========================================================================
-//============================ Mechanical Settings ==========================
-//===========================================================================
-
// @section homing
// If you want endstops to stay on (by default) even when not homing
@@ -744,6 +740,7 @@
* A (A shifted) B (B shifted) IC
* Smoothie 0x2C (0x58) 0x2D (0x5A) MCP4451
* AZTEEG_X3_PRO 0x2C (0x58) 0x2E (0x5C) MCP4451
+ * AZTEEG_X5_MINI 0x2C (0x58) 0x2E (0x5C) MCP4451
* AZTEEG_X5_MINI_WIFI 0x58 0x5C MCP4451
* MIGHTYBOARD_REVE 0x2F (0x5E) MCP4018
*/
diff --git a/config/examples/delta/Hatchbox_Alpha/Configuration.h b/config/examples/delta/Hatchbox_Alpha/Configuration.h
index fc1da056bc..1c7983f247 100644
--- a/config/examples/delta/Hatchbox_Alpha/Configuration.h
+++ b/config/examples/delta/Hatchbox_Alpha/Configuration.h
@@ -915,15 +915,71 @@
*/
//#define BLTOUCH
#if ENABLED(BLTOUCH)
- //#define BLTOUCH_DELAY 500 // Minimum Command delay (ms). Enable and increase if needed
+ /**
+ * Either: Use the defaults (recommended) or: For special purposes, use the following DEFINES
+ * Do not activate settings that the probe might not understand. Clones might misunderstand
+ * advanced commands.
+ *
+ * Note: If the probe is not deploying, check a "Cmd: Reset" and "Cmd: Self-Test" and then
+ * check the wiring of the BROWN, RED and ORANGE wires.
+ *
+ * Note: If the trigger signal of your probe is not being recognized, it has been very often
+ * because the BLACK and WHITE wires needed to be swapped. They are not "interchangeable"
+ * like they would be with a real switch. So please check the wiring first.
+ *
+ * Settings for all BLTouch and clone probes:
+ */
+
+ // Safety: The probe needs time to recognize the command.
+ // Minimum command delay (ms). Enable and increase if needed.
+ //#define BLTOUCH_DELAY 500
/**
- * BLTouch V3.0 and newer smart series
- * For genuine BLTouch 3.0 sensors. Clones may be confused by 3.0 command angles. YMMV.
- * If the pin trigger is not detected, first try swapping the black and white wires then toggle this.
+ * Settings for BLTOUCH Classic 1.2, 1.3 or BLTouch Smart 1.0, 2.0, 2.2, 3.0, 3.1, and most clones:
*/
- //#define BLTOUCH_FORCE_5V_MODE
-#endif
+
+ // Feature: Switch into SW mode after a deploy. It makes the output pulse longer. Can be useful
+ // in special cases, like noisy or filtered input configurations.
+ //#define BLTOUCH_FORCE_SW_MODE
+
+ /**
+ * Settings for BLTouch Smart 3.0 and 3.1
+ * Summary:
+ * - Voltage modes: 5V and OD (open drain - "logic voltage free") output modes
+ * - High-Speed mode
+ * - Disable LCD voltage options
+ */
+
+ /**
+ * Danger: Don't activate 5V mode unless attached to a 5V-tolerant controller!
+ * V3.0 or 3.1: Set default mode to 5V mode at Marlin startup.
+ * If disabled, OD mode is the hard-coded default on 3.0
+ * On startup, Marlin will compare its eeprom to this vale. If the selected mode
+ * differs, a mode set eeprom write will be completed at initialization.
+ * Use the option below to force an eeprom write to a V3.1 probe regardless.
+ */
+ //#define BLTOUCH_SET_5V_MODE
+
+ /**
+ * Safety: Activate if connecting a probe with an unknown voltage mode.
+ * V3.0: Set a probe into mode selected above at Marlin startup. Required for 5V mode on 3.0
+ * V3.1: Force a probe with unknown mode into selected mode at Marlin startup ( = Probe EEPROM write )
+ * To preserve the life of the probe, use this once then turn it off and re-flash.
+ */
+ //#define BLTOUCH_FORCE_MODE_SET
+
+ /**
+ * Use "HIGH SPEED" mode for probing.
+ * Danger: Disable if your probe sometimes fails. Only suitable for stable well-adjusted systems.
+ * This feature was designed for Delta's with very fast Z moves however higher speed cartesians may function
+ * If the machine cannot raise the probe fast enough after a trigger, it may enter a fault state.
+ */
+ //#define BLTOUCH_HS_MODE
+
+ // Safety: Enable voltage mode settings in the LCD menu.
+ //#define BLTOUCH_LCD_VOLTAGE_MENU
+
+#endif // BLTOUCH
// A probe that is deployed and stowed with a solenoid pin (SOL1_PIN)
//#define SOLENOID_PROBE
@@ -987,23 +1043,23 @@
#endif // Z_PROBE_ALLEN_KEY
/**
- * Z Probe to nozzle (X,Y) offset, relative to (0, 0).
- * X and Y offsets must be integers.
+ * Z Probe to nozzle (X,Y) offset, relative to (0, 0).
+ * X and Y offsets must be integers.
*
- * In the following example the X and Y offsets are both positive:
- * #define X_PROBE_OFFSET_FROM_EXTRUDER 10
- * #define Y_PROBE_OFFSET_FROM_EXTRUDER 10
+ * In the following example the X and Y offsets are both positive:
+ * #define X_PROBE_OFFSET_FROM_EXTRUDER 10
+ * #define Y_PROBE_OFFSET_FROM_EXTRUDER 10
*
- * +-- BACK ---+
- * | |
- * L | (+) P | R <-- probe (20,20)
- * E | | I
- * F | (-) N (+) | G <-- nozzle (10,10)
- * T | | H
- * | (-) | T
- * | |
- * O-- FRONT --+
- * (0,0)
+ * +-- BACK ---+
+ * | |
+ * L | (+) P | R <-- probe (20,20)
+ * E | | I
+ * F | (-) N (+) | G <-- nozzle (10,10)
+ * T | | H
+ * | (-) | T
+ * | |
+ * O-- FRONT --+
+ * (0,0)
*/
#define X_PROBE_OFFSET_FROM_EXTRUDER 0 // X offset: -left +right [of the nozzle]
#define Y_PROBE_OFFSET_FROM_EXTRUDER 0 // Y offset: -front +behind [the nozzle]
@@ -2219,6 +2275,10 @@
#define NEOPIXEL_IS_SEQUENTIAL // Sequential display for temperature change - LED by LED. Disable to change all LEDs at once.
#define NEOPIXEL_BRIGHTNESS 127 // Initial brightness (0-255)
//#define NEOPIXEL_STARTUP_TEST // Cycle through colors at startup
+
+ // Use a single Neopixel LED for static (background) lighting
+ //#define NEOPIXEL_BKGD_LED_INDEX 0 // Index of the LED to use
+ //#define NEOPIXEL_BKGD_COLOR { 255, 255, 255, 0 } // R, G, B, W
#endif
/**
diff --git a/config/examples/delta/MKS/SBASE/Configuration.h b/config/examples/delta/MKS/SBASE/Configuration.h
index 1ca23819af..6706774305 100644
--- a/config/examples/delta/MKS/SBASE/Configuration.h
+++ b/config/examples/delta/MKS/SBASE/Configuration.h
@@ -900,15 +900,71 @@
*/
//#define BLTOUCH
#if ENABLED(BLTOUCH)
- //#define BLTOUCH_DELAY 500 // Minimum Command delay (ms). Enable and increase if needed
+ /**
+ * Either: Use the defaults (recommended) or: For special purposes, use the following DEFINES
+ * Do not activate settings that the probe might not understand. Clones might misunderstand
+ * advanced commands.
+ *
+ * Note: If the probe is not deploying, check a "Cmd: Reset" and "Cmd: Self-Test" and then
+ * check the wiring of the BROWN, RED and ORANGE wires.
+ *
+ * Note: If the trigger signal of your probe is not being recognized, it has been very often
+ * because the BLACK and WHITE wires needed to be swapped. They are not "interchangeable"
+ * like they would be with a real switch. So please check the wiring first.
+ *
+ * Settings for all BLTouch and clone probes:
+ */
+
+ // Safety: The probe needs time to recognize the command.
+ // Minimum command delay (ms). Enable and increase if needed.
+ //#define BLTOUCH_DELAY 500
/**
- * BLTouch V3.0 and newer smart series
- * For genuine BLTouch 3.0 sensors. Clones may be confused by 3.0 command angles. YMMV.
- * If the pin trigger is not detected, first try swapping the black and white wires then toggle this.
+ * Settings for BLTOUCH Classic 1.2, 1.3 or BLTouch Smart 1.0, 2.0, 2.2, 3.0, 3.1, and most clones:
*/
- //#define BLTOUCH_FORCE_5V_MODE
-#endif
+
+ // Feature: Switch into SW mode after a deploy. It makes the output pulse longer. Can be useful
+ // in special cases, like noisy or filtered input configurations.
+ //#define BLTOUCH_FORCE_SW_MODE
+
+ /**
+ * Settings for BLTouch Smart 3.0 and 3.1
+ * Summary:
+ * - Voltage modes: 5V and OD (open drain - "logic voltage free") output modes
+ * - High-Speed mode
+ * - Disable LCD voltage options
+ */
+
+ /**
+ * Danger: Don't activate 5V mode unless attached to a 5V-tolerant controller!
+ * V3.0 or 3.1: Set default mode to 5V mode at Marlin startup.
+ * If disabled, OD mode is the hard-coded default on 3.0
+ * On startup, Marlin will compare its eeprom to this vale. If the selected mode
+ * differs, a mode set eeprom write will be completed at initialization.
+ * Use the option below to force an eeprom write to a V3.1 probe regardless.
+ */
+ //#define BLTOUCH_SET_5V_MODE
+
+ /**
+ * Safety: Activate if connecting a probe with an unknown voltage mode.
+ * V3.0: Set a probe into mode selected above at Marlin startup. Required for 5V mode on 3.0
+ * V3.1: Force a probe with unknown mode into selected mode at Marlin startup ( = Probe EEPROM write )
+ * To preserve the life of the probe, use this once then turn it off and re-flash.
+ */
+ //#define BLTOUCH_FORCE_MODE_SET
+
+ /**
+ * Use "HIGH SPEED" mode for probing.
+ * Danger: Disable if your probe sometimes fails. Only suitable for stable well-adjusted systems.
+ * This feature was designed for Delta's with very fast Z moves however higher speed cartesians may function
+ * If the machine cannot raise the probe fast enough after a trigger, it may enter a fault state.
+ */
+ //#define BLTOUCH_HS_MODE
+
+ // Safety: Enable voltage mode settings in the LCD menu.
+ //#define BLTOUCH_LCD_VOLTAGE_MENU
+
+#endif // BLTOUCH
// A probe that is deployed and stowed with a solenoid pin (SOL1_PIN)
//#define SOLENOID_PROBE
@@ -972,23 +1028,23 @@
#endif // Z_PROBE_ALLEN_KEY
/**
- * Z Probe to nozzle (X,Y) offset, relative to (0, 0).
- * X and Y offsets must be integers.
+ * Z Probe to nozzle (X,Y) offset, relative to (0, 0).
+ * X and Y offsets must be integers.
*
- * In the following example the X and Y offsets are both positive:
- * #define X_PROBE_OFFSET_FROM_EXTRUDER 10
- * #define Y_PROBE_OFFSET_FROM_EXTRUDER 10
+ * In the following example the X and Y offsets are both positive:
+ * #define X_PROBE_OFFSET_FROM_EXTRUDER 10
+ * #define Y_PROBE_OFFSET_FROM_EXTRUDER 10
*
- * +-- BACK ---+
- * | |
- * L | (+) P | R <-- probe (20,20)
- * E | | I
- * F | (-) N (+) | G <-- nozzle (10,10)
- * T | | H
- * | (-) | T
- * | |
- * O-- FRONT --+
- * (0,0)
+ * +-- BACK ---+
+ * | |
+ * L | (+) P | R <-- probe (20,20)
+ * E | | I
+ * F | (-) N (+) | G <-- nozzle (10,10)
+ * T | | H
+ * | (-) | T
+ * | |
+ * O-- FRONT --+
+ * (0,0)
*/
#define X_PROBE_OFFSET_FROM_EXTRUDER 0 // X offset: -left +right [of the nozzle]
#define Y_PROBE_OFFSET_FROM_EXTRUDER -10 // Y offset: -front +behind [the nozzle]
@@ -2204,6 +2260,10 @@
#define NEOPIXEL_IS_SEQUENTIAL // Sequential display for temperature change - LED by LED. Disable to change all LEDs at once.
#define NEOPIXEL_BRIGHTNESS 127 // Initial brightness (0-255)
//#define NEOPIXEL_STARTUP_TEST // Cycle through colors at startup
+
+ // Use a single Neopixel LED for static (background) lighting
+ //#define NEOPIXEL_BKGD_LED_INDEX 0 // Index of the LED to use
+ //#define NEOPIXEL_BKGD_COLOR { 255, 255, 255, 0 } // R, G, B, W
#endif
/**
diff --git a/config/examples/delta/MKS/SBASE/Configuration_adv.h b/config/examples/delta/MKS/SBASE/Configuration_adv.h
index 5db914a78f..df867b5bac 100644
--- a/config/examples/delta/MKS/SBASE/Configuration_adv.h
+++ b/config/examples/delta/MKS/SBASE/Configuration_adv.h
@@ -382,10 +382,6 @@
#endif
#endif
-//===========================================================================
-//============================ Mechanical Settings ==========================
-//===========================================================================
-
// @section homing
// If you want endstops to stay on (by default) even when not homing
@@ -744,6 +740,7 @@
* A (A shifted) B (B shifted) IC
* Smoothie 0x2C (0x58) 0x2D (0x5A) MCP4451
* AZTEEG_X3_PRO 0x2C (0x58) 0x2E (0x5C) MCP4451
+ * AZTEEG_X5_MINI 0x2C (0x58) 0x2E (0x5C) MCP4451
* AZTEEG_X5_MINI_WIFI 0x58 0x5C MCP4451
* MIGHTYBOARD_REVE 0x2F (0x5E) MCP4018
*/
diff --git a/config/examples/delta/Tevo Little Monster/Configuration.h b/config/examples/delta/Tevo Little Monster/Configuration.h
index f63afa88d4..0d6ca8fd92 100644
--- a/config/examples/delta/Tevo Little Monster/Configuration.h
+++ b/config/examples/delta/Tevo Little Monster/Configuration.h
@@ -969,23 +969,23 @@
#endif // Z_PROBE_ALLEN_KEY
/**
- * Z Probe to nozzle (X,Y) offset, relative to (0, 0).
- * X and Y offsets must be integers.
+ * Z Probe to nozzle (X,Y) offset, relative to (0, 0).
+ * X and Y offsets must be integers.
*
- * In the following example the X and Y offsets are both positive:
- * #define X_PROBE_OFFSET_FROM_EXTRUDER 10
- * #define Y_PROBE_OFFSET_FROM_EXTRUDER 10
+ * In the following example the X and Y offsets are both positive:
+ * #define X_PROBE_OFFSET_FROM_EXTRUDER 10
+ * #define Y_PROBE_OFFSET_FROM_EXTRUDER 10
*
- * +-- BACK ---+
- * | |
- * L | (+) P | R <-- probe (20,20)
- * E | | I
- * F | (-) N (+) | G <-- nozzle (10,10)
- * T | | H
- * | (-) | T
- * | |
- * O-- FRONT --+
- * (0,0)
+ * +-- BACK ---+
+ * | |
+ * L | (+) P | R <-- probe (20,20)
+ * E | | I
+ * F | (-) N (+) | G <-- nozzle (10,10)
+ * T | | H
+ * | (-) | T
+ * | |
+ * O-- FRONT --+
+ * (0,0)
*/
#define X_PROBE_OFFSET_FROM_EXTRUDER 0 // X offset: -left +right [of the nozzle]
#define Y_PROBE_OFFSET_FROM_EXTRUDER 20 // Y offset: -front +behind [the nozzle]
@@ -2201,6 +2201,10 @@
#define NEOPIXEL_IS_SEQUENTIAL // Sequential display for temperature change - LED by LED. Disable to change all LEDs at once.
#define NEOPIXEL_BRIGHTNESS 127 // Initial brightness (0-255)
//#define NEOPIXEL_STARTUP_TEST // Cycle through colors at startup
+
+ // Use a single Neopixel LED for static (background) lighting
+ //#define NEOPIXEL_BKGD_LED_INDEX 0 // Index of the LED to use
+ //#define NEOPIXEL_BKGD_COLOR { 255, 255, 255, 0 } // R, G, B, W
#endif
/**
diff --git a/config/examples/delta/Tevo Little Monster/Configuration_adv.h b/config/examples/delta/Tevo Little Monster/Configuration_adv.h
index 9984ccb86a..82ec67e6af 100644
--- a/config/examples/delta/Tevo Little Monster/Configuration_adv.h
+++ b/config/examples/delta/Tevo Little Monster/Configuration_adv.h
@@ -382,10 +382,6 @@
#endif
#endif
-//===========================================================================
-//============================ Mechanical Settings ==========================
-//===========================================================================
-
// @section homing
// If you want endstops to stay on (by default) even when not homing
@@ -744,6 +740,7 @@
* A (A shifted) B (B shifted) IC
* Smoothie 0x2C (0x58) 0x2D (0x5A) MCP4451
* AZTEEG_X3_PRO 0x2C (0x58) 0x2E (0x5C) MCP4451
+ * AZTEEG_X5_MINI 0x2C (0x58) 0x2E (0x5C) MCP4451
* AZTEEG_X5_MINI_WIFI 0x58 0x5C MCP4451
* MIGHTYBOARD_REVE 0x2F (0x5E) MCP4018
*/
diff --git a/config/examples/delta/generic/Configuration.h b/config/examples/delta/generic/Configuration.h
index 312e83c771..b53651826f 100644
--- a/config/examples/delta/generic/Configuration.h
+++ b/config/examples/delta/generic/Configuration.h
@@ -900,15 +900,71 @@
*/
//#define BLTOUCH
#if ENABLED(BLTOUCH)
- //#define BLTOUCH_DELAY 500 // Minimum Command delay (ms). Enable and increase if needed
+ /**
+ * Either: Use the defaults (recommended) or: For special purposes, use the following DEFINES
+ * Do not activate settings that the probe might not understand. Clones might misunderstand
+ * advanced commands.
+ *
+ * Note: If the probe is not deploying, check a "Cmd: Reset" and "Cmd: Self-Test" and then
+ * check the wiring of the BROWN, RED and ORANGE wires.
+ *
+ * Note: If the trigger signal of your probe is not being recognized, it has been very often
+ * because the BLACK and WHITE wires needed to be swapped. They are not "interchangeable"
+ * like they would be with a real switch. So please check the wiring first.
+ *
+ * Settings for all BLTouch and clone probes:
+ */
+
+ // Safety: The probe needs time to recognize the command.
+ // Minimum command delay (ms). Enable and increase if needed.
+ //#define BLTOUCH_DELAY 500
/**
- * BLTouch V3.0 and newer smart series
- * For genuine BLTouch 3.0 sensors. Clones may be confused by 3.0 command angles. YMMV.
- * If the pin trigger is not detected, first try swapping the black and white wires then toggle this.
+ * Settings for BLTOUCH Classic 1.2, 1.3 or BLTouch Smart 1.0, 2.0, 2.2, 3.0, 3.1, and most clones:
*/
- //#define BLTOUCH_FORCE_5V_MODE
-#endif
+
+ // Feature: Switch into SW mode after a deploy. It makes the output pulse longer. Can be useful
+ // in special cases, like noisy or filtered input configurations.
+ //#define BLTOUCH_FORCE_SW_MODE
+
+ /**
+ * Settings for BLTouch Smart 3.0 and 3.1
+ * Summary:
+ * - Voltage modes: 5V and OD (open drain - "logic voltage free") output modes
+ * - High-Speed mode
+ * - Disable LCD voltage options
+ */
+
+ /**
+ * Danger: Don't activate 5V mode unless attached to a 5V-tolerant controller!
+ * V3.0 or 3.1: Set default mode to 5V mode at Marlin startup.
+ * If disabled, OD mode is the hard-coded default on 3.0
+ * On startup, Marlin will compare its eeprom to this vale. If the selected mode
+ * differs, a mode set eeprom write will be completed at initialization.
+ * Use the option below to force an eeprom write to a V3.1 probe regardless.
+ */
+ //#define BLTOUCH_SET_5V_MODE
+
+ /**
+ * Safety: Activate if connecting a probe with an unknown voltage mode.
+ * V3.0: Set a probe into mode selected above at Marlin startup. Required for 5V mode on 3.0
+ * V3.1: Force a probe with unknown mode into selected mode at Marlin startup ( = Probe EEPROM write )
+ * To preserve the life of the probe, use this once then turn it off and re-flash.
+ */
+ //#define BLTOUCH_FORCE_MODE_SET
+
+ /**
+ * Use "HIGH SPEED" mode for probing.
+ * Danger: Disable if your probe sometimes fails. Only suitable for stable well-adjusted systems.
+ * This feature was designed for Delta's with very fast Z moves however higher speed cartesians may function
+ * If the machine cannot raise the probe fast enough after a trigger, it may enter a fault state.
+ */
+ //#define BLTOUCH_HS_MODE
+
+ // Safety: Enable voltage mode settings in the LCD menu.
+ //#define BLTOUCH_LCD_VOLTAGE_MENU
+
+#endif // BLTOUCH
// A probe that is deployed and stowed with a solenoid pin (SOL1_PIN)
//#define SOLENOID_PROBE
@@ -972,23 +1028,23 @@
#endif // Z_PROBE_ALLEN_KEY
/**
- * Z Probe to nozzle (X,Y) offset, relative to (0, 0).
- * X and Y offsets must be integers.
+ * Z Probe to nozzle (X,Y) offset, relative to (0, 0).
+ * X and Y offsets must be integers.
*
- * In the following example the X and Y offsets are both positive:
- * #define X_PROBE_OFFSET_FROM_EXTRUDER 10
- * #define Y_PROBE_OFFSET_FROM_EXTRUDER 10
+ * In the following example the X and Y offsets are both positive:
+ * #define X_PROBE_OFFSET_FROM_EXTRUDER 10
+ * #define Y_PROBE_OFFSET_FROM_EXTRUDER 10
*
- * +-- BACK ---+
- * | |
- * L | (+) P | R <-- probe (20,20)
- * E | | I
- * F | (-) N (+) | G <-- nozzle (10,10)
- * T | | H
- * | (-) | T
- * | |
- * O-- FRONT --+
- * (0,0)
+ * +-- BACK ---+
+ * | |
+ * L | (+) P | R <-- probe (20,20)
+ * E | | I
+ * F | (-) N (+) | G <-- nozzle (10,10)
+ * T | | H
+ * | (-) | T
+ * | |
+ * O-- FRONT --+
+ * (0,0)
*/
#define X_PROBE_OFFSET_FROM_EXTRUDER 0 // X offset: -left +right [of the nozzle]
#define Y_PROBE_OFFSET_FROM_EXTRUDER -10 // Y offset: -front +behind [the nozzle]
@@ -2204,6 +2260,10 @@
#define NEOPIXEL_IS_SEQUENTIAL // Sequential display for temperature change - LED by LED. Disable to change all LEDs at once.
#define NEOPIXEL_BRIGHTNESS 127 // Initial brightness (0-255)
//#define NEOPIXEL_STARTUP_TEST // Cycle through colors at startup
+
+ // Use a single Neopixel LED for static (background) lighting
+ //#define NEOPIXEL_BKGD_LED_INDEX 0 // Index of the LED to use
+ //#define NEOPIXEL_BKGD_COLOR { 255, 255, 255, 0 } // R, G, B, W
#endif
/**
diff --git a/config/examples/delta/generic/Configuration_adv.h b/config/examples/delta/generic/Configuration_adv.h
index e0487a9f9b..8ca43673fb 100644
--- a/config/examples/delta/generic/Configuration_adv.h
+++ b/config/examples/delta/generic/Configuration_adv.h
@@ -382,10 +382,6 @@
#endif
#endif
-//===========================================================================
-//============================ Mechanical Settings ==========================
-//===========================================================================
-
// @section homing
// If you want endstops to stay on (by default) even when not homing
@@ -744,6 +740,7 @@
* A (A shifted) B (B shifted) IC
* Smoothie 0x2C (0x58) 0x2D (0x5A) MCP4451
* AZTEEG_X3_PRO 0x2C (0x58) 0x2E (0x5C) MCP4451
+ * AZTEEG_X5_MINI 0x2C (0x58) 0x2E (0x5C) MCP4451
* AZTEEG_X5_MINI_WIFI 0x58 0x5C MCP4451
* MIGHTYBOARD_REVE 0x2F (0x5E) MCP4018
*/
diff --git a/config/examples/delta/kossel_mini/Configuration.h b/config/examples/delta/kossel_mini/Configuration.h
index 723d3263f0..aeb4db9018 100644
--- a/config/examples/delta/kossel_mini/Configuration.h
+++ b/config/examples/delta/kossel_mini/Configuration.h
@@ -900,15 +900,71 @@
*/
//#define BLTOUCH
#if ENABLED(BLTOUCH)
- //#define BLTOUCH_DELAY 500 // Minimum Command delay (ms). Enable and increase if needed
+ /**
+ * Either: Use the defaults (recommended) or: For special purposes, use the following DEFINES
+ * Do not activate settings that the probe might not understand. Clones might misunderstand
+ * advanced commands.
+ *
+ * Note: If the probe is not deploying, check a "Cmd: Reset" and "Cmd: Self-Test" and then
+ * check the wiring of the BROWN, RED and ORANGE wires.
+ *
+ * Note: If the trigger signal of your probe is not being recognized, it has been very often
+ * because the BLACK and WHITE wires needed to be swapped. They are not "interchangeable"
+ * like they would be with a real switch. So please check the wiring first.
+ *
+ * Settings for all BLTouch and clone probes:
+ */
+
+ // Safety: The probe needs time to recognize the command.
+ // Minimum command delay (ms). Enable and increase if needed.
+ //#define BLTOUCH_DELAY 500
/**
- * BLTouch V3.0 and newer smart series
- * For genuine BLTouch 3.0 sensors. Clones may be confused by 3.0 command angles. YMMV.
- * If the pin trigger is not detected, first try swapping the black and white wires then toggle this.
+ * Settings for BLTOUCH Classic 1.2, 1.3 or BLTouch Smart 1.0, 2.0, 2.2, 3.0, 3.1, and most clones:
*/
- //#define BLTOUCH_FORCE_5V_MODE
-#endif
+
+ // Feature: Switch into SW mode after a deploy. It makes the output pulse longer. Can be useful
+ // in special cases, like noisy or filtered input configurations.
+ //#define BLTOUCH_FORCE_SW_MODE
+
+ /**
+ * Settings for BLTouch Smart 3.0 and 3.1
+ * Summary:
+ * - Voltage modes: 5V and OD (open drain - "logic voltage free") output modes
+ * - High-Speed mode
+ * - Disable LCD voltage options
+ */
+
+ /**
+ * Danger: Don't activate 5V mode unless attached to a 5V-tolerant controller!
+ * V3.0 or 3.1: Set default mode to 5V mode at Marlin startup.
+ * If disabled, OD mode is the hard-coded default on 3.0
+ * On startup, Marlin will compare its eeprom to this vale. If the selected mode
+ * differs, a mode set eeprom write will be completed at initialization.
+ * Use the option below to force an eeprom write to a V3.1 probe regardless.
+ */
+ //#define BLTOUCH_SET_5V_MODE
+
+ /**
+ * Safety: Activate if connecting a probe with an unknown voltage mode.
+ * V3.0: Set a probe into mode selected above at Marlin startup. Required for 5V mode on 3.0
+ * V3.1: Force a probe with unknown mode into selected mode at Marlin startup ( = Probe EEPROM write )
+ * To preserve the life of the probe, use this once then turn it off and re-flash.
+ */
+ //#define BLTOUCH_FORCE_MODE_SET
+
+ /**
+ * Use "HIGH SPEED" mode for probing.
+ * Danger: Disable if your probe sometimes fails. Only suitable for stable well-adjusted systems.
+ * This feature was designed for Delta's with very fast Z moves however higher speed cartesians may function
+ * If the machine cannot raise the probe fast enough after a trigger, it may enter a fault state.
+ */
+ //#define BLTOUCH_HS_MODE
+
+ // Safety: Enable voltage mode settings in the LCD menu.
+ //#define BLTOUCH_LCD_VOLTAGE_MENU
+
+#endif // BLTOUCH
// A probe that is deployed and stowed with a solenoid pin (SOL1_PIN)
//#define SOLENOID_PROBE
@@ -974,23 +1030,23 @@
#endif // Z_PROBE_ALLEN_KEY
/**
- * Z Probe to nozzle (X,Y) offset, relative to (0, 0).
- * X and Y offsets must be integers.
+ * Z Probe to nozzle (X,Y) offset, relative to (0, 0).
+ * X and Y offsets must be integers.
*
- * In the following example the X and Y offsets are both positive:
- * #define X_PROBE_OFFSET_FROM_EXTRUDER 10
- * #define Y_PROBE_OFFSET_FROM_EXTRUDER 10
+ * In the following example the X and Y offsets are both positive:
+ * #define X_PROBE_OFFSET_FROM_EXTRUDER 10
+ * #define Y_PROBE_OFFSET_FROM_EXTRUDER 10
*
- * +-- BACK ---+
- * | |
- * L | (+) P | R <-- probe (20,20)
- * E | | I
- * F | (-) N (+) | G <-- nozzle (10,10)
- * T | | H
- * | (-) | T
- * | |
- * O-- FRONT --+
- * (0,0)
+ * +-- BACK ---+
+ * | |
+ * L | (+) P | R <-- probe (20,20)
+ * E | | I
+ * F | (-) N (+) | G <-- nozzle (10,10)
+ * T | | H
+ * | (-) | T
+ * | |
+ * O-- FRONT --+
+ * (0,0)
*/
#define X_PROBE_OFFSET_FROM_EXTRUDER 0 // X offset: -left +right [of the nozzle]
#define Y_PROBE_OFFSET_FROM_EXTRUDER -10 // Y offset: -front +behind [the nozzle]
@@ -2206,6 +2262,10 @@
#define NEOPIXEL_IS_SEQUENTIAL // Sequential display for temperature change - LED by LED. Disable to change all LEDs at once.
#define NEOPIXEL_BRIGHTNESS 127 // Initial brightness (0-255)
//#define NEOPIXEL_STARTUP_TEST // Cycle through colors at startup
+
+ // Use a single Neopixel LED for static (background) lighting
+ //#define NEOPIXEL_BKGD_LED_INDEX 0 // Index of the LED to use
+ //#define NEOPIXEL_BKGD_COLOR { 255, 255, 255, 0 } // R, G, B, W
#endif
/**
diff --git a/config/examples/delta/kossel_mini/Configuration_adv.h b/config/examples/delta/kossel_mini/Configuration_adv.h
index bf29999ba9..bd826558a1 100644
--- a/config/examples/delta/kossel_mini/Configuration_adv.h
+++ b/config/examples/delta/kossel_mini/Configuration_adv.h
@@ -382,10 +382,6 @@
#endif
#endif
-//===========================================================================
-//============================ Mechanical Settings ==========================
-//===========================================================================
-
// @section homing
// If you want endstops to stay on (by default) even when not homing
@@ -743,6 +739,7 @@
* A (A shifted) B (B shifted) IC
* Smoothie 0x2C (0x58) 0x2D (0x5A) MCP4451
* AZTEEG_X3_PRO 0x2C (0x58) 0x2E (0x5C) MCP4451
+ * AZTEEG_X5_MINI 0x2C (0x58) 0x2E (0x5C) MCP4451
* AZTEEG_X5_MINI_WIFI 0x58 0x5C MCP4451
* MIGHTYBOARD_REVE 0x2F (0x5E) MCP4018
*/
diff --git a/config/examples/delta/kossel_pro/Configuration.h b/config/examples/delta/kossel_pro/Configuration.h
index aecd7761bf..66f418461b 100644
--- a/config/examples/delta/kossel_pro/Configuration.h
+++ b/config/examples/delta/kossel_pro/Configuration.h
@@ -893,15 +893,71 @@
*/
//#define BLTOUCH
#if ENABLED(BLTOUCH)
- //#define BLTOUCH_DELAY 500 // Minimum Command delay (ms). Enable and increase if needed
+ /**
+ * Either: Use the defaults (recommended) or: For special purposes, use the following DEFINES
+ * Do not activate settings that the probe might not understand. Clones might misunderstand
+ * advanced commands.
+ *
+ * Note: If the probe is not deploying, check a "Cmd: Reset" and "Cmd: Self-Test" and then
+ * check the wiring of the BROWN, RED and ORANGE wires.
+ *
+ * Note: If the trigger signal of your probe is not being recognized, it has been very often
+ * because the BLACK and WHITE wires needed to be swapped. They are not "interchangeable"
+ * like they would be with a real switch. So please check the wiring first.
+ *
+ * Settings for all BLTouch and clone probes:
+ */
+
+ // Safety: The probe needs time to recognize the command.
+ // Minimum command delay (ms). Enable and increase if needed.
+ //#define BLTOUCH_DELAY 500
/**
- * BLTouch V3.0 and newer smart series
- * For genuine BLTouch 3.0 sensors. Clones may be confused by 3.0 command angles. YMMV.
- * If the pin trigger is not detected, first try swapping the black and white wires then toggle this.
+ * Settings for BLTOUCH Classic 1.2, 1.3 or BLTouch Smart 1.0, 2.0, 2.2, 3.0, 3.1, and most clones:
*/
- //#define BLTOUCH_FORCE_5V_MODE
-#endif
+
+ // Feature: Switch into SW mode after a deploy. It makes the output pulse longer. Can be useful
+ // in special cases, like noisy or filtered input configurations.
+ //#define BLTOUCH_FORCE_SW_MODE
+
+ /**
+ * Settings for BLTouch Smart 3.0 and 3.1
+ * Summary:
+ * - Voltage modes: 5V and OD (open drain - "logic voltage free") output modes
+ * - High-Speed mode
+ * - Disable LCD voltage options
+ */
+
+ /**
+ * Danger: Don't activate 5V mode unless attached to a 5V-tolerant controller!
+ * V3.0 or 3.1: Set default mode to 5V mode at Marlin startup.
+ * If disabled, OD mode is the hard-coded default on 3.0
+ * On startup, Marlin will compare its eeprom to this vale. If the selected mode
+ * differs, a mode set eeprom write will be completed at initialization.
+ * Use the option below to force an eeprom write to a V3.1 probe regardless.
+ */
+ //#define BLTOUCH_SET_5V_MODE
+
+ /**
+ * Safety: Activate if connecting a probe with an unknown voltage mode.
+ * V3.0: Set a probe into mode selected above at Marlin startup. Required for 5V mode on 3.0
+ * V3.1: Force a probe with unknown mode into selected mode at Marlin startup ( = Probe EEPROM write )
+ * To preserve the life of the probe, use this once then turn it off and re-flash.
+ */
+ //#define BLTOUCH_FORCE_MODE_SET
+
+ /**
+ * Use "HIGH SPEED" mode for probing.
+ * Danger: Disable if your probe sometimes fails. Only suitable for stable well-adjusted systems.
+ * This feature was designed for Delta's with very fast Z moves however higher speed cartesians may function
+ * If the machine cannot raise the probe fast enough after a trigger, it may enter a fault state.
+ */
+ //#define BLTOUCH_HS_MODE
+
+ // Safety: Enable voltage mode settings in the LCD menu.
+ //#define BLTOUCH_LCD_VOLTAGE_MENU
+
+#endif // BLTOUCH
// A probe that is deployed and stowed with a solenoid pin (SOL1_PIN)
//#define SOLENOID_PROBE
@@ -971,23 +1027,23 @@
#endif // Z_PROBE_ALLEN_KEY
/**
- * Z Probe to nozzle (X,Y) offset, relative to (0, 0).
- * X and Y offsets must be integers.
+ * Z Probe to nozzle (X,Y) offset, relative to (0, 0).
+ * X and Y offsets must be integers.
*
- * In the following example the X and Y offsets are both positive:
- * #define X_PROBE_OFFSET_FROM_EXTRUDER 10
- * #define Y_PROBE_OFFSET_FROM_EXTRUDER 10
+ * In the following example the X and Y offsets are both positive:
+ * #define X_PROBE_OFFSET_FROM_EXTRUDER 10
+ * #define Y_PROBE_OFFSET_FROM_EXTRUDER 10
*
- * +-- BACK ---+
- * | |
- * L | (+) P | R <-- probe (20,20)
- * E | | I
- * F | (-) N (+) | G <-- nozzle (10,10)
- * T | | H
- * | (-) | T
- * | |
- * O-- FRONT --+
- * (0,0)
+ * +-- BACK ---+
+ * | |
+ * L | (+) P | R <-- probe (20,20)
+ * E | | I
+ * F | (-) N (+) | G <-- nozzle (10,10)
+ * T | | H
+ * | (-) | T
+ * | |
+ * O-- FRONT --+
+ * (0,0)
*/
#define X_PROBE_OFFSET_FROM_EXTRUDER -23 // KosselPro actual: -22.919
#define Y_PROBE_OFFSET_FROM_EXTRUDER -6 // KosselPro actual: -6.304
@@ -2207,6 +2263,10 @@
#define NEOPIXEL_IS_SEQUENTIAL // Sequential display for temperature change - LED by LED. Disable to change all LEDs at once.
#define NEOPIXEL_BRIGHTNESS 127 // Initial brightness (0-255)
//#define NEOPIXEL_STARTUP_TEST // Cycle through colors at startup
+
+ // Use a single Neopixel LED for static (background) lighting
+ //#define NEOPIXEL_BKGD_LED_INDEX 0 // Index of the LED to use
+ //#define NEOPIXEL_BKGD_COLOR { 255, 255, 255, 0 } // R, G, B, W
#endif
/**
diff --git a/config/examples/delta/kossel_xl/Configuration.h b/config/examples/delta/kossel_xl/Configuration.h
index 0773a3f31c..093b39a3d3 100644
--- a/config/examples/delta/kossel_xl/Configuration.h
+++ b/config/examples/delta/kossel_xl/Configuration.h
@@ -903,15 +903,71 @@
*/
//#define BLTOUCH
#if ENABLED(BLTOUCH)
- //#define BLTOUCH_DELAY 500 // Minimum Command delay (ms). Enable and increase if needed
+ /**
+ * Either: Use the defaults (recommended) or: For special purposes, use the following DEFINES
+ * Do not activate settings that the probe might not understand. Clones might misunderstand
+ * advanced commands.
+ *
+ * Note: If the probe is not deploying, check a "Cmd: Reset" and "Cmd: Self-Test" and then
+ * check the wiring of the BROWN, RED and ORANGE wires.
+ *
+ * Note: If the trigger signal of your probe is not being recognized, it has been very often
+ * because the BLACK and WHITE wires needed to be swapped. They are not "interchangeable"
+ * like they would be with a real switch. So please check the wiring first.
+ *
+ * Settings for all BLTouch and clone probes:
+ */
+
+ // Safety: The probe needs time to recognize the command.
+ // Minimum command delay (ms). Enable and increase if needed.
+ //#define BLTOUCH_DELAY 500
/**
- * BLTouch V3.0 and newer smart series
- * For genuine BLTouch 3.0 sensors. Clones may be confused by 3.0 command angles. YMMV.
- * If the pin trigger is not detected, first try swapping the black and white wires then toggle this.
+ * Settings for BLTOUCH Classic 1.2, 1.3 or BLTouch Smart 1.0, 2.0, 2.2, 3.0, 3.1, and most clones:
*/
- //#define BLTOUCH_FORCE_5V_MODE
-#endif
+
+ // Feature: Switch into SW mode after a deploy. It makes the output pulse longer. Can be useful
+ // in special cases, like noisy or filtered input configurations.
+ //#define BLTOUCH_FORCE_SW_MODE
+
+ /**
+ * Settings for BLTouch Smart 3.0 and 3.1
+ * Summary:
+ * - Voltage modes: 5V and OD (open drain - "logic voltage free") output modes
+ * - High-Speed mode
+ * - Disable LCD voltage options
+ */
+
+ /**
+ * Danger: Don't activate 5V mode unless attached to a 5V-tolerant controller!
+ * V3.0 or 3.1: Set default mode to 5V mode at Marlin startup.
+ * If disabled, OD mode is the hard-coded default on 3.0
+ * On startup, Marlin will compare its eeprom to this vale. If the selected mode
+ * differs, a mode set eeprom write will be completed at initialization.
+ * Use the option below to force an eeprom write to a V3.1 probe regardless.
+ */
+ //#define BLTOUCH_SET_5V_MODE
+
+ /**
+ * Safety: Activate if connecting a probe with an unknown voltage mode.
+ * V3.0: Set a probe into mode selected above at Marlin startup. Required for 5V mode on 3.0
+ * V3.1: Force a probe with unknown mode into selected mode at Marlin startup ( = Probe EEPROM write )
+ * To preserve the life of the probe, use this once then turn it off and re-flash.
+ */
+ //#define BLTOUCH_FORCE_MODE_SET
+
+ /**
+ * Use "HIGH SPEED" mode for probing.
+ * Danger: Disable if your probe sometimes fails. Only suitable for stable well-adjusted systems.
+ * This feature was designed for Delta's with very fast Z moves however higher speed cartesians may function
+ * If the machine cannot raise the probe fast enough after a trigger, it may enter a fault state.
+ */
+ //#define BLTOUCH_HS_MODE
+
+ // Safety: Enable voltage mode settings in the LCD menu.
+ //#define BLTOUCH_LCD_VOLTAGE_MENU
+
+#endif // BLTOUCH
// A probe that is deployed and stowed with a solenoid pin (SOL1_PIN)
//#define SOLENOID_PROBE
@@ -975,23 +1031,23 @@
#endif // Z_PROBE_ALLEN_KEY
/**
- * Z Probe to nozzle (X,Y) offset, relative to (0, 0).
- * X and Y offsets must be integers.
+ * Z Probe to nozzle (X,Y) offset, relative to (0, 0).
+ * X and Y offsets must be integers.
*
- * In the following example the X and Y offsets are both positive:
- * #define X_PROBE_OFFSET_FROM_EXTRUDER 10
- * #define Y_PROBE_OFFSET_FROM_EXTRUDER 10
+ * In the following example the X and Y offsets are both positive:
+ * #define X_PROBE_OFFSET_FROM_EXTRUDER 10
+ * #define Y_PROBE_OFFSET_FROM_EXTRUDER 10
*
- * +-- BACK ---+
- * | |
- * L | (+) P | R <-- probe (20,20)
- * E | | I
- * F | (-) N (+) | G <-- nozzle (10,10)
- * T | | H
- * | (-) | T
- * | |
- * O-- FRONT --+
- * (0,0)
+ * +-- BACK ---+
+ * | |
+ * L | (+) P | R <-- probe (20,20)
+ * E | | I
+ * F | (-) N (+) | G <-- nozzle (10,10)
+ * T | | H
+ * | (-) | T
+ * | |
+ * O-- FRONT --+
+ * (0,0)
*/
#define X_PROBE_OFFSET_FROM_EXTRUDER 0.0 // Z probe to nozzle X offset: -left +right
#define Y_PROBE_OFFSET_FROM_EXTRUDER 0.0 // Z probe to nozzle Y offset: -front +behind
@@ -2207,6 +2263,10 @@
#define NEOPIXEL_IS_SEQUENTIAL // Sequential display for temperature change - LED by LED. Disable to change all LEDs at once.
#define NEOPIXEL_BRIGHTNESS 127 // Initial brightness (0-255)
//#define NEOPIXEL_STARTUP_TEST // Cycle through colors at startup
+
+ // Use a single Neopixel LED for static (background) lighting
+ //#define NEOPIXEL_BKGD_LED_INDEX 0 // Index of the LED to use
+ //#define NEOPIXEL_BKGD_COLOR { 255, 255, 255, 0 } // R, G, B, W
#endif
/**
diff --git a/config/examples/delta/kossel_xl/Configuration_adv.h b/config/examples/delta/kossel_xl/Configuration_adv.h
index fafbd0bd12..330b5bbebe 100644
--- a/config/examples/delta/kossel_xl/Configuration_adv.h
+++ b/config/examples/delta/kossel_xl/Configuration_adv.h
@@ -382,10 +382,6 @@
#endif
#endif
-//===========================================================================
-//============================ Mechanical Settings ==========================
-//===========================================================================
-
// @section homing
// If you want endstops to stay on (by default) even when not homing
@@ -744,6 +740,7 @@
* A (A shifted) B (B shifted) IC
* Smoothie 0x2C (0x58) 0x2D (0x5A) MCP4451
* AZTEEG_X3_PRO 0x2C (0x58) 0x2E (0x5C) MCP4451
+ * AZTEEG_X5_MINI 0x2C (0x58) 0x2E (0x5C) MCP4451
* AZTEEG_X5_MINI_WIFI 0x58 0x5C MCP4451
* MIGHTYBOARD_REVE 0x2F (0x5E) MCP4018
*/
diff --git a/config/examples/gCreate/gMax1.5+/Configuration.h b/config/examples/gCreate/gMax1.5+/Configuration.h
index a029cda7bd..b45a076755 100644
--- a/config/examples/gCreate/gMax1.5+/Configuration.h
+++ b/config/examples/gCreate/gMax1.5+/Configuration.h
@@ -863,23 +863,23 @@
//
/**
- * Z Probe to nozzle (X,Y) offset, relative to (0, 0).
- * X and Y offsets must be integers.
+ * Z Probe to nozzle (X,Y) offset, relative to (0, 0).
+ * X and Y offsets must be integers.
*
- * In the following example the X and Y offsets are both positive:
- * #define X_PROBE_OFFSET_FROM_EXTRUDER 10
- * #define Y_PROBE_OFFSET_FROM_EXTRUDER 10
+ * In the following example the X and Y offsets are both positive:
+ * #define X_PROBE_OFFSET_FROM_EXTRUDER 10
+ * #define Y_PROBE_OFFSET_FROM_EXTRUDER 10
*
- * +-- BACK ---+
- * | |
- * L | (+) P | R <-- probe (20,20)
- * E | | I
- * F | (-) N (+) | G <-- nozzle (10,10)
- * T | | H
- * | (-) | T
- * | |
- * O-- FRONT --+
- * (0,0)
+ * +-- BACK ---+
+ * | |
+ * L | (+) P | R <-- probe (20,20)
+ * E | | I
+ * F | (-) N (+) | G <-- nozzle (10,10)
+ * T | | H
+ * | (-) | T
+ * | |
+ * O-- FRONT --+
+ * (0,0)
*/
#define X_PROBE_OFFSET_FROM_EXTRUDER -17 // X offset: -left +right [of the nozzle]
#define Y_PROBE_OFFSET_FROM_EXTRUDER -10 // Y offset: -front +behind [the nozzle]
@@ -2096,6 +2096,10 @@
#define NEOPIXEL_IS_SEQUENTIAL // Sequential display for temperature change - LED by LED. Disable to change all LEDs at once.
#define NEOPIXEL_BRIGHTNESS 127 // Initial brightness (0-255)
//#define NEOPIXEL_STARTUP_TEST // Cycle through colors at startup
+
+ // Use a single Neopixel LED for static (background) lighting
+ //#define NEOPIXEL_BKGD_LED_INDEX 0 // Index of the LED to use
+ //#define NEOPIXEL_BKGD_COLOR { 255, 255, 255, 0 } // R, G, B, W
#endif
/**
diff --git a/config/examples/gCreate/gMax1.5+/Configuration_adv.h b/config/examples/gCreate/gMax1.5+/Configuration_adv.h
index 7e2165e91f..f790d1a340 100644
--- a/config/examples/gCreate/gMax1.5+/Configuration_adv.h
+++ b/config/examples/gCreate/gMax1.5+/Configuration_adv.h
@@ -382,10 +382,6 @@
#endif
#endif
-//===========================================================================
-//============================ Mechanical Settings ==========================
-//===========================================================================
-
// @section homing
// If you want endstops to stay on (by default) even when not homing
@@ -745,6 +741,7 @@
* A (A shifted) B (B shifted) IC
* Smoothie 0x2C (0x58) 0x2D (0x5A) MCP4451
* AZTEEG_X3_PRO 0x2C (0x58) 0x2E (0x5C) MCP4451
+ * AZTEEG_X5_MINI 0x2C (0x58) 0x2E (0x5C) MCP4451
* AZTEEG_X5_MINI_WIFI 0x58 0x5C MCP4451
* MIGHTYBOARD_REVE 0x2F (0x5E) MCP4018
*/
diff --git a/config/examples/makibox/Configuration.h b/config/examples/makibox/Configuration.h
index f8971dfd86..3b6df81fd7 100644
--- a/config/examples/makibox/Configuration.h
+++ b/config/examples/makibox/Configuration.h
@@ -831,15 +831,71 @@
*/
//#define BLTOUCH
#if ENABLED(BLTOUCH)
- //#define BLTOUCH_DELAY 500 // Minimum Command delay (ms). Enable and increase if needed
+ /**
+ * Either: Use the defaults (recommended) or: For special purposes, use the following DEFINES
+ * Do not activate settings that the probe might not understand. Clones might misunderstand
+ * advanced commands.
+ *
+ * Note: If the probe is not deploying, check a "Cmd: Reset" and "Cmd: Self-Test" and then
+ * check the wiring of the BROWN, RED and ORANGE wires.
+ *
+ * Note: If the trigger signal of your probe is not being recognized, it has been very often
+ * because the BLACK and WHITE wires needed to be swapped. They are not "interchangeable"
+ * like they would be with a real switch. So please check the wiring first.
+ *
+ * Settings for all BLTouch and clone probes:
+ */
+
+ // Safety: The probe needs time to recognize the command.
+ // Minimum command delay (ms). Enable and increase if needed.
+ //#define BLTOUCH_DELAY 500
/**
- * BLTouch V3.0 and newer smart series
- * For genuine BLTouch 3.0 sensors. Clones may be confused by 3.0 command angles. YMMV.
- * If the pin trigger is not detected, first try swapping the black and white wires then toggle this.
+ * Settings for BLTOUCH Classic 1.2, 1.3 or BLTouch Smart 1.0, 2.0, 2.2, 3.0, 3.1, and most clones:
*/
- //#define BLTOUCH_FORCE_5V_MODE
-#endif
+
+ // Feature: Switch into SW mode after a deploy. It makes the output pulse longer. Can be useful
+ // in special cases, like noisy or filtered input configurations.
+ //#define BLTOUCH_FORCE_SW_MODE
+
+ /**
+ * Settings for BLTouch Smart 3.0 and 3.1
+ * Summary:
+ * - Voltage modes: 5V and OD (open drain - "logic voltage free") output modes
+ * - High-Speed mode
+ * - Disable LCD voltage options
+ */
+
+ /**
+ * Danger: Don't activate 5V mode unless attached to a 5V-tolerant controller!
+ * V3.0 or 3.1: Set default mode to 5V mode at Marlin startup.
+ * If disabled, OD mode is the hard-coded default on 3.0
+ * On startup, Marlin will compare its eeprom to this vale. If the selected mode
+ * differs, a mode set eeprom write will be completed at initialization.
+ * Use the option below to force an eeprom write to a V3.1 probe regardless.
+ */
+ //#define BLTOUCH_SET_5V_MODE
+
+ /**
+ * Safety: Activate if connecting a probe with an unknown voltage mode.
+ * V3.0: Set a probe into mode selected above at Marlin startup. Required for 5V mode on 3.0
+ * V3.1: Force a probe with unknown mode into selected mode at Marlin startup ( = Probe EEPROM write )
+ * To preserve the life of the probe, use this once then turn it off and re-flash.
+ */
+ //#define BLTOUCH_FORCE_MODE_SET
+
+ /**
+ * Use "HIGH SPEED" mode for probing.
+ * Danger: Disable if your probe sometimes fails. Only suitable for stable well-adjusted systems.
+ * This feature was designed for Delta's with very fast Z moves however higher speed cartesians may function
+ * If the machine cannot raise the probe fast enough after a trigger, it may enter a fault state.
+ */
+ //#define BLTOUCH_HS_MODE
+
+ // Safety: Enable voltage mode settings in the LCD menu.
+ //#define BLTOUCH_LCD_VOLTAGE_MENU
+
+#endif // BLTOUCH
// A probe that is deployed and stowed with a solenoid pin (SOL1_PIN)
//#define SOLENOID_PROBE
@@ -860,23 +916,23 @@
//
/**
- * Z Probe to nozzle (X,Y) offset, relative to (0, 0).
- * X and Y offsets must be integers.
+ * Z Probe to nozzle (X,Y) offset, relative to (0, 0).
+ * X and Y offsets must be integers.
*
- * In the following example the X and Y offsets are both positive:
- * #define X_PROBE_OFFSET_FROM_EXTRUDER 10
- * #define Y_PROBE_OFFSET_FROM_EXTRUDER 10
+ * In the following example the X and Y offsets are both positive:
+ * #define X_PROBE_OFFSET_FROM_EXTRUDER 10
+ * #define Y_PROBE_OFFSET_FROM_EXTRUDER 10
*
- * +-- BACK ---+
- * | |
- * L | (+) P | R <-- probe (20,20)
- * E | | I
- * F | (-) N (+) | G <-- nozzle (10,10)
- * T | | H
- * | (-) | T
- * | |
- * O-- FRONT --+
- * (0,0)
+ * +-- BACK ---+
+ * | |
+ * L | (+) P | R <-- probe (20,20)
+ * E | | I
+ * F | (-) N (+) | G <-- nozzle (10,10)
+ * T | | H
+ * | (-) | T
+ * | |
+ * O-- FRONT --+
+ * (0,0)
*/
#define X_PROBE_OFFSET_FROM_EXTRUDER -25 // X offset: -left +right [of the nozzle]
#define Y_PROBE_OFFSET_FROM_EXTRUDER -29 // Y offset: -front +behind [the nozzle]
@@ -2092,6 +2148,10 @@
#define NEOPIXEL_IS_SEQUENTIAL // Sequential display for temperature change - LED by LED. Disable to change all LEDs at once.
#define NEOPIXEL_BRIGHTNESS 127 // Initial brightness (0-255)
//#define NEOPIXEL_STARTUP_TEST // Cycle through colors at startup
+
+ // Use a single Neopixel LED for static (background) lighting
+ //#define NEOPIXEL_BKGD_LED_INDEX 0 // Index of the LED to use
+ //#define NEOPIXEL_BKGD_COLOR { 255, 255, 255, 0 } // R, G, B, W
#endif
/**
diff --git a/config/examples/makibox/Configuration_adv.h b/config/examples/makibox/Configuration_adv.h
index 80dc806692..6a37af4543 100644
--- a/config/examples/makibox/Configuration_adv.h
+++ b/config/examples/makibox/Configuration_adv.h
@@ -382,10 +382,6 @@
#endif
#endif
-//===========================================================================
-//============================ Mechanical Settings ==========================
-//===========================================================================
-
// @section homing
// If you want endstops to stay on (by default) even when not homing
@@ -745,6 +741,7 @@
* A (A shifted) B (B shifted) IC
* Smoothie 0x2C (0x58) 0x2D (0x5A) MCP4451
* AZTEEG_X3_PRO 0x2C (0x58) 0x2E (0x5C) MCP4451
+ * AZTEEG_X5_MINI 0x2C (0x58) 0x2E (0x5C) MCP4451
* AZTEEG_X5_MINI_WIFI 0x58 0x5C MCP4451
* MIGHTYBOARD_REVE 0x2F (0x5E) MCP4018
*/
diff --git a/config/examples/tvrrug/Round2/Configuration.h b/config/examples/tvrrug/Round2/Configuration.h
index da7f3839a5..d29e148da0 100644
--- a/config/examples/tvrrug/Round2/Configuration.h
+++ b/config/examples/tvrrug/Round2/Configuration.h
@@ -823,15 +823,71 @@
*/
//#define BLTOUCH
#if ENABLED(BLTOUCH)
- //#define BLTOUCH_DELAY 500 // Minimum Command delay (ms). Enable and increase if needed
+ /**
+ * Either: Use the defaults (recommended) or: For special purposes, use the following DEFINES
+ * Do not activate settings that the probe might not understand. Clones might misunderstand
+ * advanced commands.
+ *
+ * Note: If the probe is not deploying, check a "Cmd: Reset" and "Cmd: Self-Test" and then
+ * check the wiring of the BROWN, RED and ORANGE wires.
+ *
+ * Note: If the trigger signal of your probe is not being recognized, it has been very often
+ * because the BLACK and WHITE wires needed to be swapped. They are not "interchangeable"
+ * like they would be with a real switch. So please check the wiring first.
+ *
+ * Settings for all BLTouch and clone probes:
+ */
+
+ // Safety: The probe needs time to recognize the command.
+ // Minimum command delay (ms). Enable and increase if needed.
+ //#define BLTOUCH_DELAY 500
/**
- * BLTouch V3.0 and newer smart series
- * For genuine BLTouch 3.0 sensors. Clones may be confused by 3.0 command angles. YMMV.
- * If the pin trigger is not detected, first try swapping the black and white wires then toggle this.
+ * Settings for BLTOUCH Classic 1.2, 1.3 or BLTouch Smart 1.0, 2.0, 2.2, 3.0, 3.1, and most clones:
*/
- //#define BLTOUCH_FORCE_5V_MODE
-#endif
+
+ // Feature: Switch into SW mode after a deploy. It makes the output pulse longer. Can be useful
+ // in special cases, like noisy or filtered input configurations.
+ //#define BLTOUCH_FORCE_SW_MODE
+
+ /**
+ * Settings for BLTouch Smart 3.0 and 3.1
+ * Summary:
+ * - Voltage modes: 5V and OD (open drain - "logic voltage free") output modes
+ * - High-Speed mode
+ * - Disable LCD voltage options
+ */
+
+ /**
+ * Danger: Don't activate 5V mode unless attached to a 5V-tolerant controller!
+ * V3.0 or 3.1: Set default mode to 5V mode at Marlin startup.
+ * If disabled, OD mode is the hard-coded default on 3.0
+ * On startup, Marlin will compare its eeprom to this vale. If the selected mode
+ * differs, a mode set eeprom write will be completed at initialization.
+ * Use the option below to force an eeprom write to a V3.1 probe regardless.
+ */
+ //#define BLTOUCH_SET_5V_MODE
+
+ /**
+ * Safety: Activate if connecting a probe with an unknown voltage mode.
+ * V3.0: Set a probe into mode selected above at Marlin startup. Required for 5V mode on 3.0
+ * V3.1: Force a probe with unknown mode into selected mode at Marlin startup ( = Probe EEPROM write )
+ * To preserve the life of the probe, use this once then turn it off and re-flash.
+ */
+ //#define BLTOUCH_FORCE_MODE_SET
+
+ /**
+ * Use "HIGH SPEED" mode for probing.
+ * Danger: Disable if your probe sometimes fails. Only suitable for stable well-adjusted systems.
+ * This feature was designed for Delta's with very fast Z moves however higher speed cartesians may function
+ * If the machine cannot raise the probe fast enough after a trigger, it may enter a fault state.
+ */
+ //#define BLTOUCH_HS_MODE
+
+ // Safety: Enable voltage mode settings in the LCD menu.
+ //#define BLTOUCH_LCD_VOLTAGE_MENU
+
+#endif // BLTOUCH
// A probe that is deployed and stowed with a solenoid pin (SOL1_PIN)
//#define SOLENOID_PROBE
@@ -852,23 +908,23 @@
//
/**
- * Z Probe to nozzle (X,Y) offset, relative to (0, 0).
- * X and Y offsets must be integers.
+ * Z Probe to nozzle (X,Y) offset, relative to (0, 0).
+ * X and Y offsets must be integers.
*
- * In the following example the X and Y offsets are both positive:
- * #define X_PROBE_OFFSET_FROM_EXTRUDER 10
- * #define Y_PROBE_OFFSET_FROM_EXTRUDER 10
+ * In the following example the X and Y offsets are both positive:
+ * #define X_PROBE_OFFSET_FROM_EXTRUDER 10
+ * #define Y_PROBE_OFFSET_FROM_EXTRUDER 10
*
- * +-- BACK ---+
- * | |
- * L | (+) P | R <-- probe (20,20)
- * E | | I
- * F | (-) N (+) | G <-- nozzle (10,10)
- * T | | H
- * | (-) | T
- * | |
- * O-- FRONT --+
- * (0,0)
+ * +-- BACK ---+
+ * | |
+ * L | (+) P | R <-- probe (20,20)
+ * E | | I
+ * F | (-) N (+) | G <-- nozzle (10,10)
+ * T | | H
+ * | (-) | T
+ * | |
+ * O-- FRONT --+
+ * (0,0)
*/
#define X_PROBE_OFFSET_FROM_EXTRUDER -25 // X offset: -left +right [of the nozzle]
#define Y_PROBE_OFFSET_FROM_EXTRUDER -29 // Y offset: -front +behind [the nozzle]
@@ -2084,6 +2140,10 @@
#define NEOPIXEL_IS_SEQUENTIAL // Sequential display for temperature change - LED by LED. Disable to change all LEDs at once.
#define NEOPIXEL_BRIGHTNESS 127 // Initial brightness (0-255)
//#define NEOPIXEL_STARTUP_TEST // Cycle through colors at startup
+
+ // Use a single Neopixel LED for static (background) lighting
+ //#define NEOPIXEL_BKGD_LED_INDEX 0 // Index of the LED to use
+ //#define NEOPIXEL_BKGD_COLOR { 255, 255, 255, 0 } // R, G, B, W
#endif
/**
diff --git a/config/examples/tvrrug/Round2/Configuration_adv.h b/config/examples/tvrrug/Round2/Configuration_adv.h
index 4f58660ded..e9b3c89a19 100644
--- a/config/examples/tvrrug/Round2/Configuration_adv.h
+++ b/config/examples/tvrrug/Round2/Configuration_adv.h
@@ -382,10 +382,6 @@
#endif
#endif
-//===========================================================================
-//============================ Mechanical Settings ==========================
-//===========================================================================
-
// @section homing
// If you want endstops to stay on (by default) even when not homing
@@ -745,6 +741,7 @@
* A (A shifted) B (B shifted) IC
* Smoothie 0x2C (0x58) 0x2D (0x5A) MCP4451
* AZTEEG_X3_PRO 0x2C (0x58) 0x2E (0x5C) MCP4451
+ * AZTEEG_X5_MINI 0x2C (0x58) 0x2E (0x5C) MCP4451
* AZTEEG_X5_MINI_WIFI 0x58 0x5C MCP4451
* MIGHTYBOARD_REVE 0x2F (0x5E) MCP4018
*/
diff --git a/config/examples/wt150/Configuration.h b/config/examples/wt150/Configuration.h
index 1b775eb947..9cc7ba85de 100644
--- a/config/examples/wt150/Configuration.h
+++ b/config/examples/wt150/Configuration.h
@@ -833,15 +833,71 @@
*/
//#define BLTOUCH
#if ENABLED(BLTOUCH)
- //#define BLTOUCH_DELAY 500 // Minimum Command delay (ms). Enable and increase if needed
+ /**
+ * Either: Use the defaults (recommended) or: For special purposes, use the following DEFINES
+ * Do not activate settings that the probe might not understand. Clones might misunderstand
+ * advanced commands.
+ *
+ * Note: If the probe is not deploying, check a "Cmd: Reset" and "Cmd: Self-Test" and then
+ * check the wiring of the BROWN, RED and ORANGE wires.
+ *
+ * Note: If the trigger signal of your probe is not being recognized, it has been very often
+ * because the BLACK and WHITE wires needed to be swapped. They are not "interchangeable"
+ * like they would be with a real switch. So please check the wiring first.
+ *
+ * Settings for all BLTouch and clone probes:
+ */
+
+ // Safety: The probe needs time to recognize the command.
+ // Minimum command delay (ms). Enable and increase if needed.
+ //#define BLTOUCH_DELAY 500
/**
- * BLTouch V3.0 and newer smart series
- * For genuine BLTouch 3.0 sensors. Clones may be confused by 3.0 command angles. YMMV.
- * If the pin trigger is not detected, first try swapping the black and white wires then toggle this.
+ * Settings for BLTOUCH Classic 1.2, 1.3 or BLTouch Smart 1.0, 2.0, 2.2, 3.0, 3.1, and most clones:
*/
- //#define BLTOUCH_FORCE_5V_MODE
-#endif
+
+ // Feature: Switch into SW mode after a deploy. It makes the output pulse longer. Can be useful
+ // in special cases, like noisy or filtered input configurations.
+ //#define BLTOUCH_FORCE_SW_MODE
+
+ /**
+ * Settings for BLTouch Smart 3.0 and 3.1
+ * Summary:
+ * - Voltage modes: 5V and OD (open drain - "logic voltage free") output modes
+ * - High-Speed mode
+ * - Disable LCD voltage options
+ */
+
+ /**
+ * Danger: Don't activate 5V mode unless attached to a 5V-tolerant controller!
+ * V3.0 or 3.1: Set default mode to 5V mode at Marlin startup.
+ * If disabled, OD mode is the hard-coded default on 3.0
+ * On startup, Marlin will compare its eeprom to this vale. If the selected mode
+ * differs, a mode set eeprom write will be completed at initialization.
+ * Use the option below to force an eeprom write to a V3.1 probe regardless.
+ */
+ //#define BLTOUCH_SET_5V_MODE
+
+ /**
+ * Safety: Activate if connecting a probe with an unknown voltage mode.
+ * V3.0: Set a probe into mode selected above at Marlin startup. Required for 5V mode on 3.0
+ * V3.1: Force a probe with unknown mode into selected mode at Marlin startup ( = Probe EEPROM write )
+ * To preserve the life of the probe, use this once then turn it off and re-flash.
+ */
+ //#define BLTOUCH_FORCE_MODE_SET
+
+ /**
+ * Use "HIGH SPEED" mode for probing.
+ * Danger: Disable if your probe sometimes fails. Only suitable for stable well-adjusted systems.
+ * This feature was designed for Delta's with very fast Z moves however higher speed cartesians may function
+ * If the machine cannot raise the probe fast enough after a trigger, it may enter a fault state.
+ */
+ //#define BLTOUCH_HS_MODE
+
+ // Safety: Enable voltage mode settings in the LCD menu.
+ //#define BLTOUCH_LCD_VOLTAGE_MENU
+
+#endif // BLTOUCH
// A probe that is deployed and stowed with a solenoid pin (SOL1_PIN)
//#define SOLENOID_PROBE
@@ -862,23 +918,23 @@
//
/**
- * Z Probe to nozzle (X,Y) offset, relative to (0, 0).
- * X and Y offsets must be integers.
+ * Z Probe to nozzle (X,Y) offset, relative to (0, 0).
+ * X and Y offsets must be integers.
*
- * In the following example the X and Y offsets are both positive:
- * #define X_PROBE_OFFSET_FROM_EXTRUDER 10
- * #define Y_PROBE_OFFSET_FROM_EXTRUDER 10
+ * In the following example the X and Y offsets are both positive:
+ * #define X_PROBE_OFFSET_FROM_EXTRUDER 10
+ * #define Y_PROBE_OFFSET_FROM_EXTRUDER 10
*
- * +-- BACK ---+
- * | |
- * L | (+) P | R <-- probe (20,20)
- * E | | I
- * F | (-) N (+) | G <-- nozzle (10,10)
- * T | | H
- * | (-) | T
- * | |
- * O-- FRONT --+
- * (0,0)
+ * +-- BACK ---+
+ * | |
+ * L | (+) P | R <-- probe (20,20)
+ * E | | I
+ * F | (-) N (+) | G <-- nozzle (10,10)
+ * T | | H
+ * | (-) | T
+ * | |
+ * O-- FRONT --+
+ * (0,0)
*/
#define X_PROBE_OFFSET_FROM_EXTRUDER 10 // X offset: -left +right [of the nozzle]
#define Y_PROBE_OFFSET_FROM_EXTRUDER 10 // Y offset: -front +behind [the nozzle]
@@ -2094,6 +2150,10 @@
#define NEOPIXEL_IS_SEQUENTIAL // Sequential display for temperature change - LED by LED. Disable to change all LEDs at once.
#define NEOPIXEL_BRIGHTNESS 127 // Initial brightness (0-255)
//#define NEOPIXEL_STARTUP_TEST // Cycle through colors at startup
+
+ // Use a single Neopixel LED for static (background) lighting
+ //#define NEOPIXEL_BKGD_LED_INDEX 0 // Index of the LED to use
+ //#define NEOPIXEL_BKGD_COLOR { 255, 255, 255, 0 } // R, G, B, W
#endif
/**
diff --git a/config/examples/wt150/Configuration_adv.h b/config/examples/wt150/Configuration_adv.h
index 5e2675f4f4..000bdd6406 100644
--- a/config/examples/wt150/Configuration_adv.h
+++ b/config/examples/wt150/Configuration_adv.h
@@ -382,10 +382,6 @@
#endif
#endif
-//===========================================================================
-//============================ Mechanical Settings ==========================
-//===========================================================================
-
// @section homing
// If you want endstops to stay on (by default) even when not homing
@@ -746,6 +742,7 @@
* A (A shifted) B (B shifted) IC
* Smoothie 0x2C (0x58) 0x2D (0x5A) MCP4451
* AZTEEG_X3_PRO 0x2C (0x58) 0x2E (0x5C) MCP4451
+ * AZTEEG_X5_MINI 0x2C (0x58) 0x2E (0x5C) MCP4451
* AZTEEG_X5_MINI_WIFI 0x58 0x5C MCP4451
* MIGHTYBOARD_REVE 0x2F (0x5E) MCP4018
*/