Hola, paso a contestar tu pregunta y después haré un comentario sobre el propósito del script.
No está bien escrito el comando M0. Los [ ] indican que ese parámetro es opcional: se pone lo que está dentro o no se pone nada.
Los valores ms, s y mensaje hay que sustituirlos por el número o texto, en su caso, que corresponda.
Si lo que quieres es que se pare la ejecución hasta que se presione el botón de control de la pantalla, basta con que pongas
M0 Oprima para continuar.
Si además quieres que, en caso de que el usuario no pulse nada, en 3 segundos se continúe con el siguiente comando:
M0 S3 Oprima para continuar.
Respecto al script que indicas, varias cosas: el mensaje que pones con el comando
M117 no se va a ver, ya que lo sustituirá inmediatamente el que indicas para el comando
M0.
Lo mejor es colocarlos juntos ("Cambio de boquilla: oprima para continuar") en este último y habilitar el scroll en Marlin para que se vea toda la línea en la pantalla.
Para ello, tienes que habilitar la opción en el archivo
Configuration_adv.h, descomentando (quitar la // del inicio) la línea
//#define STATUS_MESSAGE_SCROLLING.
Dado que los movimientos que vas a realizar en el script son relativos, lo mejor es configurarlos así y al finalizar volver al movimiento absoluto. Los comandos son:
G90 para absolutos,
G91 para relativos.
Conviene que, antes de realizar este script, esté hecho el "homing" para evitar posibles complicaciones.
La velocidad que indicas para el movimiento del eje Z es tan alta que, con toda seguridad, no se tendrá en cuenta, ya que en el firmware tendrás una máxima para ese eje mucho menor y será con esta con la que se moverá realmente. Si es una CR-10, seguramente será de 15 mm/s (900 mm/m). Todo lo que pase de ahí en el comando, no se tiene en cuenta.
El comando que fija la temperatura en 200º y espera a que se alcance es
M109 S200. Dado que tienes que subir el eje Z una distancia tan grande y no va a ser a una velocidad muy alta, mejor poner una orden de calentamiento sin espera antes de subir (para que vaya calentando mientras sube) y una con espera al terminar el movimiento. La orden de calentamiento sin espera es
M104 S200.
Para los movimientos tienes que indicar el eje a mover y en el caso de la retracción es E. En este caso, para la velocidad vale lo mismo que indicaba para el eje Z: es posible que en el firmware esté configurada una velocidad máxima para ese eje menor, seguramente 25 mm/s (1500 mm/m), por lo que se tendrá en cuenta esta última. Si quieres que el extrusor se mueva más rápido, tendrás que cambiarla.
Para Marlin, los comandos
G0 y
G1 son iguales. Se suele utilizar siempre
G1.
El comando
M300 necesita, como es lógico, que Marlin considere que hay un zumbador y su comportamiento es distinto dependiendo de que se tenga habilitado o no el parámetro
SPEAKER. Solo producirá tonos si el zumbador puede realizarlos y se tiene descomentada la línea
//#define SPEAKER en el archivo
Configuration.h. Sino, dará igual los parámetros que indiques en el comando, solo dará un pitido monotonal. En las respuestas que doy en
este post, tienes toda la información sobre este tema. Como en este caso no necesitas tonos, puedes poner simplemente un comando sin parámetros que producirá un pitido monotonal.
Teniendo en cuenta todo lo anterior y lo que indicas que quieres hacer, podría ser algo así:
M0 Cambio de boquilla: oprima para continuar ; Muestra el mensaje y espera una pulsación del usuario
M104 S200 ; Temperatura del fusor a 200º
G91 ; Movimiento relativo
G1 Z+300 F900 ; Mueve el eje Z +300 mm
M109 S200 ; Espera a que el fusor tenga 200º antes de continuar
G1 E-8 F1500 ; Retráe el filamento 8 mm.
M300 ; Pitido
M0 Cambie la boquilla y oprima para continuar ; Muestra el mensaje y espera una pulsación
G1 E+8 ; Extruye 8 mm (utilizará la velocidad del último movimiento)
G90 ; Movimiento absoluto
Por último, unas consideraciones sobre el propósito del script: parece que tienes pensado utilizarlo para cambiar la boquilla, estando el conjunto boquilla/barrel/cubo calentador montado en la impresora y a temperatura de impresión. Si es así, no es una buena idea por varios motivos.
Para conseguir que esta parte quede bien montada, sin que se produzcan pérdidas de material fundido entre la boquilla y el barrel, hay que poder manipular con comodidad estos elementos y estando calientes a temperatura de impresión y montados en la impresora será casi imposible.
Por otra parte, el filamento que ha salido del fusor al retraerlo 8 mm, quedará con el extremo irregular debido a que se encontraba fundido y se solidifica con una forma que seguramente no permita que se introduzca directamente solo con una orden de avance de 8 mm. Seguramente, habrá que sacarlo completamente y cortar el extremo fundido.