How to (almost) Use I2C Bridge and Node with Arduino sketch

  • class page Networking and Communications
  • hello.I2C.45.bridge board hello.I2C.45.bridge board
  • Note: MOSI_SDA line should be connected to PB0, not PB1

  • hello.I2C.45.node board hello.I2C.45.node board

  • Note: MOSI_SDA line should be connected to PB0, not PB1

Arduino lib Download

I2C Master

I2C Slave

Arduino Sketch

Ref. graduate page

I2C Bridge (Master)

#include (TinyWireM.h)
#define slave1 (1)
#define slave2 (2)
void setup() {
TinyWireM.begin();
}
void loop() {
TinyWireM.beginTransmission(slave1);
TinyWireM.send(1);
TinyWireM.endTransmission();
delay(2000);
TinyWireM.beginTransmission(slave1);
TinyWireM.send(0);
TinyWireM.endTransmission();
delay(2000);
TinyWireM.beginTransmission(slave2);
TinyWireM.send(1);
TinyWireM.endTransmission();
delay(2000);
TinyWireM.beginTransmission(slave2);
TinyWireM.send(0);
TinyWireM.endTransmission();
delay(2000);

}

I2C Node (Slave 1)

#include (TinyWireS.h)
int output=PB4;
#define I2C_SLAVE_ADDR (1)
//#define I2C_SLAVE_ADDR (2)
void setup() {
// put your setup code here, to run once:
TinyWireS.begin(I2C_SLAVE_ADDR);
pinMode(output, OUTPUT);
}
volatile byte msg = 0; 
void loop() {
if (TinyWireS.available())
msg = TinyWireS.receive();
if (msg == 1)
digitalWrite(output, HIGH);
else if (msg == 0)
digitalWrite(output, LOW);
else
msg = 0;
}

I2C Node (Slave 2)

#include (TinyWireS.h)
int output=PB4;
//#define I2C_SLAVE_ADDR (1)
#define I2C_SLAVE_ADDR (2)
void setup() {
// put your setup code here, to run once:
TinyWireS.begin(I2C_SLAVE_ADDR);
pinMode(output, OUTPUT);
}
volatile byte msg = 0; 
void loop() {
if (TinyWireS.available())
msg = TinyWireS.receive();
if (msg == 1)
digitalWrite(output, HIGH);
else if (msg == 0)
digitalWrite(output, LOW);
else
msg = 0;
}
  1. the master is communicating with the node (slave 1), then send a 1 and 0 to the node.
  2. The node (slave 1) will then respond by turning ON and OFF the LED which correspond with the condition set with the message receive.
  3. the master communicate with node (slave 2) and then the process is repeated.

video