Usando cualquier método de conexión entre las tarjetas arduino, las dos tienen que ser programadas de manera independiente.
Es decir, si tienes 80 puntos ya sean entradas o salidas, podrías repartir 40 y 40.
Arduino A.
void setup(){
pinMode(1, OUTPUT);//luz baño
pinMode(2, OUTPUT);//luz sala
//.....
pinMode(39, OUTPUT);
pinMode(40, OUTPUT);
}
void loop(){
digitalWrite(1, HIGH);
digitalWrite(1, HIGH);
//....
digitalWrite(1, HIGH);
digitalWrite(1, HIGH);
}
Arduino B.
void setup(){
pinMode(1, OUTPUT);//luz cuarto
pinMode(2, OUTPUT);//luz cocina
//.....
pinMode(39, OUTPUT);
pinMode(40, OUTPUT);
}
void loop(){
digitalWrite(1, HIGH);
digitalWrite(1, HIGH);
//....
digitalWrite(1, HIGH);
digitalWrite(1, HIGH);
}
Ya teniendo funcionando la lógica independiente de los arduinos por separado, haces un puente con cualquier interfaz de conexión que elijas.
seria algo como esto.
Arduino A.
String datos;
String datoArduinoB;
void loop(){
if (Serial1.available(){
datos = Serial.read();
//Aquí va la lógica para saber
//si es una instrucción para
//este arduino o se tiene que
//que enviar el mensaje al
//otro arduino
//Serial2.print(datoArduinoB);
//Serial3.print(datoArduinoC);
}
}
Arduino B.
String datos;
void loop(){
if (Serial1.available(){
datos = Serial.read();
}
}
Ahora si te fijas bien, he puesto que un arduino se comunique con el otro usando distintos puertos seriales.
Para el arduino A entra los datos desde la PC por Serial1 y envía los datos a los arduinos esclavos por Serial2 y por Serial3 suponiendo que alguien quiera 3 arduinos.
Tu segundo arduino recibe los datos por Serial1.
Ya el resto te toca investigar por cuenta propia de como crear tu propio sistema de mensajes internamente entre los arduinos para establecer comunicación pero esa es la lógica mas acertada según este caso.