/* Software serial multple serial test Receives from the two software serial ports, sends to the hardware serial port. In order to listen on a software port, you call port.listen(). When using two software serial ports, you have to switch ports by listen()ing on each one in turn. Pick a logical time to switch ports, like the end of an expected transmission, or when the buffer is empty. This example switches ports when there is nothing more to read from a port The circuit: Two devices which communicate serially are needed. * First serial device's TX attached to digital pin A0, RX to pin A1 * Second serial device's TX attached to digital pin A2, RX to pin A3 This example code is in the public domain. */ #include // software serial #1: TX = digital pin A1, RX = digital pin A0 SoftwareSerial portOne(A0, A1); // software serial #2: TX = digital pin A3, RX = digital pin A2 SoftwareSerial portTwo(A2, A3); void setup() { // Open serial communications and wait for port to open: Serial.begin(115200); while ( !Serial ) delay(10); // for nrf52840 with native usb // Start each software serial port portOne.begin(9600); portTwo.begin(9600); } void loop() { // By default, the last intialized port is listening. // when you want to listen on a port, explicitly select it: portOne.listen(); Serial.println("Data from port one:"); // while there is data coming in, read it // and send to the hardware serial port: while (portOne.available() > 0) { char inByte = portOne.read(); Serial.write(inByte); } // blank line to separate data from the two ports: Serial.println(""); // Now listen on the second port portTwo.listen(); // while there is data coming in, read it // and send to the hardware serial port: Serial.println("Data from port two:"); while (portTwo.available() > 0) { char inByte = portTwo.read(); Serial.write(inByte); } // blank line to separate data from the two ports: Serial.println(); }