diff --git a/Marlin/Configuration.h b/Marlin/Configuration.h
index 6cf309775d..f18ef0d865 100644
--- a/Marlin/Configuration.h
+++ b/Marlin/Configuration.h
@@ -27,9 +27,6 @@
//#define E_SpreadCycle
-
-
-
/**
* Enable if you install a KEENOVO AC BED with Solid State Relay
*/
@@ -870,7 +867,7 @@
//
#define JUNCTION_DEVIATION
#if ENABLED(JUNCTION_DEVIATION)
- #define JUNCTION_DEVIATION_MM 0.02 // (mm) Distance from real junction edge
+ #define JUNCTION_DEVIATION_MM 0.08 // (mm) Distance from real junction edge
#endif
/**
@@ -903,7 +900,7 @@
*
* See https://github.com/synthetos/TinyG/wiki/Jerk-Controlled-Motion-Explained
*/
-#define S_CURVE_ACCELERATION
+//#define S_CURVE_ACCELERATION
//===========================================================================
//============================= Z Probe Options =============================
@@ -971,15 +968,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
@@ -1000,23 +1053,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]
@@ -1565,7 +1618,7 @@
//
// M100 Free Memory Watcher
//
-//#define M100_FREE_MEMORY_WATCHER // Add M100 (Free Memory Watcher) to debug memory usage
+#define M100_FREE_MEMORY_WATCHER // Add M100 (Free Memory Watcher) to debug memory usage
//
// G20/G21 Inch mode support
@@ -1701,7 +1754,7 @@
*
* View the current statistics with M78.
*/
-#define PRINTCOUNTER
+//#define PRINTCOUNTER
//=============================================================================
//============================= LCD and SD support ============================
@@ -2265,6 +2318,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/Marlin/Configuration_adv.h b/Marlin/Configuration_adv.h
index f2871738dc..4c19965b92 100644
--- a/Marlin/Configuration_adv.h
+++ b/Marlin/Configuration_adv.h
@@ -316,7 +316,7 @@
* If left undefined this defaults to F = F_CPU/(2*255*1)
* ie F = 31.4 Khz on 16 MHz microcontrollers or F = 39.2 KHz on 20 MHz microcontrollers
* These defaults are the same as with the old FAST_PWM_FAN implementation - no migration is required
- * NOTE: Setting very low frequencies (< 10 Hz) may result in unexpected timer behaviour.
+ * NOTE: Setting very low frequencies (< 10 Hz) may result in unexpected timer behavior.
*
* USE_OCR2A_AS_TOP [undefined by default]
* Boards that use TIMER2 for PWM have limitations resulting in only a few possible frequencies on TIMER2:
@@ -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
*/
@@ -1046,6 +1043,7 @@
#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_CHAMBER_ANIM // Use a second bitmap to indicate chamber 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
@@ -1235,7 +1233,8 @@
/**
* Minimum stepper driver pulse width (in µs)
* 0 : Smallest possible width the MCU can produce, compatible with TMC2xxx drivers
- * 1 : Minimum for A4988, A5984, and LV8729 stepper drivers
+ * 0 : Minimum 500ns for LV8729, adjusted in stepper.h
+ * 1 : Minimum for A4988 and A5984 stepper drivers
* 2 : Minimum for DRV8825 stepper drivers
* 3 : Minimum for TB6600 stepper drivers
* 30 : Minimum for TB6560 stepper drivers
@@ -1250,8 +1249,8 @@
* 500000 : Maximum for A4988 stepper driver
* 400000 : Maximum for TMC2xxx stepper drivers
* 250000 : Maximum for DRV8825 stepper driver
+ * 200000 : Maximum for LV8729 stepper driver
* 150000 : Maximum for TB6600 stepper driver
- * 130000 : Maximum for LV8729 stepper driver
* 15000 : Maximum for TB6560 stepper driver
*
* Override the default value based on the driver type set in Configuration.h.
@@ -2298,7 +2297,7 @@
//#define I2CPE_ERR_THRESH_ABORT 100.0 // Threshold size for error (in mm) error on any given
// axis after which the printer will abort. Comment out to
- // disable abort behaviour.
+ // disable abort behavior.
#define I2CPE_TIME_TRUSTED 10000 // After an encoder fault, there must be no further fault
// for this amount of time (in ms) before the encoder
@@ -2358,7 +2357,7 @@
//#define NANODLP_Z_SYNC
#if ENABLED(NANODLP_Z_SYNC)
//#define NANODLP_ALL_AXIS // Enables "Z_move_comp" output on any axis move.
- // Default behaviour is limited to Z axis only.
+ // Default behavior is limited to Z axis only.
#endif
/**
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/HAL_timers_Due.cpp b/Marlin/src/HAL/HAL_DUE/HAL_timers_Due.cpp
index 9d2233d914..43c8e572b6 100644
--- a/Marlin/src/HAL/HAL_DUE/HAL_timers_Due.cpp
+++ b/Marlin/src/HAL/HAL_DUE/HAL_timers_Due.cpp
@@ -46,7 +46,6 @@
#define NUM_HARDWARE_TIMERS 9
-#define PRESCALER 2
// --------------------------------------------------------------------------
// Types
// --------------------------------------------------------------------------
diff --git a/Marlin/src/HAL/HAL_DUE/ServoTimers.h b/Marlin/src/HAL/HAL_DUE/ServoTimers.h
index 8d5d0fa583..84129ef2b6 100644
--- a/Marlin/src/HAL/HAL_DUE/ServoTimers.h
+++ b/Marlin/src/HAL/HAL_DUE/ServoTimers.h
@@ -87,5 +87,21 @@
#define HANDLER_FOR_TIMER5 TC0_Handler
#endif
-//typedef enum { _timer1, _timer2, _timer3, _timer4, _timer5, _Nbr_16timers } timer16_Sequence_t;
-typedef enum { _timer3, _timer5, _Nbr_16timers } timer16_Sequence_t;
+typedef enum : unsigned char {
+ #ifdef _useTimer1
+ _timer1,
+ #endif
+ #ifdef _useTimer2
+ _timer2,
+ #endif
+ #ifdef _useTimer3
+ _timer3,
+ #endif
+ #ifdef _useTimer4
+ _timer4,
+ #endif
+ #ifdef _useTimer5
+ _timer5,
+ #endif
+ _Nbr_16timers
+} timer16_Sequence_t;
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/spi_pins.h b/Marlin/src/HAL/HAL_DUE/spi_pins.h
index c805b0c1ea..58916c91ee 100644
--- a/Marlin/src/HAL/HAL_DUE/spi_pins.h
+++ b/Marlin/src/HAL/HAL_DUE/spi_pins.h
@@ -26,19 +26,22 @@
*
* Available chip select pins for HW SPI are 4 10 52 77
*/
-#if (SDSS == 4) || (SDSS == 10) || (SDSS == 52) || (SDSS == 77)
- #if (SDSS == 4)
+#if SDSS == 4 || SDSS == 10 || SDSS == 52 || SDSS == 77 || SDSS == 87
+ #if SDSS == 4
#define SPI_PIN 87
#define SPI_CHAN 1
- #elif (SDSS == 10)
+ #elif SDSS == 10
#define SPI_PIN 77
#define SPI_CHAN 0
- #elif (SDSS == 52)
+ #elif SDSS == 52
#define SPI_PIN 86
#define SPI_CHAN 2
- #else
+ #elif SDSS == 77
#define SPI_PIN 77
#define SPI_CHAN 0
+ #else
+ #define SPI_PIN 87
+ #define SPI_CHAN 1
#endif
#define SCK_PIN 76
#define MISO_PIN 74
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_DUE/usb/udi_composite_desc.c b/Marlin/src/HAL/HAL_DUE/usb/udi_composite_desc.c
index 3c5f001a26..07bdd1b9d6 100644
--- a/Marlin/src/HAL/HAL_DUE/usb/udi_composite_desc.c
+++ b/Marlin/src/HAL/HAL_DUE/usb/udi_composite_desc.c
@@ -67,9 +67,9 @@ UDC_DESC_STORAGE usb_dev_desc_t udc_device_desc = {
.bLength = sizeof(usb_dev_desc_t),
.bDescriptorType = USB_DT_DEVICE,
.bcdUSB = LE16(USB_V2_0),
- .bDeviceClass = 0,
- .bDeviceSubClass = 0,
- .bDeviceProtocol = 0,
+ .bDeviceClass = CDC_CLASS_MULTI,
+ .bDeviceSubClass = CDC_SUBCLASS_ACM,
+ .bDeviceProtocol = CDC_PROTOCOL_V25TER,
.bMaxPacketSize0 = USB_DEVICE_EP_CTRL_SIZE,
.idVendor = LE16(USB_DEVICE_VENDOR_ID),
.idProduct = LE16(USB_DEVICE_PRODUCT_ID),
@@ -101,9 +101,9 @@ UDC_DESC_STORAGE usb_dev_qual_desc_t udc_device_qual = {
.bLength = sizeof(usb_dev_qual_desc_t),
.bDescriptorType = USB_DT_DEVICE_QUALIFIER,
.bcdUSB = LE16(USB_V2_0),
- .bDeviceClass = 0,
- .bDeviceSubClass = 0,
- .bDeviceProtocol = 0,
+ .bDeviceClass = CDC_CLASS_MULTI,
+ .bDeviceSubClass = CDC_SUBCLASS_ACM,
+ .bDeviceProtocol = CDC_PROTOCOL_V25TER,
.bMaxPacketSize0 = USB_DEVICE_EP_CTRL_SIZE,
.bNumConfigurations = 1
};
diff --git a/Marlin/src/HAL/HAL_DUE/usb/usb_protocol_cdc.h b/Marlin/src/HAL/HAL_DUE/usb/usb_protocol_cdc.h
index 875e7e4dda..49fc7387ef 100644
--- a/Marlin/src/HAL/HAL_DUE/usb/usb_protocol_cdc.h
+++ b/Marlin/src/HAL/HAL_DUE/usb/usb_protocol_cdc.h
@@ -61,6 +61,8 @@
#define CDC_CLASS_DEVICE 0x02 //!< USB Communication Device Class
#define CDC_CLASS_COMM 0x02 //!< CDC Communication Class Interface
#define CDC_CLASS_DATA 0x0A //!< CDC Data Class Interface
+#define CDC_CLASS_MULTI 0xEF //!< CDC Multi-interface Function
+
//@}
//! \name USB CDC Subclass IDs
diff --git a/Marlin/src/HAL/HAL_ESP32/HAL.cpp b/Marlin/src/HAL/HAL_ESP32/HAL.cpp
index 53966de55e..00a40fbbe8 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/hardware/Heater.cpp b/Marlin/src/HAL/HAL_LINUX/hardware/Heater.cpp
index 0e2f94c356..a07f6ab202 100644
--- a/Marlin/src/HAL/HAL_LINUX/hardware/Heater.cpp
+++ b/Marlin/src/HAL/HAL_LINUX/hardware/Heater.cpp
@@ -49,7 +49,7 @@ void Heater::update() {
last = now;
heat += (heater_state - heat) * (delta / 1000000000.0);
- if (heat < room_temp_raw) heat = room_temp_raw;
+ NOLESS(heat, room_temp_raw);
Gpio::pin_map[analogInputToDigitalPin(adc_pin)].value = 0xFFFF - (uint16_t)heat;
}
}
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..637b83bd5d 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) && PIN_EXISTS(FSMC_CS) // FSMC on 100/144 pins SoCs
+
#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);
@@ -267,4 +272,4 @@ uint32_t LCD_IO_ReadData(uint16_t RegValue, uint8_t ReadSize) {
#endif // HAS_GRAPHICAL_LCD
-#endif // ARDUINO_ARCH_STM32F1 && (STM32_HIGH_DENSITY || STM32_XL_DENSITY)
+#endif // ARDUINO_ARCH_STM32F1 && FSMC_CS_PIN
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..ca06e66704 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/dac_mcp4728.cpp b/Marlin/src/feature/dac/dac_mcp4728.cpp
index 689be54f96..727f792eef 100644
--- a/Marlin/src/feature/dac/dac_mcp4728.cpp
+++ b/Marlin/src/feature/dac/dac_mcp4728.cpp
@@ -58,7 +58,7 @@ void mcp4728_init() {
* Write input resister value to specified channel using fastwrite method.
* Channel : 0-3, Values : 0-4095
*/
-uint8_t mcp4728_analogWrite(uint8_t channel, uint16_t value) {
+uint8_t mcp4728_analogWrite(const uint8_t channel, const uint16_t value) {
mcp4728_values[channel] = value;
return mcp4728_fastWrite();
}
@@ -81,7 +81,7 @@ uint8_t mcp4728_eepromWrite() {
/**
* Write Voltage reference setting to all input regiters
*/
-uint8_t mcp4728_setVref_all(uint8_t value) {
+uint8_t mcp4728_setVref_all(const uint8_t value) {
Wire.beginTransmission(I2C_ADDRESS(DAC_DEV_ADDRESS));
Wire.write(VREFWRITE | (value ? 0x0F : 0x00));
return Wire.endTransmission();
@@ -89,7 +89,7 @@ uint8_t mcp4728_setVref_all(uint8_t value) {
/**
* Write Gain setting to all input regiters
*/
-uint8_t mcp4728_setGain_all(uint8_t value) {
+uint8_t mcp4728_setGain_all(const uint8_t value) {
Wire.beginTransmission(I2C_ADDRESS(DAC_DEV_ADDRESS));
Wire.write(GAINWRITE | (value ? 0x0F : 0x00));
return Wire.endTransmission();
@@ -98,25 +98,24 @@ uint8_t mcp4728_setGain_all(uint8_t value) {
/**
* Return Input Register value
*/
-uint16_t mcp4728_getValue(uint8_t channel) { return mcp4728_values[channel]; }
+uint16_t mcp4728_getValue(const uint8_t channel) { return mcp4728_values[channel]; }
#if 0
/**
* Steph: Might be useful in the future
* Return Vout
*/
-uint16_t mcp4728_getVout(uint8_t channel) {
- uint32_t vref = 2048,
- vOut = (vref * mcp4728_values[channel] * (_DAC_STEPPER_GAIN + 1)) / 4096;
- if (vOut > defaultVDD) vOut = defaultVDD;
- return vOut;
+uint16_t mcp4728_getVout(const uint8_t channel) {
+ const uint32_t vref = 2048,
+ vOut = (vref * mcp4728_values[channel] * (_DAC_STEPPER_GAIN + 1)) / 4096;
+ return MIN(vOut, defaultVDD);
}
#endif
/**
* Returns DAC values as a 0-100 percentage of drive strength
*/
-uint8_t mcp4728_getDrvPct(uint8_t channel) { return uint8_t(100.0 * mcp4728_values[channel] / (DAC_STEPPER_MAX) + 0.5); }
+uint8_t mcp4728_getDrvPct(const uint8_t channel) { return uint8_t(100.0 * mcp4728_values[channel] / (DAC_STEPPER_MAX) + 0.5); }
/**
* Receives all Drive strengths as 0-100 percent values, updates
@@ -144,7 +143,7 @@ uint8_t mcp4728_fastWrite() {
/**
* Common function for simple general commands
*/
-uint8_t mcp4728_simpleCommand(byte simpleCommand) {
+uint8_t mcp4728_simpleCommand(const byte simpleCommand) {
Wire.beginTransmission(I2C_ADDRESS(GENERALCALL));
Wire.write(simpleCommand);
return Wire.endTransmission();
diff --git a/Marlin/src/feature/dac/dac_mcp4728.h b/Marlin/src/feature/dac/dac_mcp4728.h
index c1fd6151ec..6184e5c598 100644
--- a/Marlin/src/feature/dac/dac_mcp4728.h
+++ b/Marlin/src/feature/dac/dac_mcp4728.h
@@ -46,12 +46,12 @@
#define DAC_DEV_ADDRESS (BASE_ADDR | DAC_OR_ADDRESS)
void mcp4728_init();
-uint8_t mcp4728_analogWrite(uint8_t channel, uint16_t value);
+uint8_t mcp4728_analogWrite(const uint8_t channel, const uint16_t value);
uint8_t mcp4728_eepromWrite();
-uint8_t mcp4728_setVref_all(uint8_t value);
-uint8_t mcp4728_setGain_all(uint8_t value);
-uint16_t mcp4728_getValue(uint8_t channel);
+uint8_t mcp4728_setVref_all(const uint8_t value);
+uint8_t mcp4728_setGain_all(const uint8_t value);
+uint16_t mcp4728_getValue(const uint8_t channel);
uint8_t mcp4728_fastWrite();
-uint8_t mcp4728_simpleCommand(byte simpleCommand);
-uint8_t mcp4728_getDrvPct(uint8_t channel);
+uint8_t mcp4728_simpleCommand(const byte simpleCommand);
+uint8_t mcp4728_getDrvPct(const uint8_t channel);
void mcp4728_setDrvPct(uint8_t pct[XYZE]);
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/pause.cpp b/Marlin/src/feature/pause.cpp
index 4ebc41028c..28f2a9fd00 100644
--- a/Marlin/src/feature/pause.cpp
+++ b/Marlin/src/feature/pause.cpp
@@ -681,7 +681,8 @@ void resume_print(const float &slow_load_length/*=0*/, const float &fast_load_le
// Resume the print job timer if it was running
if (print_job_timer.isPaused()) print_job_timer.start();
- #if HAS_LCD_MENU
+ #if HAS_DISPLAY
+ ui.reset_status();
ui.return_to_status();
#endif
}
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..886f963069 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;
@@ -562,24 +565,16 @@
case TMC_VSENSE: print_vsense(st); break;
case TMC_MICROSTEPS: SERIAL_ECHO(st.microsteps()); break;
case TMC_TSTEP: {
- uint32_t tstep_value = st.TSTEP();
- if (tstep_value == 0xFFFFF) SERIAL_ECHOPGM("max");
- else SERIAL_ECHO(tstep_value);
- }
- break;
- case TMC_TPWMTHRS: {
- uint32_t tpwmthrs_val = st.TPWMTHRS();
- SERIAL_ECHO(tpwmthrs_val);
- }
- break;
- case TMC_TPWMTHRS_MMS: {
- uint32_t tpwmthrs_val = st.TPWMTHRS();
- if (tpwmthrs_val)
- SERIAL_ECHO(12650000UL * st.microsteps() / (256 * tpwmthrs_val * spmm));
- else
- SERIAL_CHAR('-');
- }
- break;
+ const uint32_t tstep_value = st.TSTEP();
+ if (tstep_value != 0xFFFFF) SERIAL_ECHO(tstep_value); else SERIAL_ECHOPGM("max");
+ } break;
+ #if ENABLED(HYBRID_THRESHOLD)
+ case TMC_TPWMTHRS: SERIAL_ECHO(uint32_t(st.TPWMTHRS())); break;
+ case TMC_TPWMTHRS_MMS: {
+ const uint32_t tpwmthrs_val = st.get_pwm_thrs();
+ if (tpwmthrs_val) SERIAL_ECHO(tpwmthrs_val); else SERIAL_CHAR('-');
+ } break;
+ #endif
case TMC_OTPW: serialprint_truefalse(st.otpw()); break;
#if ENABLED(MONITOR_DRIVER_STATUS)
case TMC_OTPW_TRIGGERED: serialprint_truefalse(st.getOTPW()); break;
@@ -588,13 +583,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 +644,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 +852,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 +1093,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/bedlevel/abl/G29.cpp b/Marlin/src/gcode/bedlevel/abl/G29.cpp
index 22cc0c1754..f43cfa6a35 100644
--- a/Marlin/src/gcode/bedlevel/abl/G29.cpp
+++ b/Marlin/src/gcode/bedlevel/abl/G29.cpp
@@ -55,6 +55,10 @@
#include "../../../lcd/extensible_ui/ui_api.h"
#endif
+#if HOTENDS > 1
+ #include "../../../module/tool_change.h"
+#endif
+
#if ABL_GRID
#if ENABLED(PROBE_Y_FIRST)
#define PR_OUTER_VAR xCount
@@ -280,7 +284,7 @@ G29_TYPE GcodeSuite::G29() {
*/
if (!g29_in_progress) {
- #if ENABLED(DUAL_X_CARRIAGE)
+ #if HOTENDS > 1
if (active_extruder != 0) tool_change(0);
#endif
diff --git a/Marlin/src/gcode/bedlevel/mbl/G29.cpp b/Marlin/src/gcode/bedlevel/mbl/G29.cpp
index 15fbf82128..dd6faea955 100644
--- a/Marlin/src/gcode/bedlevel/mbl/G29.cpp
+++ b/Marlin/src/gcode/bedlevel/mbl/G29.cpp
@@ -134,7 +134,7 @@ void GcodeSuite::G29() {
BUZZ(100, 659);
BUZZ(100, 698);
- gcode.home_all_axes();
+ home_all_axes();
set_bed_leveling_enabled(true);
#if ENABLED(MESH_G28_REST_ORIGIN)
diff --git a/Marlin/src/gcode/calibrate/G28.cpp b/Marlin/src/gcode/calibrate/G28.cpp
index 1a6922cfa4..3656dc0999 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)
@@ -264,13 +260,9 @@ void GcodeSuite::G28(const bool always_home_all) {
#else // NOT DELTA
- const bool homeX = always_home_all || parser.seen('X'),
- homeY = always_home_all || parser.seen('Y'),
- homeZ = always_home_all || parser.seen('Z'),
- home_all = (!homeX && !homeY && !homeZ) || (homeX && homeY && homeZ),
- doX = home_all || homeX,
- doY = home_all || homeY,
- doZ = home_all || homeZ;
+ const bool homeX = parser.seen('X'), homeY = parser.seen('Y'), homeZ = parser.seen('Z'),
+ home_all = always_home_all || (homeX == homeY && homeX == homeZ),
+ doX = home_all || homeX, doY = home_all || homeY, doZ = home_all || homeZ;
set_destination_from_current();
@@ -353,6 +345,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..62944ffc3e 100644
--- a/Marlin/src/gcode/calibrate/G34_M422.cpp
+++ b/Marlin/src/gcode/calibrate/G34_M422.cpp
@@ -74,7 +74,7 @@ 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.");
+ SERIAL_ECHOLNPGM("Home XY first");
break;
}
@@ -142,6 +142,14 @@ void GcodeSuite::G34() {
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) {
+
+ #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)
+ do_blocking_move_to_z(Z_CLEARANCE_BETWEEN_PROBES + 7);
+ #endif
+
// 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);
@@ -229,15 +237,19 @@ 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
+
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..3c53c3de6d 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,153 @@ 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
+ SERIAL_ECHOPGM(". Pulse width");
+ if (probe_counter == 15)
+ SERIAL_ECHOLNPGM(": 30ms or more");
+ else
+ SERIAL_ECHOLNPAIR(" (+/- 4ms): ", probe_counter * 2);
- if (probe_counter == 0) SERIAL_ECHOLNPGM("trigger not detected");
+ 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)");
+ SERIAL_ECHOLNPGM(" detected.");
+ }
+ else SERIAL_ECHOLNPGM("FAIL: Noise detected - please re-run test");
- } // measure active signal length
+ MOVE_SERVO(probe_index, servo_angles[Z_PROBE_SERVO_NR][1]); // Stow
+ return;
+ }
+ }
- #endif
+ if (!probe_counter) SERIAL_ECHOLNPGM("FAIL: No trigger detected");
+
+ #endif // HAS_Z_SERVO_PROBE
} // servo_probe_test
@@ -239,12 +274,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 +286,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 +311,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 +334,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 +346,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/control/M605.cpp b/Marlin/src/gcode/control/M605.cpp
index f1f64f0ce3..5829e2372c 100644
--- a/Marlin/src/gcode/control/M605.cpp
+++ b/Marlin/src/gcode/control/M605.cpp
@@ -132,7 +132,7 @@
DEBUG_ECHOPAIR("\nX2 Home X: ", x_home_pos(1), "\nX2_MIN_POS=", int(X2_MIN_POS), "\nX2_MAX_POS=", int(X2_MAX_POS));
DEBUG_ECHOPAIR("\nX2_HOME_DIR=", int(X2_HOME_DIR), "\nX2_HOME_POS=", int(X2_HOME_POS));
DEBUG_ECHOPAIR("\nDEFAULT_DUAL_X_CARRIAGE_MODE=", STRINGIFY(DEFAULT_DUAL_X_CARRIAGE_MODE));
- DEBUG_ECHOPAIR("\nTOOLCHANGE_ZRAISE=", float(TOOLCHANGE_ZRAISE));
+ DEBUG_ECHOPAIR("\toolchange_settings.z_raise=", toolchange_settings.z_raise);
DEBUG_ECHOPAIR("\nDEFAULT_DUPLICATION_X_OFFSET=", int(DEFAULT_DUPLICATION_X_OFFSET));
DEBUG_EOL();
diff --git a/Marlin/src/gcode/feature/L6470/M916-918.cpp b/Marlin/src/gcode/feature/L6470/M916-918.cpp
index 590ae8c541..6c2cd220d7 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
@@ -106,10 +106,10 @@ void GcodeSuite::M916() {
// turn the motor(s) both directions
sprintf_P(gcode_string, PSTR("G0 %s%4.3f F%4.3f"), temp_axis_string, position_min, final_feedrate);
- gcode.process_subcommands_now_P(gcode_string);
+ process_subcommands_now_P(gcode_string);
sprintf_P(gcode_string, PSTR("G0 %s%4.3f F%4.3f"), temp_axis_string, position_max, final_feedrate);
- gcode.process_subcommands_now_P(gcode_string);
+ process_subcommands_now_P(gcode_string);
// get the status after the motors have stopped
planner.synchronize();
@@ -226,10 +226,10 @@ void GcodeSuite::M917() {
DEBUG_ECHOLNPAIR(" OCD threshold : ", (ocd_th_val + 1) * 375);
sprintf_P(gcode_string, PSTR("G0 %s%4.3f F%4.3f"), temp_axis_string, position_min, final_feedrate);
- gcode.process_subcommands_now_P(gcode_string);
+ process_subcommands_now_P(gcode_string);
sprintf_P(gcode_string, PSTR("G0 %s%4.3f F%4.3f"), temp_axis_string, position_max, final_feedrate);
- gcode.process_subcommands_now_P(gcode_string);
+ process_subcommands_now_P(gcode_string);
planner.synchronize();
@@ -263,7 +263,7 @@ void GcodeSuite::M917() {
L6470.set_param(axis_index[j], L6470_KVAL_HOLD, kval_hold);
}
DEBUG_ECHOLNPGM(".");
- gcode.reset_stepper_timeout(); // reset_stepper_timeout to keep steppers powered
+ reset_stepper_timeout(); // reset_stepper_timeout to keep steppers powered
watchdog_reset(); // beat the dog
safe_delay(5000);
status_composite_temp = 0;
@@ -518,10 +518,10 @@ void GcodeSuite::M918() {
DEBUG_ECHOLNPAIR("...feedrate = ", current_feedrate);
sprintf_P(gcode_string, PSTR("G0 %s%4.3f F%4.3f"), temp_axis_string, position_min, current_feedrate);
- gcode.process_subcommands_now_P(gcode_string);
+ process_subcommands_now_P(gcode_string);
sprintf_P(gcode_string, PSTR("G0 %s%4.3f F%4.3f"), temp_axis_string, position_max, current_feedrate);
- gcode.process_subcommands_now_P(gcode_string);
+ process_subcommands_now_P(gcode_string);
planner.synchronize();
diff --git a/Marlin/src/gcode/feature/pause/M600.cpp b/Marlin/src/gcode/feature/pause/M600.cpp
index 147cc9c573..fe34541700 100644
--- a/Marlin/src/gcode/feature/pause/M600.cpp
+++ b/Marlin/src/gcode/feature/pause/M600.cpp
@@ -98,7 +98,7 @@ void GcodeSuite::M600() {
#if ENABLED(HOME_BEFORE_FILAMENT_CHANGE)
// Don't allow filament change without homing first
- if (axis_unhomed_error()) gcode.home_all_axes();
+ if (axis_unhomed_error()) home_all_axes();
#endif
#if EXTRUDERS > 1
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..8aabf79a90 100644
--- a/Marlin/src/gcode/gcode.h
+++ b/Marlin/src/gcode/gcode.h
@@ -30,11 +30,11 @@
* -----------------
*
* Helpful G-code references:
- * - http://linuxcnc.org/handbook/gcode/g-code.html
- * - http://objects.reprap.org/wiki/Mendel_User_Manual:_RepRapGCodes
+ * - http://marlinfw.org/meta/gcode
+ * - https://reprap.org/wiki/G-code
+ * - http://linuxcnc.org/docs/html/gcode.html
*
* Help to document Marlin's G-codes online:
- * - http://reprap.org/wiki/G-code
* - https://github.com/MarlinFirmware/MarlinDocumentation
*
* -----------------
@@ -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_LCD.h b/Marlin/src/inc/Conditionals_LCD.h
index a1b922bed6..e458ee6481 100644
--- a/Marlin/src/inc/Conditionals_LCD.h
+++ b/Marlin/src/inc/Conditionals_LCD.h
@@ -405,9 +405,6 @@
#define E_MANUAL EXTRUDERS
#elif ENABLED(PRUSA_MMU2)
#define E_STEPPERS 1
- #ifndef TOOLCHANGE_ZRAISE
- #define TOOLCHANGE_ZRAISE 0
- #endif
#endif
// No inactive extruders with MK2_MULTIPLEXER or SWITCHING_NOZZLE
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..aeaef06391 100644
--- a/Marlin/src/inc/SanityCheck.h
+++ b/Marlin/src/inc/SanityCheck.h
@@ -694,7 +694,7 @@ static_assert(Y_MAX_LENGTH >= Y_BED_SIZE, "Movement bounds (Y_MIN_POS, Y_MAX_POS
#endif
#ifndef TOOLCHANGE_ZRAISE
- #error "TOOLCHANGE_ZRAISE required for EXTRUDERS > 1. Please update your Configuration."
+ #error "TOOLCHANGE_ZRAISE required for EXTRUDERS > 1. Please update your Configuration_adv.h."
#endif
#elif ENABLED(MK2_MULTIPLEXER)
@@ -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
@@ -1366,9 +1369,9 @@ static_assert(Y_MAX_LENGTH >= Y_BED_SIZE, "Movement bounds (Y_MIN_POS, Y_MAX_POS
#error "TEMP_SENSOR_4 1000 requires HOTEND4_PULLUP_RESISTOR_OHMS, HOTEND4_RESISTANCE_25C_OHMS and HOTEND4_BETA in Configuration_adv.h."
#elif ENABLED(HEATER_5_USER_THERMISTOR) && !(defined(HOTEND5_PULLUP_RESISTOR_OHMS) && defined(HOTEND5_RESISTANCE_25C_OHMS) && defined(HOTEND5_BETA))
#error "TEMP_SENSOR_5 1000 requires HOTEND5_PULLUP_RESISTOR_OHMS, HOTEND5_RESISTANCE_25C_OHMS and HOTEND5_BETA in Configuration_adv.h."
-#elif ENABLED(BED_USER_THERMISTOR) && !(defined(BED_PULLUP_RESISTOR_OHMS) && defined(BED_RESISTANCE_25C_OHMS) && defined(BED_BETA))
+#elif ENABLED(HEATER_BED_USER_THERMISTOR) && !(defined(BED_PULLUP_RESISTOR_OHMS) && defined(BED_RESISTANCE_25C_OHMS) && defined(BED_BETA))
#error "TEMP_SENSOR_BED 1000 requires BED_PULLUP_RESISTOR_OHMS, BED_RESISTANCE_25C_OHMS and BED_BETA in Configuration_adv.h."
-#elif ENABLED(CHAMBER_USER_THERMISTOR) && !(defined(CHAMBER_PULLUP_RESISTOR_OHMS) && defined(CHAMBER_RESISTANCE_25C_OHMS) && defined(CHAMBER_BETA))
+#elif ENABLED(HEATER_CHAMBER_USER_THERMISTOR) && !(defined(CHAMBER_PULLUP_RESISTOR_OHMS) && defined(CHAMBER_RESISTANCE_25C_OHMS) && defined(CHAMBER_BETA))
#error "TEMP_SENSOR_CHAMBER 1000 requires CHAMBER_PULLUP_RESISTOR_OHMS, CHAMBER_RESISTANCE_25C_OHMS and CHAMBER_BETA in Configuration_adv.h."
#endif
diff --git a/Marlin/src/inc/Version.h b/Marlin/src/inc/Version.h
index dccc3fdb25..12f79a1d4b 100644
--- a/Marlin/src/inc/Version.h
+++ b/Marlin/src/inc/Version.h
@@ -38,7 +38,7 @@
/**
* Marlin release version identifier
*/
- #define SHORT_BUILD_VERSION "2.0.x_R14"
+ #define SHORT_BUILD_VERSION "2.0.x_R15"
/**
* Verbose version identifier which should contain a reference to the location
@@ -51,7 +51,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-31"
/**
* Required minimum Configuration.h and Configuration_adv.h file versions.
diff --git a/Marlin/src/lcd/dogm/dogm_Statusscreen.h b/Marlin/src/lcd/dogm/dogm_Statusscreen.h
index 438d57ac7f..8e31841fc4 100644
--- a/Marlin/src/lcd/dogm/dogm_Statusscreen.h
+++ b/Marlin/src/lcd/dogm/dogm_Statusscreen.h
@@ -659,6 +659,63 @@
#endif // !STATUS_BED_WIDTH && !STATUS_COMBINE_HEATERS && HAS_HEATED_BED && HOTENDS < 4
+#if HAS_HEATED_CHAMBER
+
+ #define STATUS_CHAMBER_WIDTH 16
+
+ #ifdef STATUS_CHAMBER_ANIM
+
+ const unsigned char status_chamber_bmp[] PROGMEM = {
+ B11111111,B11111111,
+ B10000000,B00000001,
+ B10000000,B00000001,
+ B10000000,B00000001,
+ B10000000,B00000001,
+ B10000000,B00000001,
+ B10000000,B00000001,
+ B10000000,B00000001,
+ B10000000,B00000001,
+ B10000000,B00000001,
+ B11111111,B11111111,
+ B11111111,B11111111
+ };
+
+ const unsigned char status_chamber_on_bmp[] PROGMEM = {
+ B11111111,B11111111,
+ B10000000,B00000001,
+ B10000100,B00100001,
+ B10000010,B00010001,
+ B10000010,B00010001,
+ B10000100,B00100001,
+ B10001000,B01000001,
+ B10001000,B01000001,
+ B10000100,B00100001,
+ B10000000,B00000001,
+ B11111111,B11111111,
+ B11111111,B11111111
+ };
+
+ #else
+
+ const unsigned char status_chamber_bmp[] PROGMEM = {
+ B11111111,B11111111,
+ B10000000,B00000001,
+ B10000100,B00100001,
+ B10000010,B00010001,
+ B10000010,B00010001,
+ B10000100,B00100001,
+ B10001000,B01000001,
+ B10001000,B01000001,
+ B10000100,B00100001,
+ B10000000,B00000001,
+ B11111111,B11111111,
+ B11111111,B11111111
+ };
+
+ #endif
+
+#endif // HAS_HEATED_CHAMBER
+
// Can also be overridden in Configuration.h
// If you can afford it, try the 3-frame fan animation!
// Don't compile in the fan animation with no fan
@@ -1302,6 +1359,50 @@
#endif
+//
+// Chamber Bitmap Properties
+//
+#ifndef STATUS_CHAMBER_WIDTH
+ #define STATUS_CHAMBER_WIDTH 0
+#endif
+#ifndef STATUS_CHAMBER_BYTEWIDTH
+ #define STATUS_CHAMBER_BYTEWIDTH BW(STATUS_CHAMBER_WIDTH)
+#endif
+#if STATUS_CHAMBER_WIDTH && !STATUS_HEATERS_WIDTH
+
+ #ifndef STATUS_CHAMBER_X
+ #define STATUS_CHAMBER_X (128 - (STATUS_FAN_BYTEWIDTH + STATUS_CHAMBER_BYTEWIDTH) * 8)
+ #endif
+
+ #ifndef STATUS_CHAMBER_HEIGHT
+ #ifdef STATUS_CHAMBER_ANIM
+ #define STATUS_CHAMBER_HEIGHT(S) ((S) ? sizeof(status_chamber_on_bmp) / (STATUS_CHAMBER_BYTEWIDTH) : sizeof(status_chamber_bmp) / (STATUS_CHAMBER_BYTEWIDTH))
+ #else
+ #define STATUS_CHAMBER_HEIGHT(S) (sizeof(status_chamber_bmp) / (STATUS_CHAMBER_BYTEWIDTH))
+ #endif
+ #endif
+
+ #ifndef STATUS_CHAMBER_Y
+ #define STATUS_CHAMBER_Y(S) (20 - STATUS_CHAMBER_HEIGHT(S))
+ #endif
+
+ #ifndef STATUS_CHAMBER_TEXT_X
+ #define STATUS_CHAMBER_TEXT_X (STATUS_CHAMBER_X + 7)
+ #endif
+
+ static_assert(
+ sizeof(status_chamber_bmp) == (STATUS_CHAMBER_BYTEWIDTH) * (STATUS_CHAMBER_HEIGHT(0)),
+ "Status chamber bitmap (status_chamber_bmp) dimensions don't match data."
+ );
+ #ifdef STATUS_CHAMBER_ANIM
+ static_assert(
+ sizeof(status_chamber_on_bmp) == (STATUS_CHAMBER_BYTEWIDTH) * (STATUS_CHAMBER_HEIGHT(1)),
+ "Status chamber bitmap (status_chamber_on_bmp) dimensions don't match data."
+ );
+ #endif
+
+#endif
+
//
// Bed Bitmap Properties
//
@@ -1314,7 +1415,7 @@
#if STATUS_BED_WIDTH && !STATUS_HEATERS_WIDTH
#ifndef STATUS_BED_X
- #define STATUS_BED_X (128 - (STATUS_FAN_BYTEWIDTH + STATUS_BED_BYTEWIDTH) * 8)
+ #define STATUS_BED_X (128 - (STATUS_CHAMBER_BYTEWIDTH + STATUS_FAN_BYTEWIDTH + STATUS_BED_BYTEWIDTH) * 8)
#endif
#ifndef STATUS_BED_HEIGHT
diff --git a/Marlin/src/lcd/dogm/status_screen_DOGM.cpp b/Marlin/src/lcd/dogm/status_screen_DOGM.cpp
index a917bc2e84..d9a0ad7fc1 100644
--- a/Marlin/src/lcd/dogm/status_screen_DOGM.cpp
+++ b/Marlin/src/lcd/dogm/status_screen_DOGM.cpp
@@ -74,6 +74,7 @@ FORCE_INLINE void _draw_centered_temp(const int16_t temp, const uint8_t tx, cons
#define DO_DRAW_FAN (HAS_FAN0 && STATUS_FAN_WIDTH && STATUS_FAN_FRAMES)
#define ANIM_HOTEND (HOTENDS && ENABLED(STATUS_HOTEND_ANIM))
#define ANIM_BED (DO_DRAW_BED && ENABLED(STATUS_BED_ANIM))
+#define ANIM_CHAMBER (HAS_HEATED_CHAMBER && ENABLED(STATUS_CHAMBER_ANIM))
#if ANIM_HOTEND || ANIM_BED
uint8_t heat_bits;
@@ -88,6 +89,11 @@ FORCE_INLINE void _draw_centered_temp(const int16_t temp, const uint8_t tx, cons
#else
#define BED_ALT() false
#endif
+#if ANIM_CHAMBER
+ #define CHAMBER_ALT() TEST(heat_bits, 6)
+#else
+ #define CHAMBER_ALT() false
+#endif
#define MAX_HOTEND_DRAW MIN(HOTENDS, ((LCD_PIXEL_WIDTH - (STATUS_LOGO_BYTEWIDTH + STATUS_FAN_BYTEWIDTH) * 8) / (STATUS_HEATERS_XSPACE)))
#define STATUS_HEATERS_BOT (STATUS_HEATERS_Y + STATUS_HEATERS_HEIGHT - 1)
@@ -126,6 +132,27 @@ FORCE_INLINE void _draw_heater_status(const int8_t heater, const bool blink) {
target = IFBED(thermalManager.degTargetBed(), thermalManager.degTargetHotend(heater));
#endif
+ #if HAS_HEATED_CHAMBER
+ FORCE_INLINE void _draw_chamber_status(const bool blink) {
+ const float temp = thermalManager.degChamber(),
+ target = thermalManager.degTargetChamber();
+ #if !HEATER_IDLE_HANDLER
+ UNUSED(blink);
+ #endif
+ if (PAGE_UNDER(7)) {
+ #if HEATER_IDLE_HANDLER
+ const bool is_idle = false, // thermalManager.chamber_idle.timed_out,
+ dodraw = (blink || !is_idle);
+ #else
+ constexpr bool dodraw = true;
+ #endif
+ if (dodraw) _draw_centered_temp(target + 0.5, STATUS_CHAMBER_TEXT_X, 7);
+ }
+ if (PAGE_CONTAINS(28 - INFO_FONT_ASCENT, 28 - 1))
+ _draw_centered_temp(temp + 0.5f, STATUS_CHAMBER_TEXT_X, 28);
+ }
+ #endif
+
#if DISABLED(STATUS_HOTEND_ANIM)
#define STATIC_HOTEND true
#define HOTEND_DOT isHeat
@@ -271,7 +298,7 @@ void MarlinUI::draw_status_screen() {
// At the first page, generate new display values
if (first_page) {
- #if ANIM_HOTEND || ANIM_BED
+ #if ANIM_HOTEND || ANIM_BED || ANIM_CHAMBER
uint8_t new_bits = 0;
#if ANIM_HOTEND
HOTEND_LOOP() if (thermalManager.isHeatingHotend(e) ^ SHOW_ON_STATE) SBI(new_bits, e);
@@ -279,6 +306,9 @@ void MarlinUI::draw_status_screen() {
#if ANIM_BED
if (thermalManager.isHeatingBed() ^ SHOW_ON_STATE) SBI(new_bits, 7);
#endif
+ #if ANIM_CHAMBER
+ if (thermalManager.isHeatingChamber() ^ SHOW_ON_STATE) SBI(new_bits, 6);
+ #endif
heat_bits = new_bits;
#endif
strcpy(xstring, ftostr4sign(LOGICAL_X_POSITION(current_position[X_AXIS])));
@@ -326,6 +356,20 @@ void MarlinUI::draw_status_screen() {
u8g.drawBitmapP(STATUS_BED_X, bedy, STATUS_BED_BYTEWIDTH, bedh, BED_BITMAP(BED_ALT()));
#endif
+ #if DO_DRAW_CHAMBER
+ #if ANIM_HAMBER
+ #define CHAMBER_BITMAP(S) ((S) ? status_chamber_on_bmp : status_chamber_bmp)
+ #else
+ #define CHAMBER_BITMAP(S) status_chamber_bmp
+ #endif
+ if (PAGE_CONTAINS(STATUS_CHAMBER_Y, STATUS_CHAMBER_Y + STATUS_CHAMBER_HEIGHT - 1))
+ u8g.drawBitmapP(
+ STATUS_CHAMBER_X, STATUS_CHAMBER_Y,
+ STATUS_CHAMBER_BYTEWIDTH, STATUS_CHAMBER_HEIGHT,
+ CHAMBER_BITMAP(CHAMBER_ALT())
+ );
+ #endif
+
#if DO_DRAW_FAN
#if STATUS_FAN_FRAMES > 2
static bool old_blink;
@@ -366,6 +410,10 @@ void MarlinUI::draw_status_screen() {
_draw_heater_status(-1, blink);
#endif
+ #if HAS_HEATED_CHAMBER
+ _draw_chamber_status(blink);
+ #endif
+
// Fan, if a bitmap was provided
#if DO_DRAW_FAN
if (PAGE_CONTAINS(STATUS_FAN_TEXT_Y - INFO_FONT_ASCENT, STATUS_FAN_TEXT_Y - 1)) {
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..0871036118 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) {
@@ -831,35 +831,15 @@ namespace ExtUI {
}
void pausePrint() {
- #if ENABLED(SDSUPPORT)
- card.pauseSDPrint();
- print_job_timer.pause();
- #if ENABLED(PARK_HEAD_ON_PAUSE)
- enqueue_and_echo_commands_P(PSTR("M125"));
- #endif
- ui.set_status_P(PSTR(MSG_PRINT_PAUSED));
- #endif
+ ui.pause_print();
}
void resumePrint() {
- #if ENABLED(SDSUPPORT)
- ui.set_status_P(PSTR(MSG_FILAMENT_CHANGE_RESUME_1));
- #if ENABLED(PARK_HEAD_ON_PAUSE)
- wait_for_heatup = wait_for_user = false;
- enqueue_and_echo_commands_P(PSTR("M24"));
- #else
- card.startFileprint();
- print_job_timer.start();
- #endif
- #endif
+ ui.resume_print();
}
void stopPrint() {
- #if ENABLED(SDSUPPORT)
- wait_for_heatup = wait_for_user = false;
- card.flag.abort_sd_printing = true;
- ui.set_status_P(PSTR(MSG_PRINT_ABORTED));
- #endif
+ ui.stop_print();
}
FileList::FileList() { refresh(); }
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..aa4770bfd5 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,37 @@
#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_MANUAL_DEPLOY
#define MSG_MANUAL_DEPLOY _UxGT("Deploy Z-Probe")
diff --git a/Marlin/src/lcd/language/language_fr.h b/Marlin/src/lcd/language/language_fr.h
index f53bb30ca8..b6f863f1ea 100644
--- a/Marlin/src/lcd/language/language_fr.h
+++ b/Marlin/src/lcd/language/language_fr.h
@@ -96,9 +96,11 @@
#define MSG_USER_MENU _UxGT("Commandes perso")
#define MSG_UBL_DOING_G29 _UxGT("G29 en cours")
-#define MSG_UBL_UNHOMED _UxGT("Origine XYZ d'abord")
+#define MSG_UBL_UNHOMED _UxGT("Origine XYZ requise")
#define MSG_UBL_TOOLS _UxGT("Outils UBL")
#define MSG_UBL_LEVEL_BED _UxGT("Niveau lit unifié")
+#define MSG_LCD_PROBING_MESH _UxGT("Mesure point")
+#define MSG_LCD_TILTING_MESH _UxGT("Touche point")
#define MSG_IDEX_MENU _UxGT("Mode IDEX")
#define MSG_IDEX_MODE_AUTOPARK _UxGT("Auto-Park")
#define MSG_IDEX_MODE_DUPLICATE _UxGT("Duplication")
@@ -321,13 +323,17 @@
#define MSG_ZPROBE_OUT _UxGT("Sonde Z hors lit")
#define MSG_SKEW_FACTOR _UxGT("Facteur écart")
#define MSG_BLTOUCH _UxGT("BLTouch")
-#define MSG_BLTOUCH_SELFTEST _UxGT("Autotest BLTouch")
-#define MSG_BLTOUCH_RESET _UxGT("RaZ BL-Touch")
-#define MSG_BLTOUCH_DEPLOY _UxGT("Déployer BL-Touch")
-#define MSG_BLTOUCH_SW_MODE _UxGT("Mode BLTouch SW")
-#define MSG_BLTOUCH_5V_MODE _UxGT("Mode BLTouch 5V")
-#define MSG_BLTOUCH_OD_MODE _UxGT("Mode BLTouch OD")
-#define MSG_BLTOUCH_STOW _UxGT("Ranger BL-Touch")
+#define MSG_BLTOUCH_SELFTEST _UxGT("Cmd: Self-Test")
+#define MSG_BLTOUCH_RESET _UxGT("Cmd: Reset")
+#define MSG_BLTOUCH_STOW _UxGT("Cmd: Ranger")
+#define MSG_BLTOUCH_DEPLOY _UxGT("Cmd: Déployer")
+#define MSG_BLTOUCH_SW_MODE _UxGT("Cmd: Mode SW")
+#define MSG_BLTOUCH_5V_MODE _UxGT("Cmd: Mode 5V")
+#define MSG_BLTOUCH_OD_MODE _UxGT("Cmd: Mode OD")
+#define MSG_BLTOUCH_MODE_STORE _UxGT("Appliquer Mode")
+#define MSG_BLTOUCH_MODE_STORE_5V _UxGT("Mise en 5V")
+#define MSG_BLTOUCH_MODE_STORE_OD _UxGT("Mise en OD")
+#define MSG_BLTOUCH_MODE_ECHO _UxGT("Afficher Mode")
#define MSG_MANUAL_DEPLOY _UxGT("Déployer Sonde Z")
#define MSG_MANUAL_STOW _UxGT("Ranger Sonde Z")
#define MSG_HOME _UxGT("Origine") // Used as MSG_HOME " " MSG_X MSG_Y MSG_Z " " MSG_FIRST
@@ -363,6 +369,8 @@
#define MSG_COOLING _UxGT("Refroidissement")
#define MSG_BED_HEATING _UxGT("Lit en chauffe...")
#define MSG_BED_COOLING _UxGT("Refroid. du lit...")
+#define MSG_CHAMBER_HEATING _UxGT("Chauffe caisson...")
+#define MSG_CHAMBER_COOLING _UxGT("Refroid. caisson...")
#define MSG_DELTA_CALIBRATE _UxGT("Calibration Delta")
#define MSG_DELTA_CALIBRATE_X _UxGT("Calibrer X")
#define MSG_DELTA_CALIBRATE_Y _UxGT("Calibrer Y")
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/language/language_sk.h b/Marlin/src/lcd/language/language_sk.h
index d0d8af11df..593597c917 100644
--- a/Marlin/src/lcd/language/language_sk.h
+++ b/Marlin/src/lcd/language/language_sk.h
@@ -45,6 +45,7 @@
#define MSG_BACK _UxGT("Naspäť")
#define MSG_SD_INSERTED _UxGT("Karta vložená")
#define MSG_SD_REMOVED _UxGT("Karta vybraná")
+#define MSG_SD_RELEASED _UxGT("Karta odpojená")
#define MSG_LCD_ENDSTOPS _UxGT("Endstopy") // max 8 znakov
#define MSG_LCD_SOFT_ENDSTOPS _UxGT("Soft. endstopy")
#define MSG_MAIN _UxGT("Hlavná ponuka")
@@ -105,6 +106,8 @@
#define MSG_UBL_UNHOMED _UxGT("Prejdite domov")
#define MSG_UBL_TOOLS _UxGT("Nástroje UBL")
#define MSG_UBL_LEVEL_BED _UxGT("UBL rovnanie")
+#define MSG_LCD_PROBING_MESH _UxGT("Skúšam bod")
+#define MSG_LCD_TILTING_MESH _UxGT("Vyrovnávam bod")
#define MSG_IDEX_MENU _UxGT("IDEX režim")
#define MSG_OFFSETS_MENU _UxGT("Offset nástrojov")
#define MSG_IDEX_MODE_AUTOPARK _UxGT("Auto-parkovanie")
@@ -323,16 +326,21 @@
#define MSG_INIT_SDCARD _UxGT("Načítať SD kartu")
#define MSG_CHANGE_SDCARD _UxGT("Vymeniť SD kartu")
+#define MSG_RELEASE_SDCARD _UxGT("Odpojiť SD kartu")
#define MSG_ZPROBE_OUT _UxGT("Sonda Z mimo podl.")
#define MSG_SKEW_FACTOR _UxGT("Faktor skosenia")
#define MSG_BLTOUCH _UxGT("BLTouch")
-#define MSG_BLTOUCH_SELFTEST _UxGT("Self-Test BLTouch")
-#define MSG_BLTOUCH_RESET _UxGT("Reset BLTouch")
-#define MSG_BLTOUCH_DEPLOY _UxGT("Vysunúť BLTouch")
-#define MSG_BLTOUCH_SW_MODE _UxGT("SW vysun. BLTouch")
-#define MSG_BLTOUCH_5V_MODE _UxGT("BLTouch režim 5V")
-#define MSG_BLTOUCH_OD_MODE _UxGT("BLTouch režim OD")
-#define MSG_BLTOUCH_STOW _UxGT("Zasunúť BLTouch")
+#define MSG_BLTOUCH_SELFTEST _UxGT("Cmd: Self-Test")
+#define MSG_BLTOUCH_RESET _UxGT("Cmd: Reset")
+#define MSG_BLTOUCH_STOW _UxGT("Cmd: Zasunúť")
+#define MSG_BLTOUCH_DEPLOY _UxGT("Cmd: Vysunúť")
+#define MSG_BLTOUCH_SW_MODE _UxGT("Cmd: Režim SW")
+#define MSG_BLTOUCH_5V_MODE _UxGT("Cmd: Režim 5V")
+#define MSG_BLTOUCH_OD_MODE _UxGT("Cmd: Režim OD")
+#define MSG_BLTOUCH_MODE_STORE _UxGT("Cmd: Ulož. režim")
+#define MSG_BLTOUCH_MODE_STORE_5V _UxGT("Prepnúť do 5V")
+#define MSG_BLTOUCH_MODE_STORE_OD _UxGT("Prepnúť do OD")
+#define MSG_BLTOUCH_MODE_ECHO _UxGT("Zobraziť režim")
#define MSG_MANUAL_DEPLOY _UxGT("Inštalovať sondu Z")
#define MSG_MANUAL_STOW _UxGT("Odstrániť sondu Z")
#define MSG_HOME _UxGT("Najskôr os") // Used as MSG_HOME " " MSG_X MSG_Y MSG_Z " " MSG_FIRST
@@ -366,6 +374,8 @@
#define MSG_COOLING _UxGT("Ochladzovanie...")
#define MSG_BED_HEATING _UxGT("Ohrev podložky...")
#define MSG_BED_COOLING _UxGT("Ochladz. podložky...")
+#define MSG_CHAMBER_HEATING _UxGT("Ohrev komory...")
+#define MSG_CHAMBER_COOLING _UxGT("Ochladz. komory...")
#define MSG_DELTA_CALIBRATE _UxGT("Delta kalibrácia")
#define MSG_DELTA_CALIBRATE_X _UxGT("Kalibrovať X")
#define MSG_DELTA_CALIBRATE_Y _UxGT("Kalibrovať Y")
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..bf4d2c9792 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,23 +123,24 @@ 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);
+ MENU_MULTIPLIER_ITEM_EDIT_CALLBACK(float51, MSG_X_OFFSET, &hotend_offset[X_AXIS][1], float(X2_HOME_POS - 25), float(X2_HOME_POS + 25), _recalc_offsets);
#else
- MENU_MULTIPLIER_ITEM_EDIT_CALLBACK(float52, MSG_X_OFFSET, &hotend_offset[X_AXIS][1], -10.0, 10.0, _recalc_offsets);
+ MENU_MULTIPLIER_ITEM_EDIT_CALLBACK(float52sign, MSG_X_OFFSET, &hotend_offset[X_AXIS][1], -10.0, 10.0, _recalc_offsets);
#endif
- MENU_MULTIPLIER_ITEM_EDIT_CALLBACK(float52, MSG_Y_OFFSET, &hotend_offset[Y_AXIS][1], -10.0, 10.0, _recalc_offsets);
- MENU_MULTIPLIER_ITEM_EDIT_CALLBACK(float52, MSG_Z_OFFSET, &hotend_offset[Z_AXIS][1], Z_PROBE_LOW_POINT, 10.0, _recalc_offsets);
+ MENU_MULTIPLIER_ITEM_EDIT_CALLBACK(float52sign, MSG_Y_OFFSET, &hotend_offset[Y_AXIS][1], -10.0, 10.0, _recalc_offsets);
+ MENU_MULTIPLIER_ITEM_EDIT_CALLBACK(float52sign, MSG_Z_OFFSET, &hotend_offset[Z_AXIS][1], Z_PROBE_LOW_POINT, 10.0, _recalc_offsets);
#if ENABLED(EEPROM_SETTINGS)
MENU_ITEM(function, MSG_STORE_EEPROM, lcd_store_settings);
#endif
@@ -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,40 @@ 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 - "));
+ strcpy_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(function, MSG_BLTOUCH_5V_MODE, bltouch._set_5V_mode);
+ MENU_ITEM(function, MSG_BLTOUCH_OD_MODE, bltouch._set_OD_mode);
+ MENU_ITEM(function, MSG_BLTOUCH_MODE_STORE, bltouch._mode_store);
+ MENU_ITEM(function, MSG_BLTOUCH_MODE_STORE_5V, bltouch.mode_conv_5V);
+ MENU_ITEM(function, MSG_BLTOUCH_MODE_STORE_OD, bltouch.mode_conv_OD);
+ MENU_ITEM(function, MSG_BLTOUCH_MODE_ECHO, bltouch_report);
+ #endif
END_MENU();
}
@@ -192,7 +217,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 +231,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..b3e811e3cd 100644
--- a/Marlin/src/lcd/menu/menu_main.cpp
+++ b/Marlin/src/lcd/menu/menu_main.cpp
@@ -39,10 +39,6 @@
#include "../../feature/power_loss_recovery.h"
#endif
-#if ENABLED(HOST_ACTION_COMMANDS)
- #include "../../feature/host_actions.h"
-#endif
-
#if HAS_GAMES
#include "game/game.h"
#endif
@@ -50,60 +46,10 @@
#define MACHINE_CAN_STOP (EITHER(SDSUPPORT, HOST_PROMPT_SUPPORT) || defined(ACTION_ON_CANCEL))
#define MACHINE_CAN_PAUSE (ANY(SDSUPPORT, HOST_PROMPT_SUPPORT, PARK_HEAD_ON_PAUSE) || defined(ACTION_ON_PAUSE))
-#if MACHINE_CAN_PAUSE
-
- void lcd_pause_job() {
- #if ENABLED(POWER_LOSS_RECOVERY)
- if (recovery.enabled) recovery.save(true, false);
- #endif
-
- #if ENABLED(HOST_PROMPT_SUPPORT)
- host_prompt_open(PROMPT_PAUSE_RESUME, PSTR("UI Pause"), PSTR("Resume"));
- #endif
-
- #if ENABLED(PARK_HEAD_ON_PAUSE)
- lcd_pause_show_message(PAUSE_MESSAGE_PAUSING, PAUSE_MODE_PAUSE_PRINT); // Show message immediately to let user know about pause in progress
- enqueue_and_echo_commands_P(PSTR("M25 P\nM24"));
- #elif ENABLED(SDSUPPORT)
- enqueue_and_echo_commands_P(PSTR("M25"));
- #elif defined(ACTION_ON_PAUSE)
- host_action_pause();
- #endif
- planner.synchronize();
- }
-
- void lcd_resume() {
- #if ENABLED(SDSUPPORT)
- if (card.isPaused()) enqueue_and_echo_commands_P(PSTR("M24"));
- #endif
- #ifdef ACTION_ON_RESUME
- host_action_resume();
- #endif
- }
-
-#endif // MACHINE_CAN_PAUSE
-
#if MACHINE_CAN_STOP
-
- void lcd_abort_job() {
- #if ENABLED(SDSUPPORT)
- wait_for_heatup = wait_for_user = false;
- card.flag.abort_sd_printing = true;
- #endif
- #ifdef ACTION_ON_CANCEL
- host_action_cancel();
- #endif
- #if ENABLED(HOST_PROMPT_SUPPORT)
- host_prompt_open(PROMPT_INFO, PSTR("UI Abort"));
- #endif
- ui.set_status_P(PSTR(MSG_PRINT_ABORTED), -1);
- ui.return_to_status();
- }
-
void menu_abort_confirm() {
- do_select_screen(PSTR(MSG_BUTTON_STOP), PSTR(MSG_BACK), lcd_abort_job, ui.goto_previous_screen, PSTR(MSG_STOP_PRINT), nullptr, PSTR("?"));
+ do_select_screen(PSTR(MSG_BUTTON_STOP), PSTR(MSG_BACK), ui.abort_print, ui.goto_previous_screen, PSTR(MSG_STOP_PRINT), nullptr, PSTR("?"));
}
-
#endif // MACHINE_CAN_STOP
#if ENABLED(PRUSA_MMU2)
@@ -159,7 +105,7 @@ void menu_main() {
if (busy) {
#if MACHINE_CAN_PAUSE
- MENU_ITEM(function, MSG_PAUSE_PRINT, lcd_pause_job);
+ MENU_ITEM(function, MSG_PAUSE_PRINT, ui.pause_print);
#endif
#if MACHINE_CAN_STOP
MENU_ITEM(submenu, MSG_STOP_PRINT, menu_abort_confirm);
@@ -203,7 +149,7 @@ void menu_main() {
|| card.isPaused()
#endif
);
- if (paused) MENU_ITEM(function, MSG_RESUME_PRINT, lcd_resume);
+ if (paused) MENU_ITEM(function, MSG_RESUME_PRINT, ui.resume_print);
#endif
MENU_ITEM(submenu, MSG_MOTION, menu_motion);
@@ -264,7 +210,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 +217,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..ffb52b5499 100644
--- a/Marlin/src/lcd/menu/menu_temperature.cpp
+++ b/Marlin/src/lcd/menu/menu_temperature.cpp
@@ -414,17 +414,11 @@ void menu_temperature() {
#endif
#endif // FAN_COUNT > 0
- #if HAS_TEMP_HOTEND
+ #if ENABLED(SPINDLE_LASER_ENABLE)
+ MENU_ITEM(submenu, MSG_LASER_MENU, menu_spindle_laser);
+ #endif
- //
- // 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 HAS_TEMP_HOTEND
//
// 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..f0ebcefbb3 100644
--- a/Marlin/src/lcd/ultralcd.cpp
+++ b/Marlin/src/lcd/ultralcd.cpp
@@ -31,6 +31,9 @@
#if ENABLED(EXTENSIBLE_UI)
#define START_OF_UTF8_CHAR(C) (((C) & 0xC0u) != 0x80u)
#endif
+ #if ENABLED(HOST_ACTION_COMMANDS)
+ #include "../feature/host_actions.h"
+ #endif
#endif
#if HAS_SPI_LCD
@@ -293,10 +296,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 +999,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++) {
@@ -1362,6 +1361,63 @@ void MarlinUI::update() {
set_status_P(msg, -1);
}
+ void MarlinUI::abort_print() {
+ #if ENABLED(SDSUPPORT)
+ wait_for_heatup = wait_for_user = false;
+ card.flag.abort_sd_printing = true;
+ #endif
+ #ifdef ACTION_ON_CANCEL
+ host_action_cancel();
+ #endif
+ #if ENABLED(HOST_PROMPT_SUPPORT)
+ host_prompt_open(PROMPT_INFO, PSTR("UI Abort"));
+ #endif
+ print_job_timer.stop();
+ set_status_P(PSTR(MSG_PRINT_ABORTED));
+ #if HAS_SPI_LCD
+ return_to_status();
+ #endif
+ }
+
+ void MarlinUI::pause_print() {
+ synchronize(PSTR(MSG_PAUSE_PRINT));
+
+ #if ENABLED(POWER_LOSS_RECOVERY)
+ if (recovery.enabled) recovery.save(true, false);
+ #endif
+
+ #if ENABLED(HOST_PROMPT_SUPPORT)
+ host_prompt_open(PROMPT_PAUSE_RESUME, PSTR("UI Pause"), PSTR("Resume"));
+ #endif
+
+ set_status_P(PSTR(MSG_PRINT_PAUSED));
+
+ #if ENABLED(PARK_HEAD_ON_PAUSE)
+ #if HAS_SPI_LCD
+ lcd_pause_show_message(PAUSE_MESSAGE_PAUSING, PAUSE_MODE_PAUSE_PRINT); // Show message immediately to let user know about pause in progress
+ #endif
+ enqueue_and_echo_commands_P(PSTR("M25 P\nM24"));
+ #elif ENABLED(SDSUPPORT)
+ enqueue_and_echo_commands_P(PSTR("M25"));
+ #elif defined(ACTION_ON_PAUSE)
+ host_action_pause();
+ #endif
+ }
+
+ void MarlinUI::resume_print() {
+ reset_status();
+ #if ENABLED(PARK_HEAD_ON_PAUSE)
+ wait_for_heatup = wait_for_user = false;
+ #endif
+ #if ENABLED(SDSUPPORT)
+ if (card.isPaused()) enqueue_and_echo_commands_P(PSTR("M24"));
+ #endif
+ #ifdef ACTION_ON_RESUME
+ host_action_resume();
+ #endif
+ print_job_timer.start(); // Also called by M24
+ }
+
#if HAS_PRINT_PROGRESS
uint8_t MarlinUI::get_progress() {
#if ENABLED(LCD_SET_PROGRESS_MANUALLY)
diff --git a/Marlin/src/lcd/ultralcd.h b/Marlin/src/lcd/ultralcd.h
index fc573211b3..630539a986 100644
--- a/Marlin/src/lcd/ultralcd.h
+++ b/Marlin/src/lcd/ultralcd.h
@@ -286,6 +286,10 @@ public:
static char* status_and_len(uint8_t &len);
#endif
+ static void abort_print();
+ static void pause_print();
+ static void resume_print();
+
#if HAS_PRINT_PROGRESS
#if ENABLED(LCD_SET_PROGRESS_MANUALLY)
static uint8_t progress_bar_percent;
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.h b/Marlin/src/module/stepper.h
index b3f53fc4b6..17f78ae1aa 100644
--- a/Marlin/src/module/stepper.h
+++ b/Marlin/src/module/stepper.h
@@ -109,21 +109,21 @@
#endif
// Add time for each stepper
-#ifdef HAS_X_STEP
+#if HAS_X_STEP
#define ISR_START_X_STEPPER_CYCLES ISR_START_STEPPER_CYCLES
#define ISR_X_STEPPER_CYCLES ISR_STEPPER_CYCLES
#else
#define ISR_START_X_STEPPER_CYCLES 0UL
#define ISR_X_STEPPER_CYCLES 0UL
#endif
-#ifdef HAS_Y_STEP
+#if HAS_Y_STEP
#define ISR_START_Y_STEPPER_CYCLES ISR_START_STEPPER_CYCLES
#define ISR_Y_STEPPER_CYCLES ISR_STEPPER_CYCLES
#else
#define ISR_START_Y_STEPPER_CYCLES 0UL
#define ISR_Y_STEPPER_CYCLES 0UL
#endif
-#ifdef HAS_Z_STEP
+#if HAS_Z_STEP
#define ISR_START_Z_STEPPER_CYCLES ISR_START_STEPPER_CYCLES
#define ISR_Z_STEPPER_CYCLES ISR_STEPPER_CYCLES
#else
@@ -135,13 +135,8 @@
#define ISR_START_E_STEPPER_CYCLES ISR_START_STEPPER_CYCLES
#define ISR_E_STEPPER_CYCLES ISR_STEPPER_CYCLES
-// If linear advance is disabled, then the loop also handles them
-#if DISABLED(LIN_ADVANCE) && ENABLED(MIXING_EXTRUDER) // ToDo: ???
- // HELP ME: What is what?
- // Directions are set up for MIXING_STEPPERS - like before.
- // Finding the right stepper may last up to MIXING_STEPPERS loops in get_next_stepper().
- // These loops are a bit faster than advancing a bresenham counter.
- // Always only one e-stepper is stepped.
+// If linear advance is disabled, the loop also handles them
+#if DISABLED(LIN_ADVANCE) && ENABLED(MIXING_EXTRUDER)
#define ISR_START_MIXING_STEPPER_CYCLES ((MIXING_STEPPERS) * (ISR_START_STEPPER_CYCLES))
#define ISR_MIXING_STEPPER_CYCLES ((MIXING_STEPPERS) * (ISR_STEPPER_CYCLES))
#else
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..bd55532ae5 100644
--- a/Marlin/src/module/stepper_indirection.h
+++ b/Marlin/src/module/stepper_indirection.h
@@ -62,11 +62,16 @@
#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, A) _TMC_CLASS(ST##_DRIVER_TYPE, TMC_##ST##_LABEL, A##_AXIS)
+ #if ENABLED(DISTINCT_E_FACTORS)
+ #define TMC_CLASS_E(I) TMC_CLASS(E##I, E##I)
+ #else
+ #define TMC_CLASS_E(I) TMC_CLASS(E##I, E)
+ #endif
typedef struct {
uint8_t toff;
@@ -101,7 +106,7 @@ void reset_stepper_drivers(); // Called by settings.load / settings.reset
#define X_DIR_READ (stepperX.getStatus() & STATUS_DIR)
#else
#if AXIS_IS_TMC(X)
- extern TMC_CLASS(X) stepperX;
+ extern TMC_CLASS(X, X) stepperX;
#endif
#if AXIS_DRIVER_TYPE_X(TMC26X)
extern TMC26XStepper stepperX;
@@ -136,7 +141,7 @@ void reset_stepper_drivers(); // Called by settings.load / settings.reset
#define Y_DIR_READ (stepperY.getStatus() & STATUS_DIR)
#else
#if AXIS_IS_TMC(Y)
- extern TMC_CLASS(Y) stepperY;
+ extern TMC_CLASS(Y, Y) stepperY;
#endif
#if AXIS_DRIVER_TYPE_Y(TMC26X)
extern TMC26XStepper stepperY;
@@ -171,7 +176,7 @@ void reset_stepper_drivers(); // Called by settings.load / settings.reset
#define Z_DIR_READ (stepperZ.getStatus() & STATUS_DIR)
#else
#if AXIS_IS_TMC(Z)
- extern TMC_CLASS(Z) stepperZ;
+ extern TMC_CLASS(Z, Z) stepperZ;
#endif
#if AXIS_DRIVER_TYPE_Z(TMC26X)
extern TMC26XStepper stepperZ;
@@ -207,7 +212,7 @@ void reset_stepper_drivers(); // Called by settings.load / settings.reset
#define X2_DIR_READ (stepperX2.getStatus() & STATUS_DIR)
#else
#if AXIS_IS_TMC(X2)
- extern TMC_CLASS(X2) stepperX2;
+ extern TMC_CLASS(X2, X) stepperX2;
#endif
#if AXIS_DRIVER_TYPE_X2(TMC26X)
extern TMC26XStepper stepperX2;
@@ -244,7 +249,7 @@ void reset_stepper_drivers(); // Called by settings.load / settings.reset
#define Y2_DIR_READ (stepperY2.getStatus() & STATUS_DIR)
#else
#if AXIS_IS_TMC(Y2)
- extern TMC_CLASS(Y2) stepperY2;
+ extern TMC_CLASS(Y2, Y) stepperY2;
#endif
#if AXIS_DRIVER_TYPE_Y2(TMC26X)
extern TMC26XStepper stepperY2;
@@ -283,7 +288,7 @@ void reset_stepper_drivers(); // Called by settings.load / settings.reset
#define Z2_DIR_READ (stepperZ2.getStatus() & STATUS_DIR)
#else
#if AXIS_IS_TMC(Z2)
- extern TMC_CLASS(Z2) stepperZ2;
+ extern TMC_CLASS(Z2, Z) stepperZ2;
#endif
#if AXIS_DRIVER_TYPE_Z2(TMC26X)
extern TMC26XStepper stepperZ2;
@@ -322,7 +327,7 @@ void reset_stepper_drivers(); // Called by settings.load / settings.reset
#define Z3_DIR_READ (stepperZ3.getStatus() & STATUS_DIR)
#else
#if AXIS_IS_TMC(Z3)
- extern TMC_CLASS(Z3) stepperZ3;
+ extern TMC_CLASS(Z3, Z) stepperZ3;
#endif
#if ENABLED(Z3_IS_TMC26X)
extern TMC26XStepper stepperZ3;
@@ -360,7 +365,7 @@ void reset_stepper_drivers(); // Called by settings.load / settings.reset
#define E0_DIR_READ (stepperE0.getStatus() & STATUS_DIR)
#else
#if AXIS_IS_TMC(E0)
- extern TMC_CLASS(E0) stepperE0;
+ extern TMC_CLASS_E(0) stepperE0;
#endif
#if AXIS_DRIVER_TYPE_E0(TMC26X)
extern TMC26XStepper stepperE0;
@@ -395,7 +400,7 @@ void reset_stepper_drivers(); // Called by settings.load / settings.reset
#define E1_DIR_READ (stepperE1.getStatus() & STATUS_DIR)
#else
#if AXIS_IS_TMC(E1)
- extern TMC_CLASS(E1) stepperE1;
+ extern TMC_CLASS_E(1) stepperE1;
#endif
#if AXIS_DRIVER_TYPE_E1(TMC26X)
extern TMC26XStepper stepperE1;
@@ -430,7 +435,7 @@ void reset_stepper_drivers(); // Called by settings.load / settings.reset
#define E2_DIR_READ (stepperE2.getStatus() & STATUS_DIR)
#else
#if AXIS_IS_TMC(E2)
- extern TMC_CLASS(E2) stepperE2;
+ extern TMC_CLASS_E(2) stepperE2;
#endif
#if AXIS_DRIVER_TYPE_E2(TMC26X)
extern TMC26XStepper stepperE2;
@@ -465,7 +470,7 @@ void reset_stepper_drivers(); // Called by settings.load / settings.reset
#define E3_DIR_READ (stepperE3.getStatus() & STATUS_DIR)
#else
#if AXIS_IS_TMC(E3)
- extern TMC_CLASS(E3) stepperE3;
+ extern TMC_CLASS_E(3) stepperE3;
#endif
#if AXIS_DRIVER_TYPE_E3(TMC26X)
extern TMC26XStepper stepperE3;
@@ -500,7 +505,7 @@ void reset_stepper_drivers(); // Called by settings.load / settings.reset
#define E4_DIR_READ (stepperE4.getStatus() & STATUS_DIR)
#else
#if AXIS_IS_TMC(E4)
- extern TMC_CLASS(E4) stepperE4;
+ extern TMC_CLASS_E(4) stepperE4;
#endif
#if AXIS_DRIVER_TYPE_E4(TMC26X)
extern TMC26XStepper stepperE4;
@@ -535,7 +540,7 @@ void reset_stepper_drivers(); // Called by settings.load / settings.reset
#define E5_DIR_READ (stepperE5.getStatus() & STATUS_DIR)
#else
#if AXIS_IS_TMC(E5)
- extern TMC_CLASS(E5) stepperE5;
+ extern TMC_CLASS_E(5) stepperE5;
#endif
#if AXIS_DRIVER_TYPE_E5(TMC26X)
extern TMC26XStepper stepperE5;
diff --git a/Marlin/src/module/temperature.cpp b/Marlin/src/module/temperature.cpp
index a4a94fc678..662d2bc2ab 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 };
@@ -78,6 +82,10 @@
#endif
#endif
+#ifndef THERMAL_PROTECTION_GRACE_PERIOD
+ #define THERMAL_PROTECTION_GRACE_PERIOD 0 // No grace period needed on well-behaved boards
+#endif
+
Temperature thermalManager;
/**
@@ -310,7 +318,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 +758,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
@@ -975,9 +995,6 @@ void Temperature::manage_heater() {
#endif
#if HAS_THERMAL_PROTECTION
- #ifndef THERMAL_PROTECTION_GRACE_PERIOD
- #define THERMAL_PROTECTION_GRACE_PERIOD 0 // No grace period needed on well-behaved boards
- #endif
#if THERMAL_PROTECTION_GRACE_PERIOD > 0
static millis_t grace_period = ms + THERMAL_PROTECTION_GRACE_PERIOD;
if (ELAPSED(ms, grace_period)) grace_period = 0UL;
@@ -1176,14 +1193,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); \
} \
} \
@@ -1213,10 +1231,10 @@ void Temperature::manage_heater() {
#if ENABLED(HEATER_5_USER_THERMISTOR)
{ true, 0, 0, HOTEND5_PULLUP_RESISTOR_OHMS, HOTEND5_RESISTANCE_25C_OHMS, 0, 0, HOTEND5_BETA, 0 },
#endif
- #if ENABLED(BED_USER_THERMISTOR)
+ #if ENABLED(HEATER_BED_USER_THERMISTOR)
{ true, 0, 0, BED_PULLUP_RESISTOR_OHMS, BED_RESISTANCE_25C_OHMS, 0, 0, BED_BETA, 0 },
#endif
- #if ENABLED(CHAMBER_USER_THERMISTOR)
+ #if ENABLED(HEATER_CHAMBER_USER_THERMISTOR)
{ true, 0, 0, CHAMBER_PULLUP_RESISTOR_OHMS, CHAMBER_RESISTANCE_25C_OHMS, 0, 0, CHAMBER_BETA, 0 }
#endif
};
@@ -1258,10 +1276,10 @@ void Temperature::manage_heater() {
#if ENABLED(HEATER_5_USER_THERMISTOR)
t_index == CTI_HOTEND_5 ? PSTR("HOTEND 5") :
#endif
- #if ENABLED(BED_USER_THERMISTOR)
+ #if ENABLED(HEATER_BED_USER_THERMISTOR)
t_index == CTI_BED ? PSTR("BED") :
#endif
- #if ENABLED(CHAMBER_USER_THERMISTOR)
+ #if ENABLED(HEATER_CHAMBER_USER_THERMISTOR)
t_index == CTI_CHAMBER ? PSTR("CHAMBER") :
#endif
nullptr
@@ -1301,12 +1319,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 +1327,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
@@ -1416,10 +1429,10 @@ float Temperature::analog_to_celsius_hotend(const int raw, const uint8_t e) {
// Derived from RepRap FiveD extruder::getTemperature()
// For bed temperature measurement.
float Temperature::analog_to_celsius_bed(const int raw) {
- #if ENABLED(BED_USER_THERMISTOR)
+ #if ENABLED(HEATER_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)
@@ -1434,10 +1447,10 @@ float Temperature::analog_to_celsius_hotend(const int raw, const uint8_t e) {
// Derived from RepRap FiveD extruder::getTemperature()
// For chamber temperature measurement.
float Temperature::analog_to_celsius_chamber(const int raw) {
- #if ENABLED(CHAMBER_USER_THERMISTOR)
+ #if ENABLED(HEATER_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)
@@ -2154,6 +2167,15 @@ void Temperature::set_current_temp_raw() {
#endif
void Temperature::readings_ready() {
+
+ #if THERMAL_PROTECTION_GRACE_PERIOD > 0
+ const millis_t ms = millis();
+ static millis_t grace_period = ms + THERMAL_PROTECTION_GRACE_PERIOD; // NOTE: millis() == 0 on reset
+ if (ELAPSED(ms, grace_period)) grace_period = 0;
+ #else
+ static constexpr millis_t grace_period = 0;
+ #endif
+
// Update the raw values if they've been read. Else we could be updating them during reading.
if (!temp_meas_ready) set_current_temp_raw();
@@ -2195,6 +2217,9 @@ void Temperature::readings_ready() {
#endif // HOTENDS > 1
};
+ // Give ADC temperature readings time to settle at boot-up before testing
+ if (grace_period) return;
+
for (uint8_t e = 0; e < COUNT(temp_dir); e++) {
const int16_t tdir = temp_dir[e], rawtemp = temp_hotend[e].raw * tdir;
const bool heater_on = (temp_hotend[e].target > 0)
@@ -2300,6 +2325,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 +2728,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/temperature.h b/Marlin/src/module/temperature.h
index fa5013bc56..ddcdd3909c 100644
--- a/Marlin/src/module/temperature.h
+++ b/Marlin/src/module/temperature.h
@@ -233,10 +233,10 @@ typedef struct { int16_t raw_min, raw_max, mintemp, maxtemp; } temp_range_t;
#if ENABLED(HEATER_5_USER_THERMISTOR)
CTI_HOTEND_5,
#endif
- #if ENABLED(BED_USER_THERMISTOR)
+ #if ENABLED(HEATER_BED_USER_THERMISTOR)
CTI_BED,
#endif
- #if ENABLED(CHAMBER_USER_THERMISTOR)
+ #if ENABLED(HEATER_CHAMBER_USER_THERMISTOR)
CTI_CHAMBER,
#endif
USER_THERMISTORS
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/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/Marlin/src/sd/cardreader.cpp b/Marlin/src/sd/cardreader.cpp
index 51702fa229..5a17c0633a 100644
--- a/Marlin/src/sd/cardreader.cpp
+++ b/Marlin/src/sd/cardreader.cpp
@@ -81,10 +81,10 @@ uint8_t CardReader::workDirDepth;
char **CardReader::sortshort, **CardReader::sortnames;
#else
char CardReader::sortshort[SDSORT_LIMIT][FILENAME_LENGTH];
- char CardReader::sortnames[SDSORT_LIMIT][SORTED_LONGNAME_MAXLEN];
+ char CardReader::sortnames[SDSORT_LIMIT][SORTED_LONGNAME_STORAGE];
#endif
#elif DISABLED(SDSORT_USES_STACK)
- char CardReader::sortnames[SDSORT_LIMIT][SORTED_LONGNAME_MAXLEN];
+ char CardReader::sortnames[SDSORT_LIMIT][SORTED_LONGNAME_STORAGE];
#endif
#if HAS_FOLDER_SORTING
@@ -760,11 +760,13 @@ void CardReader::setroot() {
#endif
#else
// Copy filenames into the static array
- #if SORTED_LONGNAME_MAXLEN != LONG_FILENAME_LENGTH
- #define SET_SORTNAME(I) do{ strncpy(sortnames[I], longest_filename(), SORTED_LONGNAME_MAXLEN); \
- sortnames[I][SORTED_LONGNAME_MAXLEN] = '\0'; }while(0)
+ #define _SET_SORTNAME(I) strncpy(sortnames[I], longest_filename(), SORTED_LONGNAME_MAXLEN)
+ #if SORTED_LONGNAME_MAXLEN == LONG_FILENAME_LENGTH
+ // Short name sorting always use LONG_FILENAME_LENGTH with no trailing nul
+ #define SET_SORTNAME(I) _SET_SORTNAME(I)
#else
- #define SET_SORTNAME(I) strncpy(sortnames[I], longest_filename(), SORTED_LONGNAME_MAXLEN)
+ // Copy multiple name blocks. Add a nul for the longest case.
+ #define SET_SORTNAME(I) do{ _SET_SORTNAME(I); sortnames[I][SORTED_LONGNAME_MAXLEN] = '\0'; }while(0)
#endif
#if ENABLED(SDSORT_CACHE_NAMES)
#define SET_SORTSHORT(I) strcpy(sortshort[I], filename)
@@ -798,7 +800,7 @@ void CardReader::setroot() {
// Never sort more than the max allowed
// If you use folders to organize, 20 may be enough
- if (fileCnt > SDSORT_LIMIT) fileCnt = SDSORT_LIMIT;
+ NOMORE(fileCnt, SDSORT_LIMIT);
// Sort order is always needed. May be static or dynamic.
#if ENABLED(SDSORT_DYNAMIC_RAM)
@@ -816,7 +818,7 @@ void CardReader::setroot() {
sortnames = new char*[fileCnt];
#endif
#elif ENABLED(SDSORT_USES_STACK)
- char sortnames[fileCnt][SORTED_LONGNAME_MAXLEN];
+ char sortnames[fileCnt][SORTED_LONGNAME_STORAGE];
#endif
// Folder sorting needs 1 bit per entry for flags.
diff --git a/Marlin/src/sd/cardreader.h b/Marlin/src/sd/cardreader.h
index 5bdbffaf20..623ca4dc7f 100644
--- a/Marlin/src/sd/cardreader.h
+++ b/Marlin/src/sd/cardreader.h
@@ -175,9 +175,11 @@ private:
#endif
#if BOTH(SDSORT_USES_RAM, SDSORT_CACHE_NAMES) && DISABLED(SDSORT_DYNAMIC_RAM)
- #define SORTED_LONGNAME_MAXLEN ((SDSORT_CACHE_VFATS) * (FILENAME_LENGTH) + 1)
+ #define SORTED_LONGNAME_MAXLEN (SDSORT_CACHE_VFATS) * (FILENAME_LENGTH)
+ #define SORTED_LONGNAME_STORAGE (SORTED_LONGNAME_MAXLEN + 1)
#else
#define SORTED_LONGNAME_MAXLEN LONG_FILENAME_LENGTH
+ #define SORTED_LONGNAME_STORAGE SORTED_LONGNAME_MAXLEN
#endif
// Cache filenames to speed up SD menus.
@@ -189,10 +191,11 @@ private:
static char **sortshort, **sortnames;
#else
static char sortshort[SDSORT_LIMIT][FILENAME_LENGTH];
- static char sortnames[SDSORT_LIMIT][SORTED_LONGNAME_MAXLEN];
#endif
- #elif DISABLED(SDSORT_USES_STACK)
- static char sortnames[SDSORT_LIMIT][SORTED_LONGNAME_MAXLEN];
+ #endif
+
+ #if (ENABLED(SDSORT_CACHE_NAMES) && DISABLED(SDSORT_DYNAMIC_RAM)) || NONE(SDSORT_CACHE_NAMES, SDSORT_USES_STACK)
+ static char sortnames[SDSORT_LIMIT][SORTED_LONGNAME_STORAGE];
#endif
// Folder sorting uses an isDir array when caching items.
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..7f17031042 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
*/
@@ -1042,6 +1039,7 @@
#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_CHAMBER_ANIM // Use a second bitmap to indicate chamber 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
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..c67f836417 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
*/
@@ -1042,6 +1039,7 @@
#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_CHAMBER_ANIM // Use a second bitmap to indicate chamber 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
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..d9534a55b1 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
*/
@@ -1042,6 +1039,7 @@
#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_CHAMBER_ANIM // Use a second bitmap to indicate chamber 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
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..219135ea2e 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
*/
@@ -1042,6 +1039,7 @@
#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_CHAMBER_ANIM // Use a second bitmap to indicate chamber 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
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..d79814177c 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
*/
@@ -1042,6 +1039,7 @@
#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_CHAMBER_ANIM // Use a second bitmap to indicate chamber 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
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..d79814177c 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
*/
@@ -1042,6 +1039,7 @@
#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_CHAMBER_ANIM // Use a second bitmap to indicate chamber 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
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..b2849b7003 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
*/
@@ -1042,6 +1039,7 @@
#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_CHAMBER_ANIM // Use a second bitmap to indicate chamber 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
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..5c1ade0b94 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
*/
@@ -1042,6 +1039,7 @@
#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_CHAMBER_ANIM // Use a second bitmap to indicate chamber 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
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..a1ba977f3d 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.
@@ -1040,6 +1039,7 @@
#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_CHAMBER_ANIM // Use a second bitmap to indicate chamber 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
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..ee1c865c7e 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
*/
@@ -1042,6 +1039,7 @@
#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_CHAMBER_ANIM // Use a second bitmap to indicate chamber 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
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..c6b259c067 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
*/
@@ -1042,6 +1039,7 @@
#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_CHAMBER_ANIM // Use a second bitmap to indicate chamber 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
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..aed60b1bd3 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
*/
@@ -1046,6 +1043,7 @@
#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_CHAMBER_ANIM // Use a second bitmap to indicate chamber 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
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..b8661f1021 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
*/
@@ -1042,6 +1039,7 @@
#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_CHAMBER_ANIM // Use a second bitmap to indicate chamber 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
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..549cee8d1b 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
*/
@@ -1042,6 +1039,7 @@
#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_CHAMBER_ANIM // Use a second bitmap to indicate chamber 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
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..28d1c48625 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
*/
@@ -1039,6 +1039,7 @@
#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_CHAMBER_ANIM // Use a second bitmap to indicate chamber 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
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..4a68fab495 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
*/
@@ -1047,6 +1047,7 @@
#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_CHAMBER_ANIM // Use a second bitmap to indicate chamber 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
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..28d1c48625 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
*/
@@ -1039,6 +1039,7 @@
#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_CHAMBER_ANIM // Use a second bitmap to indicate chamber 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
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..37ff167b36 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
*/
@@ -1042,6 +1039,7 @@
#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_CHAMBER_ANIM // Use a second bitmap to indicate chamber 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
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..4a3a889ba0 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
*/
@@ -1042,6 +1039,7 @@
#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_CHAMBER_ANIM // Use a second bitmap to indicate chamber 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
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..f7488dd4aa 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
*/
@@ -1042,6 +1039,7 @@
#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_CHAMBER_ANIM // Use a second bitmap to indicate chamber 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
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..5162d130f1 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
*/
@@ -1042,6 +1039,7 @@
#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_CHAMBER_ANIM // Use a second bitmap to indicate chamber 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
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..7970e81179 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
*/
@@ -1042,6 +1039,7 @@
#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_CHAMBER_ANIM // Use a second bitmap to indicate chamber 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
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..1dd0e65172 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
*/
@@ -1042,6 +1039,7 @@
#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_CHAMBER_ANIM // Use a second bitmap to indicate chamber 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
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..a0a5a1d02f 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
*/
@@ -1039,6 +1039,7 @@
#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_CHAMBER_ANIM // Use a second bitmap to indicate chamber 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
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..0c9279ebce 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
*/
@@ -1039,6 +1039,7 @@
#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_CHAMBER_ANIM // Use a second bitmap to indicate chamber 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
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..dc29d35b7b 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
*/
@@ -1042,6 +1039,7 @@
#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_CHAMBER_ANIM // Use a second bitmap to indicate chamber 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
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..0525ade2ce 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
*/
@@ -1042,6 +1039,7 @@
#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_CHAMBER_ANIM // Use a second bitmap to indicate chamber 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
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..8b77c96f81 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
*/
@@ -1042,6 +1039,7 @@
#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_CHAMBER_ANIM // Use a second bitmap to indicate chamber 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
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..f0a729e021 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
*/
@@ -1038,6 +1038,7 @@
#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_CHAMBER_ANIM // Use a second bitmap to indicate chamber 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
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..26925025df 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
*/
@@ -1042,6 +1039,7 @@
#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_CHAMBER_ANIM // Use a second bitmap to indicate chamber 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
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..d1ba8ff239 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
*/
@@ -1042,6 +1039,7 @@
#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_CHAMBER_ANIM // Use a second bitmap to indicate chamber 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
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..673d79ed9b 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
*/
@@ -1046,6 +1043,7 @@
#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_CHAMBER_ANIM // Use a second bitmap to indicate chamber 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
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..033b6bfa5e 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
*/
@@ -1046,6 +1043,7 @@
#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_CHAMBER_ANIM // Use a second bitmap to indicate chamber 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
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..88d2f3039e 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,12 @@
#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_CHAMBER_ANIM // Use a second bitmap to indicate chamber 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)
// 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..6f685e7e19 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,12 @@
#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_CHAMBER_ANIM // Use a second bitmap to indicate chamber 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)
// 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..1ee0e5656d 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
*/
@@ -1042,6 +1039,7 @@
#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_CHAMBER_ANIM // Use a second bitmap to indicate chamber 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
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..5538c1610e 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
*/
@@ -1042,6 +1039,7 @@
#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_CHAMBER_ANIM // Use a second bitmap to indicate chamber 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
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..5538c1610e 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
*/
@@ -1042,6 +1039,7 @@
#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_CHAMBER_ANIM // Use a second bitmap to indicate chamber 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
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..077f7dace3 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
*/
@@ -1042,6 +1039,7 @@
#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_CHAMBER_ANIM // Use a second bitmap to indicate chamber 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
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..59f0b25d8d 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
*/
@@ -1039,6 +1039,7 @@
#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_CHAMBER_ANIM // Use a second bitmap to indicate chamber 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
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..ce6005b493 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
*/
@@ -1042,6 +1039,7 @@
#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_CHAMBER_ANIM // Use a second bitmap to indicate chamber 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
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..b83fce6541 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
*/
@@ -1042,6 +1039,7 @@
#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_CHAMBER_ANIM // Use a second bitmap to indicate chamber 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
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..0a2660733f 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
*/
@@ -1042,6 +1039,7 @@
#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_CHAMBER_ANIM // Use a second bitmap to indicate chamber 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
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..f898a84cd7 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
*/
@@ -1042,6 +1039,7 @@
#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_CHAMBER_ANIM // Use a second bitmap to indicate chamber 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
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..a9e8d90869 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
*/
@@ -1042,6 +1039,7 @@
#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_CHAMBER_ANIM // Use a second bitmap to indicate chamber 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
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..e0baf626e6 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
*/
@@ -1043,6 +1040,7 @@
#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_CHAMBER_ANIM // Use a second bitmap to indicate chamber 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
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..ed10aec738 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
*/
@@ -1042,6 +1039,7 @@
#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_CHAMBER_ANIM // Use a second bitmap to indicate chamber 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
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..061e9ee391 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
*/
@@ -1042,6 +1039,7 @@
#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_CHAMBER_ANIM // Use a second bitmap to indicate chamber 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
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..396b404ad8 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
*/
@@ -1039,6 +1039,7 @@
#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_CHAMBER_ANIM // Use a second bitmap to indicate chamber 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
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..adbd09450d 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
*/
@@ -1039,6 +1039,7 @@
#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_CHAMBER_ANIM // Use a second bitmap to indicate chamber 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
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..995e38a363 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
*/
@@ -1042,6 +1039,7 @@
#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_CHAMBER_ANIM // Use a second bitmap to indicate chamber 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
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..0a4632c999 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
*/
@@ -1042,6 +1039,7 @@
#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_CHAMBER_ANIM // Use a second bitmap to indicate chamber 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
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..e7403b703d 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
*/
@@ -1042,6 +1039,7 @@
#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_CHAMBER_ANIM // Use a second bitmap to indicate chamber 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
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..454ceb7fb1 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
*/
@@ -1042,6 +1039,7 @@
#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_CHAMBER_ANIM // Use a second bitmap to indicate chamber 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
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..9351b07b23 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
*/
@@ -1042,6 +1039,7 @@
#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_CHAMBER_ANIM // Use a second bitmap to indicate chamber 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
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..fea05a9823 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
*/
@@ -1042,6 +1039,7 @@
#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_CHAMBER_ANIM // Use a second bitmap to indicate chamber 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
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..e04928bc3a 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
*/
@@ -1042,6 +1039,7 @@
#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_CHAMBER_ANIM // Use a second bitmap to indicate chamber 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
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..f55328d658 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
*/
@@ -1042,6 +1039,7 @@
#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_CHAMBER_ANIM // Use a second bitmap to indicate chamber 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
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..4cbef6a33f 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
*/
@@ -1055,6 +1052,7 @@
#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_CHAMBER_ANIM // Use a second bitmap to indicate chamber 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
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..afe9d6c760 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
*/
@@ -1042,6 +1039,7 @@
#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_CHAMBER_ANIM // Use a second bitmap to indicate chamber 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
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..ac57500b1f 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
*/
@@ -1042,6 +1039,7 @@
#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_CHAMBER_ANIM // Use a second bitmap to indicate chamber 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
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..ac046891de 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
*/
@@ -1041,6 +1041,7 @@
#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_CHAMBER_ANIM // Use a second bitmap to indicate chamber 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
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..1768463c1e 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
*/
@@ -1041,6 +1038,7 @@
#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_CHAMBER_ANIM // Use a second bitmap to indicate chamber 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
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..07d10b380e 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
*/
@@ -1041,6 +1038,7 @@
#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_CHAMBER_ANIM // Use a second bitmap to indicate chamber 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
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..07d10b380e 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
*/
@@ -1041,6 +1038,7 @@
#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_CHAMBER_ANIM // Use a second bitmap to indicate chamber 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
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..9265fd7c0a 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
*/
@@ -1041,6 +1038,7 @@
#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_CHAMBER_ANIM // Use a second bitmap to indicate chamber 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
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..9265fd7c0a 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
*/
@@ -1041,6 +1038,7 @@
#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_CHAMBER_ANIM // Use a second bitmap to indicate chamber 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
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..cefe7dfbc3 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
*/
@@ -1041,6 +1038,7 @@
#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_CHAMBER_ANIM // Use a second bitmap to indicate chamber 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
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..8cc47732ac 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
*/
@@ -1041,6 +1038,7 @@
#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_CHAMBER_ANIM // Use a second bitmap to indicate chamber 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
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..9265fd7c0a 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
*/
@@ -1041,6 +1038,7 @@
#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_CHAMBER_ANIM // Use a second bitmap to indicate chamber 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
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..fa1ae60814 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
*/
@@ -1040,6 +1037,7 @@
#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_CHAMBER_ANIM // Use a second bitmap to indicate chamber 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
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..534be68544 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
*/
@@ -1041,6 +1038,7 @@
#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_CHAMBER_ANIM // Use a second bitmap to indicate chamber 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
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..6a67fc0145 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
*/
@@ -1042,6 +1039,7 @@
#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_CHAMBER_ANIM // Use a second bitmap to indicate chamber 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
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..8433334a63 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
*/
@@ -1042,6 +1039,7 @@
#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_CHAMBER_ANIM // Use a second bitmap to indicate chamber 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
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..bccab5b003 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
*/
@@ -1042,6 +1039,7 @@
#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_CHAMBER_ANIM // Use a second bitmap to indicate chamber 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
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..18025217bc 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
*/
@@ -1043,6 +1040,7 @@
#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_CHAMBER_ANIM // Use a second bitmap to indicate chamber 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