From 691e5c3bb8d04b0b6690424034d73ade19e91586 Mon Sep 17 00:00:00 2001
From: InsanityAutomation
<38436470+InsanityAutomation@users.noreply.github.com>
Date: Sun, 17 Mar 2019 06:57:25 -0400
Subject: [PATCH] BLTouch V3.0 support (#13406)
---
Marlin/Configuration.h | 7 ++
Marlin/src/Marlin.cpp | 6 +-
Marlin/src/feature/bltouch.cpp | 93 +++++++++++++++++++
Marlin/src/feature/bltouch.h | 59 ++++++++++++
Marlin/src/gcode/calibrate/G28.cpp | 6 +-
Marlin/src/gcode/calibrate/G34_M422.cpp | 4 +-
Marlin/src/inc/Conditionals_LCD.h | 14 +--
Marlin/src/lcd/language/language_en.h | 9 ++
Marlin/src/lcd/menu/menu.h | 4 +-
Marlin/src/lcd/menu/menu_advanced.cpp | 10 +-
Marlin/src/lcd/menu/menu_configuration.cpp | 5 +
Marlin/src/module/configuration_store.cpp | 2 +-
Marlin/src/module/motion.cpp | 12 ++-
Marlin/src/module/probe.cpp | 39 ++------
Marlin/src/module/probe.h | 10 --
Marlin/src/module/servo.h | 13 ++-
buildroot/share/tests/megaatmega2560-tests | 7 +-
config/default/Configuration.h | 7 ++
.../examples/3DFabXYZ/Migbot/Configuration.h | 7 ++
.../AlephObjects/TAZ4/Configuration.h | 7 ++
.../AliExpress/CL-260/Configuration.h | 7 ++
.../AliExpress/UM2pExt/Configuration.h | 7 ++
config/examples/Anet/A2/Configuration.h | 7 ++
config/examples/Anet/A2plus/Configuration.h | 7 ++
config/examples/Anet/A6/Configuration.h | 7 ++
config/examples/Anet/A8/Configuration.h | 7 ++
config/examples/AnyCubic/i3/Configuration.h | 7 ++
config/examples/ArmEd/Configuration.h | 7 ++
config/examples/Azteeg/X5GT/Configuration.h | 7 ++
.../BIBO/TouchX/cyclops/Configuration.h | 7 ++
.../BIBO/TouchX/default/Configuration.h | 7 ++
config/examples/BQ/Hephestos/Configuration.h | 7 ++
.../examples/BQ/Hephestos_2/Configuration.h | 7 ++
config/examples/BQ/WITBOX/Configuration.h | 7 ++
config/examples/Cartesio/Configuration.h | 7 ++
.../examples/Creality/CR-10/Configuration.h | 7 ++
.../examples/Creality/CR-10S/Configuration.h | 7 ++
.../Creality/CR-10_5S/Configuration.h | 7 ++
.../Creality/CR-10mini/Configuration.h | 7 ++
config/examples/Creality/CR-8/Configuration.h | 7 ++
.../examples/Creality/Ender-2/Configuration.h | 7 ++
.../examples/Creality/Ender-3/Configuration.h | 7 ++
.../examples/Creality/Ender-4/Configuration.h | 7 ++
config/examples/Einstart-S/Configuration.h | 7 ++
config/examples/Felix/Configuration.h | 7 ++
config/examples/Felix/DUAL/Configuration.h | 7 ++
.../FlashForge/CreatorPro/Configuration.h | 7 ++
.../FolgerTech/i3-2020/Configuration.h | 7 ++
.../examples/Formbot/Raptor/Configuration.h | 7 ++
.../examples/Formbot/T_Rex_2+/Configuration.h | 7 ++
.../examples/Formbot/T_Rex_3/Configuration.h | 7 ++
config/examples/Geeetech/A10M/Configuration.h | 7 ++
config/examples/Geeetech/A20M/Configuration.h | 7 ++
.../examples/Geeetech/GT2560/Configuration.h | 7 ++
.../Geeetech/MeCreator2/Configuration.h | 7 ++
.../Prusa i3 Pro B/bltouch/Configuration.h | 7 ++
.../Prusa i3 Pro B/noprobe/Configuration.h | 7 ++
.../Geeetech/Prusa i3 Pro C/Configuration.h | 7 ++
.../Geeetech/Prusa i3 Pro W/Configuration.h | 7 ++
.../examples/Infitary/i3-M508/Configuration.h | 7 ++
config/examples/JGAurora/A5/Configuration.h | 7 ++
config/examples/MakerParts/Configuration.h | 7 ++
config/examples/Malyan/M150/Configuration.h | 7 ++
config/examples/Malyan/M200/Configuration.h | 7 ++
.../Micromake/C1/basic/Configuration.h | 7 ++
.../Micromake/C1/enhanced/Configuration.h | 7 ++
config/examples/Mks/Robin/Configuration.h | 7 ++
config/examples/Mks/Sbase/Configuration.h | 7 ++
.../Printrbot/PrintrboardG2/Configuration.h | 7 ++
.../examples/RapideLite/RL200/Configuration.h | 7 ++
.../examples/RepRapPro/Huxley/Configuration.h | 7 ++
.../RepRapWorld/Megatronics/Configuration.h | 7 ++
config/examples/RigidBot/Configuration.h | 7 ++
config/examples/SCARA/Configuration.h | 7 ++
config/examples/STM32F10/Configuration.h | 7 ++
config/examples/STM32F4/Configuration.h | 7 ++
config/examples/Sanguinololu/Configuration.h | 7 ++
config/examples/TheBorg/Configuration.h | 7 ++
config/examples/TinyBoy2/Configuration.h | 7 ++
config/examples/Tronxy/X1/Configuration.h | 7 ++
config/examples/Tronxy/X3A/Configuration.h | 7 ++
config/examples/Tronxy/X5S-2E/Configuration.h | 7 ++
config/examples/Tronxy/X5S/Configuration.h | 7 ++
config/examples/Tronxy/XY100/Configuration.h | 7 ++
.../UltiMachine/Archim1/Configuration.h | 7 ++
.../UltiMachine/Archim2/Configuration.h | 7 ++
config/examples/VORONDesign/Configuration.h | 7 ++
.../examples/Velleman/K8200/Configuration.h | 7 ++
.../examples/Velleman/K8400/Configuration.h | 7 ++
.../Velleman/K8400/Dual-head/Configuration.h | 7 ++
.../examples/WASP/PowerWASP/Configuration.h | 7 ++
.../Wanhao/Duplicator 6/Configuration.h | 7 ++
.../examples/adafruit/ST7565/Configuration.h | 7 ++
.../delta/Anycubic/Kossel/Configuration.h | 7 ++
.../FLSUN/auto_calibrate/Configuration.h | 7 ++
.../delta/FLSUN/kossel/Configuration.h | 7 ++
.../delta/FLSUN/kossel_mini/Configuration.h | 7 ++
.../Geeetech/Rostock 301/Configuration.h | 7 ++
.../delta/Hatchbox_Alpha/Configuration.h | 7 ++
.../examples/delta/MKS/SBASE/Configuration.h | 7 ++
config/examples/delta/generic/Configuration.h | 7 ++
.../delta/kossel_mini/Configuration.h | 7 ++
.../examples/delta/kossel_pro/Configuration.h | 7 ++
.../examples/delta/kossel_xl/Configuration.h | 7 ++
config/examples/makibox/Configuration.h | 7 ++
config/examples/stm32f103ret6/Configuration.h | 7 ++
config/examples/tvrrug/Round2/Configuration.h | 7 ++
config/examples/wt150/Configuration.h | 7 ++
108 files changed, 860 insertions(+), 77 deletions(-)
create mode 100644 Marlin/src/feature/bltouch.cpp
create mode 100644 Marlin/src/feature/bltouch.h
diff --git a/Marlin/Configuration.h b/Marlin/Configuration.h
index 950b85cb2..690a64e59 100644
--- a/Marlin/Configuration.h
+++ b/Marlin/Configuration.h
@@ -817,6 +817,13 @@
//#define BLTOUCH
#if ENABLED(BLTOUCH)
//#define BLTOUCH_DELAY 375 // (ms) Enable and increase if needed
+
+ // BLTouch V3.0 and newer smart series
+ //#define BLTOUCH_V3
+ #if ENABLED(BLTOUCH_V3)
+ //#define BLTOUCH_FORCE_5V_MODE
+ //#define BLTOUCH_FORCE_OPEN_DRAIN_MODE
+ #endif
#endif
// A probe that is deployed and stowed with a solenoid pin (SOL1_PIN)
diff --git a/Marlin/src/Marlin.cpp b/Marlin/src/Marlin.cpp
index 5166df1f5..6a55b399c 100644
--- a/Marlin/src/Marlin.cpp
+++ b/Marlin/src/Marlin.cpp
@@ -84,6 +84,10 @@
#include "feature/leds/leds.h"
#endif
+#if ENABLED(BLTOUCH)
+ #include "feature/bltouch.h"
+#endif
+
#if HAS_SERVOS
#include "module/servo.h"
#endif
@@ -1049,7 +1053,7 @@ void setup() {
#endif
#if ENABLED(BLTOUCH)
- bltouch_init();
+ bltouch.init();
#endif
#if ENABLED(I2C_POSITION_ENCODERS)
diff --git a/Marlin/src/feature/bltouch.cpp b/Marlin/src/feature/bltouch.cpp
new file mode 100644
index 000000000..a1cc95948
--- /dev/null
+++ b/Marlin/src/feature/bltouch.cpp
@@ -0,0 +1,93 @@
+/**
+ * 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 .
+ *
+ */
+
+#include "../inc/MarlinConfig.h"
+
+#if ENABLED(BLTOUCH)
+
+#include "bltouch.h"
+
+BLTouch bltouch;
+
+#include "../module/servo.h"
+
+void stop();
+
+#define DEBUG_OUT ENABLED(DEBUG_LEVELING_FEATURE)
+#include "../core/debug_out.h"
+
+void BLTouch::command(const BLTCommand cmd) {
+ MOVE_SERVO(Z_PROBE_SERVO_NR, cmd);
+ safe_delay(BLTOUCH_DELAY);
+}
+
+void BLTouch::init() {
+ reset(); // Clear all BLTouch error conditions
+ stow();
+}
+
+bool BLTouch::triggered() {
+ return (
+ #if ENABLED(Z_MIN_PROBE_USES_Z_MIN_ENDSTOP_PIN)
+ READ(Z_MIN_PIN) != Z_MIN_ENDSTOP_INVERTING
+ #else
+ READ(Z_MIN_PROBE_PIN) != Z_MIN_PROBE_ENDSTOP_INVERTING
+ #endif
+ );
+}
+
+bool BLTouch::set_deployed(const bool in_deploy) {
+ if (in_deploy && triggered()) { // If BLTouch says it's triggered
+ reset(); // try to reset it.
+ _deploy(); _stow(); // Deploy and stow to clear the "triggered" condition.
+ safe_delay(1500); // Wait for internal self-test to complete.
+ // (Measured completion time was 0.65 seconds
+ // after reset, deploy, and stow sequence)
+ if (triggered()) { // If it still claims to be triggered...
+ SERIAL_ERROR_MSG(MSG_STOP_BLTOUCH);
+ stop(); // punt!
+ return true;
+ }
+ }
+
+ #if ENABLED(BLTOUCH_V3)
+ #if ENABLED(BLTOUCH_FORCE_5V_MODE)
+ set_5V_mode(); // Assume 5V DC logic level if endstop pullup resistors are enabled
+ #else
+ set_OD_mode();
+ #endif
+ #endif
+
+ if (in_deploy) {
+ _deploy();
+ #if ENABLED(BLTOUCH_V3)
+ set_SW_mode(); // Ensure Switch mode is activated for BLTouch V3. Ignored on V2.
+ #endif
+ }
+ else _stow();
+
+ if (DEBUGGING(LEVELING)) DEBUG_ECHOLNPAIR("bltouch.set_deployed(", in_deploy, ")");
+
+ return false;
+}
+
+#endif // BLTOUCH
diff --git a/Marlin/src/feature/bltouch.h b/Marlin/src/feature/bltouch.h
new file mode 100644
index 000000000..c51d1b4a1
--- /dev/null
+++ b/Marlin/src/feature/bltouch.h
@@ -0,0 +1,59 @@
+/**
+ * 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 "../inc/MarlinConfigPre.h"
+
+// BLTouch commands are sent as servo angles
+typedef unsigned char BLTCommand;
+
+#define BLTOUCH_DEPLOY 10
+#define BLTOUCH_SW_MODE 60
+#define BLTOUCH_STOW 90
+#define BLTOUCH_SELFTEST 120
+#define BLTOUCH_5V_MODE 140
+#define BLTOUCH_OD_MODE 150
+#define BLTOUCH_RESET 160
+
+class BLTouch {
+public:
+ static void init();
+ static void command(const BLTCommand cmd);
+ static bool triggered();
+
+ FORCE_INLINE static void reset() { command(BLTOUCH_RESET); }
+ FORCE_INLINE static void set_5V_mode() { command(BLTOUCH_5V_MODE); }
+ FORCE_INLINE static void set_OD_mode() { command(BLTOUCH_OD_MODE); }
+ FORCE_INLINE static void set_SW_mode() { command(BLTOUCH_SW_MODE); }
+
+ FORCE_INLINE static bool deploy() { return set_deployed(true); }
+ FORCE_INLINE static bool stow() { return set_deployed(false); }
+
+private:
+ FORCE_INLINE static void _deploy() { command(BLTOUCH_DEPLOY); }
+ FORCE_INLINE static void _stow() { command(BLTOUCH_STOW); }
+ static bool set_deployed(const bool deploy);
+};
+
+#define BLTOUCH_ANGLES { BLTOUCH_DEPLOY, BLTOUCH_STOW }
+
+extern BLTouch bltouch;
diff --git a/Marlin/src/gcode/calibrate/G28.cpp b/Marlin/src/gcode/calibrate/G28.cpp
index 3cb4b9f9d..89884f87f 100644
--- a/Marlin/src/gcode/calibrate/G28.cpp
+++ b/Marlin/src/gcode/calibrate/G28.cpp
@@ -43,6 +43,10 @@
#include "../../module/probe.h"
#endif
+#if ENABLED(BLTOUCH)
+ #include "../../feature/bltouch.h"
+#endif
+
#include "../../lcd/ultralcd.h"
#if HAS_DRIVER(L6470) // set L6470 absolute position registers to counts
@@ -235,7 +239,7 @@ void GcodeSuite::G28(const bool always_home_all) {
#endif
#if ENABLED(BLTOUCH)
- bltouch_init();
+ bltouch.init();
#endif
// Always home with tool 0 active
diff --git a/Marlin/src/gcode/calibrate/G34_M422.cpp b/Marlin/src/gcode/calibrate/G34_M422.cpp
index ea2c5a20e..0f7c237f1 100644
--- a/Marlin/src/gcode/calibrate/G34_M422.cpp
+++ b/Marlin/src/gcode/calibrate/G34_M422.cpp
@@ -108,8 +108,8 @@ void GcodeSuite::G34() {
#endif
#if ENABLED(BLTOUCH)
- bltouch_command(BLTOUCH_RESET);
- set_bltouch_deployed(false);
+ bltouch.reset();
+ bltouch.stow();
#endif
// Always home with tool 0 active
diff --git a/Marlin/src/inc/Conditionals_LCD.h b/Marlin/src/inc/Conditionals_LCD.h
index 7b173cd48..8a440d156 100644
--- a/Marlin/src/inc/Conditionals_LCD.h
+++ b/Marlin/src/inc/Conditionals_LCD.h
@@ -460,25 +460,13 @@
#ifndef BLTOUCH_DELAY
#define BLTOUCH_DELAY 375
#endif
- #undef Z_SERVO_ANGLES
- #define Z_SERVO_ANGLES { BLTOUCH_DEPLOY, BLTOUCH_STOW }
-
- #define BLTOUCH_DEPLOY 10
- #define BLTOUCH_STOW 90
- #define BLTOUCH_SELFTEST 120
- #define BLTOUCH_RESET 160
- #define _TEST_BLTOUCH(P) (READ(P##_PIN) != P##_ENDSTOP_INVERTING)
// Always disable probe pin inverting for BLTouch
#undef Z_MIN_PROBE_ENDSTOP_INVERTING
#define Z_MIN_PROBE_ENDSTOP_INVERTING false
-
#if ENABLED(Z_MIN_PROBE_USES_Z_MIN_ENDSTOP_PIN)
#undef Z_MIN_ENDSTOP_INVERTING
- #define Z_MIN_ENDSTOP_INVERTING Z_MIN_PROBE_ENDSTOP_INVERTING
- #define TEST_BLTOUCH() _TEST_BLTOUCH(Z_MIN)
- #else
- #define TEST_BLTOUCH() _TEST_BLTOUCH(Z_MIN_PROBE)
+ #define Z_MIN_ENDSTOP_INVERTING false
#endif
#endif
diff --git a/Marlin/src/lcd/language/language_en.h b/Marlin/src/lcd/language/language_en.h
index f43ee5791..3f1cdef00 100644
--- a/Marlin/src/lcd/language/language_en.h
+++ b/Marlin/src/lcd/language/language_en.h
@@ -867,6 +867,15 @@
#ifndef MSG_BLTOUCH_DEPLOY
#define MSG_BLTOUCH_DEPLOY _UxGT("Deploy BLTouch")
#endif
+#ifndef MSG_BLTOUCH_SW_MODE
+ #define MSG_BLTOUCH_SW_MODE _UxGT("SW Deploy BLTouch")
+#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")
+#endif
#ifndef MSG_BLTOUCH_STOW
#define MSG_BLTOUCH_STOW _UxGT("Stow BLTouch")
#endif
diff --git a/Marlin/src/lcd/menu/menu.h b/Marlin/src/lcd/menu/menu.h
index 307896f9d..061a7498a 100644
--- a/Marlin/src/lcd/menu/menu.h
+++ b/Marlin/src/lcd/menu/menu.h
@@ -296,11 +296,11 @@ class MenuItem_bool {
++_thisItemNr; \
} while(0)
-#define MENU_ITEM_ADDON_START(X) \
+#define MENU_ITEM_ADDON_START(X) do{ \
if (ui.should_draw() && _menuLineNr == _thisItemNr - 1) { \
SETCURSOR(X, _lcdLineNr)
-#define MENU_ITEM_ADDON_END() } (0)
+#define MENU_ITEM_ADDON_END() } }while(0)
#define STATIC_ITEM(LABEL, ...) STATIC_ITEM_P(PSTR(LABEL), ## __VA_ARGS__)
diff --git a/Marlin/src/lcd/menu/menu_advanced.cpp b/Marlin/src/lcd/menu/menu_advanced.cpp
index 9078f5078..8bfce59ec 100644
--- a/Marlin/src/lcd/menu/menu_advanced.cpp
+++ b/Marlin/src/lcd/menu/menu_advanced.cpp
@@ -37,9 +37,11 @@
#if HAS_BED_PROBE
#include "../../module/probe.h"
- #if ENABLED(BLTOUCH)
- #include "../../module/endstops.h"
- #endif
+#endif
+
+#if ENABLED(BLTOUCH)
+ #include "../../module/endstops.h"
+ #include "../../feature/bltouch.h"
#endif
#if ENABLED(PIDTEMP)
@@ -694,7 +696,7 @@ void menu_advanced_settings() {
//
#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 && TEST_BLTOUCH())
+ 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
diff --git a/Marlin/src/lcd/menu/menu_configuration.cpp b/Marlin/src/lcd/menu/menu_configuration.cpp
index cb8c7f751..2f19c22a0 100644
--- a/Marlin/src/lcd/menu/menu_configuration.cpp
+++ b/Marlin/src/lcd/menu/menu_configuration.cpp
@@ -161,6 +161,11 @@ static void lcd_factory_settings() {
MENU_ITEM(gcode, MSG_BLTOUCH_SELFTEST, PSTR("M280 P" STRINGIFY(Z_PROBE_SERVO_NR) " S" STRINGIFY(BLTOUCH_SELFTEST)));
MENU_ITEM(gcode, MSG_BLTOUCH_DEPLOY, PSTR("M280 P" STRINGIFY(Z_PROBE_SERVO_NR) " S" STRINGIFY(BLTOUCH_DEPLOY)));
MENU_ITEM(gcode, MSG_BLTOUCH_STOW, PSTR("M280 P" STRINGIFY(Z_PROBE_SERVO_NR) " S" STRINGIFY(BLTOUCH_STOW)));
+ #if ENABLED(BLTOUCH_V3)
+ MENU_ITEM(gcode, MSG_BLTOUCH_SW_MODE, PSTR("M280 P" STRINGIFY(Z_PROBE_SERVO_NR) " S" STRINGIFY(BLTOUCH_SW_MODE)));
+ MENU_ITEM(gcode, MSG_BLTOUCH_5V_MODE, PSTR("M280 P" STRINGIFY(Z_PROBE_SERVO_NR) " S" STRINGIFY(BLTOUCH_5V_MODE)));
+ MENU_ITEM(gcode, MSG_BLTOUCH_OD_MODE, PSTR("M280 P" STRINGIFY(Z_PROBE_SERVO_NR) " S" STRINGIFY(BLTOUCH_OD_MODE)));
+ #endif
END_MENU();
}
diff --git a/Marlin/src/module/configuration_store.cpp b/Marlin/src/module/configuration_store.cpp
index 0239d2825..d71c97ae2 100644
--- a/Marlin/src/module/configuration_store.cpp
+++ b/Marlin/src/module/configuration_store.cpp
@@ -2578,7 +2578,7 @@ void MarlinSettings::reset() {
#endif
#elif ENABLED(SWITCHING_NOZZLE)
case SWITCHING_NOZZLE_SERVO_NR:
- #elif defined(Z_SERVO_ANGLES) && defined(Z_PROBE_SERVO_NR)
+ #elif (ENABLED(BLTOUCH) && defined(BLTOUCH_ANGLES)) || (defined(Z_SERVO_ANGLES) && defined(Z_PROBE_SERVO_NR))
case Z_PROBE_SERVO_NR:
#endif
CONFIG_ECHO_START();
diff --git a/Marlin/src/module/motion.cpp b/Marlin/src/module/motion.cpp
index 4eb675ddb..2e1ed63fa 100644
--- a/Marlin/src/module/motion.cpp
+++ b/Marlin/src/module/motion.cpp
@@ -47,6 +47,10 @@
#include "../feature/bedlevel/bedlevel.h"
#endif
+#if ENABLED(BLTOUCH)
+ #include "../feature/bltouch.h"
+#endif
+
#if EITHER(ULTRA_LCD, EXTENSIBLE_UI)
#include "../lcd/ultralcd.h"
#endif
@@ -1400,7 +1404,7 @@ void homeaxis(const AxisEnum axis) {
#if HOMING_Z_WITH_PROBE && ENABLED(BLTOUCH)
// BLTOUCH needs to be deployed every time
- if (axis == Z_AXIS && set_bltouch_deployed(true)) return;
+ if (axis == Z_AXIS && bltouch.deploy()) return;
#endif
do_homing_move(axis, 1.5f * max_length(
@@ -1414,7 +1418,7 @@ void homeaxis(const AxisEnum axis) {
#if HOMING_Z_WITH_PROBE && ENABLED(BLTOUCH)
// BLTOUCH needs to be stowed after trigger to rearm itself
- if (axis == Z_AXIS) set_bltouch_deployed(false);
+ if (axis == Z_AXIS) bltouch.stow();
#endif
// When homing Z with probe respect probe clearance
@@ -1440,14 +1444,14 @@ void homeaxis(const AxisEnum axis) {
#if HOMING_Z_WITH_PROBE && ENABLED(BLTOUCH)
// BLTOUCH needs to be deployed every time
- if (axis == Z_AXIS && set_bltouch_deployed(true)) return;
+ if (axis == Z_AXIS && bltouch.deploy()) return;
#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) set_bltouch_deployed(false);
+ if (axis == Z_AXIS) bltouch.stow();
#endif
}
diff --git a/Marlin/src/module/probe.cpp b/Marlin/src/module/probe.cpp
index 37ee673a9..f32b5ae4d 100644
--- a/Marlin/src/module/probe.cpp
+++ b/Marlin/src/module/probe.cpp
@@ -56,6 +56,10 @@
float zprobe_zoffset; // Initialized by settings.load()
+#if ENABLED(BLTOUCH)
+ #include "../feature/bltouch.h"
+#endif
+
#if HAS_Z_SERVO_PROBE
#include "servo.h"
#endif
@@ -289,37 +293,6 @@ float zprobe_zoffset; // Initialized by settings.load()
}
#endif // QUIET_PROBING
-#if ENABLED(BLTOUCH)
-
- void bltouch_command(const int angle) {
- MOVE_SERVO(Z_PROBE_SERVO_NR, angle); // Give the BL-Touch the command and wait
- safe_delay(BLTOUCH_DELAY);
- }
-
- bool set_bltouch_deployed(const bool deploy) {
- if (deploy && TEST_BLTOUCH()) { // If BL-Touch says it's triggered
- bltouch_command(BLTOUCH_RESET); // try to reset it.
- bltouch_command(BLTOUCH_DEPLOY); // Also needs to deploy and stow to
- bltouch_command(BLTOUCH_STOW); // clear the triggered condition.
- safe_delay(1500); // Wait for internal self-test to complete.
- // (Measured completion time was 0.65 seconds
- // after reset, deploy, and stow sequence)
- if (TEST_BLTOUCH()) { // If it still claims to be triggered...
- SERIAL_ERROR_MSG(MSG_STOP_BLTOUCH);
- stop(); // punt!
- return true;
- }
- }
-
- bltouch_command(deploy ? BLTOUCH_DEPLOY : BLTOUCH_STOW);
-
- if (DEBUGGING(LEVELING)) DEBUG_ECHOLNPAIR("set_bltouch_deployed(", deploy, ")");
-
- return false;
- }
-
-#endif // BLTOUCH
-
/**
* Raise Z to a minimum height to make room for a probe to move
*/
@@ -530,7 +503,7 @@ static bool do_probe_move(const float z, const float fr_mm_s) {
// Deploy BLTouch at the start of any probe
#if ENABLED(BLTOUCH)
- if (set_bltouch_deployed(true)) return true;
+ if (bltouch.deploy()) return true;
#endif
// Disable stealthChop if used. Enable diag1 pin on driver.
@@ -582,7 +555,7 @@ static bool do_probe_move(const float z, const float fr_mm_s) {
// Retract BLTouch immediately after a probe if it was triggered
#if ENABLED(BLTOUCH)
- if (probe_triggered && set_bltouch_deployed(false)) return true;
+ if (probe_triggered && bltouch.stow()) return true;
#endif
// Clear endstop flags
diff --git a/Marlin/src/module/probe.h b/Marlin/src/module/probe.h
index 8167fdd65..4bf694171 100644
--- a/Marlin/src/module/probe.h
+++ b/Marlin/src/module/probe.h
@@ -57,13 +57,3 @@
#if QUIET_PROBING
void probing_pause(const bool p);
#endif
-
-#if ENABLED(BLTOUCH)
- void bltouch_command(int angle);
- bool set_bltouch_deployed(const bool deploy);
- FORCE_INLINE void bltouch_init() {
- // Make sure any BLTouch error condition is cleared
- bltouch_command(BLTOUCH_RESET);
- set_bltouch_deployed(false);
- }
-#endif
diff --git a/Marlin/src/module/servo.h b/Marlin/src/module/servo.h
index c3bd05b0a..d417cc877 100644
--- a/Marlin/src/module/servo.h
+++ b/Marlin/src/module/servo.h
@@ -44,9 +44,18 @@
#elif ENABLED(SWITCHING_NOZZLE)
#define SADATA SWITCHING_NOZZLE_SERVO_ANGLES
#define ASRC(N,E) (SWITCHING_NOZZLE_SERVO_NR == N ? asrc[E] : 0)
- #elif defined(Z_SERVO_ANGLES) && defined(Z_PROBE_SERVO_NR)
- #define SADATA Z_SERVO_ANGLES
+ #elif defined(Z_PROBE_SERVO_NR)
#define ASRC(N,E) (Z_PROBE_SERVO_NR == N ? asrc[E] : 0)
+ #if ENABLED(BLTOUCH)
+ #include "../feature/bltouch.h"
+ #endif
+ #ifdef BLTOUCH_ANGLES
+ #define SADATA BLTOUCH_ANGLES
+ #elif defined(Z_SERVO_ANGLES)
+ #define SADATA Z_SERVO_ANGLES
+ #else
+ #error "Servo angles are needed!"
+ #endif
#endif
#if ENABLED(EDITABLE_SERVO_ANGLES)
diff --git a/buildroot/share/tests/megaatmega2560-tests b/buildroot/share/tests/megaatmega2560-tests
index e892b55c7..e8bf1eef5 100755
--- a/buildroot/share/tests/megaatmega2560-tests
+++ b/buildroot/share/tests/megaatmega2560-tests
@@ -264,7 +264,6 @@ exec_test $1 $2 "Many less common options"
# Test a full-featured CR-10S config
#
use_example_configs Creality/CR-10S
-opt_enable SHOW_CUSTOM_BOOTSCREEN
exec_test $1 $2 "Full-featured CR-10S config"
#
# BQ Hephestos 2
@@ -272,10 +271,10 @@ exec_test $1 $2 "Full-featured CR-10S config"
#use_example_configs Hephestos_2
#exec_test $1 $2 "Stuff"
#
-# Delta Config (generic) + ABL bilinear + PROBE_MANUALLY
+# Delta Config (generic) + ABL bilinear + BLTOUCH
use_example_configs delta/generic
-opt_enable REPRAP_DISCOUNT_SMART_CONTROLLER DELTA_CALIBRATION_MENU AUTO_BED_LEVELING_BILINEAR PROBE_MANUALLY
-exec_test $1 $2 "Delta Config (generic) + ABL bilinear + PROBE_MANUALLY"
+opt_enable REPRAP_DISCOUNT_SMART_CONTROLLER DELTA_CALIBRATION_MENU AUTO_BED_LEVELING_BILINEAR BLTOUCH BLTOUCH_V3
+exec_test $1 $2 "Delta Config (generic) + ABL bilinear + BLTOUCH"
#
# Delta Config (generic) + UBL + ALLEN_KEY + OLED_PANEL_TINYBOY2 + EEPROM_SETTINGS
#
diff --git a/config/default/Configuration.h b/config/default/Configuration.h
index 950b85cb2..690a64e59 100644
--- a/config/default/Configuration.h
+++ b/config/default/Configuration.h
@@ -817,6 +817,13 @@
//#define BLTOUCH
#if ENABLED(BLTOUCH)
//#define BLTOUCH_DELAY 375 // (ms) Enable and increase if needed
+
+ // BLTouch V3.0 and newer smart series
+ //#define BLTOUCH_V3
+ #if ENABLED(BLTOUCH_V3)
+ //#define BLTOUCH_FORCE_5V_MODE
+ //#define BLTOUCH_FORCE_OPEN_DRAIN_MODE
+ #endif
#endif
// A probe that is deployed and stowed with a solenoid pin (SOL1_PIN)
diff --git a/config/examples/3DFabXYZ/Migbot/Configuration.h b/config/examples/3DFabXYZ/Migbot/Configuration.h
index 6d00fac1c..5538470e0 100644
--- a/config/examples/3DFabXYZ/Migbot/Configuration.h
+++ b/config/examples/3DFabXYZ/Migbot/Configuration.h
@@ -823,6 +823,13 @@
//#define BLTOUCH
#if ENABLED(BLTOUCH)
//#define BLTOUCH_DELAY 375 // (ms) Enable and increase if needed
+
+ // BLTouch V3.0 and newer smart series
+ //#define BLTOUCH_V3
+ #if ENABLED(BLTOUCH_V3)
+ //#define BLTOUCH_FORCE_5V_MODE
+ //#define BLTOUCH_FORCE_OPEN_DRAIN_MODE
+ #endif
#endif
// A probe that is deployed and stowed with a solenoid pin (SOL1_PIN)
diff --git a/config/examples/AlephObjects/TAZ4/Configuration.h b/config/examples/AlephObjects/TAZ4/Configuration.h
index 7c3f9d875..214fd0981 100644
--- a/config/examples/AlephObjects/TAZ4/Configuration.h
+++ b/config/examples/AlephObjects/TAZ4/Configuration.h
@@ -837,6 +837,13 @@
//#define BLTOUCH
#if ENABLED(BLTOUCH)
//#define BLTOUCH_DELAY 375 // (ms) Enable and increase if needed
+
+ // BLTouch V3.0 and newer smart series
+ //#define BLTOUCH_V3
+ #if ENABLED(BLTOUCH_V3)
+ //#define BLTOUCH_FORCE_5V_MODE
+ //#define BLTOUCH_FORCE_OPEN_DRAIN_MODE
+ #endif
#endif
// A probe that is deployed and stowed with a solenoid pin (SOL1_PIN)
diff --git a/config/examples/AliExpress/CL-260/Configuration.h b/config/examples/AliExpress/CL-260/Configuration.h
index 7de1f1576..aa7e24116 100644
--- a/config/examples/AliExpress/CL-260/Configuration.h
+++ b/config/examples/AliExpress/CL-260/Configuration.h
@@ -817,6 +817,13 @@
//#define BLTOUCH
#if ENABLED(BLTOUCH)
//#define BLTOUCH_DELAY 375 // (ms) Enable and increase if needed
+
+ // BLTouch V3.0 and newer smart series
+ //#define BLTOUCH_V3
+ #if ENABLED(BLTOUCH_V3)
+ //#define BLTOUCH_FORCE_5V_MODE
+ //#define BLTOUCH_FORCE_OPEN_DRAIN_MODE
+ #endif
#endif
// A probe that is deployed and stowed with a solenoid pin (SOL1_PIN)
diff --git a/config/examples/AliExpress/UM2pExt/Configuration.h b/config/examples/AliExpress/UM2pExt/Configuration.h
index 44f8abdda..15333458e 100644
--- a/config/examples/AliExpress/UM2pExt/Configuration.h
+++ b/config/examples/AliExpress/UM2pExt/Configuration.h
@@ -828,6 +828,13 @@
//#define BLTOUCH
#if ENABLED(BLTOUCH)
//#define BLTOUCH_DELAY 375 // (ms) Enable and increase if needed
+
+ // BLTouch V3.0 and newer smart series
+ //#define BLTOUCH_V3
+ #if ENABLED(BLTOUCH_V3)
+ //#define BLTOUCH_FORCE_5V_MODE
+ //#define BLTOUCH_FORCE_OPEN_DRAIN_MODE
+ #endif
#endif
// A probe that is deployed and stowed with a solenoid pin (SOL1_PIN)
diff --git a/config/examples/Anet/A2/Configuration.h b/config/examples/Anet/A2/Configuration.h
index 4a2dd0469..aafc72227 100644
--- a/config/examples/Anet/A2/Configuration.h
+++ b/config/examples/Anet/A2/Configuration.h
@@ -817,6 +817,13 @@
//#define BLTOUCH
#if ENABLED(BLTOUCH)
//#define BLTOUCH_DELAY 375 // (ms) Enable and increase if needed
+
+ // BLTouch V3.0 and newer smart series
+ //#define BLTOUCH_V3
+ #if ENABLED(BLTOUCH_V3)
+ //#define BLTOUCH_FORCE_5V_MODE
+ //#define BLTOUCH_FORCE_OPEN_DRAIN_MODE
+ #endif
#endif
// A probe that is deployed and stowed with a solenoid pin (SOL1_PIN)
diff --git a/config/examples/Anet/A2plus/Configuration.h b/config/examples/Anet/A2plus/Configuration.h
index 04c05d15c..9dbea7cf3 100644
--- a/config/examples/Anet/A2plus/Configuration.h
+++ b/config/examples/Anet/A2plus/Configuration.h
@@ -817,6 +817,13 @@
//#define BLTOUCH
#if ENABLED(BLTOUCH)
//#define BLTOUCH_DELAY 375 // (ms) Enable and increase if needed
+
+ // BLTouch V3.0 and newer smart series
+ //#define BLTOUCH_V3
+ #if ENABLED(BLTOUCH_V3)
+ //#define BLTOUCH_FORCE_5V_MODE
+ //#define BLTOUCH_FORCE_OPEN_DRAIN_MODE
+ #endif
#endif
// A probe that is deployed and stowed with a solenoid pin (SOL1_PIN)
diff --git a/config/examples/Anet/A6/Configuration.h b/config/examples/Anet/A6/Configuration.h
index 52a09783a..55fa6b7ef 100644
--- a/config/examples/Anet/A6/Configuration.h
+++ b/config/examples/Anet/A6/Configuration.h
@@ -864,6 +864,13 @@
//#define BLTOUCH
#if ENABLED(BLTOUCH)
//#define BLTOUCH_DELAY 375 // (ms) Enable and increase if needed
+
+ // BLTouch V3.0 and newer smart series
+ //#define BLTOUCH_V3
+ #if ENABLED(BLTOUCH_V3)
+ //#define BLTOUCH_FORCE_5V_MODE
+ //#define BLTOUCH_FORCE_OPEN_DRAIN_MODE
+ #endif
#endif
// A probe that is deployed and stowed with a solenoid pin (SOL1_PIN)
diff --git a/config/examples/Anet/A8/Configuration.h b/config/examples/Anet/A8/Configuration.h
index 44fcf8f1a..ab30e4da4 100644
--- a/config/examples/Anet/A8/Configuration.h
+++ b/config/examples/Anet/A8/Configuration.h
@@ -830,6 +830,13 @@
//#define BLTOUCH
#if ENABLED(BLTOUCH)
//#define BLTOUCH_DELAY 375 // (ms) Enable and increase if needed
+
+ // BLTouch V3.0 and newer smart series
+ //#define BLTOUCH_V3
+ #if ENABLED(BLTOUCH_V3)
+ //#define BLTOUCH_FORCE_5V_MODE
+ //#define BLTOUCH_FORCE_OPEN_DRAIN_MODE
+ #endif
#endif
// A probe that is deployed and stowed with a solenoid pin (SOL1_PIN)
diff --git a/config/examples/AnyCubic/i3/Configuration.h b/config/examples/AnyCubic/i3/Configuration.h
index 6d8b983ce..b065f25e0 100644
--- a/config/examples/AnyCubic/i3/Configuration.h
+++ b/config/examples/AnyCubic/i3/Configuration.h
@@ -827,6 +827,13 @@
#define BLTOUCH
#if ENABLED(BLTOUCH)
//#define BLTOUCH_DELAY 375 // (ms) Enable and increase if needed
+
+ // BLTouch V3.0 and newer smart series
+ //#define BLTOUCH_V3
+ #if ENABLED(BLTOUCH_V3)
+ //#define BLTOUCH_FORCE_5V_MODE
+ //#define BLTOUCH_FORCE_OPEN_DRAIN_MODE
+ #endif
#endif
// A probe that is deployed and stowed with a solenoid pin (SOL1_PIN)
diff --git a/config/examples/ArmEd/Configuration.h b/config/examples/ArmEd/Configuration.h
index 7aa30de62..b9c401a3c 100644
--- a/config/examples/ArmEd/Configuration.h
+++ b/config/examples/ArmEd/Configuration.h
@@ -818,6 +818,13 @@
//#define BLTOUCH
#if ENABLED(BLTOUCH)
//#define BLTOUCH_DELAY 375 // (ms) Enable and increase if needed
+
+ // BLTouch V3.0 and newer smart series
+ //#define BLTOUCH_V3
+ #if ENABLED(BLTOUCH_V3)
+ //#define BLTOUCH_FORCE_5V_MODE
+ //#define BLTOUCH_FORCE_OPEN_DRAIN_MODE
+ #endif
#endif
// A probe that is deployed and stowed with a solenoid pin (SOL1_PIN)
diff --git a/config/examples/Azteeg/X5GT/Configuration.h b/config/examples/Azteeg/X5GT/Configuration.h
index 8e5193706..0a2e70225 100644
--- a/config/examples/Azteeg/X5GT/Configuration.h
+++ b/config/examples/Azteeg/X5GT/Configuration.h
@@ -817,6 +817,13 @@
//#define BLTOUCH
#if ENABLED(BLTOUCH)
//#define BLTOUCH_DELAY 375 // (ms) Enable and increase if needed
+
+ // BLTouch V3.0 and newer smart series
+ //#define BLTOUCH_V3
+ #if ENABLED(BLTOUCH_V3)
+ //#define BLTOUCH_FORCE_5V_MODE
+ //#define BLTOUCH_FORCE_OPEN_DRAIN_MODE
+ #endif
#endif
// A probe that is deployed and stowed with a solenoid pin (SOL1_PIN)
diff --git a/config/examples/BIBO/TouchX/cyclops/Configuration.h b/config/examples/BIBO/TouchX/cyclops/Configuration.h
index 80b9975cb..b00d02fd3 100644
--- a/config/examples/BIBO/TouchX/cyclops/Configuration.h
+++ b/config/examples/BIBO/TouchX/cyclops/Configuration.h
@@ -817,6 +817,13 @@
//#define BLTOUCH
#if ENABLED(BLTOUCH)
//#define BLTOUCH_DELAY 375 // (ms) Enable and increase if needed
+
+ // BLTouch V3.0 and newer smart series
+ //#define BLTOUCH_V3
+ #if ENABLED(BLTOUCH_V3)
+ //#define BLTOUCH_FORCE_5V_MODE
+ //#define BLTOUCH_FORCE_OPEN_DRAIN_MODE
+ #endif
#endif
// A probe that is deployed and stowed with a solenoid pin (SOL1_PIN)
diff --git a/config/examples/BIBO/TouchX/default/Configuration.h b/config/examples/BIBO/TouchX/default/Configuration.h
index 744f5832d..21b31e9ed 100644
--- a/config/examples/BIBO/TouchX/default/Configuration.h
+++ b/config/examples/BIBO/TouchX/default/Configuration.h
@@ -817,6 +817,13 @@
//#define BLTOUCH
#if ENABLED(BLTOUCH)
//#define BLTOUCH_DELAY 375 // (ms) Enable and increase if needed
+
+ // BLTouch V3.0 and newer smart series
+ //#define BLTOUCH_V3
+ #if ENABLED(BLTOUCH_V3)
+ //#define BLTOUCH_FORCE_5V_MODE
+ //#define BLTOUCH_FORCE_OPEN_DRAIN_MODE
+ #endif
#endif
// A probe that is deployed and stowed with a solenoid pin (SOL1_PIN)
diff --git a/config/examples/BQ/Hephestos/Configuration.h b/config/examples/BQ/Hephestos/Configuration.h
index 7270c7b81..350d5b353 100644
--- a/config/examples/BQ/Hephestos/Configuration.h
+++ b/config/examples/BQ/Hephestos/Configuration.h
@@ -805,6 +805,13 @@
//#define BLTOUCH
#if ENABLED(BLTOUCH)
//#define BLTOUCH_DELAY 375 // (ms) Enable and increase if needed
+
+ // BLTouch V3.0 and newer smart series
+ //#define BLTOUCH_V3
+ #if ENABLED(BLTOUCH_V3)
+ //#define BLTOUCH_FORCE_5V_MODE
+ //#define BLTOUCH_FORCE_OPEN_DRAIN_MODE
+ #endif
#endif
// A probe that is deployed and stowed with a solenoid pin (SOL1_PIN)
diff --git a/config/examples/BQ/Hephestos_2/Configuration.h b/config/examples/BQ/Hephestos_2/Configuration.h
index bd670d5a1..a2bc0dd3a 100644
--- a/config/examples/BQ/Hephestos_2/Configuration.h
+++ b/config/examples/BQ/Hephestos_2/Configuration.h
@@ -818,6 +818,13 @@
//#define BLTOUCH
#if ENABLED(BLTOUCH)
//#define BLTOUCH_DELAY 375 // (ms) Enable and increase if needed
+
+ // BLTouch V3.0 and newer smart series
+ //#define BLTOUCH_V3
+ #if ENABLED(BLTOUCH_V3)
+ //#define BLTOUCH_FORCE_5V_MODE
+ //#define BLTOUCH_FORCE_OPEN_DRAIN_MODE
+ #endif
#endif
// A probe that is deployed and stowed with a solenoid pin (SOL1_PIN)
diff --git a/config/examples/BQ/WITBOX/Configuration.h b/config/examples/BQ/WITBOX/Configuration.h
index 4c6746eeb..db07f8396 100644
--- a/config/examples/BQ/WITBOX/Configuration.h
+++ b/config/examples/BQ/WITBOX/Configuration.h
@@ -805,6 +805,13 @@
//#define BLTOUCH
#if ENABLED(BLTOUCH)
//#define BLTOUCH_DELAY 375 // (ms) Enable and increase if needed
+
+ // BLTouch V3.0 and newer smart series
+ //#define BLTOUCH_V3
+ #if ENABLED(BLTOUCH_V3)
+ //#define BLTOUCH_FORCE_5V_MODE
+ //#define BLTOUCH_FORCE_OPEN_DRAIN_MODE
+ #endif
#endif
// A probe that is deployed and stowed with a solenoid pin (SOL1_PIN)
diff --git a/config/examples/Cartesio/Configuration.h b/config/examples/Cartesio/Configuration.h
index 45e7bdebe..54cd60281 100644
--- a/config/examples/Cartesio/Configuration.h
+++ b/config/examples/Cartesio/Configuration.h
@@ -816,6 +816,13 @@
//#define BLTOUCH
#if ENABLED(BLTOUCH)
//#define BLTOUCH_DELAY 375 // (ms) Enable and increase if needed
+
+ // BLTouch V3.0 and newer smart series
+ //#define BLTOUCH_V3
+ #if ENABLED(BLTOUCH_V3)
+ //#define BLTOUCH_FORCE_5V_MODE
+ //#define BLTOUCH_FORCE_OPEN_DRAIN_MODE
+ #endif
#endif
// A probe that is deployed and stowed with a solenoid pin (SOL1_PIN)
diff --git a/config/examples/Creality/CR-10/Configuration.h b/config/examples/Creality/CR-10/Configuration.h
index 8a84b5907..0c84bd67c 100644
--- a/config/examples/Creality/CR-10/Configuration.h
+++ b/config/examples/Creality/CR-10/Configuration.h
@@ -827,6 +827,13 @@
//#define BLTOUCH
#if ENABLED(BLTOUCH)
//#define BLTOUCH_DELAY 375 // (ms) Enable and increase if needed
+
+ // BLTouch V3.0 and newer smart series
+ //#define BLTOUCH_V3
+ #if ENABLED(BLTOUCH_V3)
+ //#define BLTOUCH_FORCE_5V_MODE
+ //#define BLTOUCH_FORCE_OPEN_DRAIN_MODE
+ #endif
#endif
// A probe that is deployed and stowed with a solenoid pin (SOL1_PIN)
diff --git a/config/examples/Creality/CR-10S/Configuration.h b/config/examples/Creality/CR-10S/Configuration.h
index 0fafda51e..277bc926e 100644
--- a/config/examples/Creality/CR-10S/Configuration.h
+++ b/config/examples/Creality/CR-10S/Configuration.h
@@ -817,6 +817,13 @@
//#define BLTOUCH
#if ENABLED(BLTOUCH)
//#define BLTOUCH_DELAY 375 // (ms) Enable and increase if needed
+
+ // BLTouch V3.0 and newer smart series
+ //#define BLTOUCH_V3
+ #if ENABLED(BLTOUCH_V3)
+ //#define BLTOUCH_FORCE_5V_MODE
+ //#define BLTOUCH_FORCE_OPEN_DRAIN_MODE
+ #endif
#endif
// A probe that is deployed and stowed with a solenoid pin (SOL1_PIN)
diff --git a/config/examples/Creality/CR-10_5S/Configuration.h b/config/examples/Creality/CR-10_5S/Configuration.h
index b5c01d2f3..a09c9fb18 100644
--- a/config/examples/Creality/CR-10_5S/Configuration.h
+++ b/config/examples/Creality/CR-10_5S/Configuration.h
@@ -818,6 +818,13 @@
//#define BLTOUCH
#if ENABLED(BLTOUCH)
//#define BLTOUCH_DELAY 375 // (ms) Enable and increase if needed
+
+ // BLTouch V3.0 and newer smart series
+ //#define BLTOUCH_V3
+ #if ENABLED(BLTOUCH_V3)
+ //#define BLTOUCH_FORCE_5V_MODE
+ //#define BLTOUCH_FORCE_OPEN_DRAIN_MODE
+ #endif
#endif
// A probe that is deployed and stowed with a solenoid pin (SOL1_PIN)
diff --git a/config/examples/Creality/CR-10mini/Configuration.h b/config/examples/Creality/CR-10mini/Configuration.h
index 120e9689a..95816cc3b 100644
--- a/config/examples/Creality/CR-10mini/Configuration.h
+++ b/config/examples/Creality/CR-10mini/Configuration.h
@@ -836,6 +836,13 @@
//#define BLTOUCH
#if ENABLED(BLTOUCH)
//#define BLTOUCH_DELAY 375 // (ms) Enable and increase if needed
+
+ // BLTouch V3.0 and newer smart series
+ //#define BLTOUCH_V3
+ #if ENABLED(BLTOUCH_V3)
+ //#define BLTOUCH_FORCE_5V_MODE
+ //#define BLTOUCH_FORCE_OPEN_DRAIN_MODE
+ #endif
#endif
// A probe that is deployed and stowed with a solenoid pin (SOL1_PIN)
diff --git a/config/examples/Creality/CR-8/Configuration.h b/config/examples/Creality/CR-8/Configuration.h
index 3596d0a34..ed60bdaf9 100644
--- a/config/examples/Creality/CR-8/Configuration.h
+++ b/config/examples/Creality/CR-8/Configuration.h
@@ -827,6 +827,13 @@
//#define BLTOUCH
#if ENABLED(BLTOUCH)
//#define BLTOUCH_DELAY 375 // (ms) Enable and increase if needed
+
+ // BLTouch V3.0 and newer smart series
+ //#define BLTOUCH_V3
+ #if ENABLED(BLTOUCH_V3)
+ //#define BLTOUCH_FORCE_5V_MODE
+ //#define BLTOUCH_FORCE_OPEN_DRAIN_MODE
+ #endif
#endif
// A probe that is deployed and stowed with a solenoid pin (SOL1_PIN)
diff --git a/config/examples/Creality/Ender-2/Configuration.h b/config/examples/Creality/Ender-2/Configuration.h
index a9ac37fcf..649d38b53 100644
--- a/config/examples/Creality/Ender-2/Configuration.h
+++ b/config/examples/Creality/Ender-2/Configuration.h
@@ -821,6 +821,13 @@
//#define BLTOUCH
#if ENABLED(BLTOUCH)
//#define BLTOUCH_DELAY 375 // (ms) Enable and increase if needed
+
+ // BLTouch V3.0 and newer smart series
+ //#define BLTOUCH_V3
+ #if ENABLED(BLTOUCH_V3)
+ //#define BLTOUCH_FORCE_5V_MODE
+ //#define BLTOUCH_FORCE_OPEN_DRAIN_MODE
+ #endif
#endif
// A probe that is deployed and stowed with a solenoid pin (SOL1_PIN)
diff --git a/config/examples/Creality/Ender-3/Configuration.h b/config/examples/Creality/Ender-3/Configuration.h
index 85792f570..2dfb44514 100644
--- a/config/examples/Creality/Ender-3/Configuration.h
+++ b/config/examples/Creality/Ender-3/Configuration.h
@@ -821,6 +821,13 @@
//#define BLTOUCH
#if ENABLED(BLTOUCH)
//#define BLTOUCH_DELAY 375 // (ms) Enable and increase if needed
+
+ // BLTouch V3.0 and newer smart series
+ //#define BLTOUCH_V3
+ #if ENABLED(BLTOUCH_V3)
+ //#define BLTOUCH_FORCE_5V_MODE
+ //#define BLTOUCH_FORCE_OPEN_DRAIN_MODE
+ #endif
#endif
// A probe that is deployed and stowed with a solenoid pin (SOL1_PIN)
diff --git a/config/examples/Creality/Ender-4/Configuration.h b/config/examples/Creality/Ender-4/Configuration.h
index 853783836..cdad37df8 100644
--- a/config/examples/Creality/Ender-4/Configuration.h
+++ b/config/examples/Creality/Ender-4/Configuration.h
@@ -827,6 +827,13 @@
//#define BLTOUCH
#if ENABLED(BLTOUCH)
//#define BLTOUCH_DELAY 375 // (ms) Enable and increase if needed
+
+ // BLTouch V3.0 and newer smart series
+ //#define BLTOUCH_V3
+ #if ENABLED(BLTOUCH_V3)
+ //#define BLTOUCH_FORCE_5V_MODE
+ //#define BLTOUCH_FORCE_OPEN_DRAIN_MODE
+ #endif
#endif
// A probe that is deployed and stowed with a solenoid pin (SOL1_PIN)
diff --git a/config/examples/Einstart-S/Configuration.h b/config/examples/Einstart-S/Configuration.h
index d05e31c68..0efc7d1ed 100644
--- a/config/examples/Einstart-S/Configuration.h
+++ b/config/examples/Einstart-S/Configuration.h
@@ -828,6 +828,13 @@
//#define BLTOUCH
#if ENABLED(BLTOUCH)
//#define BLTOUCH_DELAY 375 // (ms) Enable and increase if needed
+
+ // BLTouch V3.0 and newer smart series
+ //#define BLTOUCH_V3
+ #if ENABLED(BLTOUCH_V3)
+ //#define BLTOUCH_FORCE_5V_MODE
+ //#define BLTOUCH_FORCE_OPEN_DRAIN_MODE
+ #endif
#endif
// A probe that is deployed and stowed with a solenoid pin (SOL1_PIN)
diff --git a/config/examples/Felix/Configuration.h b/config/examples/Felix/Configuration.h
index 0456360a0..10caeab72 100644
--- a/config/examples/Felix/Configuration.h
+++ b/config/examples/Felix/Configuration.h
@@ -799,6 +799,13 @@
//#define BLTOUCH
#if ENABLED(BLTOUCH)
//#define BLTOUCH_DELAY 375 // (ms) Enable and increase if needed
+
+ // BLTouch V3.0 and newer smart series
+ //#define BLTOUCH_V3
+ #if ENABLED(BLTOUCH_V3)
+ //#define BLTOUCH_FORCE_5V_MODE
+ //#define BLTOUCH_FORCE_OPEN_DRAIN_MODE
+ #endif
#endif
// A probe that is deployed and stowed with a solenoid pin (SOL1_PIN)
diff --git a/config/examples/Felix/DUAL/Configuration.h b/config/examples/Felix/DUAL/Configuration.h
index 9f21a1e5e..8d04683ed 100644
--- a/config/examples/Felix/DUAL/Configuration.h
+++ b/config/examples/Felix/DUAL/Configuration.h
@@ -799,6 +799,13 @@
//#define BLTOUCH
#if ENABLED(BLTOUCH)
//#define BLTOUCH_DELAY 375 // (ms) Enable and increase if needed
+
+ // BLTouch V3.0 and newer smart series
+ //#define BLTOUCH_V3
+ #if ENABLED(BLTOUCH_V3)
+ //#define BLTOUCH_FORCE_5V_MODE
+ //#define BLTOUCH_FORCE_OPEN_DRAIN_MODE
+ #endif
#endif
// A probe that is deployed and stowed with a solenoid pin (SOL1_PIN)
diff --git a/config/examples/FlashForge/CreatorPro/Configuration.h b/config/examples/FlashForge/CreatorPro/Configuration.h
index c945cddf4..db76df889 100644
--- a/config/examples/FlashForge/CreatorPro/Configuration.h
+++ b/config/examples/FlashForge/CreatorPro/Configuration.h
@@ -809,6 +809,13 @@
//#define BLTOUCH
#if ENABLED(BLTOUCH)
//#define BLTOUCH_DELAY 375 // (ms) Enable and increase if needed
+
+ // BLTouch V3.0 and newer smart series
+ //#define BLTOUCH_V3
+ #if ENABLED(BLTOUCH_V3)
+ //#define BLTOUCH_FORCE_5V_MODE
+ //#define BLTOUCH_FORCE_OPEN_DRAIN_MODE
+ #endif
#endif
// A probe that is deployed and stowed with a solenoid pin (SOL1_PIN)
diff --git a/config/examples/FolgerTech/i3-2020/Configuration.h b/config/examples/FolgerTech/i3-2020/Configuration.h
index 1d6327714..cde0f88ef 100644
--- a/config/examples/FolgerTech/i3-2020/Configuration.h
+++ b/config/examples/FolgerTech/i3-2020/Configuration.h
@@ -823,6 +823,13 @@
//#define BLTOUCH
#if ENABLED(BLTOUCH)
//#define BLTOUCH_DELAY 375 // (ms) Enable and increase if needed
+
+ // BLTouch V3.0 and newer smart series
+ //#define BLTOUCH_V3
+ #if ENABLED(BLTOUCH_V3)
+ //#define BLTOUCH_FORCE_5V_MODE
+ //#define BLTOUCH_FORCE_OPEN_DRAIN_MODE
+ #endif
#endif
// A probe that is deployed and stowed with a solenoid pin (SOL1_PIN)
diff --git a/config/examples/Formbot/Raptor/Configuration.h b/config/examples/Formbot/Raptor/Configuration.h
index fc882cc77..e9a720e8c 100644
--- a/config/examples/Formbot/Raptor/Configuration.h
+++ b/config/examples/Formbot/Raptor/Configuration.h
@@ -900,6 +900,13 @@
#define BLTOUCH
#if ENABLED(BLTOUCH)
//#define BLTOUCH_DELAY 375 // (ms) Enable and increase if needed
+
+ // BLTouch V3.0 and newer smart series
+ //#define BLTOUCH_V3
+ #if ENABLED(BLTOUCH_V3)
+ //#define BLTOUCH_FORCE_5V_MODE
+ //#define BLTOUCH_FORCE_OPEN_DRAIN_MODE
+ #endif
#endif
// A probe that is deployed and stowed with a solenoid pin (SOL1_PIN)
diff --git a/config/examples/Formbot/T_Rex_2+/Configuration.h b/config/examples/Formbot/T_Rex_2+/Configuration.h
index 818eba706..7baba596f 100644
--- a/config/examples/Formbot/T_Rex_2+/Configuration.h
+++ b/config/examples/Formbot/T_Rex_2+/Configuration.h
@@ -846,6 +846,13 @@
#define BLTOUCH
#if ENABLED(BLTOUCH)
//#define BLTOUCH_DELAY 375 // (ms) Enable and increase if needed
+
+ // BLTouch V3.0 and newer smart series
+ //#define BLTOUCH_V3
+ #if ENABLED(BLTOUCH_V3)
+ //#define BLTOUCH_FORCE_5V_MODE
+ //#define BLTOUCH_FORCE_OPEN_DRAIN_MODE
+ #endif
#endif
diff --git a/config/examples/Formbot/T_Rex_3/Configuration.h b/config/examples/Formbot/T_Rex_3/Configuration.h
index 183553e8f..55ef696fb 100644
--- a/config/examples/Formbot/T_Rex_3/Configuration.h
+++ b/config/examples/Formbot/T_Rex_3/Configuration.h
@@ -833,6 +833,13 @@
#define BLTOUCH
#if ENABLED(BLTOUCH)
//#define BLTOUCH_DELAY 375 // (ms) Enable and increase if needed
+
+ // BLTouch V3.0 and newer smart series
+ //#define BLTOUCH_V3
+ #if ENABLED(BLTOUCH_V3)
+ //#define BLTOUCH_FORCE_5V_MODE
+ //#define BLTOUCH_FORCE_OPEN_DRAIN_MODE
+ #endif
#endif
// A probe that is deployed and stowed with a solenoid pin (SOL1_PIN)
diff --git a/config/examples/Geeetech/A10M/Configuration.h b/config/examples/Geeetech/A10M/Configuration.h
index ffadf82dd..68f6b195c 100644
--- a/config/examples/Geeetech/A10M/Configuration.h
+++ b/config/examples/Geeetech/A10M/Configuration.h
@@ -800,6 +800,13 @@
//#define BLTOUCH
#if ENABLED(BLTOUCH)
//#define BLTOUCH_DELAY 375 // (ms) Enable and increase if needed
+
+ // BLTouch V3.0 and newer smart series
+ //#define BLTOUCH_V3
+ #if ENABLED(BLTOUCH_V3)
+ //#define BLTOUCH_FORCE_5V_MODE
+ //#define BLTOUCH_FORCE_OPEN_DRAIN_MODE
+ #endif
#endif
// A probe that is deployed and stowed with a solenoid pin (SOL1_PIN)
diff --git a/config/examples/Geeetech/A20M/Configuration.h b/config/examples/Geeetech/A20M/Configuration.h
index a0abc9532..9fe4501f6 100644
--- a/config/examples/Geeetech/A20M/Configuration.h
+++ b/config/examples/Geeetech/A20M/Configuration.h
@@ -800,6 +800,13 @@
//#define BLTOUCH
#if ENABLED(BLTOUCH)
//#define BLTOUCH_DELAY 375 // (ms) Enable and increase if needed
+
+ // BLTouch V3.0 and newer smart series
+ //#define BLTOUCH_V3
+ #if ENABLED(BLTOUCH_V3)
+ //#define BLTOUCH_FORCE_5V_MODE
+ //#define BLTOUCH_FORCE_OPEN_DRAIN_MODE
+ #endif
#endif
// A probe that is deployed and stowed with a solenoid pin (SOL1_PIN)
diff --git a/config/examples/Geeetech/GT2560/Configuration.h b/config/examples/Geeetech/GT2560/Configuration.h
index 33e0ba2c4..e639b11b3 100644
--- a/config/examples/Geeetech/GT2560/Configuration.h
+++ b/config/examples/Geeetech/GT2560/Configuration.h
@@ -832,6 +832,13 @@
//#define BLTOUCH
#if ENABLED(BLTOUCH)
//#define BLTOUCH_DELAY 375 // (ms) Enable and increase if needed
+
+ // BLTouch V3.0 and newer smart series
+ //#define BLTOUCH_V3
+ #if ENABLED(BLTOUCH_V3)
+ //#define BLTOUCH_FORCE_5V_MODE
+ //#define BLTOUCH_FORCE_OPEN_DRAIN_MODE
+ #endif
#endif
// A probe that is deployed and stowed with a solenoid pin (SOL1_PIN)
diff --git a/config/examples/Geeetech/MeCreator2/Configuration.h b/config/examples/Geeetech/MeCreator2/Configuration.h
index a92998ca0..c6a762292 100644
--- a/config/examples/Geeetech/MeCreator2/Configuration.h
+++ b/config/examples/Geeetech/MeCreator2/Configuration.h
@@ -824,6 +824,13 @@
//#define BLTOUCH
#if ENABLED(BLTOUCH)
//#define BLTOUCH_DELAY 375 // (ms) Enable and increase if needed
+
+ // BLTouch V3.0 and newer smart series
+ //#define BLTOUCH_V3
+ #if ENABLED(BLTOUCH_V3)
+ //#define BLTOUCH_FORCE_5V_MODE
+ //#define BLTOUCH_FORCE_OPEN_DRAIN_MODE
+ #endif
#endif
// A probe that is deployed and stowed with a solenoid pin (SOL1_PIN)
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 193057069..714cfb164 100644
--- a/config/examples/Geeetech/Prusa i3 Pro B/bltouch/Configuration.h
+++ b/config/examples/Geeetech/Prusa i3 Pro B/bltouch/Configuration.h
@@ -833,6 +833,13 @@
#define BLTOUCH
#if ENABLED(BLTOUCH)
//#define BLTOUCH_DELAY 375 // (ms) Enable and increase if needed
+
+ // BLTouch V3.0 and newer smart series
+ //#define BLTOUCH_V3
+ #if ENABLED(BLTOUCH_V3)
+ //#define BLTOUCH_FORCE_5V_MODE
+ //#define BLTOUCH_FORCE_OPEN_DRAIN_MODE
+ #endif
#endif
// A probe that is deployed and stowed with a solenoid pin (SOL1_PIN)
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 57d150f1c..1c8ed790f 100644
--- a/config/examples/Geeetech/Prusa i3 Pro B/noprobe/Configuration.h
+++ b/config/examples/Geeetech/Prusa i3 Pro B/noprobe/Configuration.h
@@ -832,6 +832,13 @@
//#define BLTOUCH
#if ENABLED(BLTOUCH)
//#define BLTOUCH_DELAY 375 // (ms) Enable and increase if needed
+
+ // BLTouch V3.0 and newer smart series
+ //#define BLTOUCH_V3
+ #if ENABLED(BLTOUCH_V3)
+ //#define BLTOUCH_FORCE_5V_MODE
+ //#define BLTOUCH_FORCE_OPEN_DRAIN_MODE
+ #endif
#endif
// A probe that is deployed and stowed with a solenoid pin (SOL1_PIN)
diff --git a/config/examples/Geeetech/Prusa i3 Pro C/Configuration.h b/config/examples/Geeetech/Prusa i3 Pro C/Configuration.h
index 62e73582d..8994c16df 100644
--- a/config/examples/Geeetech/Prusa i3 Pro C/Configuration.h
+++ b/config/examples/Geeetech/Prusa i3 Pro C/Configuration.h
@@ -817,6 +817,13 @@
//#define BLTOUCH
#if ENABLED(BLTOUCH)
//#define BLTOUCH_DELAY 375 // (ms) Enable and increase if needed
+
+ // BLTouch V3.0 and newer smart series
+ //#define BLTOUCH_V3
+ #if ENABLED(BLTOUCH_V3)
+ //#define BLTOUCH_FORCE_5V_MODE
+ //#define BLTOUCH_FORCE_OPEN_DRAIN_MODE
+ #endif
#endif
// A probe that is deployed and stowed with a solenoid pin (SOL1_PIN)
diff --git a/config/examples/Geeetech/Prusa i3 Pro W/Configuration.h b/config/examples/Geeetech/Prusa i3 Pro W/Configuration.h
index d9658c145..459de6b24 100644
--- a/config/examples/Geeetech/Prusa i3 Pro W/Configuration.h
+++ b/config/examples/Geeetech/Prusa i3 Pro W/Configuration.h
@@ -817,6 +817,13 @@
//#define BLTOUCH
#if ENABLED(BLTOUCH)
//#define BLTOUCH_DELAY 375 // (ms) Enable and increase if needed
+
+ // BLTouch V3.0 and newer smart series
+ //#define BLTOUCH_V3
+ #if ENABLED(BLTOUCH_V3)
+ //#define BLTOUCH_FORCE_5V_MODE
+ //#define BLTOUCH_FORCE_OPEN_DRAIN_MODE
+ #endif
#endif
// A probe that is deployed and stowed with a solenoid pin (SOL1_PIN)
diff --git a/config/examples/Infitary/i3-M508/Configuration.h b/config/examples/Infitary/i3-M508/Configuration.h
index c31779838..992f8ecd1 100644
--- a/config/examples/Infitary/i3-M508/Configuration.h
+++ b/config/examples/Infitary/i3-M508/Configuration.h
@@ -821,6 +821,13 @@
//#define BLTOUCH
#if ENABLED(BLTOUCH)
//#define BLTOUCH_DELAY 375 // (ms) Enable and increase if needed
+
+ // BLTouch V3.0 and newer smart series
+ //#define BLTOUCH_V3
+ #if ENABLED(BLTOUCH_V3)
+ //#define BLTOUCH_FORCE_5V_MODE
+ //#define BLTOUCH_FORCE_OPEN_DRAIN_MODE
+ #endif
#endif
// A probe that is deployed and stowed with a solenoid pin (SOL1_PIN)
diff --git a/config/examples/JGAurora/A5/Configuration.h b/config/examples/JGAurora/A5/Configuration.h
index 1b17d4a28..328f5a827 100644
--- a/config/examples/JGAurora/A5/Configuration.h
+++ b/config/examples/JGAurora/A5/Configuration.h
@@ -829,6 +829,13 @@
//#define BLTOUCH
#if ENABLED(BLTOUCH)
//#define BLTOUCH_DELAY 375 // (ms) Enable and increase if needed
+
+ // BLTouch V3.0 and newer smart series
+ //#define BLTOUCH_V3
+ #if ENABLED(BLTOUCH_V3)
+ //#define BLTOUCH_FORCE_5V_MODE
+ //#define BLTOUCH_FORCE_OPEN_DRAIN_MODE
+ #endif
#endif
// A probe that is deployed and stowed with a solenoid pin (SOL1_PIN)
diff --git a/config/examples/MakerParts/Configuration.h b/config/examples/MakerParts/Configuration.h
index 81346aa0e..fa9f5213a 100644
--- a/config/examples/MakerParts/Configuration.h
+++ b/config/examples/MakerParts/Configuration.h
@@ -837,6 +837,13 @@
//#define BLTOUCH
#if ENABLED(BLTOUCH)
//#define BLTOUCH_DELAY 375 // (ms) Enable and increase if needed
+
+ // BLTouch V3.0 and newer smart series
+ //#define BLTOUCH_V3
+ #if ENABLED(BLTOUCH_V3)
+ //#define BLTOUCH_FORCE_5V_MODE
+ //#define BLTOUCH_FORCE_OPEN_DRAIN_MODE
+ #endif
#endif
// A probe that is deployed and stowed with a solenoid pin (SOL1_PIN)
diff --git a/config/examples/Malyan/M150/Configuration.h b/config/examples/Malyan/M150/Configuration.h
index c97cd67af..bc922c01c 100644
--- a/config/examples/Malyan/M150/Configuration.h
+++ b/config/examples/Malyan/M150/Configuration.h
@@ -837,6 +837,13 @@
//#define BLTOUCH
#if ENABLED(BLTOUCH)
//#define BLTOUCH_DELAY 375 // (ms) Enable and increase if needed
+
+ // BLTouch V3.0 and newer smart series
+ //#define BLTOUCH_V3
+ #if ENABLED(BLTOUCH_V3)
+ //#define BLTOUCH_FORCE_5V_MODE
+ //#define BLTOUCH_FORCE_OPEN_DRAIN_MODE
+ #endif
#endif
// A probe that is deployed and stowed with a solenoid pin (SOL1_PIN)
diff --git a/config/examples/Malyan/M200/Configuration.h b/config/examples/Malyan/M200/Configuration.h
index e502dc46d..249eef856 100644
--- a/config/examples/Malyan/M200/Configuration.h
+++ b/config/examples/Malyan/M200/Configuration.h
@@ -816,6 +816,13 @@
//#define BLTOUCH
#if ENABLED(BLTOUCH)
//#define BLTOUCH_DELAY 375 // (ms) Enable and increase if needed
+
+ // BLTouch V3.0 and newer smart series
+ //#define BLTOUCH_V3
+ #if ENABLED(BLTOUCH_V3)
+ //#define BLTOUCH_FORCE_5V_MODE
+ //#define BLTOUCH_FORCE_OPEN_DRAIN_MODE
+ #endif
#endif
// A probe that is deployed and stowed with a solenoid pin (SOL1_PIN)
diff --git a/config/examples/Micromake/C1/basic/Configuration.h b/config/examples/Micromake/C1/basic/Configuration.h
index 6954ffa3f..d69bd893f 100644
--- a/config/examples/Micromake/C1/basic/Configuration.h
+++ b/config/examples/Micromake/C1/basic/Configuration.h
@@ -821,6 +821,13 @@
//#define BLTOUCH
#if ENABLED(BLTOUCH)
//#define BLTOUCH_DELAY 375 // (ms) Enable and increase if needed
+
+ // BLTouch V3.0 and newer smart series
+ //#define BLTOUCH_V3
+ #if ENABLED(BLTOUCH_V3)
+ //#define BLTOUCH_FORCE_5V_MODE
+ //#define BLTOUCH_FORCE_OPEN_DRAIN_MODE
+ #endif
#endif
// A probe that is deployed and stowed with a solenoid pin (SOL1_PIN)
diff --git a/config/examples/Micromake/C1/enhanced/Configuration.h b/config/examples/Micromake/C1/enhanced/Configuration.h
index 6bc176857..dc43a3f7b 100644
--- a/config/examples/Micromake/C1/enhanced/Configuration.h
+++ b/config/examples/Micromake/C1/enhanced/Configuration.h
@@ -821,6 +821,13 @@
//#define BLTOUCH
#if ENABLED(BLTOUCH)
//#define BLTOUCH_DELAY 375 // (ms) Enable and increase if needed
+
+ // BLTouch V3.0 and newer smart series
+ //#define BLTOUCH_V3
+ #if ENABLED(BLTOUCH_V3)
+ //#define BLTOUCH_FORCE_5V_MODE
+ //#define BLTOUCH_FORCE_OPEN_DRAIN_MODE
+ #endif
#endif
// A probe that is deployed and stowed with a solenoid pin (SOL1_PIN)
diff --git a/config/examples/Mks/Robin/Configuration.h b/config/examples/Mks/Robin/Configuration.h
index 1d2659279..10cf21901 100644
--- a/config/examples/Mks/Robin/Configuration.h
+++ b/config/examples/Mks/Robin/Configuration.h
@@ -818,6 +818,13 @@
//#define BLTOUCH
#if ENABLED(BLTOUCH)
//#define BLTOUCH_DELAY 375 // (ms) Enable and increase if needed
+
+ // BLTouch V3.0 and newer smart series
+ //#define BLTOUCH_V3
+ #if ENABLED(BLTOUCH_V3)
+ //#define BLTOUCH_FORCE_5V_MODE
+ //#define BLTOUCH_FORCE_OPEN_DRAIN_MODE
+ #endif
#endif
// A probe that is deployed and stowed with a solenoid pin (SOL1_PIN)
diff --git a/config/examples/Mks/Sbase/Configuration.h b/config/examples/Mks/Sbase/Configuration.h
index 17a645c04..26e72a5be 100644
--- a/config/examples/Mks/Sbase/Configuration.h
+++ b/config/examples/Mks/Sbase/Configuration.h
@@ -817,6 +817,13 @@
//#define BLTOUCH
#if ENABLED(BLTOUCH)
//#define BLTOUCH_DELAY 375 // (ms) Enable and increase if needed
+
+ // BLTouch V3.0 and newer smart series
+ //#define BLTOUCH_V3
+ #if ENABLED(BLTOUCH_V3)
+ //#define BLTOUCH_FORCE_5V_MODE
+ //#define BLTOUCH_FORCE_OPEN_DRAIN_MODE
+ #endif
#endif
// A probe that is deployed and stowed with a solenoid pin (SOL1_PIN)
diff --git a/config/examples/Printrbot/PrintrboardG2/Configuration.h b/config/examples/Printrbot/PrintrboardG2/Configuration.h
index 307477f79..ee9508f56 100644
--- a/config/examples/Printrbot/PrintrboardG2/Configuration.h
+++ b/config/examples/Printrbot/PrintrboardG2/Configuration.h
@@ -825,6 +825,13 @@
//#define BLTOUCH
#if ENABLED(BLTOUCH)
//#define BLTOUCH_DELAY 375 // (ms) Enable and increase if needed
+
+ // BLTouch V3.0 and newer smart series
+ //#define BLTOUCH_V3
+ #if ENABLED(BLTOUCH_V3)
+ //#define BLTOUCH_FORCE_5V_MODE
+ //#define BLTOUCH_FORCE_OPEN_DRAIN_MODE
+ #endif
#endif
// A probe that is deployed and stowed with a solenoid pin (SOL1_PIN)
diff --git a/config/examples/RapideLite/RL200/Configuration.h b/config/examples/RapideLite/RL200/Configuration.h
index 1f6152ebd..672a68fbf 100644
--- a/config/examples/RapideLite/RL200/Configuration.h
+++ b/config/examples/RapideLite/RL200/Configuration.h
@@ -817,6 +817,13 @@
//#define BLTOUCH
#if ENABLED(BLTOUCH)
//#define BLTOUCH_DELAY 375 // (ms) Enable and increase if needed
+
+ // BLTouch V3.0 and newer smart series
+ //#define BLTOUCH_V3
+ #if ENABLED(BLTOUCH_V3)
+ //#define BLTOUCH_FORCE_5V_MODE
+ //#define BLTOUCH_FORCE_OPEN_DRAIN_MODE
+ #endif
#endif
// A probe that is deployed and stowed with a solenoid pin (SOL1_PIN)
diff --git a/config/examples/RepRapPro/Huxley/Configuration.h b/config/examples/RepRapPro/Huxley/Configuration.h
index 2ac0509cd..0be5d4c5d 100644
--- a/config/examples/RepRapPro/Huxley/Configuration.h
+++ b/config/examples/RepRapPro/Huxley/Configuration.h
@@ -857,6 +857,13 @@ Black rubber belt(MXL), 18 - tooth aluminium pulley : 87.489 step per mm (Huxley
//#define BLTOUCH
#if ENABLED(BLTOUCH)
//#define BLTOUCH_DELAY 375 // (ms) Enable and increase if needed
+
+ // BLTouch V3.0 and newer smart series
+ //#define BLTOUCH_V3
+ #if ENABLED(BLTOUCH_V3)
+ //#define BLTOUCH_FORCE_5V_MODE
+ //#define BLTOUCH_FORCE_OPEN_DRAIN_MODE
+ #endif
#endif
// A probe that is deployed and stowed with a solenoid pin (SOL1_PIN)
diff --git a/config/examples/RepRapWorld/Megatronics/Configuration.h b/config/examples/RepRapWorld/Megatronics/Configuration.h
index 841336af5..e6bcfb658 100644
--- a/config/examples/RepRapWorld/Megatronics/Configuration.h
+++ b/config/examples/RepRapWorld/Megatronics/Configuration.h
@@ -817,6 +817,13 @@
//#define BLTOUCH
#if ENABLED(BLTOUCH)
//#define BLTOUCH_DELAY 375 // (ms) Enable and increase if needed
+
+ // BLTouch V3.0 and newer smart series
+ //#define BLTOUCH_V3
+ #if ENABLED(BLTOUCH_V3)
+ //#define BLTOUCH_FORCE_5V_MODE
+ //#define BLTOUCH_FORCE_OPEN_DRAIN_MODE
+ #endif
#endif
// A probe that is deployed and stowed with a solenoid pin (SOL1_PIN)
diff --git a/config/examples/RigidBot/Configuration.h b/config/examples/RigidBot/Configuration.h
index f6cb9d3ea..5efecfe46 100644
--- a/config/examples/RigidBot/Configuration.h
+++ b/config/examples/RigidBot/Configuration.h
@@ -815,6 +815,13 @@
//#define BLTOUCH
#if ENABLED(BLTOUCH)
//#define BLTOUCH_DELAY 375 // (ms) Enable and increase if needed
+
+ // BLTouch V3.0 and newer smart series
+ //#define BLTOUCH_V3
+ #if ENABLED(BLTOUCH_V3)
+ //#define BLTOUCH_FORCE_5V_MODE
+ //#define BLTOUCH_FORCE_OPEN_DRAIN_MODE
+ #endif
#endif
// A probe that is deployed and stowed with a solenoid pin (SOL1_PIN)
diff --git a/config/examples/SCARA/Configuration.h b/config/examples/SCARA/Configuration.h
index a7dd893df..d1b9df743 100644
--- a/config/examples/SCARA/Configuration.h
+++ b/config/examples/SCARA/Configuration.h
@@ -830,6 +830,13 @@
//#define BLTOUCH
#if ENABLED(BLTOUCH)
//#define BLTOUCH_DELAY 375 // (ms) Enable and increase if needed
+
+ // BLTouch V3.0 and newer smart series
+ //#define BLTOUCH_V3
+ #if ENABLED(BLTOUCH_V3)
+ //#define BLTOUCH_FORCE_5V_MODE
+ //#define BLTOUCH_FORCE_OPEN_DRAIN_MODE
+ #endif
#endif
// A probe that is deployed and stowed with a solenoid pin (SOL1_PIN)
diff --git a/config/examples/STM32F10/Configuration.h b/config/examples/STM32F10/Configuration.h
index edd12f914..ed8be3a3a 100644
--- a/config/examples/STM32F10/Configuration.h
+++ b/config/examples/STM32F10/Configuration.h
@@ -819,6 +819,13 @@
//#define BLTOUCH
#if ENABLED(BLTOUCH)
//#define BLTOUCH_DELAY 375 // (ms) Enable and increase if needed
+
+ // BLTouch V3.0 and newer smart series
+ //#define BLTOUCH_V3
+ #if ENABLED(BLTOUCH_V3)
+ //#define BLTOUCH_FORCE_5V_MODE
+ //#define BLTOUCH_FORCE_OPEN_DRAIN_MODE
+ #endif
#endif
// A probe that is deployed and stowed with a solenoid pin (SOL1_PIN)
diff --git a/config/examples/STM32F4/Configuration.h b/config/examples/STM32F4/Configuration.h
index 7b117984d..b2b3df4de 100644
--- a/config/examples/STM32F4/Configuration.h
+++ b/config/examples/STM32F4/Configuration.h
@@ -817,6 +817,13 @@
//#define BLTOUCH
#if ENABLED(BLTOUCH)
//#define BLTOUCH_DELAY 375 // (ms) Enable and increase if needed
+
+ // BLTouch V3.0 and newer smart series
+ //#define BLTOUCH_V3
+ #if ENABLED(BLTOUCH_V3)
+ //#define BLTOUCH_FORCE_5V_MODE
+ //#define BLTOUCH_FORCE_OPEN_DRAIN_MODE
+ #endif
#endif
// A probe that is deployed and stowed with a solenoid pin (SOL1_PIN)
diff --git a/config/examples/Sanguinololu/Configuration.h b/config/examples/Sanguinololu/Configuration.h
index 7b12e1b0c..d8221a72b 100644
--- a/config/examples/Sanguinololu/Configuration.h
+++ b/config/examples/Sanguinololu/Configuration.h
@@ -848,6 +848,13 @@
//#define BLTOUCH
#if ENABLED(BLTOUCH)
//#define BLTOUCH_DELAY 375 // (ms) Enable and increase if needed
+
+ // BLTouch V3.0 and newer smart series
+ //#define BLTOUCH_V3
+ #if ENABLED(BLTOUCH_V3)
+ //#define BLTOUCH_FORCE_5V_MODE
+ //#define BLTOUCH_FORCE_OPEN_DRAIN_MODE
+ #endif
#endif
// A probe that is deployed and stowed with a solenoid pin (SOL1_PIN)
diff --git a/config/examples/TheBorg/Configuration.h b/config/examples/TheBorg/Configuration.h
index 91064ea4a..18e8f8ecc 100644
--- a/config/examples/TheBorg/Configuration.h
+++ b/config/examples/TheBorg/Configuration.h
@@ -817,6 +817,13 @@
//#define BLTOUCH
#if ENABLED(BLTOUCH)
//#define BLTOUCH_DELAY 375 // (ms) Enable and increase if needed
+
+ // BLTouch V3.0 and newer smart series
+ //#define BLTOUCH_V3
+ #if ENABLED(BLTOUCH_V3)
+ //#define BLTOUCH_FORCE_5V_MODE
+ //#define BLTOUCH_FORCE_OPEN_DRAIN_MODE
+ #endif
#endif
// A probe that is deployed and stowed with a solenoid pin (SOL1_PIN)
diff --git a/config/examples/TinyBoy2/Configuration.h b/config/examples/TinyBoy2/Configuration.h
index c9a07ed64..a580f5fe9 100644
--- a/config/examples/TinyBoy2/Configuration.h
+++ b/config/examples/TinyBoy2/Configuration.h
@@ -868,6 +868,13 @@
//#define BLTOUCH
#if ENABLED(BLTOUCH)
//#define BLTOUCH_DELAY 375 // (ms) Enable and increase if needed
+
+ // BLTouch V3.0 and newer smart series
+ //#define BLTOUCH_V3
+ #if ENABLED(BLTOUCH_V3)
+ //#define BLTOUCH_FORCE_5V_MODE
+ //#define BLTOUCH_FORCE_OPEN_DRAIN_MODE
+ #endif
#endif
// A probe that is deployed and stowed with a solenoid pin (SOL1_PIN)
diff --git a/config/examples/Tronxy/X1/Configuration.h b/config/examples/Tronxy/X1/Configuration.h
index 76d92dc41..8a008fc03 100644
--- a/config/examples/Tronxy/X1/Configuration.h
+++ b/config/examples/Tronxy/X1/Configuration.h
@@ -817,6 +817,13 @@
//#define BLTOUCH
#if ENABLED(BLTOUCH)
//#define BLTOUCH_DELAY 375 // (ms) Enable and increase if needed
+
+ // BLTouch V3.0 and newer smart series
+ //#define BLTOUCH_V3
+ #if ENABLED(BLTOUCH_V3)
+ //#define BLTOUCH_FORCE_5V_MODE
+ //#define BLTOUCH_FORCE_OPEN_DRAIN_MODE
+ #endif
#endif
// A probe that is deployed and stowed with a solenoid pin (SOL1_PIN)
diff --git a/config/examples/Tronxy/X3A/Configuration.h b/config/examples/Tronxy/X3A/Configuration.h
index 8f90631de..52fb6d798 100644
--- a/config/examples/Tronxy/X3A/Configuration.h
+++ b/config/examples/Tronxy/X3A/Configuration.h
@@ -817,6 +817,13 @@
//#define BLTOUCH
#if ENABLED(BLTOUCH)
//#define BLTOUCH_DELAY 375 // (ms) Enable and increase if needed
+
+ // BLTouch V3.0 and newer smart series
+ //#define BLTOUCH_V3
+ #if ENABLED(BLTOUCH_V3)
+ //#define BLTOUCH_FORCE_5V_MODE
+ //#define BLTOUCH_FORCE_OPEN_DRAIN_MODE
+ #endif
#endif
// A probe that is deployed and stowed with a solenoid pin (SOL1_PIN)
diff --git a/config/examples/Tronxy/X5S-2E/Configuration.h b/config/examples/Tronxy/X5S-2E/Configuration.h
index cc8fe1c7e..b12befd0f 100644
--- a/config/examples/Tronxy/X5S-2E/Configuration.h
+++ b/config/examples/Tronxy/X5S-2E/Configuration.h
@@ -838,6 +838,13 @@
//#define BLTOUCH
#if ENABLED(BLTOUCH)
//#define BLTOUCH_DELAY 375 // (ms) Enable and increase if needed
+
+ // BLTouch V3.0 and newer smart series
+ //#define BLTOUCH_V3
+ #if ENABLED(BLTOUCH_V3)
+ //#define BLTOUCH_FORCE_5V_MODE
+ //#define BLTOUCH_FORCE_OPEN_DRAIN_MODE
+ #endif
#endif
// A probe that is deployed and stowed with a solenoid pin (SOL1_PIN)
diff --git a/config/examples/Tronxy/X5S/Configuration.h b/config/examples/Tronxy/X5S/Configuration.h
index 9ae37dce1..445eb09bc 100644
--- a/config/examples/Tronxy/X5S/Configuration.h
+++ b/config/examples/Tronxy/X5S/Configuration.h
@@ -816,6 +816,13 @@
//#define BLTOUCH
#if ENABLED(BLTOUCH)
//#define BLTOUCH_DELAY 375 // (ms) Enable and increase if needed
+
+ // BLTouch V3.0 and newer smart series
+ //#define BLTOUCH_V3
+ #if ENABLED(BLTOUCH_V3)
+ //#define BLTOUCH_FORCE_5V_MODE
+ //#define BLTOUCH_FORCE_OPEN_DRAIN_MODE
+ #endif
#endif
// A probe that is deployed and stowed with a solenoid pin (SOL1_PIN)
diff --git a/config/examples/Tronxy/XY100/Configuration.h b/config/examples/Tronxy/XY100/Configuration.h
index fd80e6739..cf33edcc5 100644
--- a/config/examples/Tronxy/XY100/Configuration.h
+++ b/config/examples/Tronxy/XY100/Configuration.h
@@ -828,6 +828,13 @@
//#define BLTOUCH
#if ENABLED(BLTOUCH)
//#define BLTOUCH_DELAY 375 // (ms) Enable and increase if needed
+
+ // BLTouch V3.0 and newer smart series
+ //#define BLTOUCH_V3
+ #if ENABLED(BLTOUCH_V3)
+ //#define BLTOUCH_FORCE_5V_MODE
+ //#define BLTOUCH_FORCE_OPEN_DRAIN_MODE
+ #endif
#endif
// A probe that is deployed and stowed with a solenoid pin (SOL1_PIN)
diff --git a/config/examples/UltiMachine/Archim1/Configuration.h b/config/examples/UltiMachine/Archim1/Configuration.h
index 89bb87be8..1e750bdcd 100644
--- a/config/examples/UltiMachine/Archim1/Configuration.h
+++ b/config/examples/UltiMachine/Archim1/Configuration.h
@@ -817,6 +817,13 @@
//#define BLTOUCH
#if ENABLED(BLTOUCH)
//#define BLTOUCH_DELAY 375 // (ms) Enable and increase if needed
+
+ // BLTouch V3.0 and newer smart series
+ //#define BLTOUCH_V3
+ #if ENABLED(BLTOUCH_V3)
+ //#define BLTOUCH_FORCE_5V_MODE
+ //#define BLTOUCH_FORCE_OPEN_DRAIN_MODE
+ #endif
#endif
// A probe that is deployed and stowed with a solenoid pin (SOL1_PIN)
diff --git a/config/examples/UltiMachine/Archim2/Configuration.h b/config/examples/UltiMachine/Archim2/Configuration.h
index a30f84940..01da81b96 100644
--- a/config/examples/UltiMachine/Archim2/Configuration.h
+++ b/config/examples/UltiMachine/Archim2/Configuration.h
@@ -817,6 +817,13 @@
//#define BLTOUCH
#if ENABLED(BLTOUCH)
//#define BLTOUCH_DELAY 375 // (ms) Enable and increase if needed
+
+ // BLTouch V3.0 and newer smart series
+ //#define BLTOUCH_V3
+ #if ENABLED(BLTOUCH_V3)
+ //#define BLTOUCH_FORCE_5V_MODE
+ //#define BLTOUCH_FORCE_OPEN_DRAIN_MODE
+ #endif
#endif
// A probe that is deployed and stowed with a solenoid pin (SOL1_PIN)
diff --git a/config/examples/VORONDesign/Configuration.h b/config/examples/VORONDesign/Configuration.h
index e71cc3035..9df9d786d 100644
--- a/config/examples/VORONDesign/Configuration.h
+++ b/config/examples/VORONDesign/Configuration.h
@@ -826,6 +826,13 @@
//#define BLTOUCH
#if ENABLED(BLTOUCH)
//#define BLTOUCH_DELAY 375 // (ms) Enable and increase if needed
+
+ // BLTouch V3.0 and newer smart series
+ //#define BLTOUCH_V3
+ #if ENABLED(BLTOUCH_V3)
+ //#define BLTOUCH_FORCE_5V_MODE
+ //#define BLTOUCH_FORCE_OPEN_DRAIN_MODE
+ #endif
#endif
// A probe that is deployed and stowed with a solenoid pin (SOL1_PIN)
diff --git a/config/examples/Velleman/K8200/Configuration.h b/config/examples/Velleman/K8200/Configuration.h
index 3542c4f45..ecd2166fd 100644
--- a/config/examples/Velleman/K8200/Configuration.h
+++ b/config/examples/Velleman/K8200/Configuration.h
@@ -846,6 +846,13 @@
//#define BLTOUCH
#if ENABLED(BLTOUCH)
//#define BLTOUCH_DELAY 375 // (ms) Enable and increase if needed
+
+ // BLTouch V3.0 and newer smart series
+ //#define BLTOUCH_V3
+ #if ENABLED(BLTOUCH_V3)
+ //#define BLTOUCH_FORCE_5V_MODE
+ //#define BLTOUCH_FORCE_OPEN_DRAIN_MODE
+ #endif
#endif
// A probe that is deployed and stowed with a solenoid pin (SOL1_PIN)
diff --git a/config/examples/Velleman/K8400/Configuration.h b/config/examples/Velleman/K8400/Configuration.h
index 8ba594638..e3ae7ddc4 100644
--- a/config/examples/Velleman/K8400/Configuration.h
+++ b/config/examples/Velleman/K8400/Configuration.h
@@ -817,6 +817,13 @@
//#define BLTOUCH
#if ENABLED(BLTOUCH)
//#define BLTOUCH_DELAY 375 // (ms) Enable and increase if needed
+
+ // BLTouch V3.0 and newer smart series
+ //#define BLTOUCH_V3
+ #if ENABLED(BLTOUCH_V3)
+ //#define BLTOUCH_FORCE_5V_MODE
+ //#define BLTOUCH_FORCE_OPEN_DRAIN_MODE
+ #endif
#endif
// A probe that is deployed and stowed with a solenoid pin (SOL1_PIN)
diff --git a/config/examples/Velleman/K8400/Dual-head/Configuration.h b/config/examples/Velleman/K8400/Dual-head/Configuration.h
index 788d408e9..507cf49fb 100644
--- a/config/examples/Velleman/K8400/Dual-head/Configuration.h
+++ b/config/examples/Velleman/K8400/Dual-head/Configuration.h
@@ -817,6 +817,13 @@
//#define BLTOUCH
#if ENABLED(BLTOUCH)
//#define BLTOUCH_DELAY 375 // (ms) Enable and increase if needed
+
+ // BLTouch V3.0 and newer smart series
+ //#define BLTOUCH_V3
+ #if ENABLED(BLTOUCH_V3)
+ //#define BLTOUCH_FORCE_5V_MODE
+ //#define BLTOUCH_FORCE_OPEN_DRAIN_MODE
+ #endif
#endif
// A probe that is deployed and stowed with a solenoid pin (SOL1_PIN)
diff --git a/config/examples/WASP/PowerWASP/Configuration.h b/config/examples/WASP/PowerWASP/Configuration.h
index ee838ff16..0fd8fea4b 100644
--- a/config/examples/WASP/PowerWASP/Configuration.h
+++ b/config/examples/WASP/PowerWASP/Configuration.h
@@ -836,6 +836,13 @@
//#define BLTOUCH
#if ENABLED(BLTOUCH)
//#define BLTOUCH_DELAY 375 // (ms) Enable and increase if needed
+
+ // BLTouch V3.0 and newer smart series
+ //#define BLTOUCH_V3
+ #if ENABLED(BLTOUCH_V3)
+ //#define BLTOUCH_FORCE_5V_MODE
+ //#define BLTOUCH_FORCE_OPEN_DRAIN_MODE
+ #endif
#endif
// A probe that is deployed and stowed with a solenoid pin (SOL1_PIN)
diff --git a/config/examples/Wanhao/Duplicator 6/Configuration.h b/config/examples/Wanhao/Duplicator 6/Configuration.h
index 99bebfc16..36740548e 100644
--- a/config/examples/Wanhao/Duplicator 6/Configuration.h
+++ b/config/examples/Wanhao/Duplicator 6/Configuration.h
@@ -827,6 +827,13 @@
//#define BLTOUCH
#if ENABLED(BLTOUCH)
//#define BLTOUCH_DELAY 375 // (ms) Enable and increase if needed
+
+ // BLTouch V3.0 and newer smart series
+ //#define BLTOUCH_V3
+ #if ENABLED(BLTOUCH_V3)
+ //#define BLTOUCH_FORCE_5V_MODE
+ //#define BLTOUCH_FORCE_OPEN_DRAIN_MODE
+ #endif
#endif
// A probe that is deployed and stowed with a solenoid pin (SOL1_PIN)
diff --git a/config/examples/adafruit/ST7565/Configuration.h b/config/examples/adafruit/ST7565/Configuration.h
index 5f4b13200..b5659bca7 100644
--- a/config/examples/adafruit/ST7565/Configuration.h
+++ b/config/examples/adafruit/ST7565/Configuration.h
@@ -817,6 +817,13 @@
//#define BLTOUCH
#if ENABLED(BLTOUCH)
//#define BLTOUCH_DELAY 375 // (ms) Enable and increase if needed
+
+ // BLTouch V3.0 and newer smart series
+ //#define BLTOUCH_V3
+ #if ENABLED(BLTOUCH_V3)
+ //#define BLTOUCH_FORCE_5V_MODE
+ //#define BLTOUCH_FORCE_OPEN_DRAIN_MODE
+ #endif
#endif
// A probe that is deployed and stowed with a solenoid pin (SOL1_PIN)
diff --git a/config/examples/delta/Anycubic/Kossel/Configuration.h b/config/examples/delta/Anycubic/Kossel/Configuration.h
index 2c1fe91d3..132b9b2ec 100644
--- a/config/examples/delta/Anycubic/Kossel/Configuration.h
+++ b/config/examples/delta/Anycubic/Kossel/Configuration.h
@@ -953,6 +953,13 @@
//#define BLTOUCH
#if ENABLED(BLTOUCH)
//#define BLTOUCH_DELAY 375 // (ms) Enable and increase if needed
+
+ // BLTouch V3.0 and newer smart series
+ //#define BLTOUCH_V3
+ #if ENABLED(BLTOUCH_V3)
+ //#define BLTOUCH_FORCE_5V_MODE
+ //#define BLTOUCH_FORCE_OPEN_DRAIN_MODE
+ #endif
#endif
// A probe that is deployed and stowed with a solenoid pin (SOL1_PIN)
diff --git a/config/examples/delta/FLSUN/auto_calibrate/Configuration.h b/config/examples/delta/FLSUN/auto_calibrate/Configuration.h
index 50f40a49a..60b428aa1 100644
--- a/config/examples/delta/FLSUN/auto_calibrate/Configuration.h
+++ b/config/examples/delta/FLSUN/auto_calibrate/Configuration.h
@@ -899,6 +899,13 @@
//#define BLTOUCH
#if ENABLED(BLTOUCH)
//#define BLTOUCH_DELAY 375 // (ms) Enable and increase if needed
+
+ // BLTouch V3.0 and newer smart series
+ //#define BLTOUCH_V3
+ #if ENABLED(BLTOUCH_V3)
+ //#define BLTOUCH_FORCE_5V_MODE
+ //#define BLTOUCH_FORCE_OPEN_DRAIN_MODE
+ #endif
#endif
// A probe that is deployed and stowed with a solenoid pin (SOL1_PIN)
diff --git a/config/examples/delta/FLSUN/kossel/Configuration.h b/config/examples/delta/FLSUN/kossel/Configuration.h
index 2216516bf..f0ad8e968 100644
--- a/config/examples/delta/FLSUN/kossel/Configuration.h
+++ b/config/examples/delta/FLSUN/kossel/Configuration.h
@@ -899,6 +899,13 @@
//#define BLTOUCH
#if ENABLED(BLTOUCH)
//#define BLTOUCH_DELAY 375 // (ms) Enable and increase if needed
+
+ // BLTouch V3.0 and newer smart series
+ //#define BLTOUCH_V3
+ #if ENABLED(BLTOUCH_V3)
+ //#define BLTOUCH_FORCE_5V_MODE
+ //#define BLTOUCH_FORCE_OPEN_DRAIN_MODE
+ #endif
#endif
// A probe that is deployed and stowed with a solenoid pin (SOL1_PIN)
diff --git a/config/examples/delta/FLSUN/kossel_mini/Configuration.h b/config/examples/delta/FLSUN/kossel_mini/Configuration.h
index bb7288acb..a81433be4 100644
--- a/config/examples/delta/FLSUN/kossel_mini/Configuration.h
+++ b/config/examples/delta/FLSUN/kossel_mini/Configuration.h
@@ -899,6 +899,13 @@
//#define BLTOUCH
#if ENABLED(BLTOUCH)
//#define BLTOUCH_DELAY 375 // (ms) Enable and increase if needed
+
+ // BLTouch V3.0 and newer smart series
+ //#define BLTOUCH_V3
+ #if ENABLED(BLTOUCH_V3)
+ //#define BLTOUCH_FORCE_5V_MODE
+ //#define BLTOUCH_FORCE_OPEN_DRAIN_MODE
+ #endif
#endif
// A probe that is deployed and stowed with a solenoid pin (SOL1_PIN)
diff --git a/config/examples/delta/Geeetech/Rostock 301/Configuration.h b/config/examples/delta/Geeetech/Rostock 301/Configuration.h
index 48beb424a..c0d022fc6 100644
--- a/config/examples/delta/Geeetech/Rostock 301/Configuration.h
+++ b/config/examples/delta/Geeetech/Rostock 301/Configuration.h
@@ -889,6 +889,13 @@
//#define BLTOUCH
#if ENABLED(BLTOUCH)
//#define BLTOUCH_DELAY 375 // (ms) Enable and increase if needed
+
+ // BLTouch V3.0 and newer smart series
+ //#define BLTOUCH_V3
+ #if ENABLED(BLTOUCH_V3)
+ //#define BLTOUCH_FORCE_5V_MODE
+ //#define BLTOUCH_FORCE_OPEN_DRAIN_MODE
+ #endif
#endif
// A probe that is deployed and stowed with a solenoid pin (SOL1_PIN)
diff --git a/config/examples/delta/Hatchbox_Alpha/Configuration.h b/config/examples/delta/Hatchbox_Alpha/Configuration.h
index 89bc6fcd1..72f229b85 100644
--- a/config/examples/delta/Hatchbox_Alpha/Configuration.h
+++ b/config/examples/delta/Hatchbox_Alpha/Configuration.h
@@ -904,6 +904,13 @@
//#define BLTOUCH
#if ENABLED(BLTOUCH)
//#define BLTOUCH_DELAY 375 // (ms) Enable and increase if needed
+
+ // BLTouch V3.0 and newer smart series
+ //#define BLTOUCH_V3
+ #if ENABLED(BLTOUCH_V3)
+ //#define BLTOUCH_FORCE_5V_MODE
+ //#define BLTOUCH_FORCE_OPEN_DRAIN_MODE
+ #endif
#endif
// A probe that is deployed and stowed with a solenoid pin (SOL1_PIN)
diff --git a/config/examples/delta/MKS/SBASE/Configuration.h b/config/examples/delta/MKS/SBASE/Configuration.h
index 11f0cd89d..04f4188cf 100644
--- a/config/examples/delta/MKS/SBASE/Configuration.h
+++ b/config/examples/delta/MKS/SBASE/Configuration.h
@@ -889,6 +889,13 @@
//#define BLTOUCH
#if ENABLED(BLTOUCH)
//#define BLTOUCH_DELAY 375 // (ms) Enable and increase if needed
+
+ // BLTouch V3.0 and newer smart series
+ //#define BLTOUCH_V3
+ #if ENABLED(BLTOUCH_V3)
+ //#define BLTOUCH_FORCE_5V_MODE
+ //#define BLTOUCH_FORCE_OPEN_DRAIN_MODE
+ #endif
#endif
// A probe that is deployed and stowed with a solenoid pin (SOL1_PIN)
diff --git a/config/examples/delta/generic/Configuration.h b/config/examples/delta/generic/Configuration.h
index e6847d577..e92df5925 100644
--- a/config/examples/delta/generic/Configuration.h
+++ b/config/examples/delta/generic/Configuration.h
@@ -889,6 +889,13 @@
//#define BLTOUCH
#if ENABLED(BLTOUCH)
//#define BLTOUCH_DELAY 375 // (ms) Enable and increase if needed
+
+ // BLTouch V3.0 and newer smart series
+ //#define BLTOUCH_V3
+ #if ENABLED(BLTOUCH_V3)
+ //#define BLTOUCH_FORCE_5V_MODE
+ //#define BLTOUCH_FORCE_OPEN_DRAIN_MODE
+ #endif
#endif
// A probe that is deployed and stowed with a solenoid pin (SOL1_PIN)
diff --git a/config/examples/delta/kossel_mini/Configuration.h b/config/examples/delta/kossel_mini/Configuration.h
index 0237ca01c..344ca3777 100644
--- a/config/examples/delta/kossel_mini/Configuration.h
+++ b/config/examples/delta/kossel_mini/Configuration.h
@@ -889,6 +889,13 @@
//#define BLTOUCH
#if ENABLED(BLTOUCH)
//#define BLTOUCH_DELAY 375 // (ms) Enable and increase if needed
+
+ // BLTouch V3.0 and newer smart series
+ //#define BLTOUCH_V3
+ #if ENABLED(BLTOUCH_V3)
+ //#define BLTOUCH_FORCE_5V_MODE
+ //#define BLTOUCH_FORCE_OPEN_DRAIN_MODE
+ #endif
#endif
// A probe that is deployed and stowed with a solenoid pin (SOL1_PIN)
diff --git a/config/examples/delta/kossel_pro/Configuration.h b/config/examples/delta/kossel_pro/Configuration.h
index 5db974b94..be880cebb 100644
--- a/config/examples/delta/kossel_pro/Configuration.h
+++ b/config/examples/delta/kossel_pro/Configuration.h
@@ -882,6 +882,13 @@
//#define BLTOUCH
#if ENABLED(BLTOUCH)
//#define BLTOUCH_DELAY 375 // (ms) Enable and increase if needed
+
+ // BLTouch V3.0 and newer smart series
+ //#define BLTOUCH_V3
+ #if ENABLED(BLTOUCH_V3)
+ //#define BLTOUCH_FORCE_5V_MODE
+ //#define BLTOUCH_FORCE_OPEN_DRAIN_MODE
+ #endif
#endif
// A probe that is deployed and stowed with a solenoid pin (SOL1_PIN)
diff --git a/config/examples/delta/kossel_xl/Configuration.h b/config/examples/delta/kossel_xl/Configuration.h
index b72a088bb..60a7fb32b 100644
--- a/config/examples/delta/kossel_xl/Configuration.h
+++ b/config/examples/delta/kossel_xl/Configuration.h
@@ -892,6 +892,13 @@
//#define BLTOUCH
#if ENABLED(BLTOUCH)
//#define BLTOUCH_DELAY 375 // (ms) Enable and increase if needed
+
+ // BLTouch V3.0 and newer smart series
+ //#define BLTOUCH_V3
+ #if ENABLED(BLTOUCH_V3)
+ //#define BLTOUCH_FORCE_5V_MODE
+ //#define BLTOUCH_FORCE_OPEN_DRAIN_MODE
+ #endif
#endif
// A probe that is deployed and stowed with a solenoid pin (SOL1_PIN)
diff --git a/config/examples/makibox/Configuration.h b/config/examples/makibox/Configuration.h
index a5660234b..972270351 100644
--- a/config/examples/makibox/Configuration.h
+++ b/config/examples/makibox/Configuration.h
@@ -820,6 +820,13 @@
//#define BLTOUCH
#if ENABLED(BLTOUCH)
//#define BLTOUCH_DELAY 375 // (ms) Enable and increase if needed
+
+ // BLTouch V3.0 and newer smart series
+ //#define BLTOUCH_V3
+ #if ENABLED(BLTOUCH_V3)
+ //#define BLTOUCH_FORCE_5V_MODE
+ //#define BLTOUCH_FORCE_OPEN_DRAIN_MODE
+ #endif
#endif
// A probe that is deployed and stowed with a solenoid pin (SOL1_PIN)
diff --git a/config/examples/stm32f103ret6/Configuration.h b/config/examples/stm32f103ret6/Configuration.h
index bbed86965..398891d9e 100644
--- a/config/examples/stm32f103ret6/Configuration.h
+++ b/config/examples/stm32f103ret6/Configuration.h
@@ -819,6 +819,13 @@
//#define BLTOUCH
#if ENABLED(BLTOUCH)
//#define BLTOUCH_DELAY 375 // (ms) Enable and increase if needed
+
+ // BLTouch V3.0 and newer smart series
+ //#define BLTOUCH_V3
+ #if ENABLED(BLTOUCH_V3)
+ //#define BLTOUCH_FORCE_5V_MODE
+ //#define BLTOUCH_FORCE_OPEN_DRAIN_MODE
+ #endif
#endif
// A probe that is deployed and stowed with a solenoid pin (SOL1_PIN)
diff --git a/config/examples/tvrrug/Round2/Configuration.h b/config/examples/tvrrug/Round2/Configuration.h
index a7d942ce6..b190924fa 100644
--- a/config/examples/tvrrug/Round2/Configuration.h
+++ b/config/examples/tvrrug/Round2/Configuration.h
@@ -812,6 +812,13 @@
//#define BLTOUCH
#if ENABLED(BLTOUCH)
//#define BLTOUCH_DELAY 375 // (ms) Enable and increase if needed
+
+ // BLTouch V3.0 and newer smart series
+ //#define BLTOUCH_V3
+ #if ENABLED(BLTOUCH_V3)
+ //#define BLTOUCH_FORCE_5V_MODE
+ //#define BLTOUCH_FORCE_OPEN_DRAIN_MODE
+ #endif
#endif
// A probe that is deployed and stowed with a solenoid pin (SOL1_PIN)
diff --git a/config/examples/wt150/Configuration.h b/config/examples/wt150/Configuration.h
index 1045671d1..249d19e24 100644
--- a/config/examples/wt150/Configuration.h
+++ b/config/examples/wt150/Configuration.h
@@ -822,6 +822,13 @@
//#define BLTOUCH
#if ENABLED(BLTOUCH)
//#define BLTOUCH_DELAY 375 // (ms) Enable and increase if needed
+
+ // BLTouch V3.0 and newer smart series
+ //#define BLTOUCH_V3
+ #if ENABLED(BLTOUCH_V3)
+ //#define BLTOUCH_FORCE_5V_MODE
+ //#define BLTOUCH_FORCE_OPEN_DRAIN_MODE
+ #endif
#endif
// A probe that is deployed and stowed with a solenoid pin (SOL1_PIN)