# 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>" %}


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://klipper.3dwork.io/klipper/mejoras/macros-mejoras/cambio-filamentos-m600.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
