Las tiras LED direccionables como la WS2812B utilizan un único cable de datos para controlar cada LED de forma individual en color y brillo. Este artículo muestra cómo conectar una tira WS2812B a un M-Duino o ESP32 PLC y controlarla con la librería Adafruit NeoPixel en el IDE de Arduino.
Qué necesitas
- M-Duino PLC o ESP32 PLC
- Tira LED direccionable WS2812B (o compatible, como NeoPixel)
- Fuente de alimentación de 5 V para la tira LED (separada de la del PLC si la tira consume una corriente considerable)
Conexión del cableado de la tira LED
La mayoría de las tiras WS2812B tienen tres conexiones: alimentación (5 V), GND y entrada de datos. Conecta GND a la misma masa que el PLC. Conecta el cable de datos a uno de los pines directos del PLC que se indican a continuación.
Opciones de pin en el M-Duino (lógica de 5 V)
| Etiqueta M-Duino PLC | Número de pin Arduino |
|---|---|
| RX0 | 0 |
| TX0 | 1 |
| RX1 | 19 |
| TX1 | 18 |
| SO | 50 |
| SI | 51 |
| SCK | 52 |
| Pin 2 | 2 |
| Pin 3 | 3 |
Opciones de pin en el ESP32 PLC (lógica de 3,3 V, excepto SCL y SDA)
Los pines GPIO del ESP32 funcionan a 3,3 V. Las tiras WS2812B suelen aceptar la señal de datos a 3,3 V con alimentación de 5 V sin problemas, pero consulta la hoja de datos de tu tira específica. Los pines SCL y SDA son tolerantes a 5 V en el IS ESP32 PLC.
| Etiqueta ESP32 PLC | GPIO ESP32 |
|---|---|
| SO | 19 |
| SI | 23 |
| SCK | 18 |
| TX1 | 17 |
| SCL * | 22 |
| SDA * | 21 |
* SCL y SDA funcionan a 5 V en el IS ESP32 PLC.
Configuración del software
Instala la librería Adafruit NeoPixel desde el Gestor de Librerías del IDE de Arduino (Herramientas > Gestionar librerías, busca "NeoPixel"). Instala también el paquete de placas Industrial Shields para tu PLC:
Sketch de Arduino: ciclo de colores LED
El sketch siguiente enciende cada LED en verde secuencialmente con un retardo de 500 ms entre ellos. Ajusta PIN para que coincida con tu cableado y NUMPIXELS con el número de LEDs de tu tira.
#include <Adafruit_NeoPixel.h>
#define PIN 0 // Pin de datos conectado a la tira LED
#define NUMPIXELS 3 // Número de LEDs en la tira
#define DELAYVAL 500 // Retardo entre LEDs en ms
Adafruit_NeoPixel pixels(NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800);
void setup() {
pixels.begin();
}
void loop() {
pixels.clear(); // Apaga todos los LEDs
for (int i = 0; i < NUMPIXELS; i++) {
pixels.setPixelColor(i, pixels.Color(0, 50, 0)); // Verde
pixels.show();
delay(DELAYVAL);
}
}La función pixels.Color() acepta valores RGB de 0 a 255. Para seleccionar otro color, cambia los tres argumentos: rojo, verde, azul. Por ejemplo, pixels.Color(255, 0, 0) produce rojo y pixels.Color(0, 0, 255) produce azul. Usa pixels.clear() para apagar todos los LEDs.

Control de tiras LED direccionables con M-Duino y ESP32 PLC