3 Arduinus mittels i2c (wire.h) kommunikation untereinander spinnt???

Hallo liebe Leute. Ich möchte gern um einen Rat bitten…
Ich habe 3 Arduinos mit i2C verbunden. der erste sammelt ein paar Daten und soll sie an die beiden anderen versenden. Kontinuierlich und Mehr nicht.
Vorbereitet habe ich es erstmal für einen wert der an beite gesendet werden soll, später sollen 2 verschiedene Potiwerte zu jeweils einen geschickt werden…
Nun jetzt versende ich die Packete mit (void requestInt()und bla bla) jedesmal wenn pakete angefordert werden (passiert ständig von beiden empfängern).

gekürztes Testprogramm schaut in etwa so aus Für den SENDER…

#include <Wire.h>

int byteSending = 1;
int toTransfer = 540; //540 weil das der initiale wert ist beim einschalten des Joysticks
int toTransfer_B = 1;
int Shift = toTransfer;
int mask = 0xFF;
unsigned char toSend = 540;



unsigned int Value_1 = 540;      // Ausgabe Varriable 10bit


//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++//
void setup() 
{
 Wire.begin(2);                // i2c bus mit addresse 2 benutzen
 Wire.onRequest(requestInt);   // register event
 
}

//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++//
void loop() 
{
  
  //..bla bla  hier werden die daten gesammelt (Value_1 und Value_2 ist jetzt mal Y und X)
  //Value_1 = gesammelter wert.....; 
  //Value_2 = gesammelter wert.....; 
  //buttonProgramm_STATE = HIGH oder LOW...;
 /////////////////////////////////////////////// 
  
    Value_1 = constrain (Value_1,10,1000);  // 10bit wert begränzen auf 10-1000 
    
   
   
    toTransfer =   Value_1;
    toTransfer_B = buttonProgramm_STATE;
}    
/////############ Ende Loop ############////////////////

    void requestInt()
{
 
 //byteSending 1-4 sendet Value_1 zerhackt in 8bit packete)
 
  if (byteSending == 1) //sende packet 1 (Value 1)
  {
    toSend = Shift & mask;
    Shift = Shift >> 8;
    Wire.send(toSend);
    byteSending = 2;
  }
  else if (byteSending == 2) //sende packet 2
  {
    toSend = Shift & mask;
    Shift = Shift >> 8;
    Wire.send(toSend);
    byteSending = 3;
  }
  else if (byteSending == 3) //sende packet 3
  {
    toSend = Shift & mask;
    Shift = Shift >> 8;
    Wire.send(toSend);
    byteSending = 4;
  }
  else if (byteSending == 4) //sende packet 4
  {
    toSend = Shift & mask;
    Shift = Shift >> 8;
    Wire.send(toSend);
    byteSending = 5;
    Shift = toTransfer;
    mask = 0xFF;
    toSend = 0;
  }
 //byteSending 5 Sendet nur einen Schalterzusand (1 oder 0) 
  
  else if (byteSending == 5) //sende packet 5 (Programmwahl)
  {
   Wire.send(toTransfer_B);
    byteSending = 1;
   // auf nächsten durchlauf vorbereiten
  
  }
}

Die Empfänger haben etwa soein Programm drauf…

#include <Wire.h>

int output = 0;
int output_B = 0;


float Value_2           = 540.00;  
int Betriebsmodus_State  = HIGH; 


void setup() 
{
  
    Wire.begin(4); //( die 4 hat empfänger A und die 3 hab ich Empfänger B gegeben)
}    
void loop() 
{
   I2Cempfangen();
   
   // hier wird Value_2 verarbeitet 
   // Betriebsmodus_State auch
}
/////####### Loop ende ######////////////



   void I2Cempfangen()
{
 
  Wire.requestFrom(2, 1);   // das erste byte  anfordern
  while(Wire.available())
  {
    unsigned char received = Wire.receive();
    output = received;
  }
 
  for (int i = 0 ; i < 3 ; i++) // nächsten 3 bytes
  {
     Wire.requestFrom(2, 1);   
     while(Wire.available())
     {
        unsigned char received = Wire.receive();
        output |= (received << 8);
     }
  }
 
 
  Wire.requestFrom(2, 1);   // und noch den Betriebsmodus_State anfordern
  while(Wire.available())
  {
    unsigned char received = Wire.receive();
    output_B = received;
  }

Value_2 = output ;
Betriebsmodus_State = output_B;  

 


}

Das Problem ist das wenn ich beide Empfänger mit dem Programm bespiele passiert nichts oder Müll ( zb werte sind nicht mehr von 10-1000 sondern 32000 bis kreuz und quer -32000…)
Hat aber nur einer das programm drauf und der Andere hat nix drauf, funktioniert es…
Ich denke es hat mit dem Requesten zu tuhen, beide fordern ständig daten vom Sender an, ohne Timing oder so. Da kommt sicher der Interrupt von dem Sender durcheinander. Müsste irgend wie gesteuert werden das die Empfänger nacheinander einfach immer die werte erhalten sobald ein neuer verfügbar ist.
Giebt vieleicht noch eine andere "auslöser möglichkeit das Senden einzuleiten und abzustimmen…

Ich hoffe jemand versteht mein Problem…Würd mich sehr über eine Lösung freuen…