Duda Relé con contactores

Buenos días tengo una duda con un módulo de 4 relés los cuales van cada uno a un contactos y estoy creando un Código en el que cada relé vaya independiente y no me influya si pulso alguno de los otros, de los 4 relés solo utilizó dos, alguien me puede ayudar? les dejo el codigo
const int buttonPin = 2; // the number of the pushbutton pin
const int buttonPin2 = 3;
const int buttonPin3 = 4;
const int ledPin = 10; // the number of the LED pin
const int ledPin2 = 11;
const int ledPin3 = 12;

int buttonState = 0; // variable for reading the pushbutton status
int buttonState2 = 0;
int buttonState3 = 0;

void setup() {

pinMode(ledPin, OUTPUT);
pinMode(ledPin2, OUTPUT);
pinMode(ledPin3, OUTPUT);

pinMode(buttonPin, INPUT);
pinMode(buttonPin2, INPUT);
pinMode(buttonPin3, INPUT);
}
void loop() {

buttonState = digitalRead(buttonPin);

if (buttonState == HIGH) {
// turn LED on:
digitalWrite(ledPin, HIGH);
} else {
// turn LED off:
digitalWrite(ledPin, LOW);
delay (2000);
}
buttonState2 = digitalRead(buttonPin2);

if (buttonState == HIGH) {
// turn LED on:
digitalWrite(ledPin2, HIGH);
} else {
// turn LED off:
digitalWrite(ledPin2, LOW);
delay (2000);
}
buttonState3 = digitalRead(buttonPin3);

if (buttonState == HIGH) {
// turn LED on:
digitalWrite(ledPin3, HIGH);
} else {
// turn LED off:
digitalWrite(ledPin3, LOW);
delay(2000);
}
}

// check multiple buttons and toggle LEDs

enum { Off = HIGH, On = LOW };

#undef MyHW
#ifdef MyHW
byte pinsLed [] = { 10, 11, 12 };
byte pinsBut [] = { A1, A2, A3 };
#define N_BUT   sizeof(pinsBut)

#else
byte pinsLed [] = { 10, 11, 12 };
byte pinsBut [] = { 2,  3,  4  };
#define N_BUT   sizeof(pinsBut)
#endif

byte butState [N_BUT];

// -----------------------------------------------------------------------------
int
chkButtons ()
{
    for (unsigned n = 0; n < sizeof(pinsBut); n++)  {
        byte but = digitalRead (pinsBut [n]);

        if (butState [n] != but)  {
            butState [n] = but;

            delay (10);     // debounce

            if (On == but)
                return n;
        }
    }
    return -1;
}

// -----------------------------------------------------------------------------
void
loop ()
{
    int n = chkButtons ();

    if (0 <= n)
        digitalWrite (pinsLed [n], ! digitalRead (pinsLed [n]));
}

// -----------------------------------------------------------------------------
void
setup ()
{
    Serial.begin (9600);

    for (unsigned n = 0; n < sizeof(pinsBut); n++)  {
        pinMode (pinsBut [n], INPUT_PULLUP);
        butState [n] = digitalRead (pinsBut [n]);
    }

    for (unsigned n = 0; n < sizeof(pinsLed); n++)  {
        digitalWrite (pinsLed [n], Off);
        pinMode      (pinsLed [n], OUTPUT);
    }
}

Buenas! muchas gracias por la ayuda, el relé 3 si me funciona pero el 1 y el 2 no, yo activo cada relé desde un pulsador el cual activa el relé y activa el contactor

check your wiring
hardcode setting each relay in setup()
use serial monitor to check each button

tengo cableado el pulsador 1, salida 2 de arduino con el rele uno salida 10 de arduino
pulsador 2 con la salida 3 y rele 2 con la salida 11
pulsador 2 con la salida 4 y rele 3 con la salida 12
con otras programaciones me funcionan esos botones pero tengo el codigo mal.
tu codigo me funciona perfectamente con el rele 3 pero con el 2 y el 1 no me inicia ni hace nada

necesita aislar el problema para que sea un botón o un relé.

yo desde los pulsadores acciono el relé el cual activa al contactor
el orden por ejemplo seria: pulsador 1( entrada 2 Arduino) - relé 1 (entrada 10 Arduino)- Contactor conectado directamente con el relé mediante cable

Entiendo lo que quieres que haga el código.
la pregunta es qué hace.

o el botón no funciona o el realmente no funciona. ¿cual?

así que haz experimentos para descubrir cuál.

así que codifique el encendido de los relés en la configuración () para verificar que estén conectados correctamente

hacer un Serial.println () para mostrar qué botón se está reconociendo

los botones los he comprobado y funcionan todos, lo que hace el codigo es que funciona correctamente el rele 3 pero el 1 y el 2 no se mueven ni se ponen a 0 ni a 1 cuando pulso sus pulsadores, solo me realiza bien la funcion el 3

sí, entiendo que el relé 3 funciona.

haz las pruebas

Exactamente qué pruebas tengo que realizar? Perdona es que soy un poco nuevo en esto. No llego a entender por qué uno funciona y el otro no

en setup (), código duro que enciende los relés 1 y 2

hacer un Serial.println () para mostrar qué botón se está reconociendo

Lo siento no tengo mucha idea amigo, todo está cableado correctamente y ya no se que es lo que puede estar fallando para que sólo funcione el 3

Buenas noches a todos, tengo un problema con un programa que consiste en un modulo de 4 reles de los cuales utilizo 3, estos reles cuando estan activados me activa cada uno un contactor y para activar el relé debo de pulsar un pulsador, cada relé es independiente y no tiene que depender nada mas que de su pulsador. mi configuración es pulsador 1 pin 2 pulsador 2 pin 3 pulsador 3 pin 4 rele 1 pin 10 rele 2 pin 11 rele 3 pin 12. El problema del siguiente codigo que os dejo es que me lo hace todo bien pero de repente el rele comienza a activarse y desactivarse solos sin tocar nada y ya no se si es por que tengo mal hecho los ifs o por que. Gracias!
const int buttonPin = 2; // the number of the pushbutton pin
const int buttonPin2 = 3;
const int buttonPin3 = 4;
const int ledPin = 10; // the number of the LED pin
const int ledPin2 = 11;
const int ledPin3 = 12;

int buttonState = 0; // variable for reading the pushbutton status
int buttonState2 = 0;
int buttonState3 = 0;

void setup() {

pinMode(ledPin, OUTPUT);
pinMode(ledPin2, OUTPUT);
pinMode(ledPin3, OUTPUT);

pinMode(buttonPin, INPUT);
pinMode(buttonPin2, INPUT);
pinMode(buttonPin3, INPUT);
}
void loop() {

buttonState = digitalRead(buttonPin);

if (buttonState == HIGH) {
// turn LED on:
digitalWrite(ledPin, HIGH);
} else {
// turn LED off:
digitalWrite(ledPin, LOW);
delay (1000);
}
buttonState2 = digitalRead(buttonPin2);

if (buttonState2 == HIGH) {
// turn LED on:
digitalWrite(ledPin2, HIGH);
} else {
// turn LED off:
digitalWrite(ledPin2, LOW);
delay (1000);
}
buttonState3 = digitalRead(buttonPin3);

if (buttonState3 == HIGH) {
// turn LED on:
digitalWrite(ledPin3, HIGH);
} else {
// turn LED off:
digitalWrite(ledPin3, LOW);
delay(1000);
}
}

Post a schematic, not a frizzy thing showing all power, ground and interconnections. Also this appears to be EMI interference packaging information and environmental information would help. Be sure to show the system power the contactors are driving.

De acuerdo. Mañana por la tarde hora 16:00 España subiré una foto

Hola,
Creo que lo que está sucediendo es causado por el ruido eléctrico generado al encender o apagar cargas inductivas, y las bobinas de los contactores son cargas inductivas.
Al encender / apagar cargas inductivas, se genera ruido eléctrico de alta frecuencia y el arduino es muy sensible a este tipo de interferencia.
Para reducir estas interferencias, use un amortiguador en los contactos del relé, configure como SALIDA todos los pines de arduinin que no se estén utilizando y, si es posible, coloque el arduino dentro de una caja de metal con conexión a tierra.
RV mineirin

Tu crees que es eso más que la programación esté mal? Por que con otras programaciones me ha ido bien pero en esta no consigo que me deje pulsar los pulsadores de manera independiente para activar los yo como si fuesen por separado, de todas formas como pondría el resto como salida? O si puedes ver algún fallo en el Código mio te lo agradecería, yo creo que es porlos ifs

Hola,
¿Estás usando un arduino UNO?
¿Tiene un controlador DIP o SMD?
¿Puedes publicar una foto de tu arduino?

RV mineirin

Buenas! Si, Arduino Uno con un módulo de 4 relés