Send multiple variable values between 2 Arduinos over I2C

1. Connect UNO-NANO or UNO1-UNO2 as per following diagram (Fig-1) using I2C Bus.


Figure-1:

2. Upload your following revised Master sketch to send data byte 0x12 and data byte 0x45 to Slave.

#include <Wire.h>
#define SLAVE_ADDR 0x23

void setup()
{
  Serial.begin(9600);
  Wire.begin();
  //----------------------
  Wire.beginTransmission(SLAVE_ADDR);
  Wire.write(0x12);  //sending 0x12 to Slave
  Wire.write(0x45); //sending 0x45 to Slave
  Wire.endTransmission();
}

void loop()
{

}

3. Upload your following revised Slave sketch to receive/print two data bytes from Master.

#include <Wire.h>
#define SLAVE_ADDR 0x23
volatile byte myData[2];
volatile bool flag = false;

void setup()
{
  Serial.begin(9600);
  Wire.begin(SLAVE_ADDR);
  Wire.onReceive(receiveEvent);
}

void loop()
{
  if (flag == true)
  {
    Serial.println(myData[0], HEX); //shows: 12
    Serial.println(myData[1], HEX); //shows: 45
    flag = false;
  }
}

void receiveEvent(int howMany) //howMany = data bytes received from Amster = 2 here
{
  for (int i = 0; i < howMany; i++)
  {
    myData[i] = Wire.read();
  }
  flag = true;
}

4. Chcek that Serial Monitor of Slave shows:

12
45