# Marlin - Gcodes Básicos

G-code es el lenguaje de programación CNC que usa tu impresora para comunicarse: movimientos, temperaturas, ventiladores, calibración y mucho más se controlan con estos comandos.

Puedes enviarlos desde Pronterface, OctoPrint, la pantalla LCD o incluirlos en los scripts de inicio/fin de tu laminador.

{% hint style="info" %}
**Referencia completa oficial**: [marlinfw.org/meta/gcode](https://marlinfw.org/meta/gcode/) — aquí tienes los más utilizados en el día a día.
{% endhint %}

## Sintaxis básica

Cada línea es un comando. La estructura es:

```
[Letra][Número] [Parámetros] ; comentario opcional
```

Ejemplos:

```gcode
G1 X90 Y50 Z0.5 F3000 E1  ; mover a X90 Y50 Z0.5 extruindo 1mm
M104 S200                  ; temperatura extrusor a 200°C sin esperar
M109 S200                  ; temperatura extrusor a 200°C esperando
```

## Movimiento

### G0 / G1 — Movimiento lineal

`G0` es movimiento rápido (sin extrusión), `G1` es movimiento con extrusión.

```gcode
G0 X50 Y50 F6000           ; mover a X50 Y50 a 6000mm/min (sin extruir)
G1 X90 Y50 Z0.5 F3000 E1   ; mover extruindo 1mm de filamento
```

| Parámetro | Descripción                          |
| --------- | ------------------------------------ |
| `X Y Z`   | Coordenadas destino (mm)             |
| `F`       | Velocidad (feedrate) en mm/min       |
| `E`       | Cantidad de filamento a extruir (mm) |

### G2 / G3 — Movimiento en arco

Movimiento circular en sentido horario (G2) o antihorario (G3). Útil con ARC\_SUPPORT habilitado.

```gcode
G2 X10 Y10 I5 J5           ; arco horario
G3 X10 Y10 I5 J5           ; arco antihorario
```

### G4 — Pausa (Dwell)

Pausa la ejecución durante un tiempo definido.

```gcode
G4 S2    ; pausar 2 segundos
G4 P500  ; pausar 500 milisegundos
```

### G28 — Homing (Auto-home)

Lleva los ejes a su posición de origen activando los finales de carrera.

```gcode
G28       ; home todos los ejes
G28 X Y   ; home solo X e Y
G28 Z     ; home solo Z
```

### G29 — Nivelación automática de cama

Ejecuta el proceso de nivelación según el sistema configurado (Bilinear, UBL, etc.).

```gcode
G29       ; nivelación estándar
G29 P1    ; UBL: fase 1 (generar malla)
G29 S1    ; UBL: cargar malla 1 desde EEPROM
```

### G92 — Establecer posición actual

Define las coordenadas actuales sin mover los ejes. Muy útil para el eje E.

```gcode
G92 E0    ; resetear contador de extrusión a 0
G92 X0 Y0 ; definir posición actual como X0 Y0
```

## Temperatura

### M104 / M109 — Temperatura extrusor

`M104` establece la temperatura sin esperar. `M109` espera a que se alcance.

```gcode
M104 S200        ; calentar extrusor a 200°C (sin esperar)
M109 S200        ; calentar extrusor a 200°C (esperar)
M104 T1 S200     ; temperatura extrusor 2 (impresoras multi-extrusor)
```

### M140 / M190 — Temperatura cama

`M140` establece la temperatura sin esperar. `M190` espera.

```gcode
M140 S60         ; calentar cama a 60°C (sin esperar)
M190 S60         ; calentar cama a 60°C (esperar)
```

### M106 / M107 — Control de ventiladores

```gcode
M106 S255        ; ventilador de capa al 100%
M106 S128        ; ventilador de capa al 50%
M107             ; apagar ventilador de capa
M106 P1 S255     ; ventilador índice 1 al 100%
```

### M155 — Reporte de temperatura automático

```gcode
M155 S2          ; reportar temperaturas cada 2 segundos
M155 S0          ; detener reportes automáticos
```

## Extrusión

### M82 / M83 — Modo absoluto / relativo de extrusión

```gcode
M82    ; modo absoluto para el extrusor (por defecto en Marlin)
M83    ; modo relativo para el extrusor
```

### M600 — Cambio de filamento

Ejecuta el asistente de cambio de filamento (requiere `ADVANCED_PAUSE_FEATURE`).

```gcode
M600           ; cambio de filamento con valores por defecto
M600 E-50      ; retracción de 50mm antes de aparcar
M600 X10 Y10   ; aparcar en X10 Y10 durante el cambio
```

{% hint style="info" %}
M600 es el gcode estándar que insertan los laminadores para cambios de color/filamento en capas específicas. Es compatible con OctoPrint y la mayoría de hosts.
{% endhint %}

## Calibración

### M92 — Pasos por mm

Define los pasos del motor por cada mm de movimiento. Es la calibración de E-steps del extrusor y XYZ.

```gcode
M92 E415        ; calibrar extrusor a 415 pasos/mm
M92 X80 Y80     ; calibrar X e Y a 80 pasos/mm
M503            ; verificar que los cambios están aplicados
M500            ; guardar en EEPROM
```

### M201 / M203 / M204 / M205 — Aceleraciones y velocidades

```gcode
M201 X500 Y500 Z100 E5000    ; aceleración máxima por eje (mm/s²)
M203 X200 Y200 Z10 E50       ; velocidad máxima por eje (mm/s)
M204 P500 R1000 T500         ; aceleraciones: Print / Retract / Travel
M205 X8 Y8 Z0.4 E5           ; jerk (cambios bruscos de velocidad)
```

### M301 — Ajuste PID extrusor

```gcode
M301 P22.2 I1.08 D114        ; ajustar valores PID del extrusor
M303 E0 S200 C8              ; autotuning PID (8 ciclos a 200°C)
```

### M851 — Offset Z-probe (Z offset)

```gcode
M851 Z-1.80    ; ajustar Z offset a -1.80mm
M503           ; verificar el valor actual
M500           ; guardar en EEPROM
```

### M412 — Sensor de filamentos

```gcode
M412           ; consultar estado del sensor
M412 S1        ; activar sensor de filamentos
M412 S0        ; desactivar sensor de filamentos
```

### M900 — Linear Advance

Ajusta el factor K de Linear Advance (requiere `LIN_ADVANCE`).

```gcode
M900 K0.2      ; activar Linear Advance con K=0.2
M900 K0        ; desactivar Linear Advance
```

### M593 — Input Shaper (Marlin 2.1.3+)

Disponible a partir de Marlin 2.1.3 con `INPUT_SHAPING_X/Y` habilitado.

```gcode
M593 X F45.0 D0.1   ; configurar Input Shaper eje X: 45Hz, damping 0.1
M593 Y F38.0 D0.1   ; configurar Input Shaper eje Y: 38Hz, damping 0.1
M593               ; mostrar configuración actual
```

### M306 — Model Predictive Temperature Control (MPC)

Alternativa al PID, disponible en Marlin 2.1+ con `MPCTEMP`.

```gcode
M306 T          ; autotuning de MPC para extrusor activo
M306 A          ; autotuning MPC de forma asíncrona (mientras imprime)
```

## EEPROM

La EEPROM guarda la configuración para que persista tras apagar la impresora.

| Gcode  | Acción                                                    |
| ------ | --------------------------------------------------------- |
| `M500` | Guardar configuración actual en EEPROM                    |
| `M501` | Cargar configuración desde EEPROM                         |
| `M502` | Resetear configuración a valores por defecto del firmware |
| `M503` | Mostrar configuración actual en terminal                  |

```gcode
M503   ; ver toda la configuración actual (útil para diagnóstico)
M500   ; guardar cambios
```

## Información y diagnóstico

### M115 — Información del firmware

```gcode
M115   ; muestra versión de Marlin, capabilities, etc.
```

### M119 — Estado de los finales de carrera

```gcode
M119   ; muestra si cada endstop está TRIGGERED u OPEN
```

### M503 — Informe de configuración

```gcode
M503   ; muestra toda la configuración activa: pasos/mm, PID, offsets, etc.
```

## Utilidades y pantalla

### M117 — Mensaje en pantalla

```gcode
M117 Cargando filamento...   ; muestra un mensaje en la pantalla LCD
```

### M300 — Pitido (Beep)

```gcode
M300 S440 P200   ; pitido a 440Hz durante 200ms
```

### M150 — Control de LEDs Neopixel

```gcode
M150 R255 U0 B0          ; LED rojo
M150 R0 U255 B0          ; LED verde
M150 R255 U255 B255      ; LED blanco
M150 P128                ; brillo al 50%
M150 R0 U0 B0 P0         ; apagar LEDs
```

## Scripts de ejemplo para el laminador

### Gcode de inicio típico

```gcode
G28                ; home todos los ejes
G29                ; nivelación automática
G92 E0             ; resetear extrusor
G1 Z5 F3000        ; subir Z a 5mm
M117 Imprimiendo   ; mensaje en pantalla
```

### Gcode de fin típico

```gcode
M104 S0            ; apagar extrusor
M140 S0            ; apagar cama
G92 E0             ; resetear extrusor
G1 E-5 F300        ; retracción final
G28 X Y            ; home X e Y
M84                ; apagar motores
M117 Listo!        ; mensaje en pantalla
```

## Resumen rápido

| Categoría      | Gcodes clave           |
| -------------- | ---------------------- |
| Movimiento     | G0, G1, G28, G29, G92  |
| Temperatura    | M104, M109, M140, M190 |
| Ventiladores   | M106, M107             |
| Pasos/mm       | M92                    |
| EEPROM         | M500, M501, M502, M503 |
| PID            | M301, M303             |
| Linear Advance | M900                   |
| Input Shaper   | M593                   |
| Filamento      | M600, M412             |
| LEDs           | M150                   |
| Diagnóstico    | M115, M119, M503       |


---

# 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://marlin.3dwork.io/marlin/marlin-guia-compilacion/marlin-gcodes-basicos.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.
