Bueno entonces resumido, primer problema manejar 3 steppers simultáneamente con algun metodo que le envié ordenes de modo que se comporte con suavidad no como se ve en el video que tiene algunos lapsus.
Mi primer recomendación es que uses AccelSteper como librería que permite justo lo que quieres, el control de varios stepper simultáneamente.
Estas son las ventajas de esta librería
- Supports acceleration and deceleration
- Supports multiple simultaneous steppers, with independent concurrent stepping on each stepper
- API functions never delay() or block
- Supports 2, 3 and 4 wire steppers, plus 3 and 4 wire half steppers.
- Supports alternate stepping functions to enable support of AFMotor (GitHub - adafruit/Adafruit-Motor-Shield-library: Adafruit Motor shield V1 firmware with basic Microstepping support. Works with all Arduinos and the Mega)
- Supports stepper drivers such as the Sparkfun EasyDriver (based on 3967 driver chip)
- Very slow speeds are supported
- Extensive API
Subclass support
Asi que digamos que estas en camino.
Falta ahora encontrar un método y porque no usar el mismo código GRBL pero adaptado con esta librería. No se lo que tienes hecho pero supongamos que usaste stepper.h los cambios con esta librería no representan mucho esfuerzo.