I tried the code below and it worked for me, don't miss the delay()delay() part:
Sender Code:
void setup() {
Serial.begin(9600);
}
void loop() {
float yaw = 10.5;
float pitch = 20.15;
float roll = 100.10;
float ypr[3];
ypr[0] = yaw;
ypr[1] = pitch;
ypr[2] = roll;
Serial.write((byte*) ypr, 12); // No new-line
delay(1000);
}
Receiver Code:
void setup() {
Serial.begin(9600);
}
void loop() {
}
void serialEvent() {
if (Serial.available() == 12){
byte yawData[4];
yawData[0] = Serial.read();
yawData[1] = Serial.read();
yawData[2] = Serial.read();
yawData[3] = Serial.read();
float yawAngle = *((float*)(yawData));
Serial.println(yawAngle);
yawData[0] = Serial.read();
yawData[1] = Serial.read();
yawData[2] = Serial.read();
yawData[3] = Serial.read();
float yawPitch = *((float*)(yawData));
Serial.println(yawPitch);
yawData[0] = Serial.read();
yawData[1] = Serial.read();
yawData[2] = Serial.read();
yawData[3] = Serial.read();
float yawRoll = *((float*)(yawData));
Serial.println(yawRoll);
}
}
Results:
