Manual mesh bed leveling

Is there a way to enable manual mesh bed leveling. I do not have a BlTouch but still want to use mesh leveling.

I think your question is a duplicate of this:

After trying this:

After uncommenting #define PROBE_MANUALLY and #define MANUAL_PROBE_START_Z 0.2 on lines 766-767and adding #define AUTO_BED_LEVELING_3POINT on line 1067 (before #ifdef ADVi3PP_PROBE) in Configuration.h, I get the following error message .

If I instead put in #define AUTO_BED_LEVELING_BILINEAR I get these error messages .

And this:

In Conditionals_post.h , lines 1153-1157 and 1166-1178, I have explicitly removed the definitions of MIN_PROBE_X, … because when using a probe and ADVi3++, these parameters are not defined at compile time but at runtime.

So in your particular case, you have to enable those defines. If you do this, it will compile.

UPDATE: I have made the modifications in the dev branch.

I still get errors when I go to compile. I am trying to use manual mesh bed leveling. Can you help me please? Thanks.

Your message is hard to follow because you mix my answers from the other post, yours, etc.

Which ones?

When I make these changes to Configuration.h:

#define PROBE_MANUALLY
#define MANUAL_PROBE_START_Z 0.2

#define MESH_BED_LEVELING

I get these errors on compile:

Conditionals_post.h
‘MESH_INSET’ was not declared in this scope
‘X_PROBE_OFFSET_FROM_EXTRUDER’ was not declared in this scope
‘MESH_INSET’ was not declared in this scope
‘Y_PROBE_OFFSET_FROM_EXTRUDER’ was not declared in this scope

Marlin_main.cpp
‘lcd_wait_for_move’ was not declared in this scope
‘x_probe_offset_from_extruder’ is not a member of ‘advi3pp::ADVi3pp’
‘y_probe_offset_from_extruder’ is not a member of ‘advi3pp::ADVi3pp’

SanityCheck.h
#error “MESH_BED_LEVELING and BABYSTEP_ZPROBE_OFFSET is not a valid combination”
#error “Please enable only one probe option: PROBE_MANUALLY, FIX_MOUNTED_PROBE, BLTOUCH, SOLENOID_PROBE, Z_PROBE_ALLEN_KEY, Z_PROBE_SLED, or Z Servo.”
#error “Select only one of: MESH_BED_LEVELING, AUTO_BED_LEVELING_LINEAR, AUTO_BED_LEVELING_3POINT, AUTO_BED_LEVELING_BILINEAR or AUTO_BED_LEVELING_UBL.”

I just try and it does compile. So please explain exactly what you are doing.

I am only editing three lines in the Configuration.h file:

#define PROBE_MANUALLY (I uncomment these two lines)
#define MANUAL_PROBE_START_Z 0.2

#define MESH_BED_LEVELING ( I add this line here)
#ifdef ADVi3PP_PROBE
//#define AUTO_BED_LEVELING_3POINT
//#define AUTO_BED_LEVELING_LINEAR
// @advi3++: Use bilinear leveling (mesh)
#define AUTO_BED_LEVELING_BILINEAR
//#define AUTO_BED_LEVELING_UBL
//#define MESH_BED_LEVELING
#endif

Thank you.

Yes, but how do you compile?

I use Visual Studio and follow these instructions:

Then follow these steps:

  • Start Visual Studio Code

  • Click on PlatformIO Home button on the bottom [PlatformIO Toolbar ]

  • Under Quick Access , click on Open Project (not Import )

  • Navigate to the root of the ADVi3pp project. This directory contains a file named platformio.ini . Click Open [directory name] .

  • The project is loaded, parsed and the PlatformIO Toolbar turns blue.

  • To build the project with default settings, click on the checkmark in the bottom PlatformIO toolbar

  • The project is build and you see something similar to this:

================= [SUCCESS] Took 7.30 seconds =================

========================== [SUMMARY] ==========================
Environment i3plus [SUCCESS]
Environment i3plus-bltouch [SUCCESS]
Environment i3plus-debug [SKIP]
Environment i3plus-bltouch-debug [SKIP]
================= [SUCCESS] Took 14.11 seconds =================


* As you can see, by default, it builds the  `i3plus`  and  `i3plus-bltouch`  targets, i.e. the release version for the stock i3 Plus printer and the release version for the printer with a BLTouch sensor.
* To build other targets, click on the  **Run Task…**  icon

You should not build the release with the BLTouch.

If it is not clear or if you still have problems, don’t hesitate to post here.

Andrivet,

I just installed the latest revision on my MPMaker Select. One feature I would very much like to see is the option to enable manual mesh bed leveling. I saw some other people talking about this but have not found the raw files to try and accomplish this myself and don’t see anything other than the basic screw nut leveling in the existing firmware.
1.) I would very much like to see this added to the “Tuning” menu in your next firmware with the option to customize the number of points to probe in the X & Y AND allow an offset for binder clips
2.) Can you perhaps point me in the direction the source code for your firmware and basic instructions? Note: I have watched Teaching Tech’s video1 and video 2on how to do this with an older build of yours so I have a rough idea what I am doing. My only real question is how to make the machine raise/lower the Z at each point without having a button on-screen? Could Pronterface/S3D control be used instead?

EDIT: I did figure out how to download the source files using the Clone feature in Github, now I just need a little assistance with the code changes in the configuration.h file.
Do I still need to do something with lines 1153-1157 and 1166-1178 in the Conditionals_post.h file? Or can I leave that alone?
I’m referring to this topic that I found in the community from last October Screen Shot 2020-03-21 at 7.38.40 PM

EDIT2: I did everything Teching Tech does in video 2, except since there is no screen for LCD changes in your build I did NOT enable LCD_BED_LEVELING
When I tried to verify/compile the code in Arduino IDE 1.8.12 it gave me the following errors:

Arduino: 1.8.12 (Mac OS X), Board: “Arduino Mega or Mega 2560, ATmega2560 (Mega 2560)”

In file included from sketch/MarlinConfig.h:29:0,
from sketch/I2CPositionEncoder.cpp:31:
Configuration.h:1:11: error: expected constructor, destructor, or type conversion before numeric constant

  • Marlin 3D Printer Firmware
    ^~
    In file included from sketch/MarlinConfig.h:29:0,
    from sketch/G26_Mesh_Validation_Tool.cpp:27:
    Configuration.h:1:11: error: expected constructor, destructor, or type conversion before numeric constant
  • Marlin 3D Printer Firmware
    ^~
    In file included from sketch/MarlinConfig.h:29:0,
    from sketch/M100_Free_Mem_Chk.cpp:49:
    Configuration.h:1:11: error: expected constructor, destructor, or type conversion before numeric constant
  • Marlin 3D Printer Firmware
    ^~
    Configuration.h:13:30: error: ‘without’ does not name a type; did you mean ‘stdout’?
  • but WITHOUT ANY WARRANTY; without even the implied warranty of
    ^~~~~~~
    stdout
    Configuration.h:13:30: error: ‘without’ does not name a type; did you mean ‘stdout’?
  • but WITHOUT ANY WARRANTY; without even the implied warranty of
    ^~~~~~~
    stdout
    Configuration.h:13:30: error: ‘without’ does not name a type; did you mean ‘stdout’?
  • but WITHOUT ANY WARRANTY; without even the implied warranty of
    ^~~~~~~
    stdout
    In file included from /Applications/Arduino.app/Contents/Java/hardware/tools/avr/lib/gcc/avr/7.3.0/include/stdint.h:9:0,
    from sketch/types.h:26,
    from sketch/MarlinConfig.h:39,
    from sketch/M100_Free_Mem_Chk.cpp:49:
    /Applications/Arduino.app/Contents/Java/hardware/tools/avr/avr/include/stdint.h:163:9: error: ‘int8_t’ does not name a type; did you mean ‘uint8_t’?
    typedef int8_t int_least8_t;
    ^~~~~~
    uint8_t
    In file included from /Applications/Arduino.app/Contents/Java/hardware/tools/avr/lib/gcc/avr/7.3.0/include/stdint.h:9:0,
    from sketch/types.h:26,
    from sketch/MarlinConfig.h:39,
    from sketch/I2CPositionEncoder.cpp:31:
    /Applications/Arduino.app/Contents/Java/hardware/tools/avr/avr/include/stdint.h:163:9: error: ‘int8_t’ does not name a type; did you mean ‘uint8_t’?
    typedef int8_t int_least8_t;
    ^~~~~~
    uint8_t
    In file included from /Applications/Arduino.app/Contents/Java/hardware/tools/avr/lib/gcc/avr/7.3.0/include/stdint.h:9:0,
    from sketch/types.h:26,
    from sketch/MarlinConfig.h:39,
    from sketch/G26_Mesh_Validation_Tool.cpp:27:
    /Applications/Arduino.app/Contents/Java/hardware/tools/avr/avr/include/stdint.h:163:9: error: ‘int8_t’ does not name a type; did you mean ‘uint8_t’?
    typedef int8_t int_least8_t;
    ^~~~~~
    uint8_t
    /Applications/Arduino.app/Contents/Java/hardware/tools/avr/avr/include/stdint.h:217:9: error: ‘int8_t’ does not name a type; did you mean ‘uint8_t’?
    typedef int8_t int_fast8_t;
    ^~~~~~
    uint8_t
    /Applications/Arduino.app/Contents/Java/hardware/tools/avr/avr/include/stdint.h:217:9: error: ‘int8_t’ does not name a type; did you mean ‘uint8_t’?
    typedef int8_t int_fast8_t;
    ^~~~~~
    uint8_t
    /Applications/Arduino.app/Contents/Java/hardware/tools/avr/avr/include/stdint.h:217:9: error: ‘int8_t’ does not name a type; did you mean ‘uint8_t’?
    typedef int8_t int_fast8_t;
    ^~~~~~
    uint8_t
    In file included from sketch/MarlinConfig.h:39:0,
    from sketch/I2CPositionEncoder.cpp:31:
    types.h:31:3: error: ‘int8_t’ does not name a type; did you mean ‘uint8_t’?
    int8_t x_index, y_index;
    ^~~~~~
    uint8_t
    In file included from sketch/MarlinConfig.h:39:0,
    from sketch/M100_Free_Mem_Chk.cpp:49:
    types.h:31:3: error: ‘int8_t’ does not name a type; did you mean ‘uint8_t’?
    int8_t x_index, y_index;
    ^~~~~~
    uint8_t
    In file included from sketch/MarlinConfig.h:39:0,
    from sketch/G26_Mesh_Validation_Tool.cpp:27:
    types.h:31:3: error: ‘int8_t’ does not name a type; did you mean ‘uint8_t’?
    int8_t x_index, y_index;
    ^~~~~~
    uint8_t
    In file included from sketch/MarlinConfig.h:40:0,
    from sketch/G26_Mesh_Validation_Tool.cpp:27:
    HAL.h:66:9: error: ‘int8_t’ does not name a type; did you mean ‘uint8_t’?
    typedef int8_t pin_t;
    ^~~~~~
    uint8_t
    In file included from sketch/MarlinConfig.h:40:0,
    from sketch/M100_Free_Mem_Chk.cpp:49:
    HAL.h:66:9: error: ‘int8_t’ does not name a type; did you mean ‘uint8_t’?
    typedef int8_t pin_t;
    ^~~~~~
    uint8_t
    In file included from sketch/MarlinConfig.h:40:0,
    from sketch/I2CPositionEncoder.cpp:31:
    HAL.h:66:9: error: ‘int8_t’ does not name a type; did you mean ‘uint8_t’?
    typedef int8_t pin_t;
    ^~~~~~
    uint8_t
    In file included from sketch/MarlinConfig.h:29:0,
    from sketch/MarlinSerial.cpp:36:
    Configuration.h:1:11: error: expected constructor, destructor, or type conversion before numeric constant
  • Marlin 3D Printer Firmware
    ^~
    Configuration.h:13:30: error: ‘without’ does not name a type; did you mean ‘stdout’?
  • but WITHOUT ANY WARRANTY; without even the implied warranty of
    ^~~~~~~
    stdout
    In file included from /Applications/Arduino.app/Contents/Java/hardware/tools/avr/lib/gcc/avr/7.3.0/include/stdint.h:9:0,
    from sketch/types.h:26,
    from sketch/MarlinConfig.h:39,
    from sketch/MarlinSerial.cpp:36:
    /Applications/Arduino.app/Contents/Java/hardware/tools/avr/avr/include/stdint.h:163:9: error: ‘int8_t’ does not name a type; did you mean ‘uint8_t’?
    typedef int8_t int_least8_t;
    ^~~~~~
    uint8_t
    /Applications/Arduino.app/Contents/Java/hardware/tools/avr/avr/include/stdint.h:217:9: error: ‘int8_t’ does not name a type; did you mean ‘uint8_t’?
    typedef int8_t int_fast8_t;
    ^~~~~~
    uint8_t
    In file included from sketch/MarlinConfig.h:39:0,
    from sketch/MarlinSerial.cpp:36:
    types.h:31:3: error: ‘int8_t’ does not name a type; did you mean ‘uint8_t’?
    int8_t x_index, y_index;
    ^~~~~~
    uint8_t
    In file included from sketch/MarlinConfig.h:40:0,
    from sketch/MarlinSerial.cpp:36:
    HAL.h:66:9: error: ‘int8_t’ does not name a type; did you mean ‘uint8_t’?
    typedef int8_t pin_t;
    ^~~~~~
    uint8_t
    In file included from sketch/MarlinSerial.cpp:41:0:
    Marlin.h:531:10: error: ‘int8_t’ does not name a type; did you mean ‘uint8_t’?
    extern int8_t did_pause_print;
    ^~~~~~
    uint8_t
    sketch/MarlinSerial.cpp: In static member function ‘static void MarlinSerial::printNumber(long unsigned int, uint8_t)’:
    MarlinSerial.cpp:688:7: error: ‘int8_t’ was not declared in this scope
    int8_t i = 0;
    ^~~~~~
    sketch/MarlinSerial.cpp:688:7: note: suggested alternative: ‘uint8_t’
    int8_t i = 0;
    ^~~~~~
    uint8_t
    MarlinSerial.cpp:690:13: error: ‘i’ was not declared in this scope
    buf[i++] = n % base;
    ^
    MarlinSerial.cpp:693:14: error: ‘i’ was not declared in this scope
    while (i–)
    ^
    exit status 1
    expected constructor, destructor, or type conversion before numeric constant

This report would have more information with
“Show verbose output during compilation”
option enabled in File -> Preferences.

As said in my post UPDATE, it is already done.

LCD_BED_LEVELING does not apply here. It is not for graphical touch screen LCD but for the old ones with the rotary button.

There is apparently something wrong with your installation or your modifications. For example the error:

Configuration.h:13:30: error: ‘without’ does not name a type; did you mean ‘stdout’?

looks like you made a mistake in Configuration.h

I have started with a fresh copy and edited the following lines:

Uncommented:
Line 766 #define PROBE_MANUALLY
Line 767 #define MANUAL_PROBE_START_Z 0.2
Line 1075 #define MESH_BED_LEVELING
Line 1125 #define GRID_MAX_POINTS_X 5 --> upped from 3 to 5 points (personal preference but could be a variable on screen)

It is now compiling okay. I think it should work work good now, with the exception of not having a screen to do the machine controlled z-offsets. I have attached a proof of concept page that you might include on your next build

EDIT1: I just uploaded and tried to run a G29 command in the terminal and it says my printer doesn’t know G29? How is this possible? Doesn’t the BLTouch use the same command?

(stole idea from my Artillery Sidewinder X1 running Marlin 2.0)
image

Yes. Are you sure you have typed exactly G29 and not g29. It is case sensitive.

Yes I have tried running both “g29 S1” and “G29 S1” and the return I get is:

SENDING:G29 S1
echo:Unknown command: “G29 S1”

What are you using to send those commands?

I tried Pronterface and Simplify3D terminals. Both give same errors

Sorry, no idea. BLTouch uses the simpler G29 (after a G28 of course), i.e. without any S parameter since it does not need it.

I tried to compile using VS and now it’s all haywire. It’s plunging the Hotend into the bed like it’s bypassing the Z-stop. BUT…
I’m getting these “problems” listed in the terminal section at the bottom (see pic)
image