> For the complete documentation index, see [llms.txt](https://klipper.3dwork.io/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://klipper.3dwork.io/klipper/mejoras/macros-mejoras/cambio-filamentos-m600.md).

# Cambio Filamentos/M600

## VARIABLES GLOBALES

Esta macro nos va a permitir guardar una serie de valores y configuraciones que usaremos en el resto de macros.

{% hint style="warning" %}
Estas macros de cambio de filamentos ya no se mantienen/mejoran aunque deberían ser totalmente funcionales.

Os aconsejamos utilizar nuestro [bundle de macros Klipper](/klipper/mejoras/3dwork-klipper-bundle.md) del cual si que seguimos manteniendo y mejorando constantemente además de que mantenerlo al día en tu máquina va a ser más sencillo.
{% endhint %}

De esta forma, para ajustar alguno de estos parámetros y que se apliquen a todas las macros involucradas en un cambio de filamentos, estén ajustadas de forma automática, requiriendo el mínimo de ajuste extra.

{% hint style="danger" %}
Ajusta estas variables a tu máquina para un mejor resultado
{% endhint %}

{% embed url="<https://gist.github.com/alienboyxp/d218917893ba4ba539ce6a0b96499b4b>" %}

{% hint style="warning" %}
**IMPORTANTE!!**

**Para el correcto funcionamiento del resto de macros y dado que dependen de las variables globales definidas en la macro anterior es más que aconsejable asegurarse que estas variables están correctamente cargadas en tu Klipper**... de no hacerse tal como hemos comentado las macros siguientes no van a funcionar porque no recibirán los parámetros adecuados.

Una vez **recargada la configuración en Klipper y desde la Consola/Terminal lanzaremos la nueva macro ECHO\_VAR\_GLOBALS** y nos debería devolver todos los valores de esta. Debemos estar conectados a nuestra MCU para poder usar esta nueva macro.

<img src="/files/EOr3jE1vLZ70MV790GIl" alt="" data-size="original">
{% endhint %}

## CAMBIO FILAMENTOS

{% hint style="danger" %}
**Recuerda que si no tienes definida un pin de buzzer la macro BEEP te va a reportar un error, si no tienes buzzer te aconsejamos comentar esas lineas que usen la macro BEEP**
{% endhint %}

{% embed url="<https://gist.github.com/alienboyxp/2f9b36e9628b67ca8b527c39b8ad1992>" %}

## SENSOR FILAMENTOS

{% hint style="warning" %}
En esta macro es **importante ajustar switch\_pin al alias o identificador del pin donde se encuentra la señal del sensor**.

En este caso dado que usamos alias se ha colocado el alias del pin.
{% endhint %}

```django
[filament_switch_sensor fsensor]
# EODET
switch_pin: FIL_RUNOUT0_PIN
pause_on_runout: False
event_delay: 3.0
runout_gcode:
   NOTIFY TEXT="Filamento no detectado"
   M601
insert_gcode:
   NOTIFY TEXT="Insertando filamento"
   LOAD_FILAMENT
```

## PARK

Utilizaremos esta macro para posicionar nuestro cabezal de impresión en una zona segura para realizar ciertas acciones.

{% hint style="info" %}
Esta macro usa variables globales:

* **z\_park**, que indica la distancia a subir el eje Z para una posición segura
* **retract\_length**, indicará cuanta retracción realizar
* **x\_park** e **y\_park**, las coordenadas XY donde posicionar el cabezal de forma segura y cómoda en el caso de necesitar manipularlo
  {% endhint %}

{% embed url="<https://gist.github.com/alienboyxp/8d93aec3888d361fdcdc77a8ce0faad7>" %}

## PAUSE

Esta macro sobreescribe la macro PAUSE de sistema añadiendo más funcionalidad:

{% embed url="<https://gist.github.com/alienboyxp/c730e8f064f8515efcb87cf9d34ae774>" %}

## RESUME

Al igual que la anterior, esta macro sustituye a la macro RESUME del sistema:

{% embed url="<https://gist.github.com/alienboyxp/54da6658a58624ecff466afaebfc7004>" %}

## CANCEL PRINT

En este caso sobreescribimos la macro CANCEL\_PRINT de sistema:

{% embed url="<https://gist.github.com/alienboyxp/7755e06ccbbbf7029983745ceb43651a>" %}
