Thanks for all your replies! Maybe I am missing something very basic...
I am using an Arduino Uno and an official Arduino 9 axis motion shield (
https://store.arduino.cc/9-axis-motion-shield) which is in fact based on the BNO055.
Since this is a shield, there is no wiring.
When I just pull off the shield while observing the serial monitor, I get the exact same output.
Regarding calibration, I could not find any information on how to do that with the shield.
The code is an example from the library which I got here
https://github.com/arduino-org/arduino-library-nine-axes-motion
#include "NineAxesMotion.h" //Contains the bridge code between the API and the Arduino Environment
#include <Wire.h>
NineAxesMotion mySensor; //Object that for the sensor
unsigned long lastStreamTime = 0; //To store the last streamed time stamp
const int streamPeriod = 20; //To stream at 50Hz without using additional timers (time period(ms) =1000/frequency(Hz))
void setup() //This code is executed once
{
//Peripheral Initialization
Serial.begin(115200); //Initialize the Serial Port to view information on the Serial Monitor
I2C.begin(); //Initialize I2C communication to the let the library communicate with the sensor.
//Sensor Initialization
mySensor.initSensor(); //The I2C Address can be changed here inside this function in the library
mySensor.setOperationMode(OPERATION_MODE_NDOF); //Can be configured to other operation modes as desired
mySensor.setUpdateMode(MANUAL); //The default is AUTO. Changing to MANUAL requires calling the relevant update functions prior to calling the read functions
//Setting to MANUAL requires fewer reads to the sensor
}
void loop() //This code is looped forever
{
if ((millis() - lastStreamTime) >= streamPeriod)
{
lastStreamTime = millis();
mySensor.updateEuler(); //Update the Euler data into the structure of the object
mySensor.updateCalibStatus(); //Update the Calibration Status
Serial.print("Time: ");
Serial.print(lastStreamTime);
Serial.print("ms ");
Serial.print(" H: ");
Serial.print(mySensor.readEulerHeading()); //Heading data
Serial.print("deg ");
Serial.print(" R: ");
Serial.print(mySensor.readEulerRoll()); //Roll data
Serial.print("deg");
Serial.print(" P: ");
Serial.print(mySensor.readEulerPitch()); //Pitch data
Serial.print("deg ");
Serial.print(" A: ");
Serial.print(mySensor.readAccelCalibStatus()); //Accelerometer Calibration Status (0 - 3)
Serial.print(" M: ");
Serial.print(mySensor.readMagCalibStatus()); //Magnetometer Calibration Status (0 - 3)
Serial.print(" G: ");
Serial.print(mySensor.readGyroCalibStatus()); //Gyroscope Calibration Status (0 - 3)
Serial.print(" S: ");
Serial.print(mySensor.readSystemCalibStatus()); //System Calibration Status (0 - 3)
Serial.println();
}
}