SoftwareSerial et deuxième UART pour Arduino nano

code carte mega: (maitre)

char c;
#include <Wire.h>

void setup() {
  Wire.begin();        // join i2c bus (address optional for master)
  Serial.begin(9600);  // start serial for output
    Serial.print("Hello demanrrage MEGA");
}

void loop() {
  Wire.requestFrom(8, 1);    

  while (Wire.available()) { // slave may send less than requested
    c = Wire.read(); // receive a byte as character
    Serial.print(c);         // print the character
  }

  delay(50);
  Wire.beginTransmission(8); // transmit to device #8
  Wire.write("char is ");        // sends five bytes
  Wire.write(c);              // sends one byte
  Wire.endTransmission();    // stop transmitting
  delay(50);
}

code carte nano: (esclave)

#include <Wire.h>
#include <SoftwareSerial.h>

SoftwareSerial mySerial(3, 4);

void setup() {
  Wire.begin(8);                // join i2c bus with address #8
  Wire.onRequest(requestEvent); // register event
  Wire.onReceive(receiveEvent); // register event
  Serial.begin(9600);           // start serial for output
  Serial.print("Hello demanrrage du nano");
  mySerial.begin(9600);
}

void loop() {
  delay(100);
}

void requestEvent() {
  byte c;
  if (mySerial.available())
  {
    c = mySerial.read();
  }
  else {
    c = 0;  //(Null char.)
  }
  Serial.print("Char :");
  Serial.println((char)(c));
  Wire.write(c);
}

void receiveEvent(int howMany) {
  while (1 < Wire.available()) { // loop through all but the last
    char d = Wire.read(); // receive byte as a character
    Serial.print(d);         // print the character
  }
  char e = Wire.read();    // receive byte as an integer
  Serial.println(e);         // print the integer
}