// Multi Serial Ports (Arduino Mega)
// Serial   0 (RX) and 1 (TX)
// Serial1 19 (RX) and 18 (TX)
// Serial2 17 (RX) and 16 (TX)
// Serial3 15 (RX) and 14 (TX)


#define LED_GREEN  3
#define LED_YELLOW 7
#define LED_RED    11

int incomingByte = 0;

void setup()
{
  // Initialize serial ports
  Serial.begin(9600);
  Serial1.begin(9600);
  Serial2.begin(9600);
  Serial3.begin(9600);

  // Initialize output ports
  pinMode(LED_GREEN, OUTPUT);
  pinMode(LED_YELLOW, OUTPUT);
  pinMode(LED_RED, OUTPUT);

  Serial.println("Waiting for input on the serial port:");
}

void loop()
{
  digitalWrite(LED_RED, LOW);
  digitalWrite(LED_GREEN, LOW);
  digitalWrite(LED_YELLOW, LOW);

  // Send data only when you receive data
  if (Serial.available() > 0) {
    digitalWrite(LED_YELLOW, HIGH);
    incomingByte = Serial.read();
    Serial.print((char)incomingByte);
  }

  if (Serial1.available() > 0) {
    digitalWrite(LED_GREEN, HIGH);
    incomingByte = Serial1.read();
    Serial1.print((char)incomingByte);
  }

  if (Serial2.available() > 0) {
    digitalWrite(LED_RED, HIGH);
    incomingByte = Serial2.read();
    // Show on serial output
    Serial2.print((char)incomingByte);
  }

  if (Serial3.available() > 0) {
    incomingByte = Serial3.read();
    Serial.print((char)incomingByte);
  }

}