Para configurar un pin de un PLC basado en Arduino como entrada o como salida, llama a pinMode(pin, mode) en setup() con el nombre del borne del PLC: pinMode(Q0_0, OUTPUT) o pinMode(I0_0, INPUT). El paquete de placas de Industrial Shields convierte cada nombre (I0_0, Q0_0, A0_5, R0_1) en el pin correcto del microcontrolador.
Esta guía explica la sintaxis de pinMode(), cómo los nombres de pin siguen las etiquetas impresas en el PLC, los nombres de cada familia (M-Duino, Ardbox y ESP32 PLC) y dos ejemplos que compilan con las placas de Industrial Shields.
La función pinMode()
pinMode() define cómo usa un pin el microcontrolador: como entrada que lee una tensión o como salida que la aplica. Llámala una vez en setup(), antes de leer o escribir el pin en loop().
pinMode(pin, mode);
| Parámetro | Valor | En un PLC de Industrial Shields |
|---|---|---|
| pin | Nombre o número del pin | Usa el nombre del PLC: I0_0, Q0_0, A0_5, R0_1 |
| mode | INPUT | Entradas (I). Las entradas digitales leen de 5 a 24 Vdc y las analógicas de 0 a 10 V |
| mode | OUTPUT | Salidas digitales (Q), salidas analógicas (A) y relés (R) |
| mode | INPUT_PULLUP | Activa la resistencia de pull-up interna del microcontrolador. Solo para pines con nivel lógico de 5 V o 3,3 V, no para las entradas del PLC |
¿Hace falta pinMode() en un PLC de Industrial Shields? En el paquete de placas actual para M-Duino y Ardbox, el core configura las entradas como INPUT y las salidas como OUTPUT antes de que se ejecute setup().
Escribe pinMode() igualmente para los pines que uses. Deja claro qué pines necesita el sketch y es la configuración que muestran las guías de producto para las salidas analógicas.
Cómo se corresponden los nombres de pin con los bornes del PLC
Cada borne del PLC tiene una etiqueta como Q0.0 o I1.5. En el sketch escribes la misma etiqueta con un guion bajo en lugar del punto: Q0_0, I1_5.
La letra indica el tipo de pin. El primer número es la zona del PLC y el segundo, la posición dentro de esa zona.
- IEntradasDigitales o analógicas. Se leen con digitalRead() o analogRead()
- QSalidas digitalesSe activan con digitalWrite()
- ASalidas analógicasDe 0 a 10 V. Se ajustan con analogWrite()
- RRelésSe activan con digitalWrite()
Los nombres solo existen si eliges la placa correcta. Instala las placas de Industrial Shields en el Arduino IDE (cómo instalarlas). Después elige la familia en Herramientas > Placa, por ejemplo M-Duino family, y el modelo exacto en Herramientas > Model, por ejemplo M-Duino 21+.

En los M-Duino 42+ y 58+, las zonas de ampliación repiten el patrón: la zona 1 tiene I1_x, Q1_x y A1_x, y la zona 2 tiene I2_x, Q2_x y A2_x.
Nombres de pin por familia de PLC
La tabla muestra los nombres de pin de la zona 0 de cada modelo, tal como los define el paquete de placas de Industrial Shields. Las zonas 1 y 2 de los modelos más grandes siguen el mismo patrón.
| PLC | Entradas | Salidas digitales | Salidas analógicas | Relés |
|---|---|---|---|---|
| M-Duino 21+, 42+, 58+ ESP32 PLC 21, 42, 58 | I0_0 a I0_12 (I0_7 a I0_12 también analógicas) | Q0_0 a Q0_7 | A0_5 a A0_7 | Ninguno |
| M-Duino 19R+, 38R+, 57R+ ESP32 PLC 19R, 38R, 57R | I0_0 a I0_5 (I0_2 a I0_5 también analógicas) | Q0_0 a Q0_2 | A0_0 a A0_2 | R0_1 a R0_8 |
| M-Duino 38AR+ ESP32 PLC 38AR | Zona 0 como el 21+, zona 1: I1_0 a I1_5 | Q0_0 a Q0_7, Q1_0 a Q1_2 | A0_5 a A0_7, A1_0 a A1_2 | R1_1 a R1_8 |
| Ardbox Analog HF+ | I0_0 a I0_9 (8 también analógicas) | Q0_0 a Q0_9 | A0_0 a A0_6 | Ninguno |
| Ardbox Relay HF+ | I0_0 a I0_9 (6 también analógicas) | Ninguna, ver salidas analógicas | A0_0 y A0_1 (también digitales) | R1 a R8 |
Pines compartidos. Una salida analógica usa el mismo pin del microcontrolador que una salida digital: A0_5 y Q0_5 en el M-Duino 21+, A0_0 y Q0_0 en el M-Duino 19R+ y en el Ardbox Analog. Un interruptor del PLC selecciona qué borne funciona, así que usa cada pareja como una cosa o la otra.
analogRead() devuelve de 0 a 1023 (10 bits) en M-Duino y Ardbox, y analogWrite() acepta de 0 a 255 (8 bits). El ESP32 PLC lee con 11 bits y escribe con 12 bits.
Los modelos con GPRS, LoRa, Wi-Fi o DALI usan algunos pines para el módulo de comunicación, y el ESP32 PLC 14 tiene sus propios nombres de pin. Consulta el pinout en el User Guide de tu modelo antes de cablearlo.
Ejemplo: entradas, salidas y una salida analógica
Este sketch para el M-Duino 21+ usa los tres tipos de pin. Copia la entrada I0.0 en la salida Q0.0, hace parpadear la salida Q0.1 y escribe el valor de la entrada analógica I0.7 en la salida analógica A0.5.
// Board: M-Duino family, model M-Duino 21+
void setup() {
pinMode(I0_0, INPUT); // digital input (5 to 24 Vdc)
pinMode(I0_7, INPUT); // analog or digital input (0 to 10 V)
pinMode(Q0_0, OUTPUT); // digital output
pinMode(Q0_1, OUTPUT); // digital output
pinMode(A0_5, OUTPUT); // analog output (0 to 10 V)
Serial.begin(9600);
}
void loop() {
// Copy input I0.0 to output Q0.0
digitalWrite(Q0_0, digitalRead(I0_0));
// Blink output Q0.1 every second without delay()
digitalWrite(Q0_1, (millis() / 1000) % 2);
// Read I0.7 (0 to 1023) and set A0.5 (0 to 255)
int value = analogRead(I0_7);
analogWrite(A0_5, value / 4);
Serial.println(value);
delay(100);
}
Para usar A0.5 como salida analógica, pon su interruptor en la posición analógica, como indica el User Guide del modelo.
Probado: compilado sin errores para el M-Duino 21+ con el core AVR 1.2.1 de Industrial Shields y avr-gcc 7.3.0. No se ha ejecutado en un PLC para esta guía.
Ejemplo con salidas de relé
En los modelos con relés, un relé es una salida como cualquier otra, pero la numeración empieza en 1: R0_1 a R0_8 en el M-Duino 19R+ y el ESP32 PLC 19R, R1 a R8 en el Ardbox Relay. Cada relé conmuta hasta 250 Vac 5 A o 30 Vdc 3 A.
// Board: M-Duino family, model M-Duino 19R+
void setup() {
pinMode(I0_2, INPUT); // input
pinMode(R0_1, OUTPUT); // relay 1 (relays start at R0_1)
pinMode(Q0_0, OUTPUT); // digital output
}
void loop() {
// Relay R0.1 follows input I0.2
digitalWrite(R0_1, digitalRead(I0_2));
// Toggle output Q0.0 every 500 ms
digitalWrite(Q0_0, HIGH);
delay(500);
digitalWrite(Q0_0, LOW);
delay(500);
}
Probado: compilado sin errores para el M-Duino 19R+ con el mismo core. No se ha ejecutado en un PLC para esta guía.
Errores habituales con los pines del PLC
'Q0_0' was not declared in this scope: la placa elegida no es un PLC de Industrial Shields, o el modelo no tiene ningún pin con ese nombre. Elige la familia y el modelo en el menú Herramientas.R0_0no existe: los relés del M-Duino y del ESP32 PLC empiezan en R0_1.Q0.0con punto no es C++ válido. EscribeQ0_0.- Los números de pin de un tutorial para otra placa, como el pin 13, no coinciden con los bornes del PLC. Usa los nombres del PLC.
- Valores por encima de 255 en
analogWrite()en M-Duino y Ardbox: el rango es de 0 a 255. INPUT_PULLUPen una entrada del PLC no sustituye el cableado del sensor. La entrada necesita una tensión del sensor (consulta entradas digitales PNP).
Preguntas frecuentes sobre pinMode() y los pines del PLC
¿Qué hace pinMode() en Arduino?
Define un pin como entrada (INPUT o INPUT_PULLUP) o como salida (OUTPUT). Llámala en setup(), antes de leer o escribir el pin.
¿Tengo que llamar a pinMode() en un PLC de Industrial Shields?
Con el paquete de placas actual, el M-Duino y el Ardbox arrancan con las entradas como INPUT y las salidas como OUTPUT. Llama a pinMode() igualmente para los pines que uses: el sketch queda más claro y es más fácil pasarlo a otro modelo.
¿Cómo configuro un pin como entrada?
Escribe pinMode(I0_0, INPUT); en setup(). Después digitalRead(I0_0) devuelve HIGH o LOW, y analogRead(I0_7) devuelve el valor de una entrada analógica.
¿Cómo configuro un pin como salida?
Escribe pinMode(Q0_0, OUTPUT); en setup(). Después digitalWrite(Q0_0, HIGH) activa la salida. Los relés funcionan igual con sus nombres R.
¿Dónde encuentro los nombres de pin de mi PLC?
En la tabla de esta guía y en el pinout del User Guide de tu modelo. Los nombres coinciden con las etiquetas impresas junto a cada borne, con un guion bajo en lugar del punto.
Guías relacionadas
- Cómo instalar las placas de Industrial Shields en el Arduino IDE
- Conceptos básicos de las entradas digitales de un controlador industrial
- Conceptos básicos de las entradas analógicas de un PLC industrial
- Entradas digitales PNP en un PLC industrial
- millis() frente a delay() de Arduino en PLC industriales
- Cómo filtrar entradas digitales y analógicas en un PLC basado en Arduino
- Análisis del tiempo de respuesta del pinout del PLC M-Duino
Familia M-DuinoFamilia ESP32 PLCArdbox Analog
¿Necesitas el pinout de un modelo concreto? Consulta a un ingeniero.