#include <Wire.h>
#include <WString.h>
const int CLIEND_ID = 8;
char delimiter[] = ";"; // Trennzeichen zwischen den Messwerten im String zur Übertragung an den Slave
void setup() {
Serial.begin(38400);
Wire.begin(CLIEND_ID);
Wire.onReceive(receiveEvent);
}
void loop() {
}
void receiveEvent(int howMany) {
char sendeErg[256];
char *sendeStr = malloc(256); // Pointer deklarieren und Speicher reservieren
int i = 0;
while (Wire.available()) {
char sendeChar = Wire.read();
sendeErg[i] = sendeChar;
Serial.println(sendeErg);
delay(50);
i++;
}
sendeStr = strtok(sendeErg, delimiter); // erster Abschnitt aus dem Ergebnis-String
int angle = (int)sendeStr; // Typumwandlung (casting): string -> int
printf("Winkel: %d\n", angle);
sendeStr = strtok(NULL, delimiter); // nächster Abschnitt aus dem Ergebnis-String
int speed = (int)sendeStr; // Typumwandlung (casting): string -> int
printf("Geschwindigkeit: %d\n", speed);
// ToDo
// Motor ansteuern
free(sendeStr); // Pointer-Speicher wieder freigeben
}