LED per I2C schalten

Selbstverständlich, hier der Sketch:

#include <Wire.h>
#define SLAVE_ADDRESS 0x07
int number = 0;
int state = 0;
unsigned long time_received = 0;

void setup() {
  pinMode(5, OUTPUT);
  Serial.begin(9600); // start serial for output
  // initialize i2c as slave
  Wire.begin(SLAVE_ADDRESS);
  
  // define callbacks for i2c communication
  Wire.onReceive(receiveData);
  Wire.onRequest(sendData);
  
  Serial.println("Ready!");
}

void loop() {
  delay(100);
  Serial.print(millis()); Serial.print("-----"); Serial.print(time_received); Serial.print("-----"); Serial.println(millis() - time_received);
  if (state == 1 && millis() - time_received < 5100 && millis() - time_received > 4900){
    turnoff();
  }
}

// callback for received data
void receiveData(int byteCount){
    while(Wire.available()) {
    number = Wire.read();
    Serial.print("data received: ");
    Serial.println(number);
    if (number == 1){
        time_received = millis();
        turnon();
      }
    }
}

void turnoff(){
  digitalWrite(5, LOW);
  state = 0;
  time_received = 0;
}
void turnon(){
  digitalWrite(5, HIGH);
  state = 1;
}


// callback for sending data
void sendData(){
  Wire.write(number);
}

Ich hab' eine gewisse Toleranz bei der Abschaltung eingebaut.

Gruß, tomml