#include <SoftwareSerial.h>
SoftwareSerial portOne(2, 3);
SoftwareSerial portTwo(4, 5);
SoftwareSerial portThree(6, 7);
ISR(PCINT2_vect) {
if (!(PIND & (1<<PIND2))){
data1();
}
if (!(PIND & (1<<PIND4))){
data2();
}
if (!(PIND & (1<<PIND6))){
data3();
}
}
void setup() {
Serial.begin(9600);
portOne.begin(9600);
portTwo.begin(9600);
portThree.begin(9600);
pinMode(2, INPUT_PULLUP);
pinMode(4, INPUT_PULLUP);
pinMode(6, INPUT_PULLUP);
PCICR |= bit(digitalPinToPCICRbit(2));
PCICR |= bit(digitalPinToPCICRbit(4));
PCICR |= bit(digitalPinToPCICRbit(6));
*digitalPinToPCMSK(2) |= bit(digitalPinToPCMSKbit(2));
*digitalPinToPCMSK(4) |= bit(digitalPinToPCMSKbit(4));
*digitalPinToPCMSK(6) |= bit(digitalPinToPCMSKbit(6));
sei();
Serial.write("Listen\r\n");
}
void loop() {
}
void data1(){
portOne.listen();
while (portOne.available() > 0) {
char inByte =
portOne.read();
Serial.write(inByte);
}
}
void data2(){
portTwo.listen();
while (portTwo.available() > 0) {
char inByte =
portTwo.read();
Serial.write(inByte);
}
}
void data3(){
portThree.listen();
while (portThree.available() > 0) {
char inByte =
portThree.read();
Serial.write(inByte);
}
}