109 lines
4.5 KiB
C++
109 lines
4.5 KiB
C++
#include <Arduino.h>
|
|
#include <Adafruit_Sensor.h>
|
|
#include <Adafruit_LSM303_U.h>
|
|
#include <Adafruit_L3GD20_U.h>
|
|
#include <Adafruit_9DOF.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_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(""));
|
|
|
|
delay(500);
|
|
}
|
|
|
|
void setup(void)
|
|
{
|
|
Serial.begin(115200);
|
|
Serial.println(F("Adafruit 9DOF 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(!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 ");
|
|
|
|
Serial.println(F(""));
|
|
delay(1000);
|
|
} |