darktessi07
New member
Hello everyone (sorry for my bad english..) !
It's been some days since I am unable to use properly my 10DOF Adafruit IMU.
10 DOF IMU :
LSM303DLHC Accel / Mag
L3GD20H Gyro
BMP180 Temp/Press
In my project this IMU is connected by I2C to my Teensy 3.5 using SDA2 and SCL2 port (It's hardwired).
To use Wire2, I ve installed i2c_t3 libraries to replace Wire.h. I use the Teensyduino IDE on windows.
The example sketch however compile but the IMU is not recognized on the Wire2 interface (but only by Wire).
I tried to had various lines of code seen on the internet in the setup such as :
The IMU works on the Wire pin even when I had one of these lines. When I connect the IMU to pins 3 and 4, Teensy is not able to find it.
If it helps this is the sketch example :
Thanks in advance for help !!!
It's been some days since I am unable to use properly my 10DOF Adafruit IMU.
10 DOF IMU :
LSM303DLHC Accel / Mag
L3GD20H Gyro
BMP180 Temp/Press
In my project this IMU is connected by I2C to my Teensy 3.5 using SDA2 and SCL2 port (It's hardwired).
To use Wire2, I ve installed i2c_t3 libraries to replace Wire.h. I use the Teensyduino IDE on windows.
The example sketch however compile but the IMU is not recognized on the Wire2 interface (but only by Wire).
I tried to had various lines of code seen on the internet in the setup such as :
Code:
Wire.begin(I2C_MASTER, 0x00, I2C_PINS_3_4, I2C_PULLUP_EXT, 400000);
Wire2.begin();
Wire2.begin(I2C_MASTER, 0x00, I2C_PINS_3_4, I2C_PULLUP_EXT, 400000);
The IMU works on the Wire pin even when I had one of these lines. When I connect the IMU to pins 3 and 4, Teensy is not able to find it.
If it helps this is the sketch example :
Code:
#include <i2c_t3.h>
#include <Wire.h>
#include <Adafruit_Sensor.h>
#include <Adafruit_LSM303_U.h>
#include <Adafruit_BMP085_U.h>
#include <Adafruit_L3GD20_U.h>
#include <Adafruit_10DOF.h>
/* Assign a unique ID to the sensors */
Adafruit_LSM303_Accel_Unified accel = Adafruit_LSM303_Accel_Unified(30301);
Adafruit_LSM303_Mag_Unified mag = Adafruit_LSM303_Mag_Unified(30302);
Adafruit_BMP085_Unified bmp = Adafruit_BMP085_Unified(18001);
Adafruit_L3GD20_Unified gyro = Adafruit_L3GD20_Unified(20);
void displaySensorDetails(void)
{
sensor_t sensor;
accel.getSensor(&sensor);
Serial.println(F("----------- ACCELEROMETER ----------"));
Serial.print (F("Sensor: ")); Serial.println(sensor.name);
Serial.print (F("Driver Ver: ")); Serial.println(sensor.version);
Serial.print (F("Unique ID: ")); Serial.println(sensor.sensor_id);
Serial.print (F("Max Value: ")); Serial.print(sensor.max_value); Serial.println(F(" m/s^2"));
Serial.print (F("Min Value: ")); Serial.print(sensor.min_value); Serial.println(F(" m/s^2"));
Serial.print (F("Resolution: ")); Serial.print(sensor.resolution); Serial.println(F(" m/s^2"));
Serial.println(F("------------------------------------"));
Serial.println(F(""));
gyro.getSensor(&sensor);
Serial.println(F("------------- GYROSCOPE -----------"));
Serial.print (F("Sensor: ")); Serial.println(sensor.name);
Serial.print (F("Driver Ver: ")); Serial.println(sensor.version);
Serial.print (F("Unique ID: ")); Serial.println(sensor.sensor_id);
Serial.print (F("Max Value: ")); Serial.print(sensor.max_value); Serial.println(F(" rad/s"));
Serial.print (F("Min Value: ")); Serial.print(sensor.min_value); Serial.println(F(" rad/s"));
Serial.print (F("Resolution: ")); Serial.print(sensor.resolution); Serial.println(F(" rad/s"));
Serial.println(F("------------------------------------"));
Serial.println(F(""));
mag.getSensor(&sensor);
Serial.println(F("----------- MAGNETOMETER -----------"));
Serial.print (F("Sensor: ")); Serial.println(sensor.name);
Serial.print (F("Driver Ver: ")); Serial.println(sensor.version);
Serial.print (F("Unique ID: ")); Serial.println(sensor.sensor_id);
Serial.print (F("Max Value: ")); Serial.print(sensor.max_value); Serial.println(F(" uT"));
Serial.print (F("Min Value: ")); Serial.print(sensor.min_value); Serial.println(F(" uT"));
Serial.print (F("Resolution: ")); Serial.print(sensor.resolution); Serial.println(F(" uT"));
Serial.println(F("------------------------------------"));
Serial.println(F(""));
bmp.getSensor(&sensor);
Serial.println(F("-------- PRESSURE/ALTITUDE ---------"));
Serial.print (F("Sensor: ")); Serial.println(sensor.name);
Serial.print (F("Driver Ver: ")); Serial.println(sensor.version);
Serial.print (F("Unique ID: ")); Serial.println(sensor.sensor_id);
Serial.print (F("Max Value: ")); Serial.print(sensor.max_value); Serial.println(F(" hPa"));
Serial.print (F("Min Value: ")); Serial.print(sensor.min_value); Serial.println(F(" hPa"));
Serial.print (F("Resolution: ")); Serial.print(sensor.resolution); Serial.println(F(" hPa"));
Serial.println(F("------------------------------------"));
Serial.println(F(""));
delay(500);
}
void setup(void)
{
Wire2.begin();
//Wire.begin(I2C_MASTER, 0x00, I2C_PINS_3_4, I2C_PULLUP_EXT, 400000);
Serial.begin(115200);
Serial.println(F("Adafruit 10DOF Tester")); Serial.println("");
/* Initialise the sensors */
if(!accel.begin())
{
/* There was a problem detecting the ADXL345 ... check your connections */
Serial.println(F("Ooops, no LSM303 detected ... Check your wiring!"));
while(1);
}
if(!mag.begin())
{
/* There was a problem detecting the LSM303 ... check your connections */
Serial.println("Ooops, no LSM303 detected ... Check your wiring!");
while(1);
}
if(!bmp.begin())
{
/* There was a problem detecting the BMP085 ... check your connections */
Serial.print("Ooops, no BMP085 detected ... Check your wiring or I2C ADDR!");
while(1);
}
if(!gyro.begin())
{
/* There was a problem detecting the L3GD20 ... check your connections */
Serial.print("Ooops, no L3GD20 detected ... Check your wiring or I2C ADDR!");
while(1);
}
/* Display some basic information on this sensor */
displaySensorDetails();
}
void loop(void)
{
/* Get a new sensor event */
sensors_event_t event;
/* Display the results (acceleration is measured in m/s^2) */
accel.getEvent(&event);
Serial.print(F("ACCEL "));
Serial.print("X: "); Serial.print(event.acceleration.x); Serial.print(" ");
Serial.print("Y: "); Serial.print(event.acceleration.y); Serial.print(" ");
Serial.print("Z: "); Serial.print(event.acceleration.z); Serial.print(" ");Serial.println("m/s^2 ");
/* Display the results (magnetic vector values are in micro-Tesla (uT)) */
mag.getEvent(&event);
Serial.print(F("MAG "));
Serial.print("X: "); Serial.print(event.magnetic.x); Serial.print(" ");
Serial.print("Y: "); Serial.print(event.magnetic.y); Serial.print(" ");
Serial.print("Z: "); Serial.print(event.magnetic.z); Serial.print(" ");Serial.println("uT");
/* Display the results (gyrocope values in rad/s) */
gyro.getEvent(&event);
Serial.print(F("GYRO "));
Serial.print("X: "); Serial.print(event.gyro.x); Serial.print(" ");
Serial.print("Y: "); Serial.print(event.gyro.y); Serial.print(" ");
Serial.print("Z: "); Serial.print(event.gyro.z); Serial.print(" ");Serial.println("rad/s ");
/* Display the pressure sensor results (barometric pressure is measure in hPa) */
bmp.getEvent(&event);
if (event.pressure)
{
/* Display atmospheric pressure in hPa */
Serial.print(F("PRESS "));
Serial.print(event.pressure);
Serial.print(F(" hPa, "));
/* Display ambient temperature in C */
float temperature;
bmp.getTemperature(&temperature);
Serial.print(temperature);
Serial.print(F(" C, "));
/* Then convert the atmospheric pressure, SLP and temp to altitude */
/* Update this next line with the current SLP for better results */
float seaLevelPressure = SENSORS_PRESSURE_SEALEVELHPA;
Serial.print(bmp.pressureToAltitude(seaLevelPressure,
event.pressure,
temperature));
Serial.println(F(" m"));
}
Serial.println(F(""));
delay(1000);
}
Thanks in advance for help !!!
Last edited: