GRBL Offline Controller V1

I bought a "3018 CNC" from In order to control it manually, I used this Instructable as the basis for a simple offline controller for the 3018. The author, "DavidT660", freely admits he's a beginning programmer. David did a reasonable job on the code, for a beginner. Also, it worked first time I compiled it, so there's that.

here is my re-written version of David's code. I cleaned the code up, added limits to the numerical parameters, and added some useful messages (displayed on the LCD). My code (and David's) builds with Arduino™ 1.8.16. It fits in an Arduino™ Uno or Nano. Flash memory space is under 10K bytes, RAM under 1K bytes.

I think David forgot to include the artwork for his keypad matrix. I used gimp to extract the keypad image from one of his photos and rotated it to "square". Printed at about 30% it can be glued over one of those generic 16 pad membrane keypads.

David's keypad artwork

This keypad artwork is no longer correct for my code, since I've changed the "XY+1 Step" button to "Home", and the "XY -1 Step" button is now (2022-09-06) "spindle on/off".

Note: the Arduino/gcc people occasionally change how one specifies that data goes into the flash memory, so you may have to fiddle with those declarations to get the code to compile in your version of Arduino™.

William F. Dudley Jr.
May 22, 2022 v1a
Sept 06, 2022 v1b