You need to read how to send/receive data as I posted here:
Both your master and slave are wrong.
MASTER
Your master was:
Wire.beginTransmission (SLAVE_ADDRESS);
Wire.write ("A");
Wire.endTransmission ();
while (Wire.available () > 0)
{
byte b;
b = Wire.read ();
}
You should send and then do a Wire.requestFrom, like this:
Wire.beginTransmission (SLAVE_ADDRESS);
Wire.send ("A");
Wire.endTransmission ();
int count = Wire.requestFrom (SLAVE_ADDRESS, 11);
byte value [11];
if (count == 11)
{
for (int i = 0; i < 11; i++)
value [i] = Wire.read ();
}
else
{
// slave did not respond with 11 values
}
SLAVE
Your slave was:
while (Wire.available () > 0)
{
char c;
c = Wire.read ();
if (c=='A'){
Wire.beginTransmission (OTHER_ADDRESS);
byte a[11] = {p3tr,p4tr,p5tr,p6tr,p7tr,p8tr,p9tr,p10tr,p11tr,p12tr,p13tr};
Wire.write(a,11);
Wire.endTransmission ();
Serial.println(c);
}
}
You need a requestEvent and a receiveEvent, like this:
void setup()
{
Wire.begin (MY_ADDRESS);
Wire.onReceive (receiveEvent); // interrupt handler for incoming messages
Wire.onRequest (requestEvent); // interrupt handler for when data is wanted
} // end of setup
The receiveEvent handler receives the command ("A" in your case). The requestEvent responds to it. You don't do both in the one place.
eg.
void receiveEvent (int howMany)
{
command = Wire.read (); // remember command for when we get request
} // end of receiveEvent
void requestEvent ()
{
if (command == "A")
{
byte a[11] = {p3tr,p4tr,p5tr,p6tr,p7tr,p8tr,p9tr,p10tr,p11tr,p12tr,p13tr};
Wire.write (a,11);
}
} // end of requestEvent
I did those examples for a reason. You have totally changed them.