> For the complete documentation index, see [llms.txt](https://marlin.3dwork.io/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://marlin.3dwork.io/marlin/marlin-guia-compilacion/marlin-gcodes-basicos.md).

# 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       |
