Unir dos placas AT Mega 2560

Hola, buenos dias.
Me presento por aqui por primera vez y os quisiera hacer una pregunta ya que no domino el Arduino y por lo que he visto por la red no veo nada que me pueda ayudar.
Tengo una maqueta y la quiero conectar al PC a traves del Arduino y necesito al menos 80 salidas, de momento lo estoy haciendo con una AT Mega 2560 que me da algo mas de 50 salidas, pero tengo que conectar otra para el resto de salidas que necesito y tienen que ir a traves de un solo puerto, asin que si conecto la primera placa la segunda tiene que recibir las ordenes a traves de la primera, adjunto el archivo que esta funcionando con una sola placa,

Perdonar.
he conectado las dos placas a traves de SDA-SDL pero no me funcionan

Comunicacion_Excel_Reles_1.ino (9.92 KB)

Donde esta el código ? edita tu mensaje poniendo el código entre etiquetas code

Arduino Mega tiene 4 puertos series, porque justo quieres usar el mismo que el USB ? tendrás conflicto si algo esta conectado alli mientras cargas el boceto.

Según entiendo de tu consulta tu estas cerrado a puerto serie ? quizas es por eso que nadie te contesto porque para conectar 2 Arduinos lo lógico es usar el bus I2C usando los pines 20 y 21.

Si tienes un hilo abierto, no puedes abrir otro y preguntar algo similar.
Lee las normas del foro Tony_Relos!!

Necesitas 50 salidas tienes tantas opciones para comunicar dos MEGAs que enumeraré a continuación.

  1. PUerto serie, el MEGA tiene 4 puertos, uno usado para la comunicación con la PC pero te quedan otros 3. Es lo mas fácil.
  2. Ya te lo dijo Kike, puerto I2C.
  3. Comunicaicón SPI, la mas veloz de todas. Similar a la I2C pero mucho más rapida.

Ahora tambien puedes ampliar salidas de un MEGA usando 74hc595 para salidas o 74HC165 para entradas.
O puedes usar multiplexores I2C que tienen entradas salidas programables e incluso con interrupciones.

Muchas opciones y estas ultimas las puedes usar en un UNO/NANO.

Y que es el protocolo I2C?
Uno actua como master y el otro como esclavo.

Te falta el código del esclavo entonces.

Algo tan simple como buscar : Arduino i2c te hubiera dado una guía.

I2C cómo conectar dos Arduino mediante este protocolo

Tony_Relos:
Parece ser que yo no me explico bien, conectar las dos placas con I2c ya lo he echo

Ahora te entiendo menos, si ya lo has hecho porque consultas ?

Tony_Relos:
a la segunda placa que instrucción le doy si ya lo utilizo con la primera

Es que a un lado usaras Wire.write() y al otro Wire.read().

Mira este ejemplo.

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.

Pero no quiere usar puertos Serie, quiere usar I2C.