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");
}