Я то же в коде не мастер, но написать программу под грбл не сложно, делим двигатели на оси , то есть первый двигатель ось Х, второй ось У , третий ось Z , далее пишем код например в блокноте файл с расширением txt:
Переходим в относительную систему координат в грбл это команда
G91
(Далее пишем цикл)
G0X10
G0Y10
G0Y-10
G0X10
G0Y10
G0Y-10
(.... и т.д. до момента сработки третьего ШД )
G0Z10
G0Z-10
Далее берём и копируем фрагмент после того как я написал "далее пишем цикл" много раз, для ускорения процесса можно скопировать к примеру раз пять, потом выделить все циклы вставлять уже блоками по 5 циклов ну и так далее , думаю что больше 1000 циклов особо и не нужно делать. При этом в каждом цикле команду G91 повторять не нужно она будет действовать пока команда G90 не появится , а мы ее специально ставить не будем. Далее просто переименовываем файл в .nc
Теперь про остановку, когда это нужно а не когда все что накопировали отработает: для этого подключаем кнопку к любому из концевиков и включаем жёсткие лимиты а поиск дома отключаем , все при нажатии на кнопку у вас будет происходить экстренная остановка всего, это как вариант, можно и не заморачиваться с кнопками, а с экрана компа производить остановку , паузу при помощи мышки, правда для повторного включения нужно будет запустить программу и заново запустить файл на отработку. Ну как то так можно сделать.
Вся фишка именно в команде G91 работа станка без привязки к какой то точке а делая перемещения относительно предыдущий точки, это позволяет не указывать для первого движка оси X последовательно расстояние перемещения.то есть в нашем примере 10,20 и т.д., а только именно сколько нужно отменить от предыдущего положения, именно это и позволяет копировать цикл сколько угодно раз. В принципе и Ардуино само можно запрограммировать на повтор цикла типа включил и поехало, но я не очень разбираюсь в этом программировании тем более в при использовании шилда.