2021-04-22 17:43:48 +03:00

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);
}