// 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);
}
}