This is still a work in progress but it at least seems feasible now. I always thought that UI jogging options were a bit clunky and wanted it to work like a joystick. Even when you connect a joystick of some kind, it seems to only work in X or Y at one time. I want to control direction and feedrate from a joystick.
A short video explains it best:
It turns out due to how jogging in Grbl works, it’s more complicated than I thought. Trying to make it feel responsive requires short jog movements and calculating how long a movement will take.
Awesome. That link describes a similar strategy to the Marlin joystick. Fill the buffer with fixed-duration moves so when some number of moves are queued, it’s a limited constant latency between the input and movement. (But Marlin can’t cancel the move to stop fast, so it probably has more overshoot.)
I thought about trying that. Right now it’s setting the delay before next jog based on the time for the move but I could adjust the distance to keep the same time. Because of how I’m using the joystick values, when the feedrate is higher the jog distance is also higher so it’s sort of headed in that direction.
The first thing I tried was to set the jog to a long distance and on some interval cancel the jog and set the new jog based on the joystick position. That didn’t work very well.
The main thing I want to add later is a toggle between XY, X only, Y only, and Z only making the joystick display adjust accordingly. I might add a slider to limit max feedrate.
Before putting out the basic version, I mostly need to read config values or theme colors for things currently hardcoded.
The genius’s in this forum is wild! Boards made from scratch, cnc s printed, software recreated or created from scratch! What can be created will be here!!! Magnificent job!!
Here’s the initial version if you want to give it a shot. Instructions are in the readme.
Note that there’s a quirk I haven’t figured out yet where if the dashboard is loaded, then you navigate to something else in the WebUI and then back, it doesn’t render the joystick. The workaround is to click the refresh button in the panel header.
I tried it today and got an error message stating the XY feedrate hadn’t been set. I have it set to 2000 mm/min in the jog settings.
Has anyone else seen this?
I did a sanity check and made sure the version on Github matches the version I was using.
I haven’t updated to 3.8.0 yet, I’m on 3.7.18. What version of the WebUI do you have? I’m on 3.0.0-a68.F2 as shown on the “About FluidNC” page. I’m not aware of anything specific I’m using that would matter but it might be worth trying if you’re on an older version.
That’s odd. Even if it didn’t read the file, it should still use a default value. I’ll have to investigate. Unfortunately, my Jackpot was being really flaky yesterday so I have to sort that out first.
Well, that was a wild ride and took awhile to figure out. Was skipping steps when homing Z because I didn’t have homing amps set (thought I did). Homing Y was having issues on the rail side which I resolved by increasing the pulloff. I know that having too small of pulloff values has given me issues in the past. Then I was re-visiting my Z level extension which wasn’t working and would put it in alarm which I eventually found out was because I was trying to execute gcode at the same time I was uploading a file. It was throwing an error 152 (invalid configuration) which wasn’t the actual problem. I tried 3.8.0 and wiping flash and older versions of WebUI v3 but none of that mattered. I just need to get all my config and settings back to how they were. So, all of this was my fault and the Jackpot was fine.
Anyways, all that to say that I’ll see if I can put out a debug version soon.
Try this debug version. There’s a textarea at the bottom that will log a bunch of information I’ll need you to send me. I think it might have something to do with the timing between sending some commands and downloading preferences.json.