Paso 4: Controlador de bajo nivel: GCODE
(Imagen cortesía de http://www.gcodemcode.com/gcode.htm)
El equipo tendrá que enviar los comandos de dibujo para el Arduino. Considerado el uso de llamadas a procedimientos remotos, pensé sobre la implementación de Hewlett Packard Graphics Language (HPGL) en plotters de pluma, pero al final para la diversión que decidí usar GCODE como mi protocolo de dibujo - GCODE es cómo cortadoras láser y las impresoras 3D y muchas otras máquinas CNC son conducidos, por lo que me pareció buena experiencia para aprender un poco sobre cómo funcionaba. Encontré un intérprete de Arduino GCODE y modificado para adaptarse a mi proyecto. Sobre todo los mods son solo quitar el código de z que no era necesario (no puede levantar o bajar la pluma en un etch-a-sketch - cuando se mueve, siempre dibuja una línea), pero la principal modificación fue retirar algún código dependiente de la máquina de conducción de motor paso a paso y colocar con portátiles llamadas a las bibliotecas de Adafruit.
He descubierto durante este proceso que la biblioteca de AccelStepper no es adecuada para los movimientos que tienen una X y un componente Y - en lugar de dibujar una línea recta algo que comienza un poco curvada. Está bien horizontal o vertical se mueve pero para diagonal se mueve tienes que usar una velocidad constante, o (como terminé haciendo) calcular su propio diagonal se mueve por la subdivisión de una línea diagonal en un montón de movimientos horizontales y verticales de 1 paso.