Daniel Ferrer es una de las personas que está colaborando en el proyecto. Se está encargando de hacer toda la programación de movimiento de los motores y prácticamente ya está.
En un principio estuvimos valorando si utilizar el firmware GRBL o incluso el firmware para impresoras 3D Marlin. Finalmente se lanzó y creó el programa desde cero. En los firmwares ya creados habría sido algo complicado añadir más ejes de coordenadas y de esta forma, se creaba algo más sencillo y legible para la comunidad.
Otro tema que también estuvimos valorando era cómo íbamos a hacer la transmisión de datos entre Processing y Arduino.
Una de las opciones era utilizar el plugin VSync, plugin que sincroniza automáticamente variables entre los dos lenguajes. Lo desestimamos porque posiblemente nos hubiera dado problemas con la velocidad de lectura del programa.
Otra opción era usar G-Code, lenguaje muy utilizado en los sistemas de control numérico y que hubiera sido necesario si hubiéramos utilizado cualquiera de los dos firmwares nombrados anteriormente.
Al crear el programa desde cero, nos decantamos por una transmisión por serie de una cadena de caracteres con la denominación del eje y el valor.
T50 U100 V45 W5 X25 Y50 Z100
La programación de Dani es pura poesía, desde mis limitados conocimientos de programación, leía y releía el programa, primero me apoyaba en las explicaciones en castellano, para luego introducirme poco a poco en el lenguaje de programación.
Una sensación que os he querido transmitir con el audio que estáis escuchando, un lenguaje de programación traducido al castellano y leído en Chino.
Poesía creada desde la estructura de parseo utilizada para la extracción de los datos que envía Processing a Arduino.
1 2 3 4 5 6 7 8 9 10 11 12 | /* Analizar los comandos enviados desde processing */ void parsear (String trama){ int i = 0; int fin = 0; for (int q = 0; q < 8; q++) { //Interrogamos los 7 ejes if (trama.indexOf(arg[q],0) >= 0) { //Si existe la letra como argumento i = trama.indexOf(arg[q],0); //Nos posicionamos en ella fin = trama.indexOf(' ',i); //Calculamos el tamaño del numero destino[q] = trama.substring(i+1,fin).toInt(); //Creamos la cadena de texto y la pasamos a entero } } } |
Podéis encontrar el programa completo en el GitHub del proyecto.