i2c mit Raspberry

Hallo,
jetzt geht's.

Aber das ist doch nicht normal,dass ich den Index für sendData in receiveEvent hoch zähle.

Normalerweise müsste das so gehen.

Wire.write(daten,8); // 8 ist die Anzahl der Array-Elemente

Es wird aber 8 mal das erste Element übertragen.

#include <Wire.h>

#define SLAVE_ADDRESS 0x04
int number = 0;
int dataindex = 0;
char daten[8] = {23, 51, 88, 127, 128, 180, 221, 230};
int index = -2;

void setup() 
{
    pinMode(13, OUTPUT);
    Serial.begin(9600);         // start serial for output
    // initialize i2c as slave
    Wire.begin(SLAVE_ADDRESS);

    // define callbacks for i2c communication
    Wire.onReceive(receiveEvent);
    Wire.onRequest(sendData);

    Serial.println("Ready!");
}

void loop() 
{
    delay(100);
}

void receiveEvent(int howMany) {
  while (Wire.available()) { // loop through all but the last
    char c = Wire.read(); // receive byte as a character
    Serial.print(c);         // print the character
  }
  index++;
  Serial.println("empfangen");         // print the integer
}

// callback for sending data
void sendData()
{
    if (index > 7){
        index = 0;
    }
    Wire.write(daten[index]);
    Serial.print(index);
    Serial.print("--");
    Serial.print(daten[index]);
    Serial.println(" senden");
    
}