> 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/configuracion-marlin/leds-neopixel.md).

# Leds Neopixel

Añadir una tira LED Neopixel va mucho más allá de la estética: puedes iluminar el área de impresión para supervisarla, mostrar el estado del proceso mediante colores y controlar los LEDs desde los scripts gcode de tu laminador.

{% hint style="info" %}
Pásate por nuestro [grupo Telegram 3Dwork en español](https://t.me/trastornados) para cualquier duda sobre configuración de tu impresora.
{% endhint %}

## Tipos de LED compatibles

Marlin soporta los tipos de LED más comunes. Elige el tuyo para saber qué valor usar en `NEOPIXEL_TYPE`:

| Tipo físico      | Constante Marlin | Canales | Descripción                                   |
| ---------------- | ---------------- | ------- | --------------------------------------------- |
| WS2812 / WS2812B | `NEO_GRB`        | RGB     | El más común. 5V, protocolo de 1 hilo.        |
| SK6812 (RGBW)    | `NEO_GRBW`       | RGBW    | Como WS2812 pero con canal blanco adicional.  |
| WS2811           | `NEO_RGB`        | RGB     | Similar a WS2812, orden de canales diferente. |
| APA102 / DotStar | `NEO_GRB`        | RGB     | 2 hilos (data + clock), más rápido.           |
| WS2801           | `NEO_RGB`        | RGB     | 2 hilos, protocolo SPI.                       |

## Dónde conseguir tiras LED Neopixel

{% tabs %}
{% tab title="WS2812B 5V — BTF-LIGHTING (recomendada)" %}
{% embed url="<https://s.click.aliexpress.com/e/182731559?productUrl=https://www.aliexpress.com/item/2036819167.html>" %}
{% endtab %}
{% endtabs %}

{% hint style="info" %}
Si utilizas los links de compra, el precio del producto será el mismo que si accedes de manera habitual, pero a 3DWork le quedará una pequeña comisión. Algo que nos ayudará a soportar el proyecto y continuar generando contenido.
{% endhint %}

{% hint style="warning" %}
**Voltaje**: La mayoría de tiras para impresoras 3D son de **5V**. Alimentar una tira de 5V con 12V la destruirá. Comprueba el voltaje de tu tira antes de conectarla.

Si usas muchos LEDs (>30) o tiras de 12V, usa una **fuente de alimentación externa** en lugar del conector de la placa, ya que los conectores de las placas tienen una corriente limitada.
{% endhint %}

## Cableado

Las tiras Neopixel tienen 3 conexiones: **VCC** (voltaje), **GND** (masa) y **DIN/DATA** (señal).

Las tiras tienen una dirección marcada con una flecha en la serigrafía — el cable DIN va al inicio de la tira, no al fin. Además pueden cortarse por las marcas designadas para ajustarse a la longitud necesaria.

**Cable recomendado para la señal**: 26 AWG. Para alimentación de tiras largas, usa cable más grueso (22-24 AWG).

### Conectores dedicados en placas comunes

| Placa                 | Conector Neopixel         | Pin     |
| --------------------- | ------------------------- | ------- |
| BTT SKR 1.4 / Turbo   | Puerto Neopixel dedicado  | `P1_24` |
| BTT SKR PRO           | Puerto Neopixel dedicado  | `PE6`   |
| BTT Octopus           | Puerto RGB dedicado       | `PB0`   |
| BTT Manta M8P         | Puerto RGB dedicado       | `PB0`   |
| BTT SKR Mini E3 v2/v3 | Puerto Neopixel           | `PC7`   |
| BTT SKR 1.3           | Puerto SERVO (compatible) | `P2_00` |

{% hint style="info" %}
Si tu placa no tiene conector dedicado, el **puerto SERVO** es compatible con la señal Neopixel. Verifica el archivo `pins_[TU_PLACA].h` en el código de Marlin para confirmar el número de pin.
{% endhint %}

## Configuración en Marlin

### configuration.h — Habilitar Neopixel

Busca y descomenta `NEOPIXEL_LED` en `configuration.h`:

```cpp
#define NEOPIXEL_LED
#if ENABLED(NEOPIXEL_LED)
  #define NEOPIXEL_TYPE       NEO_GRB   // tipo de LED (ver tabla arriba)
  #define NEOPIXEL_PIN        P1_24     // pin de señal de tu placa
  //#define NEOPIXEL2_TYPE    NEOPIXEL_TYPE
  //#define NEOPIXEL2_PIN     5         // segunda tira (opcional)
  #define NEOPIXEL_PIXELS     30        // número total de LEDs en la tira
  //#define NEOPIXEL_IS_SEQUENTIAL      // apagar LEDs en secuencia al finalizar
  #define NEOPIXEL_BRIGHTNESS 255       // brillo inicial (0-255)
  #define NEOPIXEL_STARTUP_TEST         // animar LEDs al arrancar para verificar
  //#define NEOPIXEL_BKGD_LED_INDEX  0  // LED de fondo para indicar estado
  //#define NEOPIXEL_BKGD_COLOR { 255, 255, 255, 0 } // color de fondo RGBW
#endif
```

**Parámetros más importantes:**

| Parámetro               | Descripción                                            |
| ----------------------- | ------------------------------------------------------ |
| `NEOPIXEL_TYPE`         | Tipo de LED (ver tabla de tipos)                       |
| `NEOPIXEL_PIN`          | Pin de señal — ajustar al de tu placa                  |
| `NEOPIXEL_PIXELS`       | Número de LEDs en la tira                              |
| `NEOPIXEL_BRIGHTNESS`   | Brillo de 0 (apagado) a 255 (máximo)                   |
| `NEOPIXEL_STARTUP_TEST` | Cicla RGB al arrancar para verificar que todo funciona |

### configuration\_adv.h — Menú LCD y presets de color

Añade el menú de control de LEDs a la pantalla LCD:

```cpp
#define LED_CONTROL_MENU
#if ENABLED(LED_CONTROL_MENU)
  #define LED_COLOR_PRESETS               // presets de color en el menú
  #if ENABLED(LED_COLOR_PRESETS)
    #define LED_USER_PRESET_RED     255   // componente R del color personalizado
    #define LED_USER_PRESET_GREEN   255   // componente G
    #define LED_USER_PRESET_BLUE    255   // componente B
    #define LED_USER_PRESET_WHITE   255   // componente W (solo RGBW)
    #define LED_USER_PRESET_BRIGHTNESS 255
    #define LED_USER_PRESET_STARTUP     // aplicar preset al arrancar
  #endif
#endif
```

### Segunda tira Neopixel (NEOPIXEL2)

Para usar dos tiras independientes, descomenta las líneas de `NEOPIXEL2`:

```cpp
#define NEOPIXEL2_TYPE   NEO_GRB   // tipo de la segunda tira
#define NEOPIXEL2_PIN    5         // pin de señal de la segunda tira
```

Puedes usarlas independientemente con el gcode `M150 S0` (tira 1) y `M150 S1` (tira 2).

## Controlar los LEDs con G-code (M150)

El gcode `M150` permite controlar color, brillo e índice de cada LED desde el terminal o los scripts de tu laminador.

```
M150 [R<0-255>] [U<0-255>] [B<0-255>] [W<0-255>] [P<0-255>] [I<index>] [S<strip>]
```

| Parámetro | Descripción                                |
| --------- | ------------------------------------------ |
| `R`       | Canal Rojo (0-255)                         |
| `U`       | Canal Verde (0-255) — nota: es `U`, no `G` |
| `B`       | Canal Azul (0-255)                         |
| `W`       | Canal Blanco (0-255) — solo LEDs RGBW      |
| `P`       | Brillo global (0-255)                      |
| `I`       | Índice del LED específico (0 a N-1)        |
| `S`       | Seleccionar tira: 0 = primera, 1 = segunda |

**Ejemplos prácticos:**

```gcode
M150 R255 U0 B0         ; rojo — impresión en marcha
M150 R0 U255 B0         ; verde — impresión completada
M150 R0 U0 B255         ; azul — calentando
M150 R255 U128 B0       ; naranja — pausa / cambio filamento
M150 R255 U255 B255     ; blanco — iluminación máxima
M150 R0 U0 B0 P0        ; apagar todos los LEDs
M150 P128               ; reducir brillo al 50% sin cambiar color
M150 I5 R255 U0 B0      ; poner LED número 5 en rojo (solo ese)
```

## Uso en scripts del laminador

Puedes personalizar el comportamiento de los LEDs añadiendo `M150` a los scripts de tu laminador:

### Script de inicio (Start G-code)

```gcode
M150 R0 U0 B255         ; azul: calentando
M190 S[first_layer_bed_temperature]
M109 S[first_layer_temperature]
M150 R0 U255 B0         ; verde: listo para imprimir
G28
G29
```

### Script de fin (End G-code)

```gcode
M150 R0 U255 B0         ; verde: impresión completada
M104 S0                 ; apagar extrusor
M140 S0                 ; apagar cama
G28 X Y                 ; home X e Y
M84                     ; apagar motores
```

### Cambio de filamento (en PrusaSlicer/OrcaSlicer)

```gcode
M150 R255 U128 B0       ; naranja: cambio de filamento en curso
M600
M150 R0 U255 B0         ; verde: retomar impresión
```

## Resolución de problemas

| Síntoma                                       | Causa probable                              | Solución                                                                      |
| --------------------------------------------- | ------------------------------------------- | ----------------------------------------------------------------------------- |
| LEDs no encienden en absoluto                 | Pin incorrecto o sin alimentación           | Verificar `NEOPIXEL_PIN` en el archivo pins de tu placa y revisar el cableado |
| Solo enciende el primer LED                   | Problema de señal o nivel de voltaje        | Añadir resistencia 300-500Ω en el cable DATA; verificar tierra común          |
| Colores incorrectos (rojo aparece como verde) | Tipo de LED incorrecto                      | Cambiar `NEOPIXEL_TYPE`: prueba `NEO_RGB`, `NEO_GRB`, `NEO_BRG`               |
| LEDs parpadean o son inestables               | Alimentación insuficiente o ruidosa         | Añadir condensador 100-1000µF entre VCC y GND cerca del primer LED            |
| `NEOPIXEL_STARTUP_TEST` no funciona           | La animación está desactivada o pin erróneo | Verificar que `NEOPIXEL_STARTUP_TEST` está descomentado y recompilar          |
| Segunda tira no funciona                      | NEOPIXEL2 no configurado                    | Descomentar `NEOPIXEL2_PIN` y `NEOPIXEL2_TYPE` en configuration.h             |
| Los LEDs no responden a M150                  | `NEOPIXEL_LED` no compilado                 | Verificar que la opción está habilitada y el firmware recompilado/flasheado   |

{% hint style="warning" %}
Las tiras Neopixel consumen corriente. Una tira de 30 LEDs WS2812B a brillo máximo puede consumir \~1.8A. Antes de alimentar desde la placa, revisa cuánta corriente puede entregar el conector Neopixel de tu modelo específico. Para tiras largas o consumos altos, usa alimentación externa con GND compartida con la placa.
{% endhint %}


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## 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/configuracion-marlin/leds-neopixel.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.
