Forum Rule: Always post complete source code & details to reproduce any issue!
Results 1 to 2 of 2

Thread: BNO 055 SDA1 & SCL1 on Teensy 4.1

  1. #1
    Junior Member
    Join Date
    Apr 2021
    Posts
    1

    BNO 055 SDA1 & SCL1 on Teensy 4.1

    I am currently using a BNO 055 and a Teensy 4.1 to try and track the motion of a wrist. I have had great success doing this with adaptations from the example code below (read_all_data.ino). Currently, I have the SCA and SCL pins from the BNO going to 18 and 19 respectively. This setup works great but I am now trying to incorporate other parts into my system. That being said, I need to move the SDA and SCL pins to SDA1 and SCL1 (17 and 16). I am having trouble adjusting my code to work. What is the simplest way to not reinvent the wheel and get the same readings through SDA1 and SCL1? Thank you for your help.

    EXAMPLE CODE read_all_data.ino

    #include <Wire.h>
    #include <Adafruit_Sensor.h>
    #include <Adafruit_BNO055.h>
    #include <utility/imumaths.h>

    /* This driver uses the Adafruit unified sensor library (Adafruit_Sensor),
    which provides a common 'type' for sensor data and some helper functions.

    To use this driver you will also need to download the Adafruit_Sensor
    library and include it in your libraries folder.

    You should also assign a unique ID to this sensor for use with
    the Adafruit Sensor API so that you can identify this particular
    sensor in any data logs, etc. To assign a unique ID, simply
    provide an appropriate value in the constructor below (12345
    is used by default in this example).

    Connections
    ===========
    Connect SCL to analog 5
    Connect SDA to analog 4
    Connect VDD to 3.3-5V DC
    Connect GROUND to common ground

    History
    =======
    2015/MAR/03 - First release (KTOWN)
    */

    /* Set the delay between fresh samples */
    uint16_t BNO055_SAMPLERATE_DELAY_MS = 100;

    // Check I2C device address and correct line below (by default address is 0x29 or 0x28)
    // id, address
    Adafruit_BNO055 bno = Adafruit_BNO055(55, 0x28);

    void setup(void)
    {
    Serial.begin(115200);
    Serial.println("Orientation Sensor Test"); Serial.println("");

    /* Initialise the sensor */
    if (!bno.begin())
    {
    /* There was a problem detecting the BNO055 ... check your connections */
    Serial.print("Ooops, no BNO055 detected ... Check your wiring or I2C ADDR!");
    while (1);
    }

    delay(1000);
    }

    void loop(void)
    {
    //could add VECTOR_ACCELEROMETER, VECTOR_MAGNETOMETER,VECTOR_GRAVITY...
    sensors_event_t orientationData , angVelocityData , linearAccelData, magnetometerData, accelerometerData, gravityData;
    bno.getEvent(&orientationData, Adafruit_BNO055::VECTOR_EULER);
    bno.getEvent(&angVelocityData, Adafruit_BNO055::VECTOR_GYROSCOPE);
    bno.getEvent(&linearAccelData, Adafruit_BNO055::VECTOR_LINEARACCEL);
    bno.getEvent(&magnetometerData, Adafruit_BNO055::VECTOR_MAGNETOMETER);
    bno.getEvent(&accelerometerData, Adafruit_BNO055::VECTOR_ACCELEROMETER);
    bno.getEvent(&gravityData, Adafruit_BNO055::VECTOR_GRAVITY);

    printEvent(&orientationData);
    printEvent(&angVelocityData);
    printEvent(&linearAccelData);
    printEvent(&magnetometerData);
    printEvent(&accelerometerData);
    printEvent(&gravityData);

    int8_t boardTemp = bno.getTemp();
    Serial.println();
    Serial.print(F("temperature: "));
    Serial.println(boardTemp);

    uint8_t system, gyro, accel, mag = 0;
    bno.getCalibration(&system, &gyro, &accel, &mag);
    Serial.println();
    Serial.print("Calibration: Sys=");
    Serial.print(system);
    Serial.print(" Gyro=");
    Serial.print(gyro);
    Serial.print(" Accel=");
    Serial.print(accel);
    Serial.print(" Mag=");
    Serial.println(mag);

    Serial.println("--");
    delay(BNO055_SAMPLERATE_DELAY_MS);
    }

    void printEvent(sensors_event_t* event) {
    double x = -1000000, y = -1000000 , z = -1000000; //dumb values, easy to spot problem
    if (event->type == SENSOR_TYPE_ACCELEROMETER) {
    Serial.print("Accl:");
    x = event->acceleration.x;
    y = event->acceleration.y;
    z = event->acceleration.z;
    }
    else if (event->type == SENSOR_TYPE_ORIENTATION) {
    Serial.print("Orient:");
    x = event->orientation.x;
    y = event->orientation.y;
    z = event->orientation.z;
    }
    else if (event->type == SENSOR_TYPE_MAGNETIC_FIELD) {
    Serial.print("Mag:");
    x = event->magnetic.x;
    y = event->magnetic.y;
    z = event->magnetic.z;
    }
    else if (event->type == SENSOR_TYPE_GYROSCOPE) {
    Serial.print("Gyro:");
    x = event->gyro.x;
    y = event->gyro.y;
    z = event->gyro.z;
    }
    else if (event->type == SENSOR_TYPE_ROTATION_VECTOR) {
    Serial.print("Rot:");
    x = event->gyro.x;
    y = event->gyro.y;
    z = event->gyro.z;
    }
    else if (event->type == SENSOR_TYPE_LINEAR_ACCELERATION) {
    Serial.print("Linear:");
    x = event->acceleration.x;
    y = event->acceleration.y;
    z = event->acceleration.z;
    }
    else {
    Serial.print("Unk:");
    }

    Serial.print("\tx= ");
    Serial.print(x);
    Serial.print(" |\ty= ");
    Serial.print(y);
    Serial.print(" |\tz= ");
    Serial.println(z);
    }
    Attached Files Attached Files

  2. #2
    Member
    Join Date
    Aug 2018
    Location
    Brisbane, Australia
    Posts
    48
    [The constructor is
    Code:
      Adafruit_BNO055(int32_t sensorID = -1, uint8_t address = BNO055_ADDRESS_A,
                      TwoWire *theWire = &Wire);
    You need to specify &Wire1 for the third argument

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •