Baby Stepping Hardware Button

How would they be configured to call baby stepping? I assume baby skipping skips the queue and implements on the next move so simply calling a macro would place it in a queue instead which would cause quite a delay?

This is perfect, as I'd like to do something similar. I'm also looking at adding some other functionality with an Arduino Mega (Since I have 6 of these that I'm no longer ever planning to connect to a 3D printer, now that I have better options)

So far, I've been watching that first layer skirt with my phone in hand connected to the DWC, though sometimes I miss the button (Or worse, hit the wrong one) on the phone screen when trying to adjust.

I can't imagine not having a PanelDue on the printer for this type of thing. This makes me realise how much I take it for granted now. Very clever way to add physical buttons though using microswitches and triggering macros.

Just to clarify the wiring and setup, this will depend on whether you are using a NO or NC switch. David recommends the NC switch.

For a NO switch (connects the circuit when the button is pressed). use the following command in config.gM574 E0 S0 ; sets the E0 endstop to active low for NO switchM574 E1 S0 ; same for E1
For a NC switch (always connected until pressed), use the following:M574 E0 S1 ; sets the E0 endstop to active high for NC switchM574 E1 S1 ; same for E1

Then wire up the system like so: Sense pin for endstop (STP) --> Endstop switch contacts --> endstop GND. Wiring will be the same regardless of the switch type.

Then in the trigger setup we have to specify whether we want to trigger on a rising or falling edge. For NO switch we want falling edge, as the voltage at the sense pin will go from 3.3V -> 0V as the button is pressed. For NC it is reversed.

trigger2.g and trigger3.g macros will remain the same regardless of the switch type.

A final note from a usability standpoint is that with this setup, the babystepping buttons will be active regardless of whether a print is running or not. This may not be desirable, so if you want to change them to only work while printing, try the following codes in your start and end scripts for the prints:

An easier option is to set these triggers to only activate during a print by putting a C1 parameter in the M581 setup like so: M581 T2 C1 blah blah blah but this will only work if printing from SD card.

Normally closed switches are better for actual endstops from a safety perspective, but for this, I don't see it mattering as much since either way, if it's disconnected, it won't work. I have a bunch of NO buttons, so I'll just use those.

Actually, if you use the start/end code, and it's a normally closed switch, would it activate if one is connected and the other is not? (For the not connected one) which could throw stuff off, and be really annoying.

I'm kind of okay with this working whether there is a print running or not.

Edit: Second question, can I change the baby stepping increment? Sometimes 0.05mm is a little more than I want to change it by, and 0.025 would be better.

@supraguy Yes, if you are babystepping "manually" using this sort of macro (or a user defined one on the web interface) you can just type in the value for the M290 command for incremental steps. I think the latest PanelDue firmware actually adjusts in 0.02mm increments now which is pretty nice.

For the question about activation, if you are using two different endstops it would not cause any issue if one switch NO and the other is NC. You can set up each independently of the other.

Please keep in mind that this entire way of doing things is kind of "hackish" but should work fine.

I was a little concerned with debounce, but that hasn't been a problem for me -- at least I haven't NOTICED a problem, which amounts to the same thing.

IIRC, this is looking for falling edge, so a small capacitor across the button wiring would work to debounce your button, at a cost of slightly slower response. Fast response is more important for mechanical/electronic things, but can be tolerated for most manual operation like this.

Depending on what you're using, it might be better to just get better buttons/switches.