I2C Simulación

Circuito propuesto:





Código Arduino Izquierda:

#include <Wire.h>

void setup() {
  Wire.begin();        // join i2c bus (address optional for master)
  Serial.begin(9600);  // start serial for output
}

void loop() {
  Wire.beginTransmission(1);
  Wire.write('H');         
  Wire.endTransmission();
 
  delay(500);

  Wire.beginTransmission(1);
  Wire.write('L');         
  Wire.endTransmission();
 
  delay(500);

    Wire.beginTransmission(2);
  Wire.write('H');         
  Wire.endTransmission();
 
  delay(500);

   Wire.beginTransmission(2);
  Wire.write('L');         
  Wire.endTransmission();
 
  delay(500);
  }

----------------------------------------------------------------------------
Código Arduino Medio:


#include <Wire.h>
 const byte slaveId = 1;

void setup() {
  Wire.begin(slaveId);        // join i2c bus (address optional for master)
  Wire.onReceive(receiveEvent);

  pinMode(13,OUTPUT);
  digitalWrite(13,LOW);

}

void loop() {
}
 void receiveEvent(int howMany)
 {
  char inChar;

  while(Wire.available() > 0)
  {
    inChar = Wire.read();

    if (inChar == 'H')
    {
      digitalWrite(13,HIGH);
      }
      else if (inChar == 'L')
      {
        digitalWrite(13,LOW);
        }
    }
  }

----------------------------------------------------------
Código Arduino Derecha:


#include <Wire.h>
 const byte slaveId = 1;
#include <Wire.h>
 const byte slaveId = 2;

void setup() {
  Wire.begin(slaveId);        // join i2c bus (address optional for master)
  Wire.onReceive(receiveEvent);

  pinMode(13,OUTPUT);
  digitalWrite(13,LOW);

}

void loop() {
}
 void receiveEvent(int howMany)
 {
  char inChar;

  while(Wire.available() > 0)
  {
    inChar = Wire.read();

    if (inChar == 'H')
    {
      digitalWrite(13,HIGH);
      }
      else if (inChar == 'L')
      {
        digitalWrite(13,LOW);
        }
    }
  }