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
