# Coding the drone ## Issues ### Using the wrong library for the BNO085 First used the wrong library I used the adafruit bno0xx library instead of the sparkfun bno08x library ??? failure ```cpp #include "conf.h" #include #include #include #include #include #include #include Adafruit_BNO08x bno08x(BNOINTERRUPTSIG); sh2_SensorValue_t sensorValue; void setup() { Serial.begin(9600); Serial.println("setup started"); // Setup all ESC // ledcAttach(MOTOR1, PWMFREQ, PWMRESOLUTION); // ledcAttach(MOTOR2, PWMFREQ, PWMRESOLUTION); // ledcAttach(MOTOR3, PWMFREQ, PWMRESOLUTION); // ledcAttach(MOTOR4, PWMFREQ, PWMRESOLUTION); Serial.print("Setup Started"); } void loop() { // put your main code here, to run repeatedly: sleep(3) if (!bno08x.begin_I2C()) { Serial.println("Failed to find BNO08x chip"); sleep(1); } Serial.print("Game Rotation Vector - r: "); Serial.print(sensorValue.un.gameRotationVector.real); Serial.print(" i: "); Serial.print(sensorValue.un.gameRotationVector.i); Serial.print(" j: "); Serial.print(sensorValue.un.gameRotationVector.j); Serial.print(" k: "); Serial.println(sensorValue.un.gameRotationVector.k); } //https://randomnerdtutorials.com/esp32-pwm-arduino-ide/ //https://github.com/adafruit/Adafruit_BNO08x/blob/master/examples/rotation_vector/rotation_vector.ino#L25 ``` ??? example ```cpp #include #include #include "conf.h" BNO080 myIMU; void setup() { Serial.begin(9600); Serial.println("setup started"); // Setup all ESC // ledcAttach(MOTOR1, PWMFREQ, PWMRESOLUTION); // ledcAttach(MOTOR2, PWMFREQ, PWMRESOLUTION); // ledcAttach(MOTOR3, PWMFREQ, PWMRESOLUTION); // ledcAttach(MOTOR4, PWMFREQ, PWMRESOLUTION); Serial.print("Setup Started"); Wire.begin(); myIMU.begin(); Wire.setClock(400000); //Increase I2C data rate to 400kHz myIMU.enableRotationVector(50); //Send data update every 50ms} } void loop() { if (myIMU.dataAvailable() == true) { float roll = (myIMU.getRoll()) * 180.0 / PI; // Convert roll to degrees float pitch = (myIMU.getPitch()) * 180.0 / PI; // Convert pitch to degrees float yaw = (myIMU.getYaw()) * 180.0 / PI; // Convert yaw / heading to degrees Serial.print(roll, 1); Serial.print(F(",")); Serial.print(pitch, 1); Serial.print(F(",")); Serial.print(yaw, 1); Serial.println(); } } void calibrateESC() { ledcWrite(MOTOR1, 1100); ledcWrite(MOTOR2, 1100); ledcWrite(MOTOR3, 1100); ledcWrite(MOTOR4, 1100); } //https://randomnerdtutorials.com/esp32-pwm-arduino-ide/ //https://github.com/sparkfun/SparkFun_BNO080_Arduino_Library/blob/main/examples/Example24-UncalibratedGyro/Example24-UncalibratedGyro.ino ```