Arduino MEGA Serial1

Buongiorno a tutti,
in realtà non so se è corretto scrivere qui o nella sezione hardware. Comunque spego il problema:
ho due Arduino MEGA e vorrei farli comunicare via seriale. Il primo MEGA è connesso alla USB in modo da avere il monitor seriale, ma in futuro non lo dovrà essere. Il secondo MEGA prende l’alimentazione dal primo tramite Vin ed è collegato ad esso tramite Serial1.
Lo scambio di dati tra i due MEGA, come già dicevo, avverrà tramite Serial1 e il primo rilancerà tutto quello che arriva sul monitor USB.
Bella teoria. In pratica non funziona.Dal primo MEGA mando un int al secondo che legge correttamente mentre quando viene inviata la risposta (un altro int o una string o un char o un byte o qulunque cosa) il primo MEGA non lo vede. Nel buffer di Serial1 c’è solo l’int che aveva inviato precedentemente al secondo MEGA.
Un po’ di codice? eccolo:

Trasmit:

int val = 0;
int incoming = 0;
int incoming1 = 0;

void setup()
{
  Serial.begin(115200);  //Begin Serial to talk to the Serial Monitor   
  Serial1.begin(115200); //Begin Serial to talk to the Rx Arduino
  Serial.println("Serial Monitor Connected"); 
  Serial.parseInt();     //clear any garbage in the buffer.  
}

void loop()
{
  //   From the USB
  incoming = Serial.available();  
  while (incoming != 0)           //while there is something to be read
  {
    val = Serial.parseInt();
    if (val != 0)
    {
      Serial.print("Received input... Transmitting:  ");
      Serial.println(val);         //Print value to the Serial Monitor
      Serial1.print(val);          //Send value to the Rx Arduino
    }
    incoming = Serial.available();
  }

  //     From the Rx Arduino
  incoming1 = Serial1.available();  
  while(incoming1 != 0)           //While there is something to be read
  {
    val = Serial1.parseInt();    //Get new value
    Serial.print("Receiving...  ");    
    Serial.println(val);        //Print new value to the Serial Monitor
    incoming1 = Serial1.available();
  }
}

Receiver:

int val = 0;
int incoming = 0;

void setup()
{
  Serial1.begin(115200);

}

void loop()
{
  incoming = Serial1.available();
  while (incoming != 0)                 //While there is something to be read
  {
    val = Serial1.parseInt();             //Reads integers as integer rather than ASCI. Anything else returns 0
    val = val + 5;
    Serial1.print(val);                  //Send the new val back to the Tx 
    incoming = Serial1.available();    
  }
}

Grazie a tutti
D.