154 lines
4.1 KiB
Arduino
154 lines
4.1 KiB
Arduino
|
#include <Wire.h>
|
||
|
#include <Adafruit_Sensor.h>
|
||
|
#include <Adafruit_ADXL343.h>
|
||
|
|
||
|
/* Assign a unique ID to this sensor at the same time */
|
||
|
/* Uncomment following line for default Wire bus */
|
||
|
Adafruit_ADXL343 accel = Adafruit_ADXL343(12345);
|
||
|
|
||
|
/* NeoTrellis M4, etc. */
|
||
|
/* Uncomment following line for Wire1 bus */
|
||
|
//Adafruit_ADXL343 accel = Adafruit_ADXL343(12345, &Wire1);
|
||
|
|
||
|
void displaySensorDetails(void)
|
||
|
{
|
||
|
sensor_t sensor;
|
||
|
accel.getSensor(&sensor);
|
||
|
Serial.println("------------------------------------");
|
||
|
Serial.print ("Sensor: "); Serial.println(sensor.name);
|
||
|
Serial.print ("Driver Ver: "); Serial.println(sensor.version);
|
||
|
Serial.print ("Unique ID: "); Serial.println(sensor.sensor_id);
|
||
|
Serial.print ("Max Value: "); Serial.print(sensor.max_value); Serial.println(" m/s^2");
|
||
|
Serial.print ("Min Value: "); Serial.print(sensor.min_value); Serial.println(" m/s^2");
|
||
|
Serial.print ("Resolution: "); Serial.print(sensor.resolution); Serial.println(" m/s^2");
|
||
|
Serial.println("------------------------------------");
|
||
|
Serial.println("");
|
||
|
delay(500);
|
||
|
}
|
||
|
|
||
|
void displayDataRate(void)
|
||
|
{
|
||
|
Serial.print ("Data Rate: ");
|
||
|
|
||
|
switch(accel.getDataRate())
|
||
|
{
|
||
|
case ADXL343_DATARATE_3200_HZ:
|
||
|
Serial.print ("3200 ");
|
||
|
break;
|
||
|
case ADXL343_DATARATE_1600_HZ:
|
||
|
Serial.print ("1600 ");
|
||
|
break;
|
||
|
case ADXL343_DATARATE_800_HZ:
|
||
|
Serial.print ("800 ");
|
||
|
break;
|
||
|
case ADXL343_DATARATE_400_HZ:
|
||
|
Serial.print ("400 ");
|
||
|
break;
|
||
|
case ADXL343_DATARATE_200_HZ:
|
||
|
Serial.print ("200 ");
|
||
|
break;
|
||
|
case ADXL343_DATARATE_100_HZ:
|
||
|
Serial.print ("100 ");
|
||
|
break;
|
||
|
case ADXL343_DATARATE_50_HZ:
|
||
|
Serial.print ("50 ");
|
||
|
break;
|
||
|
case ADXL343_DATARATE_25_HZ:
|
||
|
Serial.print ("25 ");
|
||
|
break;
|
||
|
case ADXL343_DATARATE_12_5_HZ:
|
||
|
Serial.print ("12.5 ");
|
||
|
break;
|
||
|
case ADXL343_DATARATE_6_25HZ:
|
||
|
Serial.print ("6.25 ");
|
||
|
break;
|
||
|
case ADXL343_DATARATE_3_13_HZ:
|
||
|
Serial.print ("3.13 ");
|
||
|
break;
|
||
|
case ADXL343_DATARATE_1_56_HZ:
|
||
|
Serial.print ("1.56 ");
|
||
|
break;
|
||
|
case ADXL343_DATARATE_0_78_HZ:
|
||
|
Serial.print ("0.78 ");
|
||
|
break;
|
||
|
case ADXL343_DATARATE_0_39_HZ:
|
||
|
Serial.print ("0.39 ");
|
||
|
break;
|
||
|
case ADXL343_DATARATE_0_20_HZ:
|
||
|
Serial.print ("0.20 ");
|
||
|
break;
|
||
|
case ADXL343_DATARATE_0_10_HZ:
|
||
|
Serial.print ("0.10 ");
|
||
|
break;
|
||
|
default:
|
||
|
Serial.print ("???? ");
|
||
|
break;
|
||
|
}
|
||
|
Serial.println(" Hz");
|
||
|
}
|
||
|
|
||
|
void displayRange(void)
|
||
|
{
|
||
|
Serial.print ("Range: +/- ");
|
||
|
|
||
|
switch(accel.getRange())
|
||
|
{
|
||
|
case ADXL343_RANGE_16_G:
|
||
|
Serial.print ("16 ");
|
||
|
break;
|
||
|
case ADXL343_RANGE_8_G:
|
||
|
Serial.print ("8 ");
|
||
|
break;
|
||
|
case ADXL343_RANGE_4_G:
|
||
|
Serial.print ("4 ");
|
||
|
break;
|
||
|
case ADXL343_RANGE_2_G:
|
||
|
Serial.print ("2 ");
|
||
|
break;
|
||
|
default:
|
||
|
Serial.print ("?? ");
|
||
|
break;
|
||
|
}
|
||
|
Serial.println(" g");
|
||
|
}
|
||
|
|
||
|
void setup(void)
|
||
|
{
|
||
|
Serial.begin(9600);
|
||
|
while (!Serial);
|
||
|
Serial.println("Accelerometer Test"); Serial.println("");
|
||
|
|
||
|
/* Initialise the sensor */
|
||
|
if(!accel.begin())
|
||
|
{
|
||
|
/* There was a problem detecting the ADXL343 ... check your connections */
|
||
|
Serial.println("Ooops, no ADXL343 detected ... Check your wiring!");
|
||
|
while(1);
|
||
|
}
|
||
|
|
||
|
/* Set the range to whatever is appropriate for your project */
|
||
|
accel.setRange(ADXL343_RANGE_16_G);
|
||
|
// accel.setRange(ADXL343_RANGE_8_G);
|
||
|
// accel.setRange(ADXL343_RANGE_4_G);
|
||
|
// accel.setRange(ADXL343_RANGE_2_G);
|
||
|
|
||
|
/* Display some basic information on this sensor */
|
||
|
displaySensorDetails();
|
||
|
displayDataRate();
|
||
|
displayRange();
|
||
|
Serial.println("");
|
||
|
}
|
||
|
|
||
|
void loop(void)
|
||
|
{
|
||
|
/* Get a new sensor event */
|
||
|
sensors_event_t event;
|
||
|
accel.getEvent(&event);
|
||
|
|
||
|
/* Display the results (acceleration is measured in m/s^2) */
|
||
|
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 ");
|
||
|
delay(500);
|
||
|
}
|