LED Toggling Using I2C

MASTER CODE: ARDUINO UNO:

#include <Wire.h>
#define but 2

void setup(){
  Wire.begin();
  pinMode(but, INPUT_PULLUP);
}

void loop(){
  if(!digitalRead(but)){
    Wire.beginTransmission(0x0F);
    Wire.write(0x01);
    Wire.endTransmission();
    delay(200);
  }
}

SLAVE CODE: ARDUINO UNO:

#include <Wire.h>
#define led 7
int ledstat = 0;

void setup(){
  Wire.begin(0x0F);
  Serial.begin(9600);
  pinMode(led, OUTPUT);
  digitalWrite(led, ledstat);

  Wire.onReceive(toggleLed);
}

void loop(){

}

void toggleLed(){
  if(Wire.available() > 0){
    uint8_t data = Wire.read();
    if(data == 0x01){
    ledstat = !ledstat;
    digitalWrite(led, ledstat);
    Serial.println("LED stat is " + String(ledstat));
    delay(200);
    }
  }
}

Output

Photo of Output

 

 


 

Upvote
Downvote

Submit Your Solution

Note: Once submitted, your solution goes public, helping others learn from your approach!